From 0be479100c290226260d97d1b5be51bad9c96173 Mon Sep 17 00:00:00 2001 From: Anso Date: Thu, 7 May 2026 23:44:13 -0400 Subject: [PATCH] docs: v1 docs refresh (#966) * docs(introduction): rewrite intro page and refresh screenshots Rewrite the Getting Started introduction to reflect the current product: adds the Mesh, Blueprints, Pilot, Fleet, Resources concepts up front; restructures capability sections around Stacks, Fleet (now including Fleet Actions), Mesh, Blueprints, Monitoring, Resources, Security, Automation, and Pilot/Remote ops; cross-links every claim to the matching feature page. Replaces the dashboard hero shot with a fresh capture against the redesigned cockpit chrome and adds three inline shots (running stack with anatomy and logs, fleet command deck, resources hub with reclaim header). All screenshots taken at 1920x900, dark theme, with node names, usernames, IPs, and home paths neutralized. Drops outdated claims: stale "190+ templates" count, the "viewer accounts" RBAC summary, and the "atomic" deployment label that did not match the actual rollback mechanism. * docs(introduction): add Federation and Fleet Secrets Federation has shipped (Admiral) with cordon and pin policy as operator overrides on the blueprint reconciler. Fleet Secrets is landing as a Skipper+ tab for versioned env-var bundles encrypted at rest, with diff preview and target push. Mirror those in the Run-one-machine-or-many bullet list and in the Tiers paragraph so the introduction matches the current product. * docs(introduction): re-shoot screenshots against v0.72.0 production Re-capture all four introduction screenshots from the upgraded production node so the fleet view shows the current full tab strip (Overview / Snapshots / Status / Deployments / Traffic / Federation / Fleet Actions / Secrets) instead of the older Overview / Snapshots / Status only. Same 1920x900 dark-theme capture and the same PII scrub applied (node names, usernames, IPs, home paths neutralized). * docs(quickstart): rewrite around v0.72.0 cockpit and add screenshots Replaces the bare install snippet with a five-minute walkthrough that matches the redesigned UI. Leads with a docker-compose.yml block (the bare docker run command is collapsed in an Accordion), keeps the 1:1 path rule, and adds two new sections that show the user what happens on first boot. Adds two screenshots at 1920x900 dark theme: - setup-cold-start.png: the Cold start card with Username, Password, Confirm password fields, and the Initialize console button. - dashboard.png: the post-sign-in dashboard captured against v0.72.0 with the full top nav (Home, Fleet, Resources, App Store, Logs, Auto-Update, Console, Audit, Schedules) and the populated Stack health table sorted by load. Where-to-next now uses CardGroup cols=2 to match the introduction page's pattern. * docs(configuration): align env var reference with current backend Bring docs/getting-started/configuration.mdx up to date with the v0.72.0 backend: - Remove PORT from the optional env vars table. The listen port is hardcoded to 1852 in backend/src/helpers/constants.ts and is never read from the environment. Replace it with a Listen port section that explains the fixed port and host-port remapping. - Document API_RATE_LIMIT (default 200) and API_POLLING_RATE_LIMIT (default 300), both applied in production only. - Note the /app/compose fallback default for COMPOSE_DIR while still pointing readers at the 1:1 path rule. - Point the SSO env var section at the new SSO Quickstart page and keep the SSO feature reference as the deeper dive. - Tighten First boot and cross-link to Quickstart so the screenshot is not duplicated. - Add a Where to next CardGroup matching the refreshed Introduction and Quickstart pages. Drop stale PORT=1852 and JWT_SECRET=your-secure-jwt-secret-here lines from .env.example so the example no longer contradicts the docs (PORT is hardcoded, JWT_SECRET is auto-generated and persisted to the database during initial setup). * docs(configuration): replace em-dash-substitute hyphens in prose Three sentences used ` - ` (space-hyphen-space) as an em-dash substitute. Replaced with the punctuation that fits each case: - "How Sencho organizes your compose directory": semicolon between the two related clauses. - Data directory Warning: parentheses around the parenthetical insertion. - 1:1 path rule explanation: comma before the contrastive clause. Heading slugs and YAML code-block comments are unchanged. * docs(sso): refresh setup guide and drop misleading "one-click" wording Brings the SSO Setup Guide in line with how SSO actually works in the current build, and corrects misleading copy across both SSO docs pages. - Setup Guide: explains the env-var-seeds-once / DB-is-authoritative config model up front, replacing per-section "Restart Sencho" wording that implied a restart was always required. - Setup Guide: promotes the per-provider Test Connection button out of the LDAP-only paragraph into a generic intro callout, and adds a self-signed LDAPS tip. - Setup Guide: notes that all OIDC providers accept a *_DISPLAY_NAME override for the login button label, and adds a commented LDAP TLS toggle to the full compose example. - Setup Guide: adds two screenshots of the redesigned Settings > SSO panel (overview + LDAP card expanded with form). - Both pages: replaces "one-click presets" / "one-click configuration" with "preset providers". The Skipper-tier presets still require an OAuth app provisioned in the provider's console; what they actually buy is provider-aware defaults and a branded login button. The old wording overpromised. * docs(features-overview): regroup catalog and add 17 missing features Restructure the Features Overview into the same six groups the docs sidebar uses (Stacks & Deployments, Observability, Fleet & Multi-Node, Security & Identity, Automation, Platform) plus a short Reference tail. Add catalog entries for 17 shipped features that the previous overview never mentioned: Stack Activity, Stack File Explorer, Deploy Progress, Deploy Enforcement, Blueprints, Git Sources, Global Search, Pilot Agent, Sencho Mesh, Fleet Federation, Fleet Actions, Fleet Sync, Fleet Secrets, Two-Factor Authentication, CVE Suppressions, Auto-Heal Policies, Stack Sidebar. Fix two factual inaccuracies: - Fleet View blurb wrongly gated search, sort, filter, and stack drill-down behind Skipper. The deep-dive is explicit that those are available on every tier; only the bulk Update All action inside the Node Updates modal is paid. - Auto-update entry was titled and described as a scheduling system. The deep-dive page is the Auto-Update Readiness board (risk tags, changelog previews, rollback targets); the scheduler lives under Scheduled Operations. Add three hero screenshots captured from production at 1920x900, illustrating the redesigned cockpit visual language: Home dashboard, stack anatomy, and fleet topology. * docs(stack-management): refresh page around v0.72.0 cockpit and add screenshots Updates the Stack Management page to match the current UI: sidebar with filter chips and label groups, bulk mode, restructured kebab menu, two-tab anatomy panel, and three-source New stack dialog (Empty, From Git, From Docker Run). Adds sections for Filter chips, Pinned and label groups, and Bulk mode. Restructures the Stack context menu around the inspect, organize, lifecycle, and destructive groups with their keyboard shortcuts. Documents the From Git tab and cross-links Git Sources for the full sync flow. Replaces every existing screenshot with fresh captures from the current UI and adds eight new captures for the new sections. Cross-links Stack Activity, Stack Labels, Stack File Explorer, Compose Editor, Atomic Deployments, Scheduled Operations, Auto-Heal Policies, Auto-Update Policies, and Alerts and Notifications for features documented on their own pages. * docs(stack-activity): refresh page around v1 cockpit and recapture screenshots Realign the page with the current Anatomy panel tab strip and the StackActivityTimeline component: - Frame the Activity tab as a sibling of Anatomy under the right-hand panel, with files/edit actions belonging to the strip. - Expand the category guidance: list the five iconized categories and call out that other stack-scoped notifications (deploy failure, available image updates, auto-heal triggers, monitor alerts, scan findings) flow into the timeline with a generic icon. - Tighten the actor-attribution rule to match the component: omitted for events without an actor and for system-driven events. - Add the day-format example to the relative-time row. - Recapture both screenshots from a populated stack (Today + Yesterday + Earlier with three distinct icons) and an empty stack. - Convert troubleshooting blurbs to H3 for anchor links and consistency with the v1-refresh sibling pages. * docs(stack-activity): wrap troubleshooting entries in Accordion blocks Match the foldable troubleshooting pattern established by docs/features/deploy-progress.mdx so the page stays compact and readers can scan to their issue. This is the canonical formatting for the /features section's troubleshooting blurbs going forward. * docs(editor): refresh page around v1 cockpit and recapture screenshots Rewrites the page around the dual-mode right panel (Anatomy by default, Monaco when the user clicks edit), the redesigned Command Center action bar, the new container row layout with status badges and live stats, the Structured / Raw terminal logs toggle, the Git Source toolbar button, and the opt-in diff preview. Drops the obsolete persistent embedded terminal section. Preserves the #diff-preview-before-save and #log-viewer anchors referenced from settings.mdx and global-observability.mdx. Replaces editor-overview.png and container-exec-modal.png with fresh captures against v0.72.0 production at 1920x900 dark theme; renames container -actions.png to containers-list.png; adds command-center.png and editor-edit-mode.png. PII scrubbed (host paths normalized) and the compose-diff-preview/diff-modal.png shared asset is left untouched after visual diff against the live UI showed no chrome change. * docs(features): wrap troubleshooting accordions in AccordionGroup Wraps the loose blocks in editor.mdx and stack-activity.mdx in a single to match the troubleshooting design used by fleet-federation.mdx. Structural only; no content changes. * docs(stack-file-explorer): refresh page around v1 explorer and add screenshots Full rewrite to match the live two-pane Files tab. Replaces the false 'Edit' toolbar flow with the read-only chip + always-on Save model, fixes the protected-files list (5 names) and dedicated-tab redirect list (3 names), drops the fabricated 100 MB download cap, and corrects the upload claim to single file at a time. Adds sections for New File, Rename, Permissions, the type-to-confirm protected-file delete flow, the non-empty folder delete confirmation, the 500-entry tree display cap, and the symlink rendering. Restructures troubleshooting around + to match fleet-federation.mdx, and adds two new entries (display cap, 403 on Community admin write). Ships nine screenshots captured against v0.72.0 production at 1920x900 in dark theme: overview, two-pane layout, protected-tree-marker, viewer-edit-mode, new-file-dialog, context-menu-folder, context-menu-file, permissions-dialog, delete-protected-confirm. * docs(deploy-progress): rewrite around current modal + capture v1 screenshots Aligns the page with the v0.72.0 implementation and standardizes the troubleshooting layout with the rest of the docs refresh. Setting and gating - Renames the Settings field to "Deploy progress modal" and quotes the current helper text verbatim. Documents that the toggle is off by default, lives under Settings > Appearance > Display, is stored in localStorage, and syncs across tabs in the same browser. Modal anatomy - Names every visible UI string: header verbs, status indicator (with the "closes in s" countdown that was previously undocumented), empty-body strings, footer toggle that flips between "Raw output" and "Hide raw", and the destructive border on ERR rows vs the softer warn tint on WARN rows. - Replaces the vague "after a few seconds" with the actual 4-second auto-close timer; documents hover-to-pause and the leave-hover-restarts-the-countdown behavior. - Documents the truncated error message in the failed-state header and the manual close-only requirement. - Notes that the pill is portal-mounted and survives navigation. Stage badges - Keeps the 9-badge table but adds an honest note that most lines render as LOG because the badges are gated on Compose's "[+]" progress prefix, which Compose only emits in TTY mode and Sencho spawns it without one. Entry points - Splits the supported actions into the four that produce a populated structured-log body (Deploy, Update, Install, Git Apply) and the two that bypass compose and finish with 0 lines (Restart, Stop). Drops the "Down" claim from the user-facing list since no UI control currently triggers it; mentions the down route as an automation surface only. Troubleshooting - Wraps the existing accordions in an matching the pattern used by the editor and stack-activity refreshes. Adds two new entries: one explaining the Restart/Stop "0 lines" outcome, one explaining the LOG-everywhere case for non-TTY compose output. Screenshots (six PNGs in docs/images/deploy-progress/, 1920x900, dark theme, captured against the upgraded production node) - setting-toggle.png: the Display section with the toggle enabled. - modal-streaming.png: a real update in flight at 19s, 554 lines. - modal-succeeded.png: succeeded state with the live closes-in countdown visible. - modal-raw-output.png: structured rows with the Raw output panel expanded beneath. - pill.png: minimized pill anchored bottom-center on a stack editor view. - modal-failed.png: failed state with the truncated error in the header and ERR rows highlighted. * docs(resources): refresh Resources Hub page for v1 redesign and feature additions Rewrite the page to match the shipping UI and replace stale screenshots with fresh captures of the redesigned chrome. - Document the admin-only Reclaim hero and clarify the per-tile Sencho-only vs. All Docker (includes external) split in Quick Clean. - Add coverage of the Scan history toolbar button and the per-row severity badge plus shield-icon scan dropdown in the Images tab; cross-link to the vulnerability scanning page. - Correct the Volumes column list (no Size column; size lives on the Largest 5 landing card) and call out admin gates on browse and delete. - Spell out the List/Topology view-mode toggle and that Create Network is admin-only and List-mode only. - Rewrite the Unmanaged tab section around the project-grouped layout, the Select all + Purge Selected (N) admin-only multi-select, and the empty state copy. - Replace screenshots: resources-reclaim, networks-list, create-network, network-inspect, network-topology, network-topology-toggle. Add fresh resources-volumes-tab and resources-unmanaged-tab captures. * docs(app-store): refresh page around v1 deploy sheet, scan integration, and registry settings Rewrites the App Store reference to match the current cockpit: - Documents the weekly-rotated featured banner picked from the top-5 by GitHub stars and the star-descending grid sort. - Adds the deploy-sheet structure (breadcrumb, meta line, About panel with Read more) and splits the Advanced tab into Ports, Volumes, Environment variables, Custom variables, and Security subsections. - Documents the Trivy-gated Security checkbox, atomic vs non-atomic deploys by tier, and the rollback semantics driven by error class. - Adds a Watching the deploy section linking to the deploy-progress modal. - Rewrites the Custom registry section against the new two-panel settings layout (Default + Custom) with the URL validation rule and the using default / using custom hint. - Adds a four-entry Accordion troubleshooting block in the house style. - Replaces three screenshots and adds two (Advanced tab, Settings registry panel) captured against the production node. Permissions wording aligns with current backend (admin only); the broader stack:create gate will land in a follow-up fix branch. * docs(app-store): describe inline port-conflict messaging on deploy sheet Update the deploy-sheet section to match the visible port-conflict behavior: the Essentials tab surfaces a Port-conflict warning that replaces the defaults hint when any default port is already bound, and the Advanced tab shows an inline "in use by {stack}" message next to the container port instead of a hover-only tooltip. Refresh the screenshot alt-text and the troubleshooting Accordion to match. * docs(app-store): align permissions note with stack:create gate Pairs with the backend gate swap in fix/templates-deploy-rbac (#986) which moves POST /api/templates/deploy from requireAdmin to requirePermission('stack:create'). Updates the Note block under 'Watching the deploy' so the docs match the new behavior: admin and node-admin can deploy templates from the App Store; viewer, deployer, and auditor cannot. --- .env.example | 6 - docs/features/app-store.mdx | 160 +++++++---- docs/features/deploy-progress.mdx | 110 ++++--- docs/features/editor.mdx | 249 ++++++++++------ docs/features/overview.mdx | 254 +++++++++++------ docs/features/resources.mdx | 164 +++++++---- docs/features/sso.mdx | 10 +- docs/features/stack-activity.mdx | 67 +++-- docs/features/stack-file-explorer.mdx | 183 +++++++++--- docs/features/stack-management.mdx | 268 ++++++++++++------ docs/getting-started/configuration.mdx | 45 ++- docs/getting-started/introduction.mdx | 136 ++++++--- docs/getting-started/quickstart.mdx | 103 +++++-- docs/getting-started/sso-quickstart.mdx | 30 +- docs/images/app-store/app-store-hero.png | Bin 249016 -> 257931 bytes .../app-store/app-store-port-conflict.png | Bin 58201 -> 122631 bytes .../app-store/app-store-settings-registry.png | Bin 0 -> 121901 bytes .../app-store/deploy-sheet-advanced.png | Bin 0 -> 119362 bytes .../app-store/deploy-sheet-essentials.png | Bin 189397 -> 126197 bytes docs/images/dashboard/dashboard-overview.png | Bin 124998 -> 144724 bytes docs/images/deploy-progress/modal-failed.png | Bin 0 -> 227125 bytes .../deploy-progress/modal-raw-output.png | Bin 0 -> 196424 bytes .../deploy-progress/modal-streaming.png | Bin 0 -> 202487 bytes .../deploy-progress/modal-succeeded.png | Bin 0 -> 204734 bytes docs/images/deploy-progress/pill.png | Bin 0 -> 134695 bytes .../images/deploy-progress/setting-toggle.png | Bin 0 -> 125586 bytes docs/images/editor/command-center.png | Bin 0 -> 28757 bytes docs/images/editor/container-actions.png | Bin 107268 -> 0 bytes docs/images/editor/container-exec-modal.png | Bin 15551 -> 145280 bytes docs/images/editor/containers-list.png | Bin 0 -> 11575 bytes docs/images/editor/editor-edit-mode.png | Bin 0 -> 221524 bytes docs/images/editor/editor-overview.png | Bin 106762 -> 184079 bytes docs/images/introduction/fleet-overview.png | Bin 0 -> 156822 bytes docs/images/introduction/resources-hub.png | Bin 0 -> 195767 bytes docs/images/introduction/stack-view.png | Bin 0 -> 183979 bytes docs/images/networks/create-network.png | Bin 115172 -> 27820 bytes docs/images/networks/network-inspect.png | Bin 143792 -> 63141 bytes .../networks/network-topology-toggle.png | Bin 54542 -> 43607 bytes docs/images/networks/network-topology.png | Bin 59072 -> 42009 bytes docs/images/networks/networks-list.png | Bin 119088 -> 32218 bytes docs/images/overview/dashboard-hero.png | Bin 0 -> 145130 bytes docs/images/overview/fleet-topology.png | Bin 0 -> 149028 bytes docs/images/overview/stack-anatomy.png | Bin 0 -> 186222 bytes docs/images/quickstart/dashboard.png | Bin 0 -> 144197 bytes docs/images/quickstart/setup-cold-start.png | Bin 0 -> 341650 bytes docs/images/resources/resources-reclaim.png | Bin 159933 -> 177818 bytes .../resources/resources-unmanaged-tab.png | Bin 0 -> 11527 bytes .../resources/resources-volumes-tab.png | Bin 0 -> 61354 bytes docs/images/sso/sso-quickstart-ldap-test.png | Bin 0 -> 93601 bytes docs/images/sso/sso-quickstart-overview.png | Bin 0 -> 71532 bytes .../stack-activity/activity-tab-empty.png | Bin 9440 -> 7912 bytes .../stack-activity/activity-tab-populated.png | Bin 10935 -> 33730 bytes .../stack-file-explorer/context-menu-file.png | Bin 0 -> 250348 bytes .../context-menu-folder.png | Bin 0 -> 218799 bytes .../delete-protected-confirm.png | Bin 0 -> 175798 bytes .../stack-file-explorer/layout-panes.png | Bin 0 -> 249245 bytes .../stack-file-explorer/new-file-dialog.png | Bin 0 -> 141286 bytes docs/images/stack-file-explorer/overview.png | Bin 0 -> 250803 bytes .../permissions-dialog.png | Bin 0 -> 165828 bytes .../protected-tree-marker.png | Bin 0 -> 217379 bytes .../stack-file-explorer/viewer-edit-mode.png | Bin 0 -> 255809 bytes .../stack-management/bulk-action-bar.png | Bin 0 -> 21455 bytes .../stack-management/context-menu-running.png | Bin 129488 -> 0 bytes .../stack-management/context-menu-stopped.png | Bin 125765 -> 0 bytes docs/images/stack-management/context-menu.png | Bin 0 -> 27945 bytes .../convert-stack-created.png | Bin 79790 -> 0 bytes .../stack-management/convert-tab-empty.png | Bin 26234 -> 27593 bytes .../stack-management/convert-tab-error.png | Bin 93312 -> 129708 bytes .../stack-management/convert-tab-result.png | Bin 43887 -> 51310 bytes .../stack-management/create-stack-dialog.png | Bin 98747 -> 18729 bytes .../stack-management/create-stack-git.png | Bin 0 -> 52549 bytes docs/images/stack-management/filter-chips.png | Bin 0 -> 2139 bytes .../stack-management/sidebar-actions.png | Bin 0 -> 3077 bytes .../stack-management/sidebar-grouped.png | Bin 0 -> 30132 bytes .../stack-management/stack-context-menu.png | Bin 93771 -> 0 bytes .../stack-scanning/scan-button-sidebar.png | Bin 2765 -> 0 bytes .../stack-scanning/scan-no-new-stacks.png | Bin 82293 -> 0 bytes docs/images/stack-view/anatomy-panel.png | Bin 132313 -> 26776 bytes docs/images/stack-view/containers.png | Bin 0 -> 12626 bytes docs/images/stack-view/health-strip-logs.png | Bin 140685 -> 0 bytes docs/images/stack-view/identity-header.png | Bin 14729 -> 13814 bytes docs/images/stack-view/logs-viewer.png | Bin 0 -> 71804 bytes 82 files changed, 1239 insertions(+), 546 deletions(-) create mode 100644 docs/images/app-store/app-store-settings-registry.png create mode 100644 docs/images/app-store/deploy-sheet-advanced.png create mode 100644 docs/images/deploy-progress/modal-failed.png create mode 100644 docs/images/deploy-progress/modal-raw-output.png create mode 100644 docs/images/deploy-progress/modal-streaming.png create mode 100644 docs/images/deploy-progress/modal-succeeded.png create mode 100644 docs/images/deploy-progress/pill.png create mode 100644 docs/images/deploy-progress/setting-toggle.png create mode 100644 docs/images/editor/command-center.png delete mode 100644 docs/images/editor/container-actions.png create mode 100644 docs/images/editor/containers-list.png create mode 100644 docs/images/editor/editor-edit-mode.png create mode 100644 docs/images/introduction/fleet-overview.png create mode 100644 docs/images/introduction/resources-hub.png create mode 100644 docs/images/introduction/stack-view.png create mode 100644 docs/images/overview/dashboard-hero.png create mode 100644 docs/images/overview/fleet-topology.png create mode 100644 docs/images/overview/stack-anatomy.png create mode 100644 docs/images/quickstart/dashboard.png create mode 100644 docs/images/quickstart/setup-cold-start.png create mode 100644 docs/images/resources/resources-unmanaged-tab.png create mode 100644 docs/images/resources/resources-volumes-tab.png create mode 100644 docs/images/sso/sso-quickstart-ldap-test.png create mode 100644 docs/images/sso/sso-quickstart-overview.png create mode 100644 docs/images/stack-file-explorer/context-menu-file.png create mode 100644 docs/images/stack-file-explorer/context-menu-folder.png create mode 100644 docs/images/stack-file-explorer/delete-protected-confirm.png create mode 100644 docs/images/stack-file-explorer/layout-panes.png create mode 100644 docs/images/stack-file-explorer/new-file-dialog.png create mode 100644 docs/images/stack-file-explorer/overview.png create mode 100644 docs/images/stack-file-explorer/permissions-dialog.png create mode 100644 docs/images/stack-file-explorer/protected-tree-marker.png create mode 100644 docs/images/stack-file-explorer/viewer-edit-mode.png create mode 100644 docs/images/stack-management/bulk-action-bar.png delete mode 100644 docs/images/stack-management/context-menu-running.png delete mode 100644 docs/images/stack-management/context-menu-stopped.png create mode 100644 docs/images/stack-management/context-menu.png delete mode 100644 docs/images/stack-management/convert-stack-created.png create mode 100644 docs/images/stack-management/create-stack-git.png create mode 100644 docs/images/stack-management/filter-chips.png create mode 100644 docs/images/stack-management/sidebar-actions.png create mode 100644 docs/images/stack-management/sidebar-grouped.png delete mode 100644 docs/images/stack-management/stack-context-menu.png delete mode 100644 docs/images/stack-scanning/scan-button-sidebar.png delete mode 100644 docs/images/stack-scanning/scan-no-new-stacks.png create mode 100644 docs/images/stack-view/containers.png delete mode 100644 docs/images/stack-view/health-strip-logs.png create mode 100644 docs/images/stack-view/logs-viewer.png diff --git a/.env.example b/.env.example index d22439c5..1af92bf6 100644 --- a/.env.example +++ b/.env.example @@ -1,15 +1,9 @@ # Sencho Configuration # Copy this file to .env and update the values for production -# JWT secret - generate a secure random string for production -JWT_SECRET=your-secure-jwt-secret-here - # Directory containing docker-compose files COMPOSE_DIR=/path/to/your/compose/files -# HTTP server port (default: 1852) -PORT=1852 - # Database and state directory inside the container (default: /app/data) DATA_DIR=/app/data diff --git a/docs/features/app-store.mdx b/docs/features/app-store.mdx index d128bd31..990cc752 100644 --- a/docs/features/app-store.mdx +++ b/docs/features/app-store.mdx @@ -1,107 +1,157 @@ --- title: App Store -description: Browse and deploy pre-configured application templates in one click. +description: Browse a curated catalogue of Docker Compose templates and deploy any of them as a new stack with one click. --- -The **App Store** tab lets you browse a curated catalogue of Docker Compose templates and deploy any of them as a new stack with environment-specific configuration, no YAML required. +The **App Store** is a browseable catalogue of Docker Compose templates. Each template is a turn-key recipe with sensible defaults for ports, volumes, and environment variables, so you can stand up a new stack without writing YAML. Pick a tile, fill in a name, click **Deploy** and Sencho creates the directory, generates `compose.yaml` and `.env`, runs `docker compose up -d`, and switches you to the editor for the new stack. - App Store with a category sidebar, a featured template hero banner, and editorial tiles with security scan badges + App Store with the categories rail on the left, a featured template hero pinned at the top, and a grid of editorial tiles with per-tile scan badges ## Browsing templates -Templates are loaded from a remote registry (configurable in **Settings > App Store**). The default registry is LinuxServer.io. A live count of available apps is shown in the top right of the view. +Templates load from a remote registry. The default registry is **LinuxServer.io**; you can point Sencho at any [Portainer v2 compatible JSON catalogue](#custom-template-registry) instead. -**Search:** Type in the search bar to filter templates by name, description, or category in real-time. +### Search and counts -**Category sidebar:** The left rail lists every category with its count. Click a category to narrow the grid. The active category is highlighted with a cyan rail and tinted background. +The search bar at the top filters tiles by name, description, or category in real time. The chip on the right shows the number of templates currently visible (for example, `201 apps`). -**Featured hero:** A featured template is pinned at the top of the grid with its logo, title, description, and a primary **Deploy** button. The hero disappears while you have an active search query. +### Categories rail + +The left rail lists every category the registry exposes, plus an **All** entry, with a count for each. The active category gets a brand-coloured rail and tinted background. The rail appears once at least one template has loaded. + +### Featured template + +A single template is pinned to the top of the grid in a wide editorial banner. Sencho rotates the featured pick **weekly** through the five most-starred templates in the registry, so the catalogue stays fresh without you doing anything. The banner disappears whenever you have a search query active. + +### Tiles Each tile shows: -- A brand-tinted logo square (falls back to the first letter of the template name) -- Name and first-sentence pitch -- GitHub star count and primary category -- A **security scan badge** on the right: `CLEAN` (no CVEs detected), `{n} CVE(s)` (amber, open vulnerabilities), or `UNSCANNED` (no scan recorded yet) + +- A brand-tinted logo (falls back to a generic icon when the registry has no artwork) +- The template name and the first sentence of its description +- A GitHub star count (when the registry provides one) +- The primary category +- A **scan badge** on the right, derived from Sencho's vulnerability scanner: + - **Clean** (no CVEs detected on the most recent scan) + - **{N} CVE** or **{N} CVEs** (the count of open vulnerabilities, in amber) + - **Unscanned** (no scan has been recorded for this image yet) + +Tiles are sorted by GitHub star count, descending. Click any tile to open the deployment sheet on the right. ## Deploying a template -Click any tile to open the **deployment sheet** on the right side of the screen. The sheet splits configuration into two tabs: **Essentials** for a fast one-click deploy and **Advanced** for full control over ports, volumes, and environment. +The deployment sheet slides in from the right. The header carries a breadcrumb (`App store ›