Skip to content

v1.6.1: Critical bug fixes + crash fix#235

Merged
fatihkan merged 8 commits intomainfrom
dev
Mar 6, 2026
Merged

v1.6.1: Critical bug fixes + crash fix#235
fatihkan merged 8 commits intomainfrom
dev

Conversation

@fatihkan
Copy link
Owner

@fatihkan fatihkan commented Mar 6, 2026

Summary

Phases

Builds

  • Swift: Build complete (0 errors)
  • Rust: Finished (0 errors)
  • TypeScript: 0 errors
  • Vitest: 69/69 tests pass

Test plan

  • Launch app — no SIGILL crash
  • Send webhook with invalid signature → rejected
  • Rapid project switching → correct data shown
  • Open/close tasks with live timers → no memory growth
  • Settings page loads without infinite loading
  • Batch retry/cancel with error rollback

🤖 Generated with Claude Code

fatihkan and others added 8 commits March 6, 2026 10:09
…192, #195, #198)

- Real HMAC-SHA256 signature verification with constant-time comparison
- Path traversal prevention in project export (reject .. components)
- Read loop with Content-Length parsing and 1MB max for webhooks
- Template project creation wrapped in transaction (#197)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
, #214, #200, #201)

- BackendHealthMonitor: defer process.terminate() on timeout
- MCPHealthMonitor: defer + catch both terminate leaked processes
- chatStore: hoist unlisten to outer scope, cleanup in catch
- notificationStore: track toast timeouts in Map, clear on remove

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
, #194, #193)

- Orchestrator: NSLock for activeRunners access
- LMStudioBackend: callback-based dataTask -> async/await
- NotificationService: sync dbQueue.write -> async await
- chat.rs: try_lock() -> .lock().await to prevent dropped messages
- health.rs: panic!() -> fallback empty query with error log

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
#196, #199, #219)

- DeploymentCoordinator: re-read from DB before final update
- tasks.rs: retry_task_with_revision WHERE status guard
- TaskDetailView: status guard before retry

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- App.tsx: showChatPanel added to useEffect deps (#202)
- ProjectDetailPanel: cancelled flag prevents stale fetches (#203)
- projectStore: deleteProject with try/catch rollback (#204)
- settingsStore: fetchSettings error handling (#205)
- agentStore: fetchAgentTypes error handling (#206)
- TerminalOutput: reset lines on taskId change (#207)
- PublishingView: t -> tabKey to avoid i18n shadow (#208)
- GitGraphView: fetchData wrapped in useCallback (#209)
- taskStore: batchRetry/batchCancel with rollback (#210)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- NotificationToastOverlay: @State Task handle, cancel on dismiss
- NotificationViewModel: MainActor.run for thread-safe UI updates

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- ProjectChatService: add @mainactor class isolation, all property
  mutations now confined to main thread
- MultiBackendRunner: wrap isRunning/liveOutput/addOutputLine in
  MainActor.run, mark addOutputLine as @mainactor
- ContentView: replace try! DatabaseQueue() with safe fallback

Root cause: @observable properties mutated from background threads
while SwiftUI's AttributeGraph was reading them during layout,
causing EXC_BAD_INSTRUCTION (SIGILL) on the main thread.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@fatihkan fatihkan merged commit 454cdc0 into main Mar 6, 2026
1 check passed
This was referenced Mar 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant