zlh-grind/Codex/Portal/OPEN_ITEMS.md

6.0 KiB

Portal - Open Items

Only keep unfinished Portal work here.

Launch active

  • Harden terminal / console connection state:
    • add WebSocket connect timeout in TerminalView
    • on error, close/clear current socket refs and sender callback
    • reset isStreaming on closed, error, and idle
    • make the button recover from Connecting... to Open Console / Reconnect
    • validate console still works for authenticated owner after the fix
  • Verify Portal compatibility after API control-plane and billing hardening:
    • login / refresh / /api/auth/me
    • hosted IDE token and hosted URL entry flow
    • server list/status polling
    • async server create flow with pending cards
    • user-safe server delete flow via DELETE /api/servers/{id}
    • billing checkout/portal/upgrade/downgrade flows if Stripe is live
    • backup/restore/file/console flows that depend on owned server access
  • Retest notepad/notes and general customer messaging surfaces:
    • load/save
    • persistence after reload/login
    • permissions
    • empty/error states

Validation follow-ups

  • Verify CPU/network metrics on live DEV and GAME servers after the frontend metrics normalizer change; if values still do not update, investigate API/agent metrics collection or rate calculation.
  • Verify backup metadata rendering, including checkpoint-aware presentation, against current API fields.
  • Verify restore accepted → status polling → completion UX against current async restore API behavior.
  • Verify marketing CTA routing and SEO page internal links after public-site refresh.
  • Check mobile behavior at 375px, 390px, 768px, and desktop widths after future UI changes.

Cleanup / consolidation priorities

  • Fold repeated API-client/status-polling patterns and shared state-mapping logic where behavior is already the same.
  • Fold repeated table/detail/action rendering helpers only where it reduces duplication without hiding page intent.
  • Split oversized page/component/state files by responsibility without changing user-visible behavior.
  • Keep restore/status wording explicit, but remove duplicate operation-label and status-reason mapping where possible.
  • Centralize shared server-management action handling so files/backups/restore/restart flows do not re-implement the same request/toast/poll logic.
  • Continue API client surface cleanup where overlapping wrappers or legacy paths still exist.
  • Optional later: factor repeated SEO landing-page layout once copy stabilizes.

Completed and moved out of active cleanup

  • Node/runtime pin alignment is current Portal state.
  • Next 16 lint-script migration is complete.
  • Initial dead HUD wrapper cleanup is complete.
  • Stale legacy CSS cleanup is complete.
  • Baseline dependency pruning and audit cleanup are complete.
  • The old Portal-side /api/agent/{serverId}/{action} bridge has been removed.
  • Dashboard spotlight placeholder data / broken manage-link cleanup is complete.
  • Hub-nav and onboarding-tour billing mismatch is complete.
  • Authenticated shell alignment for billing/profile/support is complete.
  • Server card and console status labels no longer treat all non-connectable states as Needs attention.
  • Host/container lifecycle states and async host action polling are represented in the server list.
  • DEV server status is separated from GAME connectability status in the server list.
  • DEV console shows host, agent, and IDE indicators.
  • Server-list and console IDE controls are compact and colocated with IDE readiness indicators.
  • Async server creation is tracked on the Servers page with inline pending cards and operation polling.
  • The previous creation-progress hydration loop that caused maximum update depth errors is resolved.
  • Multi-create modal overlap/confusion is resolved by async inline pending cards.
  • Server deletion has migrated to DELETE /api/servers/{id} with the normal user JWT client path.
  • Portal does not add INTERNAL_API_TOKEN to browser code.
  • Dashboard spotlight recognizes DEV containers and mirrors server-list IDE/readiness/host badges.
  • Public marketing site now has hybrid conversion + SEO structure.
  • Pricing tiers are Starter / Pro / Performance workload tiers.
  • Root metadata and homepage hero copy match browser dev + managed hosting positioning.
  • Fake zlh CLI command was removed from the homepage visual.
  • SEO landing pages exist for Minecraft hosting, modded Minecraft hosting, and browser dev environments.
  • Public marketing/auth/dashboard mobile responsiveness pass is no longer a from-zero open item.
  • Mobile public nav/menu behavior has been fixed with a working mobile menu and corrected desktop breakpoint.
  • Billing suspended/customer messaging is visible through announcements for launch.
  • Support form submit works end-to-end through /api/support/create; customer acknowledgement email and Discord support alert were validated.

Cleanup rule

  • Prefer behavior-preserving folding over broad refactors.
  • Merge repeated flows, not concepts.
  • Keep helpers small and concrete.
  • Reduce page-local duplication before introducing new abstractions.
  • Treat runtime/tooling cleanup as contract-sensitive once it touches auth, API integration, or user-visible route behavior.

Verify before re-opening

  • console reconnect/state behavior during restart/restore transitions
  • restore accepted → status polling → completion UX
  • backup metadata rendering, including checkpoint-aware presentation
  • server management flows that share action/polling/toast logic
  • login/refresh/hosted-IDE flows after API token tightening or route-boundary changes
  • marketing CTA routing and SEO page internal links after public-site refresh
  • mobile behavior at 375px, 390px, 768px, and desktop widths after future UI changes
  • live CPU/network metric movement for DEV and GAME servers once API/agent metrics are confirmed healthy

Not Portal-owned

  • agent-local backup implementation details
  • API transport semantics
  • API route authorization enforcement, except for Portal compatibility validation and avoiding admin/internal route usage from browser code
  • PBS / infra backup strategy