- Replace text input with native dialog.showOpenDialog for vault path selection
- Add path validity detection with three-state UI (unselected/valid/invalid)
- Fix YAML frontmatter parsing failure with Chinese/special characters
- Fix ENOENT error when vault subdirectory doesn't exist
- Add AI summary (description) to Obsidian frontmatter export
- Add author fallback to feed title when entry author is empty
- Increase filename truncation limit from 20 to 80 characters for CJK titles
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
- Replace text input with native dialog.showOpenDialog for vault path selection
- Add path validity detection with three-state UI (unselected/valid/invalid)
- Fix YAML frontmatter parsing failure with Chinese/special characters
- Fix ENOENT error when vault subdirectory doesn't exist
- Add AI summary (description) to Obsidian frontmatter export
- Add author fallback to feed title when entry author is empty
- Increase filename truncation limit from 20 to 80 characters for CJK titles
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* 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
* 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
* 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>
* feat: migrate desktop and mobile error tracking to PostHog
* fix(mobile): remove unsupported tab bar minimize API
* Revert "fix(mobile): remove unsupported tab bar minimize API"
This reverts commit e234dda51257dc6810f0f78e06ee918adf2214b0.
* chore: Update Japanese translations for new features and errors
Added and updated multiple Japanese locale strings across AI, app, errors, external, settings, and shortcuts modules. Changes include new labels, descriptions, error messages, and UI text for features such as scheduling, token usage, inbox management, toolbar customization, and quick search.
* Add Japanese README documentation
Introduces README-ja.md with comprehensive information about Folo, including features, installation instructions, community links, contribution guidelines, code signing policies, and license details for Japanese-speaking users.
* Update formatting in Japanese README
Corrected the admonition marker from '[!重要]' to '[!IMPORTANT]' for consistency and made minor formatting adjustments in the README-ja.md file.
* Update community section in Japanese README
Revised wording and formatting in the community participation section of README-ja.md for improved clarity and consistency.
* Remove Japanese README file
Deleted README-ja.md to reduce duplication or outdated documentation. All relevant information should now be referenced from the main README or other documentation files.
* feat: add French (fr-FR) localization
* fix: sort imports in default-resource.ts to resolve lint error
* feat: add missing French translations for mobile/default, native, and external locales
* feat: add French language filter to discovery/recommended feeds
* docs: update changelog for French localization
* feat(i18n): merge PR #4597/#4774 and finish localization audit
---------
Co-authored-by: dai <dosada@gmail.com>
Co-authored-by: Anthony Mahé <snpepito@gmail.com>
Co-authored-by: Anthony Mahé <104373430+AnthonyMahe@users.noreply.github.com>
* chore: update workspace dependencies
- bump dependencies across desktop, mobile, ssr, and internal packages
- refresh pnpm lockfile
- apply type compatibility fixes required by upgraded packages
* fix(ssr): prevent tsdown CI warning from failing build
- set inlineOnly to false in tsdown config
* style: format files for CI prettier check
- apply prettier formatting to files reported by format:check
* fix(mobile): downgrade reanimated for rn 0.79 ios build
Wrap new URL() constructor in try-catch to gracefully handle malformed URL strings that start with 'http' but are invalid. Returns null instead of throwing.
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Remove the checkNew query and related state management that periodically checked for new entries in the timeline. The hasUpdate state and related UI indication (refresh button highlighting) have been removed while preserving fetchedTime for mark-all-read filtering.