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>
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>
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>
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>
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>
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>