Retire cozystack-ui: migrate open issues/PRs into the monorepo, then archive
Context. PR #2963 (merged 2026-06-26, 01addfc26) vendored the cozystack-ui console SPA into the monorepo at packages/system/dashboard/images/console/. The build no longer fetches the old repo; only the shipped image name (cozystack-ui) and immutable changelog entries still reference it, both intentionally. The standalone repo still has 2 open PRs and 14 open issues that must move here before it is archived.
New home for all UI work: packages/system/dashboard/images/console/.
Principles
- Preserve authorship and discussion; credit original authors (
Co-authored-by).
- Use the monorepo's coarse label taxonomy. The old per-area labels (
area/console|forms|vm|auth|tenants) collapse to area/dashboard; area/container → area/build. kind/* and priority/* carry over verbatim.
- Order: migrate PRs → migrate issues → update doc/CONTRIBUTING pointers → archive. Issues cannot be transferred out of an archived repo, so archive last.
Label mapping
| cozystack-ui label |
monorepo label |
area/console, area/forms, area/vm, area/auth, area/tenants |
area/dashboard |
area/container |
area/build |
kind/bug, kind/feature, kind/cleanup |
same |
priority/backlog, priority/important-soon |
same |
security |
confirm monorepo equivalent before applying |
Granularity loss is expected — the monorepo deliberately uses one area/dashboard for the whole UI. If sub-area tracking is wanted later, propose new labels via PR per AGENTS.md (extend .github/labels.yml + pr-labeler.yaml).
Part 1 — Open PRs (2): re-apply (GitHub cannot transfer PRs)
For each: re-create the diff onto the new in-tree path, open a fresh monorepo PR with Co-authored-by: the original author, link back to the original, then close the original with a pointer. Verify each is still needed against the merged in-tree code first.
| old PR |
author |
title |
path remap |
size |
note |
| #34 |
IvanHunters |
fix(k8s-client): redirect to oauth2-proxy on 401 |
packages/k8s-client/src/client.ts → …/images/console/packages/k8s-client/src/client.ts |
+18/-0, 1 file |
trivial; confirm in-tree client.ts still lacks the 401 handler |
| #26 |
lexfrei |
refactor(forms): validate the schema form before page-level checks |
apps/console/src/routes/Backup*CreatePage(.test).tsx → …/images/console/apps/console/… |
+92/-20, 8 files |
scope already reduced to validation-ordering (the VMDisk/StorageClass parts were obsoleted by #30, which is in the merged snapshot); re-verify against in-tree pages |
Part 2 — Open issues (14): transfer + relabel
Mechanism (decided): gh issue transfer <N> cozystack/cozystack — preserves comments, author, and leaves a redirect from the old URL. Caveat: transfer drops labels not present in the target, so re-apply the mapped labels immediately afterward.
Triage: KEEP = migrate as-is. VERIFY = check whether the merged snapshot already resolves it before migrating.
| old # |
title |
mapped labels |
triage |
| 42 |
chore(deps): refresh npm dependencies with published security fixes |
area/dashboard, priority/important-soon, security |
KEEP — re-scope to the in-tree pnpm workspace; fold into Renovate/Scorecard coverage |
| 41 |
Console nginx default client-header buffers → HTTP 400 on large OIDC tokens |
area/build, kind/bug, priority/important-soon |
KEEP |
| 39 |
App detail Services tab: connection FQDN with configurable domain suffix |
area/dashboard, kind/feature, priority/backlog |
KEEP |
| 38 |
App detail Services tab does not show external LoadBalancer IP |
area/dashboard, kind/bug, priority/important-soon |
KEEP (distinct from the #2963 enabled-gate fix) |
| 37 |
Child tenants see no default VM images (picker reads cozy-public PVCs directly) |
area/dashboard, kind/bug, priority/important-soon |
KEEP |
| 36 |
VM create form: cannot add a disk until the page is refreshed once |
area/dashboard, kind/bug, priority/backlog |
VERIFY — likely fixed by the #30 DynamicOptionsWidget refactor already in-tree |
| 35 |
Cluster create form: cilium/coredns shown among toggleable addons w/o toggle |
area/dashboard, kind/cleanup, priority/backlog |
KEEP |
| 33 |
Capacity drill-down pages show generic error instead of 403-specific copy |
area/dashboard, kind/cleanup, priority/backlog |
KEEP |
| 32 |
Tenant picker shown on cluster-scoped /admin pages |
area/dashboard, kind/bug, priority/backlog |
KEEP |
| 31 |
humanizeBytes renders Ki-range sizes as raw bytes |
area/dashboard, kind/bug, priority/backlog |
KEEP |
| 14 |
Surface underlying Pod and HelmRelease events in application detail view |
area/dashboard, kind/feature, priority/backlog |
KEEP |
| 10 |
immutable-paths: array reorder re-anchors source values to new indices |
area/dashboard, kind/bug |
KEEP |
| 9 |
immutable-paths: overlay does not materialise an immutable leaf when ancestor missing |
area/dashboard, kind/bug |
KEEP |
| 8 |
immutable-paths: walker should descend into oneOf/anyOf/allOf branch properties |
area/dashboard, kind/bug |
KEEP |
Part 3 — Doc/process pointers to repoint before archive
docs/storage-immutability.md:13 → link cozystack/cozystack-ui#6 (fixed in cleanup PR B).
- cozystack-ui
README / CONTRIBUTING: add a banner "Development moved to cozystack/cozystack — file issues and PRs there", link the monorepo dashboard path.
- Any "report UI bugs here" links in monorepo docs/website pointing at the old tracker.
Progress — 2026-06-26
Migration executed. Old cozystack-ui#N → new monorepo issue #M:
All 14 carry mapped labels (area/dashboard, or area/build for #3113; kind/*/priority/*/security/triage/accepted retained on transfer). #3109 (was #36) keeps its own "verify against current main" request — the disk-array-add symptom still needs a runtime repro before closing. cozystack-ui now has 0 open issues.
PRs re-applied (originals closed with pointer comments):
Sequencing checklist
Retire
cozystack-ui: migrate open issues/PRs into the monorepo, then archiveContext. PR #2963 (merged 2026-06-26,
01addfc26) vendored thecozystack-uiconsole SPA into the monorepo atpackages/system/dashboard/images/console/. The build no longer fetches the old repo; only the shipped image name (cozystack-ui) and immutable changelog entries still reference it, both intentionally. The standalone repo still has 2 open PRs and 14 open issues that must move here before it is archived.New home for all UI work:
packages/system/dashboard/images/console/.Principles
Co-authored-by).area/console|forms|vm|auth|tenants) collapse toarea/dashboard;area/container→area/build.kind/*andpriority/*carry over verbatim.Label mapping
area/console,area/forms,area/vm,area/auth,area/tenantsarea/dashboardarea/containerarea/buildkind/bug,kind/feature,kind/cleanuppriority/backlog,priority/important-soonsecurityPart 1 — Open PRs (2): re-apply (GitHub cannot transfer PRs)
For each: re-create the diff onto the new in-tree path, open a fresh monorepo PR with
Co-authored-by:the original author, link back to the original, then close the original with a pointer. Verify each is still needed against the merged in-tree code first.fix(k8s-client): redirect to oauth2-proxy on 401packages/k8s-client/src/client.ts→…/images/console/packages/k8s-client/src/client.tsclient.tsstill lacks the 401 handlerrefactor(forms): validate the schema form before page-level checksapps/console/src/routes/Backup*CreatePage(.test).tsx→…/images/console/apps/console/…Part 2 — Open issues (14): transfer + relabel
Mechanism (decided):
gh issue transfer <N> cozystack/cozystack— preserves comments, author, and leaves a redirect from the old URL. Caveat: transfer drops labels not present in the target, so re-apply the mapped labels immediately afterward.Triage: KEEP = migrate as-is. VERIFY = check whether the merged snapshot already resolves it before migrating.
area/dashboard,priority/important-soon, securityarea/build,kind/bug,priority/important-soonarea/dashboard,kind/feature,priority/backlogarea/dashboard,kind/bug,priority/important-soonarea/dashboard,kind/bug,priority/important-soonarea/dashboard,kind/bug,priority/backlogDynamicOptionsWidgetrefactor already in-treearea/dashboard,kind/cleanup,priority/backlogarea/dashboard,kind/cleanup,priority/backlogarea/dashboard,kind/bug,priority/backlogarea/dashboard,kind/bug,priority/backlogarea/dashboard,kind/feature,priority/backlogarea/dashboard,kind/bugarea/dashboard,kind/bugarea/dashboard,kind/bugPart 3 — Doc/process pointers to repoint before archive
docs/storage-immutability.md:13→ linkcozystack/cozystack-ui#6(fixed in cleanup PR B).README/ CONTRIBUTING: add a banner "Development moved to cozystack/cozystack — file issues and PRs there", link the monorepo dashboard path.Progress — 2026-06-26
Migration executed. Old
cozystack-ui#N→ new monorepo issue#M:All 14 carry mapped labels (
area/dashboard, orarea/buildfor #3113;kind/*/priority/*/security/triage/acceptedretained on transfer).#3109(was #36) keeps its own "verify against currentmain" request — the disk-array-add symptom still needs a runtime repro before closing.cozystack-uinow has 0 open issues.PRs re-applied (originals closed with pointer comments):
fix(dashboard): 401 → oauth2-proxy redirect),@IvanHuntersviaCo-authored-by.refactor(dashboard): validate before page-level checks),@lexfreiviaCo-authored-by.Sequencing checklist
#36→#3109kept as-is with its verification note)storage-immutability.mdfixed in build(dashboard): pin console image builder to pnpm 11.1.2 and repoint vendor doc link #3099 (pending merge); README banner blocked by the cozystack-ui branch ruleset, so relying on GitHub's archive notice insteadcozystack/cozystack-ui(repo admin — user action, last step)