Commit Graph

149 Commits

Author SHA1 Message Date
Carlos Florêncio eb0df0a492 feat: add PR walkthrough generation workflow (#2933) 2026-08-22 21:46:57 +01:00
Carlos Florêncio 7835c9a02a ci: persist fork approval labels across pushes (#2924) 2026-08-22 15:35:06 +00:00
Alassane 957e6bbf7d test(e2e): guard against E2E runs on a stale backend binary (#2694)
Co-authored-by: ayattara <alassane.yattara@savoirfairelinux.com>
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-08-19 09:08:06 +01:00
Carlos Florêncio 22472460a6 ci: prebuild desktop E2E dependencies (#2789) 2026-08-19 07:50:00 +01:00
Carlos Florêncio 96dbcb9938 fix: bypass release PR checks with admin token (#2758) 2026-08-17 19:39:13 +00:00
Carlos Florêncio ac08c1df5c feat: automate Scoop stable releases (#2517) 2026-08-16 21:12:19 +00:00
João Salavisa 5dcac3f259 ci: prepare CI workflows for a GitHub merge queue (#2721)
Co-authored-by: Kandev Agent <agent@kandev.dev>
2026-08-16 20:10:03 +01:00
João Salavisa 5323cd68e7 ci(e2e): cache Go modules and build cache in the E2E build job (#2657)
Co-authored-by: Kandev Agent <agent@kandev.dev>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 17:04:56 +01:00
João Salavisa c488c7b4f9 test(e2e): ratchet new unconditional sleeps to dwell/injectLatency (#2646)
Co-authored-by: Kandev Agent <agent@kandev.dev>
2026-08-13 22:50:13 +01:00
João Salavisa 510f887787 ci(e2e): surface and trend the E2E flake rate in the job summary (#2635)
Co-authored-by: Kandev Agent <agent@kandev.dev>
2026-08-13 18:53:59 +01:00
Alassane 3ff2441830 test(gitlab): scrub ambient GitLab env vars for host-trust tests (#2592)
Co-authored-by: ayattara <alassane.yattara@savoirfairelinux.com>
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-08-13 12:53:29 +01:00
Alassane 81e16c4c32 fix(test): pin NODE_ENV so React unit tests can render (#2568)
Co-authored-by: ayattara <alassane.yattara@savoirfairelinux.com>
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-08-13 12:52:31 +01:00
José Almeida f218880ecb feat(plugins): add source-control extension contracts (#2117) 2026-08-13 08:29:29 +01:00
Carlos Florêncio be966f410f ci: harden GHCR release publishing (#2573) 2026-08-12 19:01:01 +01:00
nova28 2c6a9c287d feat(backend): count accepted step-completion signals (#2526)
Co-authored-by: nova28 <17953305+nova28@users.noreply.github.com>
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-08-12 17:12:56 +01:00
Carlos Florêncio b4a84f8212 docs: prevent em dashes in public copy (#2516) 2026-08-12 11:13:25 +01:00
Clément Fiere f12bd75a40 fix(ci): grant pull-requests write to fork label job (#2542) 2026-08-11 23:21:52 +01:00
Carlos Florêncio 1429fa1a9a ci: balance e2e shards by test duration (#2489) 2026-08-11 19:33:50 +01:00
Alassane 6aa967f873 fix(plugins): correct stale plugin-hook availability claims (#2309)
Co-authored-by: ayattara <alassane.yattara@savoirfairelinux.com>
2026-08-10 10:14:46 +01:00
Carlos Florêncio 52be8b8e47 fix: guard backend runtime-state ownership (#2468) 2026-08-09 21:44:52 +01:00
João Salavisa c5c591b60b refactor(pty): collapse duplicated PTY and cmdline helpers into common/ptyexec (#2457)
Co-authored-by: Kandev Agent <agent@kandev.dev>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 01:03:13 +01:00
Carlos Florêncio bf62f39b10 fix: harden launcher port ownership (#2394) 2026-08-07 23:32:04 +01:00
Carlos Florêncio c312430a99 ci: upgrade GitHub Actions to Node 24 runtime (#2401) 2026-08-07 22:31:00 +01:00
Carlos Florêncio fa433cc965 ci: label allowlisted fork pull requests (#2380) 2026-08-07 18:24:27 +01:00
José Almeida 774ce6d9b4 feat: add source runtime bundle target (#2277) 2026-08-07 12:58:53 +01:00
João Salavisa ee40cd6235 perf(i18n): drop the pseudo QA locale from production bundles (#2361)
Co-authored-by: Kandev Agent <agent@kandev.dev>
2026-08-07 13:21:38 +02:00
João Salavisa 0350e1d0e6 ci(web): gate frontend CI on typecheck (#2304)
Co-authored-by: Kandev Agent <agent@kandev.dev>
2026-08-06 03:18:24 +02:00
João Manso ad69533c10 ci(release): publish a Windows zip alongside the tarball (#2286) 2026-08-05 15:30:12 +01:00
Carlos Florêncio 9b3aa282a9 chore: strengthen code review prompts (#2267) 2026-08-05 13:44:25 +01:00
Carlos Florêncio a602ec498b fix: restore stable release publication (#2260) 2026-08-04 17:02:28 +01:00
José Almeida 1d5c3e3f5f feat: add npm nightly release channel (#2126) 2026-08-04 00:45:50 +01:00
Carlos Florêncio bb71233826 chore: add architecture lint guardrails (#2168) 2026-08-03 22:40:29 +01:00
Carlos Florêncio 5772fa86f0 ci: fix OpenCode fork label cleanup permission (#2230) 2026-08-03 22:11:45 +01:00
Carlos Florêncio f51a83e4d3 fix: publish clarification task state updates (#2174) 2026-08-02 20:42:57 +01:00
João Salavisa f26befdc33 fix(ci): stop the i18n ratchet failing PRs on files they never touched (#2165)
Co-authored-by: Kandev Agent <agent@kandev.dev>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-02 18:58:30 +02:00
João Salavisa 83c3c1ccf1 feat(i18n): ratchet new code to require t()/<Trans> everywhere (#2105)
Co-authored-by: Kandev Agent <agent@kandev.dev>
2026-08-01 23:14:50 +01:00
João Salavisa 6cd89a78d3 feat(i18n): add scoped i18n foundation with one migrated page (#2097)
Co-authored-by: Kandev Agent <agent@kandev.dev>
2026-08-01 23:11:18 +02:00
Carlos Florêncio 9f7662d540 ci: authenticate docs preview build (#2115) 2026-07-31 21:52:05 +01:00
Carlos Florêncio 0aa6749bdb fix(ci): checkout PR head for Claude mentions (#2109) 2026-07-31 19:51:06 +01:00
Carlos Florêncio b5a80d9b23 ci: mirror postgres service image in ghcr (#2110) 2026-07-31 19:27:55 +01:00
Carlos Florêncio 272fa2d34d ci: review PRs only on open (#2100) 2026-07-31 17:06:22 +01:00
Carlos Florêncio be85ce2f87 ci: forward approved users to Claude review (#2078) 2026-07-30 20:48:48 +01:00
João Manso cc340ae5f2 fix(build): make Makefile $(shell) probes work under native Windows cmd (#1953) 2026-07-26 11:40:55 +01:00
Carlos Florêncio 2d5fedd5d0 fix(release): preflight signing configuration before merge (#1948) 2026-07-25 18:06:49 +01:00
João Manso 6fedac6c64 fix(build): support make dev on native Windows (#1886) 2026-07-24 12:08:22 +01:00
Carlos Florêncio ae6e2f3daa fix(release): sign and verify release tags (#1902) 2026-07-24 09:54:00 +01:00
Carlos Florêncio a225fbac3e ci: harden trusted PR review evidence (#1896) 2026-07-23 16:22:50 +01:00
Carlos Florêncio e53fd038a8 fix(windows): list logical drives in folder picker (#1870) 2026-07-23 14:45:49 +01:00
Carlos Florêncio 2130c28686 fix(repositories): allow explicit paths outside discovery roots (#1825) 2026-07-20 19:49:41 +01:00
João Salavisa 52946b9159 docs: document the plugin marketplace (#1805)
* docs: document the plugin marketplace

Add a public Plugin Marketplace page covering both audiences: operators
using the in-app catalog (Browse/Installed tabs, one-click install,
Update to vX, the Sources dialog for team/corporate registries, plugin
icons, feature-flag gating, sideloading still works) and plugin authors
publishing into it (one-repo-per-plugin GitHub Release assets, the
optional manifest icon field, submitting a plugins.yaml PR to the
official catalog, GitHub-stars-only ranking, and hosting your own
index.json source).

Also cross-link the new page from plugins.md (replacing the now-false
"No plugin marketplace" security note), plugins-authoring.md, and
plugins-manifest.md (new icon field row); register it in meta.json and
coverage.json.

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

* docs: correct plugin-registry CI validation claims

The registry index-build workflow does not validate plugins.yaml against
schema.json, nor does build-index.mjs compare the entry id to the
manifest id — bad entries are skipped-and-logged, and CI only fails when
a non-empty list resolves to zero built entries. Reword the submission
steps (in both the marketplace docs page and plugin-registry/README.md)
to describe what the workflow actually does: it resolves each entry
against the GitHub API and requires a correctly named
<id>-<version>.tar.gz release asset, with maintainer approval as the real
gate. Also clarify that plugins.yaml `categories` are free-form curation
tags, not the manifest's category enum.

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

* ci: split plugin-registry Pages deploy into its own job

The single build-and-deploy job bound the `github-pages` environment at
the job level, so GitHub evaluated that environment's protection rules on
every PR run — failing the check even though the deploy steps were gated
to non-PR events. This broke every PR touching plugin-registry/**, which
is exactly what a plugin-submission PR does.

Split into a PR-safe `build` job (no environment) and a non-PR-gated
`deploy` job that owns the `github-pages` environment and runs only
`deploy-pages`. Behavior on push/schedule/workflow_call is unchanged; PRs
now run build+tests without tripping the environment gate. The star
refresh calls this workflow by file path, so the job rename is safe.

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

* docs: describe index-build asset resolution accurately

build-index.mjs picks the <id>-<version>.tar.gz release asset when
present but falls back to the release's first .tar.gz otherwise, and only
errors when a release has no .tar.gz at all — it does not hard-fail a
misnamed asset. Reword the submission steps to present the exact asset
name as an authoring instruction (so the index resolves the right asset)
rather than a builder-enforced gate.

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

* Revert "ci: split plugin-registry Pages deploy into its own job"

This reverts commit 2c5f649146.

* Reapply "ci: split plugin-registry Pages deploy into its own job"

This reverts commit 3795cdb98a.

---------

Co-authored-by: Kandev Agent <agent@kandev.dev>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 17:44:15 +01:00