19 Commits

Author SHA1 Message Date
DIYgod 97ca853196 fix(landing): preview production builds with vite preview
The Cloudflare Vite plugin beta writes the build into cf Build Output
instead of dist/, so `vinext start` no longer finds a build to serve.
`vite preview` runs the built Worker in local workerd instead, with the
same port.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 22:54:49 +08:00
DIYgod 5559b7c09a build: deploy the Cloudflare Workers with cf instead of Wrangler
Migrate folo-web (apps/desktop), landing-vinext (apps/landing), folo-ota
(apps/ota) and folo-ssr (apps/ssr) with `cf migrate` and finish the
follow-up work from the cf migration guide.

- cloudflare.config.ts now configures each Worker, and the Wrangler `dev`
  environment is the `dev` mode (`--mode dev`). Worker names, routes and
  zone, custom domain, bindings and resource IDs, cron trigger,
  compatibility date and flags, placement, limits, observability,
  workers.dev and assets settings are unchanged. Build settings moved to
  wrangler.config.ts (Wrangler bundler) and vite.config.ts (landing).
- landing-next-dev keeps the IMAGES binding it is deployed with today:
  CI deployed the top-level landing config with only the name and route
  overridden.
- CI builds each Worker with cf (landing still builds with vinext), then
  deploys that Build Output with `cf deploy --prebuilt` and the matching
  mode. Triggers, build steps and secrets are unchanged, and only the
  deploy steps receive the API token. turbo now caches landing's Build
  Output.
- Package scripts call cf. The landing deploy scripts used `vinext
  deploy`, which vinext no longer has.
- cf only looks for its build tool in the Worker package's own
  node_modules, while this workspace hoists every dependency to the
  root, so a postinstall step links the hoisted Wrangler or Vite plugin
  into each Worker app.
- The Vite plugin beta writes the client build into cf's Build Output,
  so landing drops the unused `output: 'standalone'` step that read
  dist/client. Worker source maps stay off, as they were with Wrangler.
- The KV preview_id has no cf equivalent; `cf dev` uses local data.
- wrangler.jsonc stays for `wrangler tail` and as a fallback until the
  Workers have been deployed to production with cf.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 22:38:53 +08:00
DIYgod c6518bd015 chore(deps): add cf and the Cloudflare Vite plugin beta to the Worker apps
Prepare the four Cloudflare Workers for the move from Wrangler to cf:

- Add cf 1.0.0-beta.20 as a dev dependency of desktop, landing, ota and
  ssr, so every machine and CI run the same cf release.
- Declare wrangler 4.136.1 in desktop. cf builds the assets-only folo-web
  Worker with the Wrangler that the package itself declares.
- Move landing to @cloudflare/vite-plugin 2.0.0-beta.v.3, the plugin
  release that reads cloudflare.config.ts and writes cf Build Output.

The lockfile only gains the entries these packages need; the rest of it
is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 21:48:25 +08:00
DIYgod 94eb0db891 fix(landing): offer the Intel Mac installer on the download page
The only direct macOS download served the Apple Silicon build, which
doesn't launch on Intel Macs, and browsers don't reveal which kind of
Mac they run on. Offer both installers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 04:17:12 +08:00
DIYgod 4f7b2f930e fix(landing): point each page's canonical URL at itself
The locale layout set the canonical URL to the home page, and the
download, pricing and localized pages inherited it, so search engines
saw them as duplicates of the home page and could drop them from the
index. Set the canonical URL per page and locale, with hreflang links
to the page in the other locales.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 04:15:30 +08:00
DIYgod 3e348d45c8 fix(landing): let people zoom the website and share pages
The landing site and the share pages told the browser not to allow zoom
(user-scalable=no, maximum-scale=1), so people with low vision couldn't
pinch to zoom the home, download, pricing or share pages, which fails
WCAG 1.4.4. Keep the device width and initial scale only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 04:14:06 +08:00
DIYgod 2f392594d5 chore(deps): refresh dependencies and verify affected app flows 2026-09-22 16:20:40 +08:00
DIYgod 1158281f59 chore(deps): update frontend dependencies (#5038)
* chore(deps): update frontend dependencies

* fix(ci): format OTA verification commands
2026-07-10 22:36:12 +08:00
DIYgod c782efa65e fix(landing): bundle legal markdown content 2026-06-22 20:57:58 +08:00
DIYgod b28d7a0154 fix(download): route direct downloads through ota 2026-05-29 14:23:35 +08:00
DIYgod e1daec3013 feat(power): restrict power usage to wallet 2026-04-30 14:23:23 +08:00
DIYgod 5bf010e804 fix(ota): harden store sync and observability 2026-04-15 11:20:31 +08:00
DIYgod f77ac26541 feat(mobile): upgrade expo sdk 55 and rnfirebase 2026-04-10 22:42:21 +08:00
DIYgod 644dea80e5 chore(landing): update react to 19.2.4 2026-03-24 11:21:11 +08:00
DIYgod 507f4018d6 feat(landing): add researchers trust band 2026-03-24 11:17:42 +08:00
DIYgod 312ec968ef feat(landing): add audience tabs to hero 2026-03-17 16:44:49 +08:00
DIYgod 4cc68d34cf feat(landing): refresh landing, pricing, and deploy flow (#4921) 2026-03-17 14:33:05 +08:00
DIYgod 21fb6dfac0 feat(landing): migrate to vinext and fix prod regressions (#4882) 2026-02-26 12:54:20 +08:00
DIYgod 5e26d1d33d feat(landing): merge landing app into monorepo (#4881) 2026-02-26 11:33:16 +08:00