Commit Graph

55 Commits

Author SHA1 Message Date
Carlos Florêncio aae5a723cd feat(settings): reorganize storage settings and improve retention UX (#3695) 2026-09-16 09:42:52 +01:00
Carlos Florêncio 33c66bcff7 feat: add optional tool payload retention (#3668) 2026-09-15 09:38:21 +01:00
Henry f529d4b757 feat(office): bound run history growth with a scheduled retention sweep (#3566)
Co-authored-by: nova28 <17953305+nova28@users.noreply.github.com>
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-09-13 21:43:44 +01:00
Carlos Florêncio 34a21812ca fix: recover slow analytics and workspace reads (#3639) 2026-09-13 16:59:03 +01:00
Carlos Florêncio a5fe42777b feat: add temporary storage visibility and cleanup (#3633) 2026-09-13 12:08:24 +01:00
Carlos Florêncio b6571a9854 fix: keep large database startup alive (#3624) 2026-09-12 16:29:38 +01:00
Carlos Florêncio 544246e50e feat(storage): show database footprint in storage analysis (#3575) 2026-09-10 21:36:50 +01:00
Henry ecd3efc01b fix(office): stop multi-agent reviews from deadlocking by default (#3515)
Co-authored-by: nova28 <17953305+nova28@users.noreply.github.com>
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-09-09 07:52:18 +01:00
Clément Fiere 296a1bdb71 chore: consolidate backend literals and docs formatting (#3508)
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-09-09 07:50:08 +01:00
Henry 5f0459dab6 docs: correct stale unique-index precondition for office session identity (#3513)
Co-authored-by: nova28 <17953305+nova28@users.noreply.github.com>
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-09-08 22:22:57 +01:00
Clément Fiere d61e06a8b0 feat(queue): move automation toggles to session scope (#3465)
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-09-08 22:22:17 +01:00
Carlos Florêncio a08f2b37ff feat(backend): enforce required store parity (#3459) 2026-09-07 19:28:31 +01:00
Carlos Florêncio 3119b08199 feat(storage): add progressive storage analysis (#3429) 2026-09-06 16:09:03 +00:00
João Salavisa 5d2abaecd2 docs: mark shared access features experimental (#3428)
Co-authored-by: Kandev Agent <agent@kandev.dev>
2026-09-05 23:27:48 +01:00
Carlos Florêncio d74e85883d feat: add plugin-backed canvases (#3111) 2026-09-05 18:44:43 +00:00
Carlos Florêncio db3a11333e feat(settings): split system data and storage pages (#3348) 2026-09-04 00:37:41 +00:00
José Almeida 0064b9fb5a feat: add Kubernetes executor (#3261) 2026-09-02 13:50:03 +00:00
Henry e7ebf5de22 fix: bind office run identity to its own agent's session, not the assignee's (#3211)
Co-authored-by: nova28 <17953305+nova28@users.noreply.github.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-09-01 00:06:09 +00:00
Carlos Florêncio ef0afde8a2 docs: add product screenshots to public guides (#3126) 2026-08-28 20:03:23 +00:00
Carlos Florêncio 2c293b55b0 fix: preserve archived task resume state (#3115) 2026-08-28 12:07:46 +00:00
Carlos Florêncio 936218157e fix: preserve legacy sqlite database continuity (#3089) 2026-08-27 14:00:20 +00:00
Henry 54d507b8d7 fix(backend): bind the HTTP listener before startup recovery so health checks don't crash-loop (#2944)
Co-authored-by: nova28 <17953305+nova28@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-08-24 19:35:07 +00:00
Carlos Florêncio 81da6af99f fix: preserve newest backend diagnostics (#2929) (#2934) 2026-08-23 20:49:47 +00:00
Carlos Florêncio 96329b6561 fix: align SQLite backups with database path (#2686) 2026-08-15 19:34:52 +01:00
Carlos Florêncio 23328edad5 fix(storage): repair Go-cache quarantine lifecycle (#2602) 2026-08-13 11:07:46 +01:00
José Almeida e9ea55d08b feat: auto-merge consecutive queue messages (#2598) 2026-08-13 08:43:26 +01:00
Carlos Florêncio b4a84f8212 docs: prevent em dashes in public copy (#2516) 2026-08-12 11:13:25 +01:00
José Almeida 6732c16385 feat: make status bar a default-off appearance preference (#2523) 2026-08-12 00:25:58 +01:00
Carlos Florêncio 8e56a3a7f7 feat(storage): add owned temporary artifact cleanup (#2444) 2026-08-09 17:57:47 +01:00
Carlos Florêncio abc05be59e fix(task): recover legacy worktree ownership cutover (#2463) 2026-08-09 17:37:48 +01:00
Carlos Florêncio 2832170eb4 fix(task): preserve task-owned worktrees across session deletion (#2456) 2026-08-09 12:05:48 +01:00
Carlos Florêncio 7133b132f6 feat(storage): speed up scans and add dependency cleanup (#2432) 2026-08-08 19:30:05 +01:00
nova28 f8acc2a7f5 feat(health): surface kandev version on /health (#2416) 2026-08-08 14:43:51 +01:00
João Manso 666c162350 docs: add Scoop as a Windows install channel (#2269) 2026-08-05 19:14:09 +01:00
Carlos Florêncio fef76fda57 feat: prevent host sleep during active tasks (#2264) 2026-08-05 18:24:14 +01:00
José Almeida d6b95500eb fix: make pending message queues manageable (#2239) 2026-08-04 08:49:46 +01:00
José Almeida 1d5c3e3f5f feat: add npm nightly release channel (#2126) 2026-08-04 00:45:50 +01:00
Carlos Florêncio 62d4522e0f feat: add file-backed diagnostic log bundles (#2087) 2026-08-02 20:14:53 +01:00
Carlos Florêncio 72f01e6c35 docs: simplify public documentation for scanning (#2139) 2026-08-01 22:02:54 +01:00
Carlos Florêncio 9f2b5f92c3 refactor(settings): centralize portable user-setting defaults (#2107) 2026-07-31 18:41:49 +01:00
Clément Fiere 59d1cc7277 feat: add Slack-style unread divider to session transcript (#1922) 2026-07-31 14:42:14 +01:00
Carlos Florêncio 7ad1599b70 feat(web): show WebSocket connectivity warnings (#2083) 2026-07-31 14:23:16 +01:00
Carlos Florêncio 6ba9f1b0fd feat: add quarantine retention lifecycle (#2049) 2026-07-30 10:44:51 +01:00
Carlos Florêncio e8d4b7d69e fix: restore coarse running busy signal (#2023) 2026-07-29 08:11:51 +01:00
Carlos Florêncio 7250cdbf61 feat: explain busy storage cleanup and allow override (#1993) 2026-07-28 09:23:42 +01:00
Carlos Florêncio 85b44ced45 fix: restore managed native service updates (#1943) (#1945) 2026-07-25 16:20:07 +01:00
Carlos Florêncio 715a2033b2 fix: route update alerts through notification providers (#1938) 2026-07-25 11:07:06 +01:00
Clément Fiere f85b648d97 feat: notify user when a kandev update is detected (#1924)
* feat: notify user when a kandev update is detected

Adds a background-poller-driven update notification with a saved
preference for delivery channel (desktop / in-app banner / both) and
an enable/disable switch on the Updates settings page.

Backend:
- internal/system/updates: NotifySettings + NotifyStore persist the
  enable/channel preference on the existing install-wide settings
  table; notifyIfNewUpdate broadcasts a WS event the first time a
  newer release is observed, deduped durably via kandev_meta so a
  restart or repeat poll doesn't re-announce the same version.
- New GET/PUT /api/v1/system/updates/notification-settings endpoints.
- pkg/websocket: new system.update_available action.

Desktop (Tauri):
- native_notifications.rs: task_id is now optional (Option<String>,
  required only for session-scoped events) and the event allowlist
  accepts system.update_available: alongside the existing session
  events, so the update notification can use the native bridge.

Frontend:
- New UpdateNotificationsCard on the Updates settings page (Switch +
  channel Select), wired through the shared settings-save-provider
  floating Save/Discard action.
- useUpdateAvailableToast bridges the WS event to an in-app toast
  and/or the native/browser desktop notification, per the saved
  channel, deduped per version.

* docs: document the update notification channel setting

* fix: hydrate update notification settings and broadcast delivery ack

- Only mark a release notification as delivered when the broadcaster
  reports at least one connected client, closing a race where an
  update could be silently dropped before the first client connects.
- Hydrate updateNotificationSettings through the settings boot payload
  (loadSettingsInitialState -> hydrateState) instead of a component-
  level fetch, per the boot-payload -> store -> component data flow.
  Widen the hydration types (HydrationState) so callers can hydrate a
  partial system slice without fabricating the other system fields.
  UpdateNotificationsCard now only reads/writes the subscribed store
  state.
- Fix module-scope settings-fetch cache leaking across tests in
  use-update-available-toast.test.ts so the fetch-failure test
  actually exercises the catch/fallback path.
- Add API-client contract tests for fetchUpdateNotificationSettings
  and saveUpdateNotificationSettings (GET cache policy, PUT method
  and body).

* test: cover delayed hydration and boot-payload mapping for update notifications
2026-07-24 22:40:24 +01:00
Carlos Florêncio 2751b932df perf: cache storage analysis results (#1911) 2026-07-24 09:55:40 +01:00
Carlos Florêncio 77ef32c86c feat: add simplified resource metrics display (#1904) 2026-07-23 21:24:10 +01:00