Commit Graph
26 Commits
Author SHA1 Message Date
vin bc35b96b5d refactor: standardize runtime guard patterns with lodash-es (#154)
* refactor(ui): replace runtime type guards with lodash-es predicates

* refactor(runtime): migrate typeof checks to lodash-es in core modules

* refactor(ipc): standardize runtime guards with lodash-es

* test(refactor): align runtime guard checks with lodash-es

* docs(agents): add lodash-es runtime guard skill summary
2026-04-12 11:41:56 +08:00
vinandYoussef fce38ec6f0 Continue PR #142: security + Nix docs follow-up (#148)
* feat: add Nix Flake release and update documentation for Nix integration

- Added flake.nix with native library patching for Linux
- Included SHA256 hashes for v0.10.0 DEB releases (x86_64 and arm64)
- Updated README.md with instructions for nix run, NixOS, Home Manager, and devShells
- Generated flake.lock for reproducibility

* refactor: improve Nix Flake patterns for better consumer control

- Extracted derivation logic into a reusable `mkPackage` function
- Exposed `overlays.default` to allow consumers to use their own nixpkgs instance
- Updated `pkgs.system` to `pkgs.stdenv.hostPlatform.system` to follow modern Nix patterns
- Ensured default `packages` definition correctly handles unfree configuration for testing with `nix build` or `nix run`

* docs: update README with advanced Nix integration patterns

- Added Option 1 (Direct Integration) and Option 2 (Overlay) documentation
- Explained how to use the overlay for full nixpkgs control
- Fixed Markdown styling and lint issues in the Nix integration section

* docs: simplify Nix documentation to favor Overlay integration

- Removed "Option 1" (direct integration) as per user feedback
- Promoted the Overlay method as the standard way to consume the package
- Updated devShell examples to rely on the overlayed package set for consistency

* fix(security): prevent master key overwriting on decryption failure and improve account loading resilience

- Modify readSafeStorageKey and generatePrimaryMasterKey to stop if decryption fails for an existing file, preventing permanent data loss when keyring is temporarily locked.
- Update CloudAccountRepo.getAccounts and getAccount to gracefully skip corrupted account records instead of throwing errors.
- Added detailed logging for security failures to aid in diagnostics.

* docs(readme): sync Nix/NixOS integration docs in README.zh-CN

---------

Co-authored-by: Youssef <[email protected]>
2026-04-06 21:34:32 +08:00
vin 41a3a10ab6 chore(deps): move @tailwindcss/vite to devDependencie (#106) 2026-02-12 21:12:14 +08:00
vin caf9d5849a fix: project id fallback and stream error regression (#94)
* fix(proxy): harden project id handling for upgraded accounts

* fix(proxy): parse stream error payloads to preserve upstream project errors
2026-02-11 17:11:27 +08:00
vin ab78d93252 fix: project id forwarding regression (#93)
* fix(proxy): avoid empty project context and hydrate project_id from account token

* test(proxy): add regressions for empty project and token project_id hydration

* test(scripts): add live request validator for project_id forwarding
2026-02-11 12:36:01 +08:00
vin e5037dabcb chore(lint): remove unused imports via eslint unused-imports (#89) 2026-02-11 02:54:23 +08:00
vin b89dd2c3bb feat: global error fallback and e2e (#91)
* fix(ui): add global route fallback with error toast and retry

* test(e2e): cover cloud accounts error fallback UI
2026-02-11 02:25:10 +08:00
vin bcca5ec935 fix: prevent page crash on 500 and add toast-based fallback (#90) 2026-02-11 01:22:05 +08:00
vin 13f10fe32f feat: implement protocol parity and harden upstream handling (#88)
* feat: implement protocol parity and harden upstream handling

* docs(agents): add lodash-es utility method and named import guideline
2026-02-11 00:42:39 +08:00
vin 0f7a629a47 feat: add vercel and ui skills (#86) 2026-02-09 19:44:01 +08:00
vin e4584d0bc4 docs: upgrade openspec workflow (#85) 2026-02-09 19:39:36 +08:00
vin 56137092be ci: fix publish workflow release tag resolution (#82) 2026-02-08 12:38:05 +08:00
vin 5b93ca8891 ci: remove darwin universal build from publish workflow (#81) 2026-02-08 11:07:01 +08:00
vin 3eaf9278ae ci: split publish into build and gated release with dry-run (#80) 2026-02-08 10:14:34 +08:00
vin a93c6d0cea feat: complete account-bound profile switching and hardening (#78) 2026-02-08 01:10:07 +08:00
vin ee641799c2 fix(ci): increase Node heap for publish step to prevent macOS OOM (#76) 2026-02-06 23:57:16 +08:00
vin 5fe434f705 fix(ci): make WiX Toolset setup resilient on Windows runners (#73) 2026-02-06 23:13:48 +08:00
vin 18389b9753 docs: translate repository documentation to English (#72) 2026-02-06 22:14:06 +08:00
vin 2ae2216f1e refactor: migrate to winston and enable daily rotated app logs (#71) 2026-02-06 21:10:54 +08:00
vin ed94abf0d6 fix: restore account switching on Antigravity 1.16.5 and migrate db sync to drizzle (#69) 2026-02-06 20:16:02 +08:00
vin f572ae4652 feat: add multi-arch release artifacts and MSI packaging (#65) 2026-02-05 22:25:00 +08:00
vin ce7147025d feat: windows install guidance (#63)
* build: add dmg/appimage and artifact metadata

* feat: enhance packaging outputs and add Windows install-path notice
2026-02-04 18:10:26 +08:00
vin 080fb67974 chore: add Windows ARM64 publish runner and update readme (#57) 2026-02-01 18:08:13 +08:00
vin f6f8069ce4 feat: add cloud reset time UI (#56)
* feat: show quota reset time on cloud account card

* chore: ignore changelog file  in prettier

* style: format account card
2026-02-01 18:03:27 +08:00
vin a785640d7a feat: sentry integration (#51)
* feat: integrate sentry error reporting

* feat: report logger errors to sentry with 30s log context
2026-01-30 11:48:49 +08:00
vin 02080588b7 fix(security): add safeStorage fallback for production builds (#38) (#43)
Summary
  - Replace hard keytar dependency with a multi-strategy key storage:
    1) safeStorage (Electron built-in) — preferred
    2) keytar (system keychain) — fallback
    3) file-based encryption — last resort
  - Dynamically import keytar to avoid asar load failures
  - Refactor cloudHandler to use const (clean code)
  - Fix “Failed to load cloud accounts” in packaged app

  Rationale
  The keytar native module can fail to load from asar archives in production builds. This ensures the app works even when system keychain access is unavailable.

  Additional changes
  - Replace sync file ops with async (fs/promises)
  - Add atomic file writes to prevent data races
  - Implement concurrency lock for key generation
  - Add security error codes for better diagnostics
  - Add warnings for file-based fallback mode
  - Align error handling after merge
  - Migrate legacy encrypted account data

  References
  - Issue: #38
  - Commit: 92dc2f6
2026-01-27 03:05:41 +08:00