2026-10-12
Bug Fixes
- add the frontmatter description the docs build requires to design tokens (#1180)
2026-10-12
Bug Fixes
- restore the all-features test baseline in the CLI and bound two integer conversions (#1177)
- updates channel resolution, Edge dead end and Cloud Run guides for launch (#1175)
2026-10-12
Features
- 0.6 upgrades, dashboard v2, standalone domains, secrets v2 and reliability fixes (#1164)
- attribute dashboard memory to the control plane and unmanaged containers
- CLI for standalone domains and the server address
- cost showback per app, project, environment and team
- coverage-first backups page, protect-all, and orphaned data reclaim
- dashboard restart, dock and CLI console, forward auth, responsive pass
- dock as fixed overlay widget with float, bottom and side modes
- docked bottom panel hosting the AI chat with ctrl+j toggle
- fold the create-app repo fields into a summary once a repo is picked (#1168)
- Get started hub with live setup steps, server-side progress and CLI
- levelrail-cli tui, a k9s-style terminal UI for apps, deploys, logs and actions
- log explorer with saved queries, error signatures and log alert rules
- mask sensitive env everywhere, step-up reveal, one environment editor
- MCP prompts, resources and —print-config for levelrail-mcp
- mobile pairing API and built-in sign-in provider for the auth gate (#1173)
- network page groups this server as a real node and mesh can be enabled from the UI and CLI
- one click quick actions in the web CLI console
- per-domain auth gate (forward auth) in the embedded ingress
- per-domain auth gate (forward auth) with header spoof stripping
- read-only host diagnostics in the web CLI console
- redesign deploy history rows and the deploy page around the logs (#1165)
- resource advisor dashboard, Optimise panel, beta settings and docs
- resource advisor engine, API, CLI and MCP tool behind a beta flag
- responsive pass for phone and tablet across dashboard, lists and settings
- restart the control plane from the dashboard
- show the live preview image and commit subject on the app overview (#1167)
- sign-in attribution footer with GLINR Studios and TheAuth marks
- sign-in screens and remaining charts use design tokens
- single-node placement shows this server, nodes table and settings index regrouped
- split-screen sign-in with a rotating brand showcase from the TheAuth visuals (#1169)
- standalone domains proxy to a port, address, URL, app or container
- sticky dashboard header, dark elevation tokens and GLINR CSS tokens
- suggestion-driven New app wizard with repository analysis
- system restart CLI command with —wait and status
- triage model, certificate guardrails and resources-first dashboard home
- turn AI chat on from Settings, Beta features, and fix header right alignment
- two-mode add domain dialog, standalone rows and server address card
- upgrade blockers with fixes, upgrade now, scheduled and automatic upgrades
- web CLI console over WebSocket, scoped to the platform CLI
- web CLI console route, dock tab and beta toggle
- auth gate keeps the client query on the auth subrequest
- deployments rows open the deploy page, and long commit messages no longer flood the drawer (#1163)
- dock AI tab explains when the ai-chat experimental flag is off
- keep placement display fields out of the MCP client types to stay under the tool token budget
- keep pre-library API tokens working after upgrade
- merge edge channel modelling and stale incident fixes with scheduled upgrades
- picking a repo prefills the create-app form and collapses the repo grid (#1166)
- sanitize terminal escape sequences in web console output
- serve /metrics and jwks, restart after swap on self-upgrade, restore-as-new owner, ungate data export CLI
- serve internal fallback certs when ACME fails, validate ACME contact, abort never-listening deploys
- stale data copy incidents, plain-language copy failures, and edge channel update messaging
- tcp readiness fallback, server help flags, backup target validation, version stamp
- wait for proxy route load in verify, warn on alert rules with no channel
- standalone domains, server address, and confirmation fixes
2026-10-11
Bug Fixes
- dockerguard builds on Windows, and CI cross-compiles the CLI (#1157)
2026-10-11
Features
- 0.4 compose, cutover, previews, teams, backups, observability, multi-node, upgrades (#1140)
- 0.5 dashboard performance, smart deploy, proxy-managed domains, shell and database UI, MCP (#1147)
- api: publish an OpenAPI 3.1 spec generated from the route table (#1037)
- attention center, device login approval, setup redesign, release rollback (#1077)
- brand kit page, headline variants and per-page social cards (#1094)
- canary deploys with weighted traffic (#1065)
- claim containers from a docker inspect snapshot (no platform token) (#1092)
- CLI insights commands, reconciler half-success tests, 19 catalog templates (#1033)
- coolify migration data path, domain wizard, environment domains, db viewer (#1074)
- database access and network, IAM policy builder, app import wizard (#1091)
- docs: animate the product mock, add mock carousel, scroll reveal and stats strip (#1041)
- docs: favicons, guides, template gallery, announcements feeds (#1060)
- docs: flat full-window hero mock, seam fix and Mastra-style FAQ (#1038)
- docs: hero uses the product mock, .well-known ships, light-mode fix (#1035)
- docs: homepage hero, feature cards, install chip, nav fixes (#1024)
- docs: site overhaul with new landing pages, grouped nav, mock kit, legal and agent-readiness (#1034)
- domains, DNS, proxy coexist, traffic controls and platform hardening (0.3) (#1125)
- extract generic packages into a nested kit module (#1014)
- first-run fixes: hide domains from search engines, proxy coexist guide, IPv4 public host (#1102)
- functions, requests that wake a sleeping app wait and are replayed (#1068)
- glinr-bot policy evaluator, shadow-mode workflow and client-id for app tokens (#1100)
- install cosign by default and add upgrade-note for manual binary swaps (#1110)
- legacy passkeys sign in and OAuth keeps built-in callback URLs under the library engine (#1029)
- library auth engine behind APP_AUTH_ENGINE with backfill (#1015)
- list case-duplicate email groups in auth-backfill, add go/no-go checklist (#1023)
- managed postgres pgvector variant (#1078)
- migrate auth to the theauth library behind default-off flags (#1021)
- move upgrade into kit and brand-drive agent provisioning names (#1020)
- perf, exposure audit, migration hub, upgrade history, external databases, attention v2, fleet overview (#1087)
- public HTTPS port and TLS terminated upstream ingress settings (#1117)
- regenerate OG and social images on the petrol brand (#1093)
- roles and guest access, global environments, environment-aware IAM and AI control (#1048)
- scripts/build-linux.sh builds the embedded-web binary with the version stamped (#1112)
- security center, session management and sign-in hardening (#1133)
- setup, HTTPS, token and image auto-update improvements (#1062)
- sign in with a code and new-browser approval (#1115)
- sleep idle apps and wake them on the next request (#1066)
- [HIGH] Server-Side Request Forgery (SSRF) in Git provider integrations (#1051)
- bump the mealie template to v3.28.0 (#1019)
- database explorer schema for large databases, mark explorer beta (#1080)
- deflake scheduledtask replace and agent TTY close tests (#1053)
- DNS check shows what each resolver answered, a timestamp and a propagating state (#1123)
- docker snapshot apps stay image apps with a load hint, neutral secret hint (#1096)
- docs: code block copy button back in the corner, inline code tint only inline (#1042)
- docs: readable light-mode nav panel and a balanced footer (#1040)
- docs: use the app metrics screenshot in the home hero (#1026)
- egress sidecar gets NET_RAW, e2e cleanup removes service volumes (#1059)
- exact 1200x630 social cards with a CTA, og:site_name, short descriptions, bolder favicon (#1097)
- explain and link the private GitHub App case when adding an organization (#1130)
- explain and offer a fix when real certificates cannot work on non-standard ingress ports (#1114)
- fall back to the embedded default logo and colors when brand.yaml leaves them empty (#1075)
- findings from real-server QA (sign-in, firewall, redeploy, templates, status UI) (#1043)
- git push deploys fall back to the GitHub App installation token (#1145)
- glinr-bot talks to the GitHub API over net/http instead of spawning gh (#1103)
- levelrail.com uses the transparent mark like the control plane; add 96px icon and manifest (#1104)
- library sign-in returns the second-factor step for users with TOTP (#1025)
- match legacy device and recovery code behavior in library auth mode (#1027)
- README typing banner on the petrol brand with the new headline (#1095)
- repair 7 catalog image pins that no longer resolve (#1031)
- serve plain HTTP for a TLS-terminating proxy and show setup on the Proxy page (#1127)
- short delta percentages and proxy-served certificate in app health (#1141)
- unblock CI on main (execgate allowlist for self-upgrade files, skip test-only packages in go build) (#1148)
- verify moved images by content, not image ID (#1121)
- cut PR CI wall time (live suite gate, parallel fleet, plan job) (#1090)
- optimize string concatenation in joinErrors (#1061)
- scope migrations by table, guards lane, green-based nightly, scoped hooks, remote Go cache (#1131)
- add see-also sections to multi-node and cli-reference pages (#1030)
- full pass for accuracy, components and coverage (#1036)
- polish code blocks, tables, callouts and doc components (#1028)
- README and social card tuned for conversion (#1063)
2026-10-05
Features
- harden ingress edge, hold pages, and systemd socket activation (#999)
- orphan reaper, retried teardown paths, cascading project/env/org delete (#1008)
- database data safety, remote WAL, guarded Postgres major upgrade, DR runbook (#1009)
- git private-network opt-in with its own env, unbreak e2e fixtures (#1010)
- harden alerting, auth and day-2 paths (#1007)
- local-node replicas published on loopback are balanced, not dropped as remote (#1003)
- publish prerelease npm builds as latest until a stable release exists (#1002)
2026-10-05
Features
- one-command npm bootstrap and opt-in hands-off releases (#995)
- route ingress to apps on remote nodes over the WireGuard mesh (#996)
- app delete tears containers down and retries until gone (#991)
- auth: token ownership, OAuth state binding with PKCE, atomic device redeem (#981)
- balance multi-replica apps by default and route the local node’s replicas (#994)
- Homebrew formula exec bit, npm trusted publishing, split publish jobs (#992)
- make node enrolment and mesh work out of the box on the agent image (#983)
- security review hardening (CSRF, cert purge churn, placeholder escape, git SSRF, hardening default) (#997)
2026-10-05
Features
- CLI and agent distribution, Windows CLI, agent skill files, update-check and main CI fixes (#972)
- zero-DNS sslip.io HTTPS, db cert storage, http redirect (#977)
- data safety hardening for databases, backups, restore and volumes (#980)
- mention levelrail-cli install and login in install.sh summary (#970)
- reject cross-origin cookie-authenticated mutations (#976)
- zero-downtime hardening for pinned ports, rolling, secrets, replicas (#978)
- add seven tutorials for search and fix restore-as-new race (#979)
- fix MCP tool count and ci.md Vue interpolation build error (#975)
- rewrite deploying-apps as a lifecycle guide, refresh landing, comparison, troubleshooting, status (#974)
2026-10-05
Features
- add 12 service templates (catalog tranche 5) (#683)
- add 16 new self-hosted service templates to catalog (#807)
- add Azure and GCP cloud node provisioning (#782)
- add dashboard toggle for HSTS (#840)
- add opt-in per-app deploy status badge (#898)
- add platform capabilities panel to empty dashboard (#870)
- add react-i18next foundation, migrate 3 deploy settings cards (#905)
- add standalone template detail and catalog routes (#814)
- add thesvg logo mappings for 4 catalog templates (#805)
- add whole-mesh network topology view (#819)
- adopt an existing machine as a node over SSH (#822)
- agent certificate renewal, agent-generated keys, re-enrollment and agent version reporting (#710)
- agent identity on API tokens and audit entries (#765)
- agent onboarding (init, agent identity UI, log levels, agents settings page) (#769)
- AI model deploys on GPU nodes, load balancer, S3/R2 log archive, pipelines, catalogue (#701)
- AI serving load (model page, engine metrics, VRAM fit, on-demand residency, CDI attach) (#770)
- app health timeline on the overview page (deploys, restarts, error windows) (#694)
- app quick actions menu, redeploy button, empty-state CTAs (#672)
- app timeline, pending changes, secret declaration on set, domains CLI and previous-release hold cap (#718)
- audit MCP tool surface and add a token budget test (#758)
- auto-pick a free dashboard port, make ingress ports overridable (#926)
- auto-route the status page’s custom domain through the embedded ingress (#936)
- beta feature push (domains/DNS, SSL certs, volumes, NAS, VPN mesh, firewall, signatures) (#884)
- brand logos for frameworks, integrations and backup targets (#671)
- bring glinui tokens into the control-plane dashboard (#907)
- browsable template marketplace with category filters and search (#882)
- build node routing preference and node onboarding clarity (#775)
- cancel, queue and digest-pinned rollback for deploys (#731)
- catalog: add batch 3 of new self-hosted templates (#925)
- catalog: add batch 4 of self-hosted templates (#940)
- catalog: add batch 5 of self-hosted templates (#954)
- catalog: add YAML-loaded template path for contributors (#918)
- change correlation on alerts and SLO burn-rate rules (#742)
- clean no-root install path for levelrail-cli, like aws/gh (#889)
- cli build detect/branches and restore history lists (backups, pitr, app-volume-backups) (#684)
- cli: add global deploy freeze commands (#951)
- cli: wire up orphaned containers, network shares, and topology/traffic views (#945)
- cloud node provisioning (Hetzner, DigitalOcean) (#776)
- command palette actions, per-app quick actions, recent items and keyboard hints (#693)
- compact log query for agents (MCP query_logs, CLI logs query) (#763)
- connect apps to managed databases via API, CLI, and UI (#818)
- connection-lost banner with backoff reconnect and 12 new service templates (#696)
- control plane backups card on general settings (#675)
- control plane self-backup and offline restore (snapshots, scheduler, pre-migration copy, downgrade guard, CLI, docs) (#678)
- cross-app deployments API with summary, stream, CLI and MCP tools (#725)
- cross-app deployments page with live feed, filters, drawer and shortcuts (#728)
- dashboard consistency pass (settings nav, search, headers, InfoTip docs links) (#838)
- dashboard redesign with a UI kit, overview v2, mission control home, visual apps list and grouped navigation (#715)
- dashboard setup checklist, deploy failure summary and keyboard shortcuts help (#699)
- dashboard waves 1-2, domains attention and backup relocation (#844)
- deploy preview screenshots (opt-in thumbnails per deploy) (#727)
- Docker Compose depends_on start ordering, unsupported key validation, apps validate (#784)
- docs: add amber WebGL ambient field to homepage hero (#832)
- docs: give each landing feature card real proof, not a generic icon (#878)
- docs: redesign footer with scroll-reveal and glass pill accents (#871)
- docs: scope hero WebGL field to hero, add scroll parallax and footer stars (#834)
- doctor check for stale control plane backups, verified pre-upgrade snapshot and downgrade guard live (#685)
- encrypted off-box control plane backups, platform as code, alert silences and a public status page (#712)
- enlarge Levelrail mark, fix header’s placeholder logo (#868)
- env editor .env import preview, pending diff, secret-safe export, and apps env import/export CLI (#690)
- failed deploys and disk pressure in attention (#673)
- fan out container metrics collection to remote node agents (#960)
- forward raw TCP streams through the embedded ingress (#921)
- GPU-aware scheduling, S3 build cache, pipeline graph and repo sync, fork PR guard, gateway fix (#702)
- harden and polish the in-app AI assistant chat (#899)
- harden PR preview environments (caps, fork approval, single comment) (#745)
- Hugging Face preflight and model cache manager (#741)
- import 36 Coolify-compatible catalog templates (devtools, productivity, automation) (#896)
- integrations: add free self-hosted catalog entries (#914)
- label certificate events in the audit log (#919)
- land beta-push waves 2-8 (cloud provisioning, scheduled deploys, preview DB isolation, pipeline OIDC, node doctor checks) (#962)
- load balancer check history, check now and per-upstream admin state (#719)
- load balancer page redesign with live topology, suggestions, health history and export (#721)
- local checks post PR signal, flag new comment bloat pre-commit (#862)
- local dogfood run, experimental gate cleanup, security alert verdicts (#773)
- lock Levelrail visual identity and wire it in (#867)
- log API request latency with slow/critical bands (#924)
- log controls, brand logos, status page, disk and cert guards (#663)
- log level tags, level filter chips, expandable rows and jump to first error (#669)
- machine-readable CLI errors and a —json coverage test (#762)
- manage orphaned containers, not just view them (#859)
- mark one-click template deploys as trials, add a stop-and-delete banner (#886)
- MCP tools for attention, node status history, audit search and control plane backups (#682)
- node_offline alert kind (API, CLI, dashboard, docs) (#691)
- observability settings, smarter health checks, Ask AI, test perf (#922)
- one-click deploy for templates with no required config (#811)
- overnight batch - docs, domain collision guard, ingress-aware placement, traffic screen, db backup fixes (#938)
- overnight batch (cloud node provisioning, real 2-node verification, scheduled deploys, agent/MCP tooling, templates, and more) (#792)
- overnight batch 2 (compose replicas, scheduled-deploy verification, pipeline OIDC, Redis preview isolation, node doctor checks) (#801)
- passkey login, Microsoft OAuth, Resend email, and a redesigned login screen (#855)
- path filters, merge queue trigger, and forge status reporting for pipelines and deploys (#744)
- per-key daily token budget, created_by, revoke MCP tool and reworked model keys panel (#740)
- platform ops load (apps metrics batch, promote/clone plans, safe upgrade, move plan, honest comparison) (#768)
- readyz endpoint, CLI parity tranche 2, MCP backup verify and failed deploys tools, e2e cleanup (#700)
- real preview thumbnails on the deployments page and cross-app API (#737)
- rebuild homepage sections to drop templated card-grid feel (#872)
- redesign docs site with custom nav/sidebar and AI-readiness (#860)
- redesign setup wizard server check into a compact summary (#821)
- redesign the git repo picker as a searchable card grid with provider tabs (#935)
- replace keyboard shortcuts dialog with a stage-overlay nav surface (#908)
- report certificate renewal state (ok or stalled) in API, CLI and dashboard (#670)
- request metrics, deploy safety, model keys, app management, import, preflight and migration runner fix (#711)
- roll the real mark out to every remaining fallback spot (#873)
- rootless Docker/Podman detection + pipeline OIDC federation (#785)
- search public Docker Hub from the docker-image deploy picker (#815)
- security follow-ups, control plane backup stale alert and verify, generated API reference (#697)
- server-side audit log search and failed-only filter (#674)
- settings sidebar UX, readable in-app docs, CLI —debug/pagination, 16 more catalog templates (#912)
- show WAF, redirect, and maintenance status on the Domains page (#843)
- sidebar visual redesign with a real expandable Projects tree (#857)
- skeleton-first loading states across remaining detail and settings routes (#847)
- SLO burn-rate auto-rollback with auto, dry-run, and pause-for-human modes (#810)
- structured deploy failure object across API, CLI and MCP (#761)
- supply chain visibility per deploy (SBOM, optional scan gate) (#743)
- support connecting multiple GitHub orgs to the GitHub App (#958)
- support MariaDB in the slow query log viewer (#858)
- surface cross-node ingress unreachability instead of failing silently (#933)
- surface IAM/registry in top nav, real skeletons on detail pages (#842)
- tiered deploy previews with a free metadata default (#736)
- toast: wire navigable actions into high-value toasts (#952)
- unify brand to petrol-blue, redesign docs homepage, bring glinui tokens to web (#909)
- unify wizard step chrome across setup and node wizards (#849)
- update channel settings, scheduled check, and version-skew notice (#866)
- wait_for_deploy and plan_change for the agent layer (#766)
- wave 3 (changelog, API explorer, cost estimator, templates, push, env diff, topology, forecast, chat approvals) (#890)
- wave 3 agent surface (experimental gate, failure classes, failure view, agent loop e2e, launch docs) (#772)
- web: add brand logos for 5 of the selfhosted4 templates (#812)
- weekly GHCR cleanup for orphaned untagged image versions (#864)
- wire queue, cancel and digest rollback into the deployments page (#750)
- wire up support@levelrail.com and support@glinr.com contacts (#827)
- [HIGH] ssrf in http log drain sinks (#894)
- [HIGH] ssrf in http log drains (#688)
- accessibility and baseline-ui pass on the beta feature wave (#887)
- accessibility pass on status, log viewer and node events, plus component tests (#681)
- acknowledge GitHub ping events on the git webhook route (#932)
- add bearer-compatible /auth/whoami so auth whoami works with API tokens (#966)
- address SonarCloud gate findings on overnight2 (#804)
- bound agent gRPC GracefulStop so upgrades stop blocking ingress (#943)
- bridge managed databases onto an app’s own network (#937)
- cache-bust the favicon so a redeploy actually shows the new one (#877)
- cap API token abilities to the caller’s own, add route guard test (#689)
- catalog: correct pairdrop image tag, 1.19.0-ls94 does not exist (#961)
- change correlation and SLO burn review follow-ups (#746)
- close a status race in SSH node provisioning (#863)
- collapse long always-visible prose into on-demand InfoTip (#903)
- confirm dialog for deploy cancel, aria-hidden on status header icon (#895)
- CPU percent always reads near zero on some Docker installs (#904)
- dashboard review follow-ups (health link, fallback url, unhealthy diagnosis, cleanup card, read on open, lazy row metrics, stop polling on 404/501) (#722)
- dashboard visual polish across metric tiles, node providers, and domains (#856)
- deploy preview review follow-ups (opt-out, deletion, labeling races) (#733)
- deployments page review followups (pinned redeploy, confirm copy, deep link, retry loop) (#730)
- deployments preview follow-ups (#739)
- deployments review follow-ups (per-event visibility, old held in needs_attention, rollback and live precision) (#726)
- detect actually-open dialogs, not closed-but-mounted ones (#820)
- Docker web-build symlinks, stop forcing full CI on every main push (#911)
- docs: footer giant mark position, mobile overflow, and scroll reveal (#875)
- docs: keep hero stars twinkling instead of fading to black, pause offscreen (#874)
- drop —delete-branch from dependabot auto-merge, incompatible with the merge queue (#906)
- extend pre-commit comment-density check to web/*.ts and *.tsx (#910)
- force vite to apply CJS interop to mermaid’s fastdom dep (#831)
- gate ingress routing and deploy-attempt status on real readiness (F-002) (#774)
- GitHub App manifest redirect blocked by its own CSP (#929)
- hugging face preflight review follow-ups (docker disk, per-GPU fit, gated ollama, file lookup, cache key, UI) (#747)
- IaC env placeholders require an explicit allowlist and triage of open CodeQL alerts (#717)
- IAM scoping for app routes, review findings, load balancers and pipelines overview pages, salvaged Jules tests (#708)
- judge deleted-app approvals by IAM instead of hiding them (#732)
- launch wave 1 (nightly, CodeQL, agent-core MCP profile, env tools, VPS smoke) (#759)
- load balancer page review followups (safe export commands, no default probe, retry 0, serialized saves, estimated shares) (#723)
- make update preflight checks respect the configured channel (#942)
- mesh placement bug, safe SQLite volume backups, settings sidebar (#880)
- node provisioning follow-up fixes from post-merge review (#779)
- paint the hero WebGL field’s first frame unconditionally (#833)
- passkey login backup-eligible flag (supersedes #941) (#947)
- pin the e2e PITR minio image and skip when the registry is unavailable (#698)
- pipeline script injection, IAM and stream re-auth gaps, secret binding, gateway limits, MCP safety, container hardening, signed releases (#709)
- point MinIO template at its still-public registry path (#913)
- preview hardening and agent-core profile follow-ups (#771)
- preview tiers review follow-ups (card kept on failure, public-domain Host, bounded thumbs) (#738)
- read host memory on macOS and report unsupported platforms cleanly instead of a raw /proc error (#714)
- recover two commits orphaned by an earlier merge-queue timing race (#865)
- reject a deploy or rollback while one is already running (#934)
- reject a second concurrent manual build of the same app, add deploy pipeline failure-mode tests (#692)
- reject noncanonical upstream ids and clear admin state when a load balancer is removed (#720)
- remove duplicate backup_history index migration (#788)
- remove duplicate backup_history migration and quote colons in docs frontmatter (#790)
- remove unresolved merge markers from main’s api-reference.md (#900)
- render README badges, add logo, restore merged README structure (#967)
- renumber the deploy approval options migration to 0144, it collided with the status page migration at 0142 (#716)
- replace window.confirm with the standard delete-confirm dialog (#800)
- resolve database env vars to mesh DNS names, not container names (#816)
- resolve migration 0135 number collision (#787)
- resolve non-default branch refs in manual build triggers (#930)
- reuse existing badge variant, add inferable name defaults (#797)
- reuse stored git-source token, merge ingress settings on set (#928)
- review follow-ups for path filters and forge status reporting (#748)
- scope cross-app list endpoints to apps the caller can read (#734)
- scope failed deploys and deploy approvals lists to readable apps (#729)
- scope lint cache per worktree, harden AI-attribution check (#793)
- security and correctness findings from review of #711 (#713)
- security hardening (log redaction, login timing, CSP) (#885)
- signal agents to close their session stream on shutdown (#953)
- silence shellcheck SC2016 false positive in install.sh test (#789)
- sort beta releases by publish time, not list order (#931)
- static-site CLI gaps, framework detection, webhook URL, git import (F-017/F-018/F-020/F-021/F-022/F-023) (#778)
- stop forcing the favicon mark to look small (#876)
- stop rebuilding Docker images on every push to main (#946)
- stop reporting a cross-node domain app as Healthy (#948)
- stop showing a dead container’s logs as live in blue-green overlaps (#923)
- stop showing add-tag control on every app tab (#920)
- stop squeezing the template catalog into a narrow fullscreen column (#845)
- supply chain gate review follow-ups (#749)
- unbounded scoped backup paging and case-insensitive cert domain ownership (#735)
- batch environment lookups in GET /api/v1/apps (#955)
- batch SQLite telemetry inserts using json_each (#881)
- batch TLS secret lookups in GET /api/v1/databases (#956)
- cover webhook delivery pagination with a composite index (#957)
- idle footprint benchmark, cached Docker disk usage, single container list per suspended reconcile (#695)
- index backup_history by started_at (#705)
- optimize get conditions for controllers query (#791)
- optimize ListAppEvents and ListDeployFreezeWindows IN clauses (#893)
- Skip weekend run (#724)
- split internal/api test shard from 3 to 4 in fast CI lane (#795)
- use json_each for SQLite IN clauses (#802)
- add a serif pull-quote accent card to the homepage (#836)
- add a who-this-is-for page grounded in shipped features (#915)
- add credibility content to homepage (#835)
- add feature status page with per-area evidence and labels (#756)
- add full template catalog page (#916)
- add metallic headline gradient to homepage hero (#829)
- add real mermaid architecture diagrams to 16 pages (#852)
- apply the pending corrections from feature-status.md’s audit (#917)
- capture and embed load balancer, app overview, and network screenshots (#854)
- clarify the dashboard port isn’t always 8080 (#927)
- embed dashboard screenshots across guides (#965)
- explain mesh DNS resolution for cross-node database connections (#817)
- fill network topology and connections gaps, tighten onboarding (#825)
- fix llms.txt domain, add sitemap lastmod/priority, per-page OG image (#837)
- lead git-integrations, templates, feature-flags, and projects pages with user tasks (#853)
- lead with user tasks instead of implementation details (#841)
- new Accordion/Steps/Tabs/InlineToc components, trim filler prose (#944)
- note APP_AGENT_ADVERTISE_HOST requirement for real node enrollment (#780)
- polish homepage cohesion across tonight’s content passes (#839)
- record the docs site’s amber accent as a deliberate second brand color (#879)
- redesign homepage with bento feature grid and real visual identity (#828)
- refresh roadmap, feature catalog, README status and CLI reference (#676)
- remove GitHub star count from homepage trust strip (#846)
- render mermaid diagrams, search body text, rewrite operator-facing content (#777)
- rewrite README, getting started, installing, architecture, docs index (#964)
- serve install.sh from levelrail.com instead of raw GitHub URL (#830)
- strip inline implementation names from resilience, DR, and backups pages (#851)
- sync template catalog count to 311 everywhere (#968)
2026-09-23
Bug Fixes
- resolve three-way migration 0119 collision and a test fake left stale after a parallel merge (#659)
2026-09-23
Features
- branch-scoped env var overrides for preview deploys (#632)
- per-app integrations catalog (PostHog, Sentry, Datadog, and more) (#647)
- pre-flight framework detection and live deploy step feed (#648)
2026-09-23
Features
- unblock Python/Django Railpack deploys (#623)
- harden Vikunja and Keycloak catalog templates toward production defaults (#622)
2026-09-23
Bug Fixes
- sort install.sh release list by created_at, not API order (#619)
2026-09-23
Bug Fixes
- correct Vikunja and Keycloak catalog templates so they boot (#615)
2026-09-23
Bug Fixes
- bundle docs/ into the web build stage of the Docker image (#611)
2026-09-23
Features
- https, redirect, status-range and exec health probes; active checks for 71 catalog templates (#610)
- rich release notes, release announcements, and an SEO changelog on the docs site (#607)
- correct install/compose docs and fix doctor port_80 false fail (#591)
- resolve high and critical CodeQL alerts (SSRF, email injection, zip slip, path injection, enrollment CA pin) (#609)
2026-09-23
Features
- setup wizard with live server, domain, git, and first app verification (#587)
- bump dependencies for security advisories (#583)
2026-09-23
Features
- actionable CTAs on System Status, reusable docs help links (#551)
- add container restart count and build duration metrics (#560)
- clone a whole environment’s app set into a new environment (#562)
- configurable ingress HTTP/HTTPS listen ports (#556)
- detect and clean up orphaned named Docker volumes (#569)
- distribute WireGuard mesh config to remote nodes over gRPC (#564)
- doctor network, resource, and multi-firewall checks (#581)
- egress allowlist UI on the app network page (#545)
- empty states with prerequisite hints and template CTA (#579)
- fleet-wide node CPU/memory/disk utilization view (#575)
- Gitea as a fourth git provider (#553)
- healthchecks and memory advisories for all 129 catalog templates (#576)
- install works end to end (setup token, HTTP login, installer preflight) (#582)
- per-app exec/shell access opt-out, defaults enabled (#542)
- per-app outbound network allowlist (egress gateway) (#543)
- point-in-time restore for Postgres databases (#566)
- secret age tracking and rotation reminders (#563)
- slow query log for Postgres/MySQL databases (#565)
- two-person approval gate for deploys into protected environments (#567)
- WireGuard mesh key rotation and peer status visibility (#561)
- app status rollup, compose service pruning, and group lookup by app name (#552)
- confirm detach actions and surface missing success toasts (#546)
- detect frozen agent processes via heartbeat frames and gRPC keepalive (#558)
- doctor’s disk space check shows raw byte counts, not human-readable (#550)
- live resource updates fail silently when only memory is set, no swap (#548)
- rate limit the unauthenticated git webhook receiver (#574)
- retry transient SMTP failures for email notification channel (#559)
- stop doctor’s port 80/443 check from false-failing on its own ingress (#547)
- stop treating unlabeled Docker networks as this instance’s own (#557)
- type errors blocking the real production build (npm run build) (#549)
- wire Bitbucket App secrets manager, OAuth connect was permanently broken (#555)
2026-09-21
Features
- CLI coverage for backup download, database logs, node placement (#529)
- CLI coverage for database attachment, manual build trigger, moves, resources, AI settings, git providers (#536)
- per-service readyTimeout override for the reconciler’s readiness budget (#539)
- accessibility gaps in form labeling and muted-text contrast (#528)
- classify a pre-port-bind crash as a crash reason, not generic ReadinessFailed (#535)
- enforce required secrets on the build-triggered deploy path, not just webhook (#541)
- extend IAM resource scoping to 79 mutating app and database routes (#532)
- make tag CLI commands consistently take a name, not a mix of name and ID (#533)
- manual builds tag by resolved commit, pending image never hits Docker (#530)
- never treat a master key read failure as no key yet (#522)
- nudge reconciler after a build-triggered deploy completes (#534)
- rearm crashloop auto-rollback for a second, different bad deploy (#540)
- resolve migration number collision at 0106 (#524)
- respect prefers-reduced-motion and avoid layout-triggering progress transition (#531)
- scope container and network cleanup to this control plane’s own instance (#537)
2026-09-20
Features
- add curated local AI model templates to the service catalog (#514)
- add domain-level custom error pages (#511)
- collect real host memory for the control plane’s own node (#515)
- live RAM-fit check in the AI template wizard (#516)
2026-09-19
Features
- add concurrency_policy to scheduled tasks (#495)
- add deploy log download endpoint, CLI command, and UI button (#504)
- add DNS-01 provider abstraction with Route53 as a second provider (#492)
- add domain-level redirects (#507)
- add instance-wide backup history view (#503)
- default published ports to a private bind address (#496)
- per-preview env var overrides on parent app (#493)
- per-service pull_policy support for Docker Compose imports (#494)
- lazy-load scoped sidebars, align react-dom to react 19.3.0 (#499)
- renumber colliding scheduled-task migration to 0101 (#506)
- resolve migration number collision at 0098 (#505)
- restore explicit Control cast for BackupMissingFields props (#500)
2026-09-18
Features
- add apps wait and apps deploys list CLI commands (#460)
- add backup_missing alert rule kind (#463)
- add Content-Security-Policy and opt-in HSTS, fix healthz routing (#449)
- fail fast when a container is OOM-killed during readiness wait (#451)
- first-party GitHub Action for deploying to Levelrail from CI (#461)
- move an app to another node with its volumes (#464)
- resolve app secrets live from an external HashiCorp Vault instance (#465)
- selective backup archive deletion (#462)
- zero-config sslip.io URL for apps with no domain configured (#447)
- bound live Docker inspect calls with a timeout (#450)
- cut new-code duplication in the move-with-volumes handler and CLI (#466)
- poll deploy status live so a rollback’s actual progress is visible (#452)
- recognize every reconciler failure reason in the rollout stage (#458)
- retry transient notification delivery failures (#454)
- revert cel-go bump that broke the build (#459)
- suppress duplicate lines when a log stream’s EventSource reconnects (#453)
2026-09-13
Features
- add bulk restart for every app in a project (#442)
- add database stop/start lifecycle, API, CLI, and dashboard (#440)
- pause and resume an entire project (#441)
- production-readiness batch - reconciler responsiveness, hardening, README (#445)
- rank apps by live CPU, memory, and network usage on the dashboard (#443)
- recognize AlreadyRunning as a done rollout condition (#439)
2026-09-12
Features
- add CLI metrics query and live log tailing (#394)
- add VitePress docs and landing site for GitHub Pages (#387)
- alert/channel editing, deploy-notify+promote MCP, secrets at app-create, reconciler test gaps (#433)
- close CLI feature-completeness gaps for settings, storage, and git apps (#396)
- compose command/bind-mounts, self-service invites, more templates/tools/channels, e2e hardening
- compose entrypoint, app.yaml command/bind-mounts, external registry browsing, more templates and MCP tools (#385)
- dispatch builds to a remote build node over the agent transport (#432)
- ephemeral database per preview environment (#397)
- interactive exec terminal over WebSocket (#436)
- liveness probing and automatic restart (#434)
- node-move teardown fix, simple spread scheduling, CLI/MCP completeness batch (#395)
- opt-in per-domain WAF and rate limiting for embedded ingress (#398)
- remote exec and Docker networking over the agent transport (#399)
- replace guesswork form fields with real pickers and suggestions (#437)
- TLS for managed Postgres and Redis connections (#364)
- address containerd and docs-site dependabot alerts (#392)
- chain release.yml to actually run after release-please tags a release (#373)
- derive Select trigger label automatically from item children (#438)
- make manual release.yml dispatch actually target the right tag (#375)
- pin cel-go to v0.28.1, restoring build compatibility with caddy (#389)
- raise Docker image build timeout and add layer caching (#378)
- route error components against unknown, not Error (#431)
- spread drained resources across nodes, warn on dropped depends_on (#435)
- stop and remove containers when a service is deleted (#381)
- build Docker images on native per-arch runners instead of QEMU (#380)
2026-09-09
Features
- actionable restart-required toast for health check and resource limit saves
- add a restart action for apps
- add age-based backup retention alongside count-based retention (#194)
- add backup targets settings page
- add build.base_directory for monorepo subdirectory builds (#139)
- add CLI support for deploying a Docker Compose file (#109)
- add cloudflare-tunnel CLI subcommands (#188)
- add CPU/memory quick-stat cards to app overview (#163)
- add dashboard home page at /
- add developer-view raw text editor for env vars
- add Dokploy as a migrate CLI source (#135)
- add Dragonfly and ClickHouse as managed database engines (#145)
- add editable port control to app overview page
- add environment-level shared env var tier between project and app (#195)
- add fullscreen size variant to dialog primitive
- add fullscreen toggle to the create resource wizard
- add GET …/secrets and POST …/secrets/{key}/lock endpoints
- add interactive wizard mode to apps create (#239)
- add interactive wizard mode to databases create (#245)
- add levelrail-cli doctor command for local preflight health checks (#265)
- add list_audit_log MCP tool (#285)
- add loading states across dashboard routes and data-fetching components (#248)
- add MariaDB and KeyDB managed database engines (#141)
- add MCP server, extract shared internal/apiclient package (#121)
- add migrate caprover CLI command (#191)
- add Network tab showing live traffic path from domain to container (#148)
- add nodes CLI subcommands (#192)
- add non-interactive exec endpoint for running commands in app containers
- add organization-level shared env var tier above projects (#193)
- add periodic OS package-update check per node (#220)
- add projects CRUD, project env vars, and project membership to the CLI (#250)
- add reversible per-secret lock to the store layer
- add secret key listing and lock mutation hooks
- add settings sub-sidebar and fix stale route tree (#222)
- add SetValueGuarded, ListKeys, SetLocked to secrets.Manager
- add structured issue templates and type-specific PR templates (#77)
- add System status dashboard page (#324)
- add test-connection action for backup targets (#307)
- admin recovery email, general email capability, forgot-password flow
- admin recovery email, general email capability, forgot-password flow (backend)
- alert on repeated scheduled task failures (#290)
- allow clickhouse as an app.yaml database engine (#186)
- allow pinning a service’s host port (#170)
- App Clone
- app detail screen polish - deploy history, grouped nav, build hints, convergence
- App Overview hero+checklist, batched Apps list status
- app volume backups (backend, API, CLI, and web UI) (#311)
- app-detail polish - deploy columns, grouped nav, convergence badge, build-log hints
- app-level scheduled tasks (#140)
- apply resource limit changes to running containers live (#242)
- apps deploy/status/logs and databases commands for the CLI
- apps restart/rollback CLI subcommands
- apps table + read-path for multi-service app support (stage 1) (#61)
- attribute audit log entries to their client and add retention (#316)
- audit log CSV export via API, dashboard, and CLI (#277)
- audit log for write/deploy/root-tier requests (#125)
- auto-generate and persist master key on first boot (#60)
- auto-verify scheduled backups right after they complete (#280)
- backup file download to browser
- backup integrity verification (#273)
- backup target onboarding, connect an S3-compatible bucket
- bounded health check and opt-in ufw setup in install.sh (#323)
- breadcrumb and hierarchical navigation for org/project/environment/app (#173)
- browse and deploy from the curated service-template catalog (#119)
- build Docker Compose services with build: directives (#190)
- build pack selector and branch picker for git app creation
- build.type: image, deploy a prebuilt registry image with no build (#124)
- built-in container registry (#366)
- BYO TLS certificate upload for domains (#363)
- centralized Domains page with ACME settings and app-domain list
- changed-line coverage gate for PRs (#350)
- CLI and dashboard wiring for organizations and environments (#169)
- CLI CRUD for backup targets and registry credentials (#251)
- CLI device login flow (auth login —device) (#319)
- CLI exec, auth login/whoami, tokens, domains, backups commands
- CLI exec, auth, tokens, domains, and backups commands
- CLI output formats and JMESPath query filtering (#318)
- CLI support for app-level scheduled tasks (#144)
- ClickHouse and Dragonfly backup/restore support (#157)
- close git provider capability gaps (GitLab branches, GitHub webhooks, aggregated status) (#228)
- Cloudflare Tunnel integration for outbound-only ingress (#138)
- collect and surface node disk space as a real telemetry metric (#185)
- connect a GitHub App for private-repo access and repo browsing
- containers page and master key rotation UI, feature catalog doc (#358)
- Coolify migration CLI (levelrail-cli migrate coolify) (#45)
- copyable DNS record rows and better layout for domain check (#63)
- curated named roles (admin/operator/viewer) over the ability model (#240)
- curated service-template catalog and read-only browsing API (#117)
- custom Docker labels escape hatch on spec.Service
- dashboard empty states for alerts, deploy history, and log search (#238)
- dashboard home page at /
- database backups to S3-compatible storage, with restore
- database publicly-accessible toggle + host port
- delete pruned scheduled-backup objects from their bucket
- deploy comparison view (#272)
- deploy-outcome notifications
- deterministic resource right-sizing suggestions (#279)
- dismissible dashboard nudge to enable platform-wide alert rules (#300)
- docker compose as a deploy target (#97)
- draft autosave and guided defaults for create-resource forms (#260)
- editable port control on app overview
- empty states and inline field guidance
- enforce frontend bundle size budget in CI (#299)
- env var tier provenance and audit activity panel in EnvEditor (#261)
- env/secrets developer view (frontend)
- expand MCP server tool coverage to nodes, previews, alerts, metrics, rollback (#252)
- explicit Stop/Start action for apps
- extend resource right-sizing recommendations to databases (#288)
- fan out git push webhook deploys to sibling app-group services (#172)
- feature flags with live evaluation via existing API tokens (#262)
- fill CLI gaps for app lifecycle, database delete, secrets, git-source (#247)
- forgot-password flow and email settings pages (frontend)
- forward app logs to an external HTTP or syslog sink (#137)
- framework-aware guided deploy picker
- full-screen presentation for the create resource wizard
- fullscreen log viewer toggle and finish-aware auto-scroll (#226)
- general per-actor rate limit on the authenticated API surface (#284)
- generic OIDC SSO as a third login provider (#160)
- GitHub Enterprise Server and Bitbucket Cloud git provider support (#221)
- GitLab App integration (#127)
- global notification channels settings page
- guided domain add flow with inline TLS status
- guided domain DNS check
- guided first-run onboarding flow for zero-app instances (#266)
- HTTP Basic Auth protection for domains, with helpful no-domain UX (#162)
- IAM policies dashboard page (#322)
- IAM-style resource-scoped policy engine (#317)
- implement database dump mechanism for backup targets
- implement database restore from backup
- implement Redis backup restore
- implement rolling deploy strategy (#171)
- ingress settings and domains API endpoints
- ingress_settings store for ACME toggle and primary domain
- land on the live build log after triggering a build (#67)
- let operators pick between CNAME, A, and AAAA for domain setup (#189)
- levelrail-cli version command and CHANGELOG (#301)
- lightweight non-RBAC Projects grouping
- list every container on a node, not just Levelrail-managed apps (#326)
- list secret keys with reversible lock toggle in SecretsEditor
- live per-node alert status for patch_status, node_disk_space, node_resource_usage (#304)
- live SSE log broadcaster and stream endpoint for app containers
- live-tailing terminal viewer for app container logs
- log export as a downloadable text file (#276)
- make the New resource wizard friendlier to non-technical users (#70)
- managed database logs and metrics (#225)
- manual Docker disk/image/volume pruning
- manual GitHub App connect flow, domain disclaimer on automated setup (#104)
- master key rotation for envelope-encrypted secrets (#295)
- MCP tools for feature flags, doctor, webhook deliveries, backup verification, deploy compare, notification deliveries (#274)
- memory/CPU resource limits for databases
- MongoDB as a managed database engine (#120)
- multi-service apps stage 2 (deploy fan-out + per-app Docker networking) (#75)
- multi-service support in apps create —interactive (#349)
- multi-user sessions, OAuth sign-in (Google/GitHub), users management
- multi-user sessions, OAuth sign-in, users management API
- named credentials profiles (—profile / APP_PROFILE) (#315)
- named-volume support for ordinary application services (#76)
- node CPU/memory alert rule (node_resource_usage) (#297)
- node-level resource dashboard
- non-interactive one-off exec in app containers
- notification channel test-send delivery history and CLI/UI wiring (#267)
- OAuth sign-in UI, OAuth and Users settings pages
- PagerDuty and Microsoft Teams notification channels (#151)
- paginate backup execution history (#143)
- per-domain maintenance mode (#360)
- per-user RBAC, extending the existing ability system to sessions (#131)
- persisted per-app git source + multi-app GitHub webhook
- persistent restart-required signal for env var changes (#263)
- post GitHub PR comments and commit statuses for preview deploys (#361)
- pre/post-deploy hook commands (#362)
- preview environments per pull request (#246)
- proactive alerting for certificate expiry (#283)
- proactive domain_health alert rule kind (#308)
- proactive node disk space alerting (#293)
- proactive node patch status alerting (#289)
- promote an app’s image across environments in the same project (#278)
- protected environments with confirm-to-deploy friction gate (#282)
- Pushover notification channel (#126)
- Railpack auto-detection for Node.js and Go builds
- read-only dashboard visibility for static sites
- read-only deploy failure and crashloop diagnosis (#268)
- real ACME issuer option in ingress config builder
- real ACME issuer, platform primary domain, and centralized Domains page
- real app-to-database attachment (#146)
- real deploy history, rollback, and build-log persistence
- real multi-marker deploy history on the metrics chart
- real S3-compatible upload client for backup targets
- real-time deploy stage timeline and in-progress banner (#158)
- real-time live log streaming for app containers
- redesign deploy detail page with metadata card and collapsible stages (#165)
- redesign New Resource picker into a categorized, searchable modal (#110)
- registry credentials for pulling private images (#130)
- relabel git-source wizard card, elevate Railpack, add connect-GitHub CTA and domain field (#68)
- replace one-off empty states with shared EmptyState component (#164)
- replace single-admin store with multi-user users table
- required-check CI gate, CodeQL path filtering, label taxonomy and auto-labeler (#95)
- resolve SERVICE_FQDN_* magic vars to a service’s own assigned domain (#113)
- resolve template SERVICE_ magic vars in compose deploys (#108)
- restore a backup into a brand-new database, alongside in-place restore (#310)
- restore app volume backups as a new, standalone volume (#313)
- reuse GitRepoSourcePicker in GitSourceCard (#229)
- scheduled database backup configuration UI and CLI (#174)
- scheduled/cron backups
- scope new-resource picker to the caller’s intent (#254)
- secret key list/lock API + scope deploy trigger card to Overview/Deploys
- service templates, team invites, deploy comparison, notification channels, and MCP tools
- settings hub, global search, updates page, and ingress DNS transparency (#111)
- shared/group env vars at the project level
- shell completion for levelrail-cli (bash, zsh, fish) (#270)
- splice generated secrets into composite env values (#118)
- storage as an app resource (R2/S3)
- surface compose restart: and networks: as non-blocking notices (#287)
- surface deploy strategy and replicas on the app screen
- surface Docker daemon reachability as a dashboard-wide health check (#259)
- swap memory and CPU pinning (cpuset) resource limits (#233)
- test registry credentials before deploy relies on them (#291)
- thread ingress settings into the ingress reconciler
- TOTP two-factor authentication for admin login (#114)
- track commit sha and trigger source on deploy attempts
- translate compose healthcheck blocks into readiness probes (#286)
- trigger and track a real database backup
- trigger and track database backups from the database page
- unify git provider connect flow, fix missing git-source and build bugs (#227)
- unify webhook-triggered and manual multi-service deploys (#241)
- v1 install script, systemd unit, release build workflow (#44)
- webhook delivery history and replay (#269)
- wildcard domain support via Cloudflare DNS-01 (#152)
- wire alert rules to global notification channels
- wire developer-view toggle into the Environment section
- wire Dockerfile build args through app spec, API, CLI, and UI (#155)
- wire IAM policy resource-scoped enforcement into apps/databases routes (#321)
- wire mesh DNS server into container creation
- wire OAuth secrets, update recover-admin for multi-user store
- wire prebuilt-image build type into CLI, UI, and git-source validation (#129)
- accessibility gaps in git picker, log terminal, and nav sidebars (#232)
- accessible names for placeholder-only domain/env form inputs
- adapt notification_channel.go to the email.Sender interface
- add accessible names to per-row feature flag toggle and rollout input (#275)
- add missing —json support to three CLI clear commands (#271)
- add TTL fallback sweep for preview environments across all git providers (#281)
- allow railpack build type through apps create (#147)
- async build trigger, private repo auth, and ability-gated token minting (#64)
- avoid BuildKit MergeOp deadlock in Railpack deploy image assembly (#149)
- clear stored secrets when disconnecting a GitHub App
- close forgot-password rate-limit bypass, remove dead admin-email frontend code
- close no-auth confirmation gap for KeyDB/Dragonfly, polish secrets CLI help (#303)
- close pre-existing AppDetail test-fixture typecheck gaps (#264)
- correct misleading test name/comment on a secrets test
- crashloop alert’s view-logs link goes to a dead same-page anchor (#218)
- don’t show a redundant inline error while the overwrite-confirm dialog is open
- drop stale preview-envs docs claim, skip live Docker tests in short mode (#314)
- eliminate race in TestHandleTriggerBuild_RecordsDeployAttempt_Succeeded (#298)
- explain why the live logs tail is empty, don’t just wait forever (#161)
- feed persisted build logs to diagnose for build-phase failures (#292)
- fix overflowing create-resource picker, add category filter (#255)
- force 0.1.0 as release-please’s first proposed version (#372)
- gate one-off container exec at AbilityRoot, not AbilityDeploy
- generate routeTree.gen.ts before web lint, trim test duplication (#116)
- get the main frontend bundle under the 500kB warning threshold
- guard ClickHouse restore live test against entrypoint’s temp-server handoff (#312)
- image-sourced deploys show a clear no-build-output message
- image-sourced deploys show a clear no-build-output message instead of hanging on ‘Waiting for log output…’
- land signed-in users on the dashboard, not /apps (#66)
- live deploy log stream stuck on zero output
- make password-reset token single-use atomic, tidy go.mod, trim comments
- mark orphaned deploy attempts as failed on startup (#159)
- move showDeployTrigger’s useRouterState above the early-return
- pin cel-go back to 0.28.1, incompatible with pinned Caddy version (#134)
- pin golangci-lint-action to a commit SHA, suppress a false-positive Sonar finding (#352)
- point install.sh at the real first-run registration path (#325)
- poll for post-stop/remove state on CI’s daemon
- poll for stopped state in Stop/Remove live test
- poll for stopped state in Stop/Remove live test instead of asserting immediately
- pre-fill and suggest commands in the exec panel (#327)
- raise internal/api CI test timeout to fix false-failure panics on main
- raise internal/api’s CI test timeout to 25m
- re-ensure a container’s network before restarting it (#150)
- record a deploy attempt when an app is created with a real image (#154)
- record deploy attempts for compose deploys and image-changing updates (#256)
- recreate a container whose Start fails even after EnsureNetwork (#153)
- reduce SonarCloud duplication flagged after #228 merged (#231)
- reject ACME contact emails with a display name
- renumber cloudflare-tunnel migration to 0049, collided with 0047 (#142)
- renumber deploy_attempts_commit_source migration to 0025
- renumber domain-basic-auth migration to 0053, collided with 0052 (#166)
- renumber github app connection migration to 0029
- renumber ingress_settings migration to 0024
- renumber migration to 0028 (0027 claimed by service_labels)
- renumber migration to 0030 (0029 claimed by service_git_sources)
- renumber migrations past 0030_service_storage_target.sql
- renumber oidc-provider migration to 0054, collided with 0053 (#168)
- renumber secret-lock migration to 0038 (0037 collision with PR #56)
- renumber users migration to 0035, dedupe nullableString helper
- require MySQL readiness probe to hold twice before proceeding
- resolve duplicate migration version 0052 (#167)
- resolve migration 0030 number collision (github-app vs storage-target)
- resolve migration 0030 number collision between github-app and storage-target
- restore docker/docker + go-connections to versions internal/build/build.go’s ImageLoadWithQuiet call needs (#100)
- restore frontend checks in the pre-commit hook (#72)
- restore main build and resolve SonarCloud findings on multi-service apps (#99)
- restrict git branch listing to http/https schemes
- revert docker/docker, docker/go-connections, cel-go bumps (#98)
- revert typescript to 6.0.x, main is broken for npm ci (#96)
- rework forgot-password and admin-email for the multi-user model
- satisfy golangci-lint (revive, unparam) and fix dangling doc refs
- scope deploy trigger card to Overview and Deploys sections
- scope MongoDB restore to drop non-system databases first (#309)
- set explicit Content-Type on remaining webhook-derived response bodies (#249)
- small UX polish bundle (git-source validation, stale doc comment, database status dots) (#223)
- stop bundling zod into the eager main chunk via reset-password validateSearch (#230)
- stop clipping browse-templates category headers in a nested scroll box (#257)
- subscribe GitLab and Bitbucket webhooks to pull request events (#253)
- suppress SonarCloud false-positive on the intentional unconditional backfill UPDATE (#132)
- surface swap and CPU pinning limits on the app overview (#234)
- TestValidateDatabaseResource’s unknown-engine case used mongodb, now a real engine (#122)
- unlock build fields after a failed build trigger in git app wizard (#224)
- unstick finished-attempt deploy log SSE connection status
- update Docker client call sites deprecated by the docker/docker 28.x bump (#103)
- use localeCompare when sorting env var keys in dev view (#351)
- verify github app installation status live against github, not just the local row (#294)
- warn on missing secrets master key before database creation
- widen TestCertStorage_TouchLock_KeepsItFresh’s timing margin (#356)
- wire Dragonfly into app.yaml spec and database URL resolution (#187)
- scan only new log lines for build-log hints