Skip to content

Retire cozystack-ui: migrate open issues/PRs into the monorepo, then archive #3097

Description

@myasnikovdaniil

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/containerarea/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:

old new old new old new
#8 #3101 #31 #3105 #37 #3110
#9 #3102 #32 #3106 #38 #3111
#10 #3103 #33 #3107 #39 #3112
#14 #3104 #35 #3108 #41 #3113
#36 #3109 #42 #3114

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/dashboardIssues or PRs related to the dashboard / UIkind/cleanupCategorizes issue or PR as related to cleanup of code, process, or technical debtpriority/important-soonMust be staffed and worked on either currently, or very soon, ideally in time for the next release

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions