Context
A fully-built namespace management console, NamespacesAppPage, exists at apps/web/src/main.tsx:5943 (token create/revoke, public/private visibility + directory flag, multi-source builder, schedules, alerts, webhooks) but is never routed. The /app/namespaces route (apps/web/src/main.tsx:1575) instead renders the lightweight read-only NamespacesSimplePage (main.tsx:5893). The orphaned page already calls live hosted endpoints (/api/hosted/namespaces, /api/hosted/directory, /api/hosted/schedules, /api/hosted/alerts, /api/hosted/namespaces/:ns/tokens), so all namespace/memory CRUD is built but unreachable from the UI.
Goal / user story
As an authenticated user, I can open /app/namespaces and manage my namespaces end-to-end — create/revoke read tokens, flip public/private + directory visibility, run the multi-source builder, and view/edit schedules, alerts, and webhooks — without dropping to the CLI or API.
Acceptance criteria
Implementation notes
- Single-line route swap at
apps/web/src/main.tsx:1575; the component signature is NamespacesAppPage({ authToken }) and it already uses authHeaders(authToken).
refresh() (main.tsx:5969) throws on non-ok responses — make sure the useEffect catch surfaces error state in the UI (this pairs with the skeleton/error-card issue).
- The visibility toggle (
metadataDraft.visibility, ~main.tsx:5950) is the exact surface where a future "Encrypted (SEAL)" badge and Harbor bucket/seal_policy_id indicators will live — exposing it now is the prerequisite for that on-chain UI.
- Gotcha: no skeleton/loading exists in this page yet; either land minimal inline loaders here or sequence after the skeleton-system issue.
Sui Overflow angle
This console is where private-vs-public namespace control becomes visible. Once routed, it is the natural home to surface Harbor Bucket + seal_policy_id objects and Sui explorer deep-links — i.e. the place the on-chain provenance/encryption story gets demoed. It is the single biggest UX unlock and a prerequisite for every later Sui-native namespace UI.
Dependencies
None to ship the route swap. Enhanced by the skeleton/empty/error-states issue and the Sui wallet sign-in issue (for sessionToken/identity).
Part of the ContextMEM roadmap (#4) • Sui Overflow build.
Context
A fully-built namespace management console,
NamespacesAppPage, exists atapps/web/src/main.tsx:5943(token create/revoke, public/private visibility + directory flag, multi-source builder, schedules, alerts, webhooks) but is never routed. The/app/namespacesroute (apps/web/src/main.tsx:1575) instead renders the lightweight read-onlyNamespacesSimplePage(main.tsx:5893). The orphaned page already calls live hosted endpoints (/api/hosted/namespaces,/api/hosted/directory,/api/hosted/schedules,/api/hosted/alerts,/api/hosted/namespaces/:ns/tokens), so all namespace/memory CRUD is built but unreachable from the UI.Goal / user story
As an authenticated user, I can open
/app/namespacesand manage my namespaces end-to-end — create/revoke read tokens, flip public/private + directory visibility, run the multi-source builder, and view/edit schedules, alerts, and webhooks — without dropping to the CLI or API.Acceptance criteria
/app/namespacesrenders<NamespacesAppPage authToken={sessionToken} />instead of<NamespacesSimplePage />(swap atmain.tsx:1575)./api/hosted/*endpoint the page consumes is confirmed live inapps/api/src/worker.ts(audited and listed in the PR description)./api/hosted/namespaces/:ns/tokensand a freshly created token is shown once.private/public) +directoryEnabledtoggle persists via the metadata save and survives a refresh.refresh()shows a visible error (not an unhandled throw).NamespacesSimplePage(e.g. reuse it for the public showcase browse) is documented; no other call site regresses.Implementation notes
apps/web/src/main.tsx:1575; the component signature isNamespacesAppPage({ authToken })and it already usesauthHeaders(authToken).refresh()(main.tsx:5969) throws on non-ok responses — make sure theuseEffectcatch surfaceserrorstate in the UI (this pairs with the skeleton/error-card issue).metadataDraft.visibility, ~main.tsx:5950) is the exact surface where a future "Encrypted (SEAL)" badge and Harbor bucket/seal_policy_idindicators will live — exposing it now is the prerequisite for that on-chain UI.Sui Overflow angle
This console is where private-vs-public namespace control becomes visible. Once routed, it is the natural home to surface Harbor
Bucket+seal_policy_idobjects and Sui explorer deep-links — i.e. the place the on-chain provenance/encryption story gets demoed. It is the single biggest UX unlock and a prerequisite for every later Sui-native namespace UI.Dependencies
None to ship the route swap. Enhanced by the skeleton/empty/error-states issue and the Sui wallet sign-in issue (for
sessionToken/identity).Part of the ContextMEM roadmap (#4) • Sui Overflow build.