[ { "id": "F001", "description": "Create a new appliance operator tool under ee/appliance instead of extending the existing Nushell developer CLI.", "implemented": true, "prdRefs": [ "Summary", "Requirements" ] }, { "id": "F002", "description": "Separate the appliance operator into an interactive TUI shell and a reusable non-interactive operator core.", "implemented": true, "prdRefs": [ "Summary", "Requirements" ] }, { "id": "F003", "description": "Implement appliance environment discovery that can resolve the active site config, talosconfig, kubeconfig, and release manifests without requiring the operator to type those paths.", "implemented": true, "prdRefs": [ "Problem", "Requirements" ] }, { "id": "F004", "description": "Structure path and asset resolution so the operator core can support both repo-based use and future standalone packaging.", "implemented": true, "prdRefs": [ "Goals", "Rollout / Migration" ] }, { "id": "F005", "description": "Add a terminal home screen with primary actions for Bootstrap, Upgrade, Reset, and Status.", "implemented": true, "prdRefs": [ "UX / UI Notes" ] }, { "id": "F006", "description": "Show the selected appliance, node IP, release version, and high-level connectivity state in a persistent header or summary area.", "implemented": true, "prdRefs": [ "UX / UI Notes" ] }, { "id": "F007", "description": "Implement a guided bootstrap flow that gathers node IP, hostname, app URL, release version, bootstrap mode, and network settings through forms instead of raw flags.", "implemented": true, "prdRefs": [ "Users and Primary Flows", "Functional Requirements" ] }, { "id": "F008", "description": "Drive bootstrap through the existing historical removed bootstrap script script rather than reimplementing Talos or Flux bootstrap logic.", "implemented": true, "prdRefs": [ "Functional Requirements", "Data / API / Integrations" ] }, { "id": "F009", "description": "Display bootstrap progress as readable phases and streamed output instead of exposing raw shell commands as the primary UX.", "implemented": true, "prdRefs": [ "UX / UI Notes", "Observability" ] }, { "id": "F010", "description": "Classify bootstrap failures into host, Kubernetes, Flux, Helm, or workload layers for operator guidance.", "implemented": true, "prdRefs": [ "Functional Requirements", "Observability" ] }, { "id": "F011", "description": "Implement an upgrade flow that shows the current installed appliance release and lets the operator select a published target release version.", "implemented": true, "prdRefs": [ "Users and Primary Flows", "Functional Requirements" ] }, { "id": "F012", "description": "Drive upgrades through the existing historical removed upgrade script behavior and release manifest model instead of asking for raw component tags.", "implemented": true, "prdRefs": [ "Functional Requirements", "Data / API / Integrations" ] }, { "id": "F013", "description": "Make the upgrade flow explicitly reflect the no-auto-rollback policy and point to support-bundle collection on failure.", "implemented": true, "prdRefs": [ "Users and Primary Flows", "Observability" ] }, { "id": "F014", "description": "Implement a separate reset flow with strong destructive confirmation before invoking reset-appliance-data.sh.", "implemented": true, "prdRefs": [ "Users and Primary Flows", "Functional Requirements", "Security / Permissions" ] }, { "id": "F015", "description": "State exactly what reset wipes before allowing the operator to continue.", "implemented": true, "prdRefs": [ "UX / UI Notes", "Security / Permissions" ] }, { "id": "F016", "description": "Implement a status dashboard that summarizes Talos reachability and key host health without showing raw talosctl commands.", "implemented": true, "prdRefs": [ "Users and Primary Flows", "Functional Requirements" ] }, { "id": "F017", "description": "Include Kubernetes node readiness and basic cluster availability in the status dashboard.", "implemented": true, "prdRefs": [ "Functional Requirements" ] }, { "id": "F018", "description": "Include Flux GitRepository, Kustomization, and appliance HelmRelease readiness in the status dashboard.", "implemented": true, "prdRefs": [ "Functional Requirements" ] }, { "id": "F019", "description": "Include PSA workload status for alga-core, db, redis, pgbouncer, temporal, workflow-worker, email-service, and temporal-worker in the status dashboard.", "implemented": true, "prdRefs": [ "Functional Requirements" ] }, { "id": "F020", "description": "Show the selected appliance release, release metadata, app URL, and resolved config paths in the status experience.", "implemented": true, "prdRefs": [ "Functional Requirements", "Data / API / Integrations" ] }, { "id": "F021", "description": "Normalize host, cluster, Flux, and workload data into one internal appliance status model for the UI and command outputs.", "implemented": true, "prdRefs": [ "Data / API / Integrations" ] }, { "id": "F022", "description": "Handle partial-failure states cleanly, including Talos-only availability, Kubernetes down, Flux degraded, or workload unhealthy while the cluster remains reachable.", "implemented": true, "prdRefs": [ "Functional Requirements", "Observability" ] }, { "id": "F023", "description": "Provide a non-interactive appliance command surface that mirrors the interactive flows for automation and scripted support use.", "implemented": true, "prdRefs": [ "Summary", "Data / API / Integrations" ] }, { "id": "F024", "description": "Keep direct kubectl and talosctl usage hidden for standard operator flows while preserving support for advanced fallback use outside the TUI.", "implemented": true, "prdRefs": [ "Goals", "Functional Requirements" ] }, { "id": "F025", "description": "Update appliance documentation so the new operator TUI is the preferred user-facing workflow and the shell scripts are documented as lower-level internals or fallbacks.", "implemented": true, "prdRefs": [ "Rollout / Migration" ] }, { "id": "F026", "description": "Replace the current readline-based interactive shell with an Ink-based full-screen application shell while preserving the existing operator core.", "implemented": true, "prdRefs": [ "Summary", "UX / UI Notes", "Functional Requirements" ] }, { "id": "F027", "description": "Implement a persistent full-screen layout with dedicated header, action navigation, main content, and progress/help regions.", "implemented": true, "prdRefs": [ "UX / UI Notes" ] }, { "id": "F028", "description": "Convert bootstrap, upgrade, and reset from sequential prompts to keyboard-navigable form and confirmation panels inside the Ink UI.", "implemented": true, "prdRefs": [ "UX / UI Notes", "Functional Requirements" ] }, { "id": "F029", "description": "Render long-running lifecycle progress inside a dedicated live panel that preserves surrounding UI context while scripts stream output.", "implemented": true, "prdRefs": [ "UX / UI Notes", "Observability" ] }, { "id": "F030", "description": "Present status as an always-available dashboard panel within the Ink UI rather than only as printed report sections.", "implemented": true, "prdRefs": [ "UX / UI Notes", "Functional Requirements" ] }, { "id": "F031", "description": "Keep the non-interactive appliance commands and the operator core intact while swapping only the interactive UI layer to Ink.", "implemented": true, "prdRefs": [ "Goals", "Rollout / Migration" ] }, { "id": "F032", "description": "Add a top-level Workloads operation in the Ink UI for appliance-relevant pod inspection without sending operators to raw kubectl.", "implemented": true, "prdRefs": [ "Users and Primary Flows", "Functional Requirements", "UX / UI Notes" ] }, { "id": "F033", "description": "Restrict the workload console to appliance-relevant namespaces and pods by default, including msp, alga-system, and flux-system components needed for appliance operation.", "implemented": true, "prdRefs": [ "Users and Primary Flows", "Functional Requirements" ] }, { "id": "F034", "description": "Present a refreshable workload list that shows pod name, namespace, phase/status, ready containers, restart count, and age/uptime.", "implemented": true, "prdRefs": [ "Functional Requirements", "UX / UI Notes" ] }, { "id": "F035", "description": "Auto-refresh the workload list on a short interval while preserving the current selection and current view state.", "implemented": true, "prdRefs": [ "Functional Requirements", "Observability" ] }, { "id": "F036", "description": "Add a full-screen pod log viewer that opens from the workload list and restores the prior workload layout when the operator presses Escape.", "implemented": true, "prdRefs": [ "Users and Primary Flows", "Functional Requirements", "UX / UI Notes" ] }, { "id": "F037", "description": "Implement bounded-memory log loading using chunked older-log retrieval so operators can scroll back through long logs without unbounded in-memory accumulation.", "implemented": true, "prdRefs": [ "Functional Requirements", "UX / UI Notes", "Observability" ] }, { "id": "F038", "description": "Support live log follow while the operator is at the bottom of the log stream and pause live-follow when the operator scrolls away from the bottom.", "implemented": true, "prdRefs": [ "Functional Requirements", "UX / UI Notes" ] }, { "id": "F039", "description": "Add keyboard navigation for the workload list and log viewer, including pod selection, vertical scrolling, loading older logs near the top, and Escape-to-return behavior.", "implemented": true, "prdRefs": [ "UX / UI Notes", "Functional Requirements" ] }, { "id": "F040", "description": "Introduce a workload/log adapter layer over kubectl that supplies appliance-scoped pod inventory and pod logs to the TUI without exposing raw kubectl usage to the operator.", "implemented": true, "prdRefs": [ "Functional Requirements", "Data / API / Integrations", "Goals" ] } ]