Commit Graph

4277 Commits

Author SHA1 Message Date
DIYgod 338164b68c fix(web): remove openpanel and fix ssr manifest 2026-03-17 18:17:39 +08:00
DIYgod b5ab3e08b6 feat(cloudflare): split desktop and ssr workers 2026-03-17 16:51:45 +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 fa7ce0f011 fix(cli): use npx latest and restore login flow 2026-03-17 12:18:24 +08:00
DIYgod 9a8280ded4 feat(cli): switch desktop sync to folocli 2026-03-17 11:18:48 +08:00
DIYgod bd0d081a7d fix(mobile): refresh timeline after login 2026-03-17 10:13:28 +08:00
DIYgod 3f31f505f8 fix: restore frontend ci for better-auth upgrade 2026-03-16 21:35:14 +08:00
DIYgod 397049014f fix: upgrade better-auth client compatibility 2026-03-16 21:14:41 +08:00
John Li b55e2f0eb7
fix(electron): persist theme settings (#4900) 2026-03-16 17:18:52 +08:00
DIYgod a2a88d9fd4 fix(mobile): improve ipad layouts and detail rendering 2026-03-13 13:20:31 +08:00
DIYgod aea75fe57b fix(desktop): improve self-test coverage and ui polish 2026-03-13 10:20:01 +08:00
DIYgod df83cf62ea fix(mobile): polish auth and settings ux 2026-03-13 10:15:33 +08:00
DIYgod 82b5791950 chore(sync): merge mobile-main into dev 2026-03-12 21:29:05 +08:00
DIYgod ff1cf29d13 docs(release): remove cli notes from desktop changelog 2026-03-12 20:52:07 +08:00
DIYgod 96b6eac16a fix(desktop): hide cli settings tab for release 2026-03-12 20:37:07 +08:00
DIYgod 94f90873d5 fix(desktop): restore renderer api requests 2026-03-12 20:35:26 +08:00
DIYgod 60e2dd3198 release(desktop): release v1.4.0 2026-03-12 17:37:56 +08:00
DIYgod 278388cc13 release(mobile): release v0.4.0 2026-03-12 17:37:24 +08:00
DIYgod 6880d3b893 docs(release): prepare mobile and desktop changelogs 2026-03-12 17:36:40 +08:00
DIYgod 3fbaf119ae fix(mobile): align ios subscription upgrade actions 2026-03-12 17:30:31 +08:00
DIYgod 394730251a
feat(mobile): align upgrade prompts with desktop (#4914) 2026-03-12 16:35:33 +08:00
DIYgod cfb23ad15d
fix(mobile): polish settings and discover ui (#4913) 2026-03-12 14:31:33 +08:00
DIYgod e8ae098ba0
fix(mobile): repair discover categories and bootstrap iOS auth (#4912) 2026-03-12 12:27:52 +08:00
DIYgod f78d7e766b
feat(mobile): support anonymous timeline reading (#4911) 2026-03-12 11:29:45 +08:00
DIYgod 565793fceb
feat: support iOS Apple subscriptions (#4910)
* feat(mobile): support iOS Apple subscriptions

* fix: stabilize mobile subscription checks
2026-03-12 09:41:55 +08:00
DIYgod b1ed3828d4
feat: add store review prompts for desktop and mobile (#4909) 2026-03-11 22:54:04 +08:00
DIYgod e00e043d6c fix(desktop): remove text selection toolbar 2026-03-11 16:56:39 +08:00
DIYgod 65c18693da
fix(mobile): avoid android modal header overlap (#4907) 2026-03-11 11:43:41 +08:00
DIYgod 7cc1cd549c
fix(mobile): stabilize auth e2e flows (#4905)
* fix(mobile): stabilize auth e2e flows

* docs(skill): add mobile e2e runbook
2026-03-11 10:41:02 +08:00
DIYgod 0b344fd0e7
fix(mobile): align translation gating with real roles (#4906) 2026-03-11 10:30:46 +08:00
DIYgod c9eac7812c
fix: harden desktop e2e auth and user flows (#4904)
* fix: harden desktop e2e auth and user flows

* fix: stabilize desktop e2e in ci

* fix: stabilize ci desktop e2e flows

* fix: make ci desktop e2e more robust

* fix: avoid media interception in desktop e2e

* fix: increase desktop e2e timeouts for ci

* fix: use keyboard navigation for web e2e entries

* fix: stabilize desktop e2e navigation in ci

* fix: simplify desktop e2e navigation paths

* fix: narrow desktop e2e action selectors

* fix: add desktop e2e read-action fallbacks

* fix: reduce desktop e2e flakiness in ci

* fix: harden desktop e2e route transitions

* fix: relax desktop e2e ci assertions

* fix: prefer keyboard read toggle in desktop e2e

* fix: tolerate settings modal close races in e2e

* fix: tighten desktop e2e flows and remove gha e2e
2026-03-10 21:37:48 +08:00
DIYgod 93c1fc3de6
revert: remove mobile auth cookie fallback (#4902) 2026-03-10 11:53:31 +08:00
DIYgod 93e4a3b48f
feat: add cross-platform e2e coverage (#4901)
* feat: add cross-platform e2e coverage

* fix: stabilize desktop e2e navigation

* fix: harden desktop e2e read flow

* fix: harden desktop e2e auth and follow flows

* fix: stabilize desktop e2e discover entry flows

* fix: run android e2e in a single shell

* fix: speed up mobile e2e builds in ci

* fix: build android e2e app from mobile workspace

* fix: invoke android gradle build from repo root

* fix: use absolute path for android ci build

* fix: restore android eas build in ci

* fix: target iOS simulator by udid in ci

* fix: align desktop e2e with discover card flow

* fix: reorder web e2e after relogin

* fix: navigate web e2e via real hash url

* fix: close stale settings modal before reopening

* fix: track android maestro flows

* fix: wait for settings router in web e2e

* fix: wait for web settings sync propagation

* fix: stabilize desktop e2e settings flows

* fix: harden desktop e2e regressions

* fix: stabilize desktop e2e selectors

* fix: read desktop entry state from locators

* fix: relax desktop e2e entry assertions

* fix: avoid waiting on missing desktop feed ids
2026-03-10 11:32:00 +08:00
DIYgod df748a5f6a
feat(cli): deep integration with desktop client (#4896)
* feat(cli): deep integration with desktop client

- Package CLI binary with desktop app via extraResource in Electron Forge
- Sync desktop login session to ~/.folo/config.json automatically on login/logout
- Add CliService IPC with install/uninstall methods supporting macOS (osascript), Linux (pkexec), Windows (.cmd wrapper)
- Add CLI settings tab in desktop app for install status and management
- Create prepare-cli build script to compile and bundle CLI before packaging
- Add i18n strings for CLI UI (English and Chinese)

The CLI now shares the desktop app's authentication session without requiring separate login.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix(cli): fix CI failures in auth service and forge config

- Pass `undefined` explicitly to syncSessionToCliConfig() to satisfy TS arity check
- Make resources/cli conditional in extraResource so packaging doesn't fail when CLI bundle is absent

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(cli): make syncSessionToCliConfig token param optional

Avoids TS2554 when called without arguments on signOut, while also
satisfying the lint rule that strips explicit `undefined` arguments.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(cli): address PR review feedback

- Fix $@ shell expansion in privileged install path by writing to a
  temp file first, then using admin cp (Comment #1)
- Check .cmd extension on Windows for install status and uninstall
  guard so the CLI is correctly detected and removed (Comment #2)
- Wire prepare:cli into build:electron-vite instead of build:electron
  so all CI packaging paths (vite + forge) include CLI (Comment #3)
- Add CLI i18n strings for ja, fr-FR, zh-TW locales (Comment #4)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-08 10:02:11 +08:00
DIYgod 49f69f4d19
feat(cli): support browser-based auth login (#4887) 2026-02-27 16:51:58 +08:00
DIYgod a941a2d597
feat: add Folo CLI app with tests (#4883)
* feat(cli): add agent-friendly CLI client with tests

* fix(lockfile): regenerate lockfile after merging dev
2026-02-26 13:34:16 +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
DIYgod 3d812446c6
feat(mobile): add French locale support (#4876) 2026-02-24 18:01:33 +08:00
DIYgod adca1960a6
fix(desktop): switch AI spline asset domain (#4875) 2026-02-24 15:47:22 +08:00
DIYgod afddc8e846
fix(ssr): use VITE_API_URL and VITE_WEB_URL only (#4874) 2026-02-24 14:20:27 +08:00
DIYgod 330ee9cd1a
fix: harden setting sync auth lifecycle (#4872)
* fix: harden setting sync auth lifecycle

* fix: preserve legacy setting sync queue

* fix: keep setting queue on auth flaps

* fix: persist queue reset on auth errors

* fix: initialize setting sync queue earlier

* fix: await mobile sync queue load
2026-02-24 12:24:20 +08:00
DIYgod a491a82b58
fix(ssr): disable tsdown inlineOnly check for worker build (#4870)
The worker build intentionally bundles all dependencies (noExternal: ["**"])
for Cloudflare Workers. Set inlineOnly: false to suppress the error that
causes the build to exit with code 1.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:04:33 +08:00
DIYgod 81c5b9f2e0
chore(infra): migrate desktop web to Cloudflare (#4869)
* chore(infra): migrate desktop web from Vercel to Cloudflare Workers

Replaces separate Vercel deployments (follow SPA + follow-external-ssr) with unified Cloudflare Workers + Assets deployment. Implements meta tag injection, OG image generation, and environment variable management in Hono-based Worker. Adds GitHub Actions CI/CD for automatic deployment on push to dev/main branches.

- Replace Fastify with Hono for Cloudflare Workers compatibility
- Create Worker entry point with SSR routes and SPA fallback
- Add AsyncLocalStorage-based request context shim
- Implement WASM-based OG image rendering with R2 font storage
- Split SPA and SSR routing: /share/* and auth routes use SSR, others fallback to SPA
- Add Cloudflare wrangler configuration with dev/prod environments
- Create GitHub Actions workflow for automated deployments
- Add build scripts for font data and WASM patching

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(ssr): exclude worker files from typecheck and fix tsdown config

Worker-specific files (*.worker.ts) use Cloudflare Workers types and
generated modules that aren't available during the main tsc typecheck.
Exclude them from tsconfig since they're only used via tsdown aliases.
Also fix broken path.resolve reference in tsdown.worker.config.ts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 20:58:17 +08:00
DIYgod 0bba08f103
chore(firebase): switch to diygod Firebase config (#4868) 2026-02-22 15:15:13 +08:00
DIYgod 8ef3a5a436 release(desktop): release v1.3.1 2026-02-20 21:49:57 +08:00
DIYgod 63fb8d1b0f chore(desktop): update changelog for next release 2026-02-20 21:49:39 +08:00
DIYgod b465ec1463
fix: harden external protocol handling and unblock dev:electron (#4863)
* fix(desktop): harden external protocol handling

* fix(build): avoid optional peer resolution in dev
2026-02-20 21:36:23 +08:00
DIYgod 8963930f29
fix(web): resolve ai onboarding typecheck regressions (#4862) 2026-02-19 16:59:10 +08:00