Commit Graph
61 Commits
Author SHA1 Message Date
ZacharyZhang-NYandClaude Opus 4.6 758bc077ff fix(quick-260328-48g): fix heartbeat task duplication with Paperclip-style coalescing
- Remove self-defeating heartbeat task filter that excluded heartbeat tasks from candidates
- Add Paperclip-style task reuse: recycle existing done/in_review heartbeat tasks instead of creating new ones
- Fix status bug: new heartbeat tasks created as "todo" instead of "in_progress" so CAS checkout succeeds
- Wire one-time duplicate cleanup sweep into heartbeat scheduler startup

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 03:17:17 -04:00
ZacharyZhang-NYandClaude Opus 4.6 4b5492ea34 feat(quick-260328-48g): add database methods for heartbeat task reuse and cleanup
- Add findReusableHeartbeatTask() to find most recent done/in_review heartbeat task per agent
- Add cleanupDuplicateHeartbeatTasks() to cancel old duplicates using ROW_NUMBER window function
- Add 12 unit tests covering coalescing behavior, cross-agent isolation, status filtering

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 03:14:40 -04:00
ZacharyZhang-NYandClaude Opus 4.6 05c57be98f fix: prevent agents from running indefinitely after app quit
Agents kept running after closing AgentCompany because worker processes
auto-recreated on exit, retry timers were never cleared, child CLI
processes weren't terminated, and orchestration had no quit guards.

Changes:
- Add isQuitting guards to all orchestration/automation entry points
- Track and clear all setTimeout/setInterval timers on quit
- Send cancel-run to all active CLI processes before killing worker
- Add destroyed flag to prevent worker recreation after intentional destroy
- Add quit confirmation dialog: Stop All & Quit / Minimize to Background / Cancel
- Bump version to 0.4.96

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 12:40:58 -04:00
ZacharyZhang-NYandClaude Opus 4.6 eda0e26adb feat: rebrand to website design, Apple HIG icons, ASCII onboarding animation
Build & Release / Lint & Typecheck (push) Successful in 38s
Build & Release / Unit Tests (push) Successful in 31s
Build & Release / Windows (arm64) (push) Failing after 11s
Build & Release / Windows (x64) (push) Failing after 27s
Build & Release / Linux (arm64) (push) Canceled after 0s
Build & Release / Linux (x64) (push) Canceled after 0s
Build & Release / Publish Release (push) Canceled after 0s
Build & Release / macOS (arm64) (push) Canceled after 0s
Build & Release / macOS (x64) (push) Canceled after 0s
- Align Electron CSS with website design schema (Inter font, #FBFAF5/#191919
  palette, #213448/#94B4C1 accent)
- Generate proper app icons from logo.svg via cairosvg (no more Pillow ladder)
- Square bg icons for Electron/tray (Apple HIG — OS applies squircle mask)
- Circle bg icons for website favicon only
- Add scrolling ASCII agent-activity animation to onboarding hero left panel
- Remove dock.setIcon() — let macOS use bundle .icns with system mask
- Fix goal title overflow with min-w-0 for flex truncation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 16:39:28 -04:00
ZacharyZhang-NYandClaude Opus 4.6 a4fd98d934 fix: add system tray icon for all platforms (macOS, Windows, Linux)
Build & Release / Lint & Typecheck (push) Successful in 1m29s
Build & Release / Unit Tests (push) Successful in 31s
Build & Release / Windows (arm64) (push) Failing after 4m48s
Build & Release / Windows (x64) (push) Failing after 4m42s
Build & Release / Linux (x64) (push) Failing after 19s
Build & Release / macOS (arm64) (push) Canceled after 0s
Build & Release / macOS (x64) (push) Canceled after 0s
Build & Release / Publish Release (push) Canceled after 0s
Build & Release / Linux (arm64) (push) Failing after 1m9s
Tray was invisible on Windows/Linux (icon not bundled in asar) and
completely absent on macOS (early return guard). Generate dedicated
tray-sized icons, bundle them in the packaged app, and create tray
on all platforms with macOS Template image support.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 01:21:17 -04:00
ZacharyZhang-NYandClaude Opus 4.6 d52985f61e feat: deliverable review gate, app lifecycle fixes, CI/CD pipeline
- Add deliverable review gate: pause workflow when agents produce important
  documents (PRDs, design docs, etc.) for human review before continuing
- Add company-level reviewDeliverables setting with onboarding card selector
- Block agent heartbeats when deliverable review is pending (agent + CEO)
- Trigger review at document creation time in API server for reliability
- Fix autoApproveHires vs reviewDeliverables conflict in approval-policy
- Fix app quit: force-exit on all platforms (macOS Dock, Windows tray, Linux)
- Add multi-platform CI/CD pipeline (macOS arm64/x64, Windows x64/arm64,
  Linux x64/arm64 with deb/AppImage/rpm/snap) with code signing support

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 23:31:48 -04:00
ZacharyZhang-NY 9e2c19259a update 2026-03-23 16:51:02 -04:00
ZacharyZhang-NY b56aaa1498 update 2026-03-23 16:27:55 -04:00
ZacharyZhang-NY b15f1c0e5e update 2026-03-23 12:37:22 -04:00
ZacharyZhang-NYandClaude Opus 4.6 b52e1017ad refactor(ui): remove Runs from sidebar, keep via command palette
Runs page is a developer debug tool. Console panel already shows run
output. Power users can still access via command palette or programmatic
navigation. Sidebar: 9 → 8 items.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 12:36:32 -04:00
ZacharyZhang-NYandClaude Opus 4.6 dff4c4791f refactor(ui): rename sidebar "Agents" to "Team"
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 12:26:45 -04:00
ZacharyZhang-NYandClaude Opus 4.6 144f35463b fix(ui): remove automated document spam and clean up Runs page
Remove "Create status report on schedule" default automation rule that
was creating empty draft documents every 60s. Simplify Runs page by
removing 3 summary cards and replacing 10-card metadata grid with
compact row layout.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 12:13:11 -04:00
ZacharyZhang-NYandClaude Opus 4.6 b6d92ac634 feat(ui): show OrgChart at top of Agents section
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 11:56:05 -04:00
ZacharyZhang-NYandClaude Opus 4.6 bb59eb0d45 refactor(ui): clean up Dashboard from 9 chaotic sections to 4 focused ones
Remove HealthRing, DepartmentOverview, TaskPipeline, SprintProgress,
GoalProgress, WorkforceGrid, ConnectorHealth. Move Needs Attention to
top. Reduce 9 metric cards to 4. Add Active Work section. -50KB bundle.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 11:54:19 -04:00
ZacharyZhang-NYandClaude Opus 4.6 d5c9440ab4 refactor(ui): consolidate sidebar from 24 items to 9 flat items
Remove 6 group headers and reduce navigation to: Dashboard, Agents,
Work, Messages, Documents, Approvals, Runs, Social Media, Settings.
Absorbed sections remain accessible via command palette.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 11:37:05 -04:00
ZacharyZhang-NY 9928efed81 update 2026-03-22 21:11:44 -04:00
ZacharyZhang-NY a2a110f0c5 fix(04): wire pending approval notifications in IPC and API server paths 2026-03-22 17:12:40 -04:00
ZacharyZhang-NY ec14f4a8ea feat(04-02): restyle RecoveryBanner with design tokens and update NeedsAttention label
- Replace all hardcoded Tailwind colors with CSS custom properties (--warn, --warn-soft, --text, --muted, --panel-soft, --success, --danger, --muted-strong)
- Use rounded-[10px] instead of rounded-lg for design system consistency
- Add aria-label on dismiss button for accessibility
- Update NeedsAttention label to 'Needs Your Attention' in en.ts and zh.ts
2026-03-22 16:44:12 -04:00
ZacharyZhang-NY 071eef43a2 feat(04-02): wire notification-click event handler in renderer
- Add notification-click handler in App.tsx IPC event subscription
- Calls navigateTo(section, entityId) for instant navigation to target entity
- Handler returns early to avoid unnecessary snapshot reload via batcher
2026-03-22 16:42:45 -04:00
ZacharyZhang-NYandClaude Opus 4.6 667ac48aa5 feat(04-01): refactor all notify() call sites to use structured NotificationOptions
- Change ipc-support.ts notify() from (title, body) to (options: NotificationOptions)
- Wire createNotificationService in bootstrap-application.ts with lazy service graph refs
- Update all 12 call sites with entity context, urgency, navigation, and batch keys
- Update dependency interfaces in service-graph, worker, orchestration, automation, updater, desktop-shell
- No string-based notify() calls remain in src/main/

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 16:37:07 -04:00
ZacharyZhang-NYandClaude Opus 4.6 9ebb489644 feat(04-01): create notification service with batching, urgency, and GC protection
- Add createNotificationService with 10s batch window, urgency mapping, click-to-navigate
- Extend DesktopEvent union with NotificationClickEvent type
- Add 10 unit tests covering batching, urgency, NEVER_BATCH, GC protection, Linux urgency
- Platform-specific: silent flag, Windows timeoutType, Linux urgency level

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 16:30:49 -04:00
ZacharyZhang-NY 7d5d1e5b30 feat(03-01): add SearchResults component with highlighting, scope toggle, and CommunicationHub integration
- Create SearchResults component with virtualized list, term highlighting via <mark>, keyboard navigation, loading/empty states
- Add search scope toggle (All Channels / This Channel) with radio group accessibility
- Integrate debounced (300ms) IPC search into CommunicationHub with stale response discard via requestId
- Update CommunicationSlice with search state (query, scope, results, loading, requestId)
- Modify FilterBar to accept scopeToggle prop and Escape key handler
- AnimatePresence cross-fade between SearchResults and MessageList views
2026-03-22 14:34:35 -04:00
ZacharyZhang-NY 43cb97ac6d feat(03-02): add SocialDraftPreview component and ApprovalInspector integration
- Create SocialDraftPreview with platform icon, color, content, char count, media URLs, schedule display
- Integrate SocialDraftPreview into ApprovalInspector for social_post approvals
- Add schedule picker with immediate/scheduled radio group and datetime-local input
- Add social_post to type badge with accent styling
- Approve button shows 'Approve & Post' for social_post approvals
- Accessibility: role=region, aria-label, aria-live=polite, role=radiogroup
- Fix test type annotation for TS compatibility
2026-03-22 14:33:47 -04:00
ZacharyZhang-NY 931e38c823 feat(03-03): add BudgetAlertBanner component and integrate into Dashboard
- Create BudgetAlertBanner with threshold detection (>=80% budget utilization)
- Display agent names with percentages, warn color for 80-99%, danger for 100%+
- Dismissible per session with auto-reset on new threshold crossings
- View Costs link navigates to costs section
- Accessible with role=alert, aria-live=assertive, keyboard-dismissible
- Framer Motion fade-in/slide-down animation, respects reduced motion
- Positioned after RecoveryBanner in Dashboard layout
2026-03-22 14:32:00 -04:00
ZacharyZhang-NY e0ee5bb5ad feat(03-02): implement social draft pipeline backend
- Add social_post to ApprovalType union in types.ts
- Add social_post to approvalInputSchema enum in contracts.ts
- Add POST /api/companies/:companyId/social/draft endpoint in api-server.ts
- Add social_post handling in handleApprovalResolved in automation-service.ts
- Browser action payloadJson includes scheduledAt for startup recovery (03-03 contract)
- Scheduled posts use setTimeout for deferred dispatch
- All 13 unit tests pass
2026-03-22 14:30:32 -04:00
ZacharyZhang-NY ce2c3be065 feat(03-01): add searchMessages backend with LIKE query, IPC channel, preload bridge, and tests
- Add searchMessages method to AppDatabase with LIKE query, wildcard escaping, channel scoping, ORDER BY created_at DESC with limit
- Add searchMessages IPC channel and searchMessagesSchema to contracts.ts
- Register IPC handler in ipc-agent-coordination-handlers.ts with Zod validation
- Wire searchMessages through preload bridge
- Add 8 unit tests covering body/subject search, wildcard escaping, channel scoping, empty results, limit, and ordering
2026-03-22 14:29:59 -04:00
ZacharyZhang-NY 14da6b5ede feat(03-03): add budget alert OS notifications and scheduled post recovery
- Add notify() calls at 80% budget threshold warning and 100% exhaustion auto-pause
- Compute percentage as Math.round(utilization * 100) for accurate display
- Add scheduled social post timer re-registration on app startup
- Add unit tests for budget threshold detection and notification logic
2026-03-22 14:29:43 -04:00
ZacharyZhang-NY 07a0d54f77 fix: simplify connector matching - CEO auto-detects and uses available connectors silently
- Remove all user-facing messaging about connector selection
- CEO reads available connectors and assigns automatically
- No special-case logic for single vs multiple connectors
- Matching is invisible to the user
2026-03-22 13:08:48 -04:00
ZacharyZhang-NY 6f13d324e4 fix: handle single-connector case in matching heuristic and CEO prompt
- matchConnector returns honest reason when only one connector is ready
- CEO prompt detects single-connector scenario and tells CEO to use it for all agents
- Removes misleading 'Best match' language when there's no actual choice
2026-03-22 13:00:11 -04:00
ZacharyZhang-NY 51dbeb0cac feat(02-02): enhance agent prompts for non-code task deliverables
- Add deliverable requirement sections for research and content tasks in prompt-builder
- Research tasks instruct agents to produce knowledge entries, documents, or substantial comments
- Content tasks instruct agents to produce documents, social media drafts, or substantial comments
- Auto-infer task_type from assignee department on task creation in api-server
- Import inferTaskType in both prompt-builder and api-server
2026-03-22 03:59:09 -04:00
ZacharyZhang-NY 9a1671981a fix(02-03): include linter-applied changes for crash recovery
- Re-stage files that were modified by linter after previous commit
2026-03-22 03:58:19 -04:00
ZacharyZhang-NY 64183428ec feat(02-03): crash recovery detection and user notification
- Enhance interruptStaleRuns to return count and mark tasks as blocked
- Add lastInterruptedCount property for bootstrap recovery check
- Add getInterruptedRunsForRecovery query method
- Add retryInterruptedTask, dismissInterruptedTask, markInterruptedTaskFailed actions
- Add recovery-needed IPC event emission in bootstrap between heartbeat and resume
- Create ipc-recovery-handlers.ts with retry/dismiss/fail IPC handlers
- Register recovery handlers in domain handler chain
- Expose recoveryRetry, recoveryDismiss, recoveryFail in preload API
- Add recovery method types to DesktopApi contract
- Create RecoveryBanner component with retry/cancel per interrupted task
- Integrate RecoveryBanner at top of Dashboard view
- Add crash recovery unit tests (9 tests)
2026-03-22 03:57:58 -04:00
ZacharyZhang-NY 1eeb7a7669 feat(02-02): self-wake circuit breaker and non-code task deliverable enforcement
- Add consecutiveWakeMap with MAX_CONSECUTIVE_WAKES=5 circuit breaker in worker-service
- Circuit breaker resets on successful run completion, escalates to manager when tripped
- Add checkRunProducedDeliverable in automation-service to check for knowledge entries, documents, or substantial comments
- Non-code tasks (research/content) require deliverable artifact before auto-advancing to in_review
- Add public queryAll method to database for cross-service deliverable queries
2026-03-22 03:55:32 -04:00
ZacharyZhang-NY f3874568a2 feat(02-03): retry-aware failure escalation pipeline
- Add MAX_RETRY_ATTEMPTS (2) and RETRY_COOLDOWN_MS (30s) constants
- Replace immediate escalation with retry-then-escalate logic
- Escalation chain: retry same agent -> manager -> CEO -> user notification
- Reset retry count on successful task completion
- Update Reassign on run failure automation rule with afterRetryExhaustion condition
- Add comprehensive unit tests for escalation state machine (11 tests)
2026-03-22 03:53:18 -04:00
ZacharyZhang-NY fbfc9c38cb feat(02-01): inject connector capabilities into CEO prompt
- Add allConnectors optional field to PromptContext interface
- Import getConnectorStrengths from connector-matching module
- Add 'Available Connectors for Hiring' section with per-connector status and strengths
- Add 'Connector Assignment Guide' mapping role types to preferred connectors
- Replace generic 'Choose the best runtime' text with connector-aware guidance
- Pass allConnectors from snapshot in orchestration-service.ts
- No type errors, all existing tests pass
2026-03-22 03:46:18 -04:00
ZacharyZhang-NY 058cc0dc55 feat(02-01): implement connector-matching heuristic and DB schema extensions
- Create connector-matching.ts with matchConnector, inferTaskType, getConnectorStrengths
- Add TASK_TYPE_PREFERENCE mapping task types to ordered connector lists
- Add ROLE_DEPARTMENT_HINTS mapping departments to task types
- Add CONNECTOR_STRENGTHS with human-readable capability descriptions
- Add TaskType to shared/types.ts
- Add task_type, retry_count, last_failure_at columns to tasks table
- Add getTaskRetryCount, incrementTaskRetryCount, resetTaskRetryCount, setTaskType to AppDatabase
- All 34 unit tests pass
2026-03-22 03:43:30 -04:00
ZacharyZhang-NY 81965a697d refactor(01-05): decompose hiring.tsx (321 lines) into 2 focused sub-components
- Extract hiring-helpers.ts (36 lines): HiringStage type, HiringCandidate interface, getHiringStage, stageColor, STAGE_ORDER
- HiringPipeline.tsx (293 lines): main hiring pipeline component
- hiring.tsx becomes re-export barrel (2 lines)
- All sub-components under 300 lines
2026-03-22 02:57:43 -04:00
ZacharyZhang-NY d2ed17a81b refactor(01-06): decompose inbox.tsx into focused sub-components
- inbox.tsx (489 lines) -> 4 files: Inbox, StandupView, PerformanceView, inbox-helpers
- All sub-component files under 300 lines
- Backward-compatible re-export barrel preserves all 3 named exports (Inbox, StandupView, PerformanceView)
- App.tsx imports unchanged and resolving correctly
2026-03-22 02:56:42 -04:00
ZacharyZhang-NY 36b0d39102 refactor(01-05): decompose CompanyOnboarding.tsx (686 lines) into 8 focused sub-components
- Extract ConnectorReadiness.tsx (84 lines): connector status display
- Extract CompanyStep.tsx (158 lines): company name, connector, workspace setup
- Extract MissionStep.tsx (97 lines): goal title and description panel
- Extract LaunchStep.tsx (91 lines): launch summary grid
- Extract ClaudeSettingsDialog.tsx (85 lines): Claude Code settings modal
- Extract LanguageStep.tsx (76 lines): language selection step
- Extract OnboardingHero.tsx (97 lines): left hero panel with step indicators
- OnboardingWizard.tsx (287 lines): main orchestrator with state and handlers
- CompanyOnboarding.tsx becomes re-export barrel (2 lines)
- All sub-components under 300 lines
2026-03-22 02:55:42 -04:00
ZacharyZhang-NY 93e599befd refactor(01-06): decompose social.tsx and runs.tsx into focused sub-components
- social.tsx (541 lines) -> 5 files: SocialPanel, AccountCard, AddAccountDialog, ActionHistory, social-config
- runs.tsx (506 lines) -> 4 files: RunCenter, RunQueue, RunDetail, run-helpers
- All sub-component files under 300 lines
- Backward-compatible re-export barrels preserve existing App.tsx imports
2026-03-22 02:54:02 -04:00
ZacharyZhang-NY d77486504d feat(01-04): add TanStack Virtual list virtualization and keyboard navigation hook
- Install @tanstack/react-virtual for virtualized list rendering
- Create useRovingTabIndex hook in src/renderer/lib/keyboard.ts for arrow-key navigation
- Add virtualization to 6 lists: TaskQueue, ApprovalList, ActivityList, CostList, AgentRoster, MessageList
- MessageList uses measureElement for variable-height message items with auto-scroll
- All 6 lists have role="listbox" with role="option" on rows for accessibility
- All 6 lists support ArrowDown/ArrowUp/j/k/Home/End keyboard navigation
- Add 8 unit tests for useRovingTabIndex covering all key bindings and edge cases
2026-03-22 02:08:43 -04:00
ZacharyZhang-NY 7ff8dc70a2 refactor(01-02): decompose execution.tsx and automation.tsx into focused sub-components
- execution.tsx (1749 lines) -> 16 focused files under 300 lines each:
  TaskQueue, TaskInspector, TaskCreator, TaskComments, ApprovalList,
  ApprovalInspector, ActivityList, CostList, BudgetSummary, WorkspaceList,
  WorkspaceInspector, WorkspaceCreator, SecretCreator, SettingsPane,
  PendingReviewList, execution-utils
- automation.tsx (1697 lines) -> 6 focused files under 300 lines each:
  AutomationPanel, RuleCard, RuleEditor, WorkflowList, WorkflowEditor,
  automation-config
- Both original files replaced with backward-compatible re-exports
- All sub-components under 300 lines, TypeScript compilation passes
2026-03-22 02:01:33 -04:00
ZacharyZhang-NY 586593f0e4 feat(01-03): decompose company-operations.tsx into focused sub-components
- Split company-operations.tsx (725 lines) into 6 files: DocumentCenter, KnowledgeBaseManager, MeetingsManager, SprintManager, SectionHeader, helpers
- All sub-component files under 300 lines (max: 107 lines)
- Original file replaced with backward-compatible re-exports
- TypeScript compilation passes
- ARCH-02 requirement complete for all 3 targeted monolithic files
2026-03-22 01:58:09 -04:00
ZacharyZhang-NY 16d10c0814 feat(01-03): decompose organization.tsx and dashboard.tsx into focused sub-components
- Split organization.tsx (1395 lines) into 12 files: AgentRoster, AgentCreator, AgentEditor, GoalList, GoalCreator, GoalEditor, ProjectList, ProjectCreator, ProjectEditor, OrgChart, helpers, orgTreeLayout
- Split dashboard.tsx (1053 lines) into 11 files: Dashboard, HealthCard, MetricsGrid, ActivityFeed, QuickActions, DepartmentOverview, TaskPipeline, SprintProgress, GoalProgress, KanbanBoard, NeedsAttention
- All sub-component files under 300 lines (max: 239 lines)
- Original files replaced with backward-compatible re-exports
- TypeScript compilation passes
2026-03-22 01:54:20 -04:00
ZacharyZhang-NY ccfdbe73a3 refactor(01-02): decompose communication.tsx into 6 focused sub-components
- CommunicationHub.tsx: main layout shell with sidebar + message area
- ChannelSidebar.tsx: channel list with unread badges and filter bar
- MessageList.tsx: message display with threading and empty states
- MessageItem.tsx: message bubble, task comment bubble, agent avatar
- MessageComposer.tsx: message input, task discussion composer, compose modal
- ChannelHeader.tsx: channel info bar with stats
- channel-utils.ts: shared channel derivation and message filtering logic
- Original communication.tsx replaced with backward-compatible re-exports
- All sub-components under 300 lines, TypeScript compilation passes
2026-03-22 01:50:15 -04:00
ZacharyZhang-NYandClaude Opus 4.6 0f72ea4c77 feat(01-01): migrate App.tsx from 31 useState calls to Zustand store
- Replace all 31 useState declarations with useAppStore selectors
- Add direct setters (setCommandPaletteOpen, setConsoleOpen, etc.) to NavigationSlice
- Replace IPC debounce with createEventBatcher (50ms window)
- Route shortcut events through store.getState() for toggle actions
- Remove unused type imports (SidebarBadges, CompanyMetrics, etc.)
- Zero useState calls remain in App.tsx (down from 31)
- TypeScript compilation passes with zero errors
- All 14 unit tests continue to pass

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 01:36:55 -04:00
ZacharyZhang-NYandClaude Opus 4.6 5e9d36c058 feat(01-01): create Zustand store with 6 slices, IPC batcher, and unit tests
- Install zustand 5.x and immer 11.x dependencies
- Create 6 Zustand slices: navigation, company, selection, ui, communication, social
- Create combined store with devtools + immer middleware
- Create IPC event batcher with 50ms debounce window (schedule/flush/dispose)
- Create typed selector hooks for narrow state subscriptions
- Add 14 unit tests covering store initialization, slice behaviors, and batcher timing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 01:30:37 -04:00
ZacharyZhang-NY 6b47e95d36 update 2026-03-20 00:12:38 -04:00
ZacharyZhang-NY 9510e1c858 update 2026-03-19 17:06:47 -04:00
ZacharyZhang-NY d126c4cf21 update 2026-03-19 16:51:44 -04:00