- Add pagination support to TaskStore.getAgentLogs() with limit/offset parameters
- Add GET /tasks/:id/logs API route with pagination support
- Add fetchAgentLogs API client with pagination parameters
- Refactor useAgentLogs hook for incremental loading with loadMore callback
- Update useMultiAgentLogs for pagination consistency across multiple task IDs
- Add Load More UI to AgentLogViewer component
- Wire up Load More in TaskDetailModal agent log section
- Fix offset slice direction bug in getAgentLogs
- Remove incorrect reverse() call in getAgentLogs offset logic
- Add comprehensive tests for useAgentLogs and useMultiAgentLogs pagination
- Convert skills-adapter.ts readFileSync/writeFileSync to async readFile/writeFile
- Cache GitHub webhook private key in memory to avoid repeated fs reads
- Convert usage.ts readFileSync to async readFile
- Update usage.test.ts to work with async file operations
- All HTTP request handlers now use non-blocking async fs operations
- Add SSE listener for milestone:updated events in MissionManager to refresh UI on status changes
- Trigger slice and milestone status recompute when task feature status changes
- Add diagnostic log when task feature resolution fails for easier debugging
- Add regression tests for milestone status recompute logic
- Add markOnboardingCompleted() to set completedAt timestamp when user finishes onboarding
- Add isOnboardingCompleted() to check if onboarding was completed (vs dismissed)
- Update ModelOnboardingModal to call markOnboardingCompleted on successful completion
- Skip onboarding auto-open when already completed locally
- Add completion state tracking tests in ModelOnboardingModal.test.tsx
- Add model-onboarding-state unit tests
- Update useAuthOnboarding to check local completion state before auto-opening
- Document localStorage completion state tracking pattern in .fusion/memory.md
- Resolve conflict in TerminalModal.test.tsx by keeping helpful loadAddon comment
- Add clarifying comment in mobile WebGL skip test
- Fix pre-existing typecheck errors in SettingsModal.tsx
The test was checking that loadAddon was never called with any object,
but fitAddon and webLinksAddon are both objects that are legitimately
loaded. The WebglAddon constructor check is sufficient to verify that
WebGL is not loaded on mobile.
- Change @media query breakpoint from 600px to 640px for .onboarding-resume-card
- 640px is an approved breakpoint value per mobile CSS guidelines
- Fixes mobile-css test failure that was blocking the build
- Add OnboardingResumeCard component shown when onboarding was dismissed but not completed
- Store onboarding step state in localStorage for session persistence
- Update App.tsx to render resume card when onboarding is resumable
- Add comprehensive tests for model-onboarding-state utility functions
- Add tests for OnboardingResumeCard component and App integration
- Use onResume callback pattern for consistency with modal API
- Add model-onboarding-state.ts module for persisting onboarding step state
- Create OnboardingResumeCard component with resume functionality
- Wire resume card into App.tsx (visible when onboarding is resumable and modal is closed)
- Add unit tests for state helpers and resume card
- Add integration tests for App.tsx resume card behavior
- Update documentation with resume banner behavior
- Fix missing contextVersionAtStart property declaration in useBadgeWebSocket.ts
- Fix number input onChange handlers for maxConcurrent, pollIntervalMs, and maxWorktrees
- Add 'as any' type assertion to allow undefined values in form state
- Enables clearing numeric inputs to undefined for null-as-delete semantics
- Pass recoverApprovedTriageTask and getSpecifyingTaskIds callbacks from
TriageProcessor to SelfHealingManager in InProcessRuntime. Without these,
approved triage tasks stuck in 'specifying' status were never recovered.
- Remove duplicate imports in ModelOnboardingModal.tsx that caused TypeScript
errors (duplicate identifiers: useEffect, useRef, ToastType, fetchAuthStatus).
- Add mock for model-onboarding-state in App.test.tsx.
- Add core test for title summarization behavior under saturated task lane conditions
- Add engine test for heartbeat execution when task lanes are saturated
- Fix experimentalFeatures test to correctly expect merge semantics (not replacement)
- Ensure tests validate task selection and execution under concurrency limits