mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
Fix A: add remove_owner_p_kind / remove_save_subscription_kind Closes the non-atomic toggle-OFF path (Wes note 1). The toggle handlers in LocalArchiveSettingsCard were doing a TS-side read-modify-overwrite on the shared owner_p row — on toggle-OFF they called deleteSaveSubscription for the whole row, which would silently drop the *other* kind (24200 vs 44200) if subs state was stale. - store.rs: add remove_owner_p_kind mirroring merge_owner_p_kinds — same BEGIN IMMEDIATE → closure → COMMIT/ROLLBACK shape; reads current kinds, removes the target kind, then DELETEs the row if the list becomes empty or UPDATEs kinds to the reduced list otherwise. - mod.rs: add remove_save_subscription_kind Tauri command delegating to store::remove_owner_p_kind; registered in lib.rs alongside the merge cmd. - tauriArchive.ts: add removeSaveSubscriptionKind wrapper calling the new command + notifySubscriptionChange(). - LocalArchiveSettingsCard.tsx: rewrite handleObserverToggle and handleMetricToggle to use atomic commands — toggle-ON calls mergeSaveSubscriptionKinds(KIND), toggle-OFF calls removeSaveSubscriptionKind(KIND). The TS-side read-modify-overwrite and the whole-row deleteSaveSubscription branch are removed entirely. subs dependency dropped from both useCallback dep arrays. - store_tests (new file): 4 unit tests for remove_owner_p_kind: removes one kind leaving the other, deletes row on last kind, no-op when row absent, no-op when kind absent. Fix B: split archive test modules (Wes note 3) The check-file-sizes.mjs override for archive/mod.rs had ratcheted 1465→1705 across the PR series. Split both oversized test blocks: - archive/mod_tests.rs: extracted #[cfg(test)] mod_tests module from mod.rs (~1208 lines, test-only content). Wired via #[cfg(test)] #[path = "mod_tests.rs"] mod mod_tests in mod.rs. - archive/store_tests.rs: extracted #[cfg(test)] store_tests module from store.rs (~732 lines, fits under 1000 — no override needed). Wired via #[cfg(test)] #[path = "store_tests.rs"] mod store_tests in store.rs. mod.rs is now 532 lines, store.rs is 599 lines — both under 1000. The two mod.rs/store.rs overrides are replaced by a single mod_tests.rs override (1208). All 934 Rust tests pass unchanged. Co-authored-by: Will Pfleger <pfleger.will@gmail.com> Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Buzz
Desktop chat shell with:
- Tauri + React + TypeScript + Vite
- Tailwind CSS
- shadcn/ui-ready shared components
- Biome (lint/format/check)
- Feature-driven frontend structure
Scripts
pnpm dev- run the web frontendpnpm tauri dev- run the desktop apppnpm build- typecheck and build frontendpnpm typecheck- TypeScript checkspnpm lint- Biome lintpnpm format- Biome format (write)pnpm check- Biome check
Structure
src/shared- reusable app-wide code (ui,lib,styles)src/features- feature modules (vertical slices)src/app- top-level app composition