57 Commits

Author SHA1 Message Date
João Salavisa 6b86b3482c fix: simplify plugin settings layout (#3914)
Co-authored-by: Kandev Agent <agent@kandev.dev>
2026-09-24 18:57:14 +01:00
João Salavisa 9fae7ab500 fix: deduplicate mobile plugin toolbars (#3908)
Co-authored-by: Kandev Agent <agent@kandev.dev>
2026-09-24 16:18:07 +01:00
João Salavisa 9885fd40ba fix(ui): polish mobile navigation and plugins (#3890)
Co-authored-by: Kandev Agent <agent@kandev.dev>
2026-09-23 21:30:36 +01:00
Clément Fiere f8708da1e0 feat(plugins): render a task menu action as a submenu (#3874)
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-09-23 11:00:23 +01:00
João Salavisa 545cd0b599 fix(ui): move task plugins into mobile menu
Move task plugin actions and destinations into the shared mobile Plugins menu, preserving a compact task header and accessible touch targets. Add focused mobile coverage, plugin authoring documentation, and process-probe stability handling.
2026-09-23 08:14:51 +01:00
José Almeida bae7b8b7de feat(ui): unify mobile navigation and task access (#3830) 2026-09-20 19:24:26 +01:00
Carlos Florêncio 2eee90d38e test: close conversation storage follow-up gates (#3742) 2026-09-17 10:39:30 +01:00
Carlos Florêncio 173e4c8c94 fix: keep transient retry banners to one notice (#3704) 2026-09-16 10:38:31 +01:00
Mattias Andersson 411f56b51b feat(plugins): add signed webhook automation adapters (#3692)
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-09-15 19:44:43 +00:00
Clément Fiere 2b1d0cf7d1 feat: add prompt history plugin Host prerequisites (#3588)
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-09-15 19:05:40 +01:00
Alassane cc33b2a813 fix(plugins): support direct agent profile invocation (#2870)
Co-authored-by: ayattara <alassane.yattara@savoirfairelinux.com>
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-09-15 09:40:39 +01:00
Carlos Florêncio 32b21c8b22 feat: open canvas setup dialog directly (#3587) 2026-09-13 16:59:54 +01:00
José Almeida 3f33ce0451 feat(ui): use native mobile confirmation sheets (#3621) 2026-09-12 14:58:49 +02:00
José Almeida 5ffe881877 fix(ui): improve mobile threads and shared listing headers (#3570) 2026-09-10 20:06:10 +00:00
Carlos Florêncio d74e85883d feat: add plugin-backed canvases (#3111) 2026-09-05 18:44:43 +00:00
João Salavisa e4eb278f21 feat(plugins): move shortcuts into plugin settings (#3384)
Co-authored-by: Kandev Agent <agent@kandev.dev>
2026-09-04 17:38:05 +00:00
Carlos Florêncio 34b8eafabf docs: add branded diagram design guidance (#3316) 2026-09-03 23:12:45 +00:00
Henry 335d80bf66 fix(task): prevent ready task environments with empty repo inventory (#3008)
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-08-26 23:00:36 +00:00
Carlos Florêncio 824851acbd fix(ui): contain growing dialog content (#3060) 2026-08-26 14:13:35 +00:00
Carlos Florêncio 7f24cce795 feat: expand compact workflow step navigation (#3054) 2026-08-26 13:11:37 +00:00
Alassane 0700911e05 feat(plugins): plugin task list facets for sort and group (#2932)
Co-authored-by: ayattara <alassane.yattara@savoirfairelinux.com>
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-25 06:59:14 +00:00
Carlos Florêncio 832734bb67 docs: migrate legacy specs and add product context (#2964) 2026-08-24 11:09:03 +00:00
Alassane 96c48d0517 feat(plugins): surface plugin update checks and manual updates (#2513)
Co-authored-by: ayattara <alassane.yattara@savoirfairelinux.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-08-23 17:35:46 +00:00
José Almeida c13924b51c feat(ui): add plugin uninstall confirmations (#2886) 2026-08-22 18:49:55 +00:00
Aulma 132bf61ee1 refactor(web): render every routed page's chrome through one topbar contract (#2718)
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-08-21 22:06:16 +01:00
Alassane 64bc820c45 feat(plugins): add task-row tags and sidebar actions (#2609)
Co-authored-by: ayattara <alassane.yattara@savoirfairelinux.com>
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-08-21 18:12:30 +01:00
Carlos Florêncio 6ca94f6e10 fix(web): make mobile topbar actions scrollable (#2769) 2026-08-18 17:18:32 +00:00
Clément Fiere 0e6c98c0a0 feat(web): add prompt history panel (#2738)
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-08-18 16:13:15 +00:00
Carlos Florêncio 7c96621de1 feat: add executor parity safeguards (#2704) 2026-08-16 21:13:41 +00:00
João Salavisa 0de77f7871 feat(web): make the plugin row's settings page discoverable (#2707)
Co-authored-by: Kandev Agent <agent@kandev.dev>
2026-08-16 16:31:28 +01:00
nova28 60d37aa24a feat(plugins): let nav items target the sidebar footer icon row (#2562)
Co-authored-by: nova28 <17953305+nova28@users.noreply.github.com>
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-08-15 19:33:08 +01:00
Alassane 31e07fab34 feat(plugins): add sidebar workspace actions to New Task (#2607)
Co-authored-by: ayattara <alassane.yattara@savoirfairelinux.com>
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-08-15 17:00:02 +01:00
João Salavisa bfd632bafa test(e2e): label or convert every remaining unconditional sleep (#2650)
Co-authored-by: Kandev Agent <agent@kandev.dev>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 23:55:11 +01:00
Carlos Florêncio 29b3e397bd fix: align setup and launch timeouts (#2578) 2026-08-13 11:26:02 +01:00
José Almeida f218880ecb feat(plugins): add source-control extension contracts (#2117) 2026-08-13 08:29:29 +01:00
João Salavisa fa7d88bee6 fix(plugins): make the composer capability usable end to end (#2575)
Co-authored-by: Kandev Agent <agent@kandev.dev>
2026-08-12 20:29:18 +01:00
José Almeida 6732c16385 feat: make status bar a default-off appearance preference (#2523) 2026-08-12 00:25:58 +01:00
Aulma 31907ba651 feat(web): restructure settings and unify page chrome behind PageShell (#2322)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 19:34:52 +02:00
Carlos Florêncio d38d9a0b86 fix(plugins): show install loading state (#2454) 2026-08-09 12:06:38 +01:00
nova28 5fc675ce9a fix(e2e): route make test-e2e through managed runner (#2412) 2026-08-08 16:13:06 +01:00
João Salavisa 6393d2df85 feat(plugins): expand host.ui and add host.toast / host.utils (#2410)
Co-authored-by: Kandev Agent <agent@kandev.dev>
2026-08-08 07:58:17 +02:00
João Salavisa fffde518dd fix(plugins): repair modal tooltips, live theme, and min_kandev_version (#2408)
Co-authored-by: Kandev Agent <agent@kandev.dev>
2026-08-08 02:12:44 +02:00
Alassane 82177a270b feat(plugins): add a task-card-tags slot (#2332)
Co-authored-by: ayattara <alassane.yattara@savoirfairelinux.com>
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-08-07 21:46:45 +01:00
Alassane 345ea1216d feat(plugins): add task panel, menu, and storage hooks (#2152)
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-08-05 19:02:29 +01:00
Carlos Florêncio 87239d1b29 fix: harden plugin failure recovery (#2169) 2026-08-02 22:25:27 +01:00
José Almeida 03e179c4d3 feat: add last task startup preference (#2102) 2026-08-01 09:58:05 +01:00
João Salavisa eb72f53c1b fix(web): phone navigation for plugin pages (#2093)
Co-authored-by: Kandev Agent <agent@kandev.dev>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-31 14:57:40 +01:00
Carlos Florêncio 167ab6b778 feat(mcp): add session attachment diagnostics (#2061) 2026-07-30 20:49:07 +01:00
José Almeida c16411db9a feat(web): polish mobile status drawer (#1929)
* feat(web): polish mobile status drawer

* fix(web): preserve mobile metrics row width
2026-07-27 10:18:20 +01:00
João Salavisa 5db3e48262 feat: add opt-in plugin auto-updater (#1903)
* feat: add opt-in plugin auto-updater

Automatically update installed plugins in the background, off by default
and opt-in. Builds on the existing verified install pipeline — an
auto-update is just an automatic reinstall of a newer catalog package_url.

Two-tier toggle on Settings > Plugins: an instance-wide default (SQLite
plugin_settings) plus a per-plugin override (tri-state auto_update on the
plugin record, carried forward on upgrade). The AutoUpdatePoller
(~90-min cadence + a boot sweep) upgrades only plugins that are currently
active, opted in, and report update_available; disabled/errored plugins
stay on their installed version.

New endpoints: GET/PUT /api/plugins/settings and
PUT /api/plugins/:id/auto-update.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(plugins): recheck auto-update eligibility at install and fix test mock

Address PR #1903 review feedback:
- Re-check each plugin's current status + effective opt-in immediately before
  InstallFromURL (eligibleForAutoUpdate), closing the TOCTOU window between the
  candidate snapshot / catalog fetch and the install so a plugin disabled or
  opted out mid-sweep is never reinstalled and reactivated.
- Correct the marketplace spec to describe the real failure behavior (shared
  with manual updates) instead of promising a version rollback the install
  pipeline does not perform.
- Fix the frontend CI failure: the plugins page test mocked the whole
  plugins-api module without the new settings/auto-update functions, so
  useAutoUpdateSettings threw at mount.
- Add an aria-label to the per-plugin auto-update Switch and Reset control.
- Add a use-auto-update-settings hook test (load, failure, optimistic setDefault,
  rollback) and an eligibleForAutoUpdate unit test.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Kandev Agent <agent@kandev.dev>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 13:04:54 +01:00