Skip to content

feat(web): full profile form, live catalog CRUD, and per-node drift#63

Merged
Bugs5382 merged 2 commits into
mainfrom
feat/profiles-crud-drift
Jul 20, 2026
Merged

feat(web): full profile form, live catalog CRUD, and per-node drift#63
Bugs5382 merged 2 commits into
mainfrom
feat/profiles-crud-drift

Conversation

@Bugs5382

Copy link
Copy Markdown
Contributor

What and why

Grows the profile catalog UI into a full, fleet-managed one and adds per-node drift.

  • The profile form widens to the whole cryptos.v1.CertificateProfile: subject, typed SANs (dns/ip/email/uri), key and extended key usage, basic constraints, and a base64 extra-extensions editor, with inline validation.
  • Live createProfile / updateProfile / deleteProfile branch on fleetMode() and drive the manager's new RPCs with a refetch after each write; the mock path is unchanged. Create, edit, and delete are admin-gated.
  • A pure computeDrift classifies each profile name as in-sync, drifted, node-only, or not-applied and lists the differing fields for a drifted row. A per-node drift view (reachable from the node detail) computes drift live and offers an admin-gated "Apply catalog version" reconcile via ApplyProfileToNode, with inline errors and a refetch. No native popups.

Merge order: depends on CryptOS-PKI/api#60 (proto) and CryptOS-PKI/manager#49 (RPCs); merge api first, then manager, then this. The regenerated fleet Connect stubs are vendored here from the api change.

Closes #62
Part of #24

Verification

  • Lint clean (npm run lint)
  • Tests pass (npm test: 173 passing)
  • Build succeeds (npm run build)

How this was verified

npm run lint (eslint + prettier) clean; npm test all 173 tests pass including the widened mock/live CRUD round-trip, the four-state computeDrift unit tests, and the drift-view reconcile test; npm run build (tsc + vite) succeeds.

Bugs5382 added 2 commits July 20, 2026 12:21
Widen the web profile shape to mirror cryptos.v1.CertificateProfile: subject,
typed SANs (dns/ip/email/uri), key and extended key usage, basic constraints,
and a base64 extra-extensions editor. Wire live createProfile, updateProfile,
and deleteProfile to the manager's new RPCs, branching on fleetMode() with the
mock path unchanged and a refetch after each write. Admin-gate the create,
edit, and delete controls and surface errors inline. Regenerate the fleet
Connect stubs and add the profile-applied and profile-deleted audit kinds.

Closes #62
Add a pure computeDrift that compares the catalog to a node's applied profiles
by name and classifies each as in-sync, drifted, node-only, or not-applied,
listing the differing fields for a drifted row in a deterministic order. Add a
per-node drift view reachable from the node detail that fetches the node config
live, computes drift, and offers an admin-gated Apply catalog version reconcile
via ApplyProfileToNode with an inline error and a refetch. Node-only rows are
informational.

Refs #62
@Bugs5382 Bugs5382 added this to the v1.0.0 milestone Jul 20, 2026
@Bugs5382 Bugs5382 self-assigned this Jul 20, 2026
@github-actions github-actions Bot added the enhancement New feature (feat). Minor version bump. label Jul 20, 2026
@Bugs5382
Bugs5382 merged commit 8a4ebf7 into main Jul 20, 2026
12 checks passed
@Bugs5382
Bugs5382 deleted the feat/profiles-crud-drift branch July 20, 2026 18:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature (feat). Minor version bump.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(web): full certificate-profile form, live catalog CRUD, and per-node drift

1 participant