Commit graph

3866 commits

Author SHA1 Message Date
Andras Bacsai
0afa59bc02 fix(ui): keep settings subnav in-page and persist sidebar collapse
Scroll active application settings sections with buttons instead of Livewire navigation, persist sidebar collapse even with auto-collapse, drop the unused modal id, and right-align destination status.
2026-09-08 09:20:38 +02:00
Aditya Tripathi
0cdb98d969 fix(ui): use dropdown-level shadow for popovers and floating menus
Replace inline modal-shadow styles on toasts, popups, and warning
banners with a shared `surface-popover` utility that uses the lighter
dropdown shadow instead of the heavier modal shadow. Apply the same
`shadow-dropdown` swap to the deployments indicator pill and the
server/deployment log floating menus. Remove now-unused console
header and error-contact-link rules from app.css, and add a test
asserting these surfaces consistently use the dropdown shadow.
2026-09-08 07:05:01 +02:00
Aditya Tripathi
9fbeb352a4 feat(ui): auto-collapse sidebar on settings pages; fixed full-height rail
Auto-collapse the main sidebar on pages that have a settings rail (follows
the page when enabled; expanded elsewhere), with an animated slide and a
profile-menu toggle (localStorage) to disable it.

Rework the settings rail to position:fixed like the main sidebar: full
height (3rem -> viewport bottom), left tracks the sidebar's collapsing
width via --sidebar-w, content pinned to grid column 2. Fixes the sticky
scroll crop and top/bottom gaps.
2026-09-08 07:05:01 +02:00
Aditya Tripathi
fc93001cb8 feat(ui): weld settings rail to main sidebar, full-height, unify width
Turn the floating card settings rail into a flat, full-height rail welded
to the main sidebar (3rem -> bottom), surface bled across main's gutter.
Unify the application config grid to the canonical 210px/gap-8 (was the
lone 236px/gap-4 outlier). Affects all shared settings rails.
2026-09-08 07:05:01 +02:00
Aditya Tripathi
6bb8fcd5c7 feat(theme): extract shared Alpine theme controls into components
Introduce theme-controls and theme-controls/picker Blade components
housing the theme/page-width/custom-color logic previously duplicated
in top-user-menu and profile/appearance, and fix custom theme surface
colors to use oklch mixes instead of raw white/black/hex for correct
contrast.
2026-09-08 07:05:01 +02:00
Aditya Tripathi
d9cafc0dd7 feat(ui): card-style header band and rounded body for connected terminal
Give the connected terminal (System theme) the same construction as the
target-picker card: an attached elevated header band holding the target and
theme selectors, a hairline frame, and a body panel whose ring forms the
divider and rounds into the header at the corners. The rounded-corner notch
now shows the elevated (header) surface while the terminal keeps a base fill.
Colorful console themes are unchanged.
2026-09-08 07:05:01 +02:00
Aditya Tripathi
160be6f571 feat(ui): white settings rail in light mode, unify shadows, mobile sheet polish
- Settings rail (application-settings-navigation) is now white in light mode
  instead of a gray fill; separation comes from the hairline ring + soft lift.
- Mobile slide-over: replace the heavy shadow-modal with a soft left-casting
  shadow (scrim handles content dimming, shadcn-style) + rounded-l corners.
- Unify scattered shadow-lg usages onto the shadow-dropdown / shadow-modal
  tokens across dropdowns, tooltips, popups and slide-over.
- Light-mode semantic text + tertiary/nav contrast tuning for WCAG AA.
- status-summary: support right-aligned dropdown; use it on the app heading.
2026-09-08 07:05:01 +02:00
Aditya Tripathi
fd928537e3 feat(ui): unify motion/transition system across interactive components
Add shared easing curves and press/focus transitions for buttons, inputs,
and form controls in app.css. Refine dropdown, modal, tooltip, and
slide-over enter/leave transitions to use consistent easing and durations,
and remove the focus-visible box-shadow ring on inputs/selects in favor of
border-color transitions.
2026-09-08 07:05:01 +02:00
Aditya Tripathi
28fe3384ed feat(ui): section-heading component, dashboard spacing, sidebar-toggle icon
- Add reusable <x-section-heading> (title, muted subtitle, optional action)
  with a compact contained "View all" button; migrate dashboard Projects/
  Servers/Deployments and shared-variables environment headers to it.
- Dashboard: hide the empty active-deployments node so it no longer adds a
  gap above the first section; align section actions with the title row.
- Mobile: use the panel-left sidebar-toggle icon (matching desktop) as the
  drawer trigger instead of a hamburger.
2026-09-08 07:04:48 +02:00
Aditya Tripathi
d91d2fa35d feat(ui): WCAG contrast, neutral oklch surface system, and mobile nav overhaul
Design tokens
- Fix WCAG AA text failures: darken light muted text and lighten dark
  tertiary text so 13-14px copy clears 4.5:1 on every surface.
- Rebuild the dark surface ladder in correct values (oklch compresses to
  near-black below ~15%), giving visible steps: content, chrome, cards.
- Establish a 3-layer shell (deep content, lighter sidebar/topbar chrome,
  lifted cards) with crisp hairline rings and a restrained card shadow.
- Unify every surface to one neutral temperature (pure gray); neutralize
  the cool-tinted sidebar text and legacy surface tokens.
- Convert all color tokens to oklch (neutrals + brand).
- Unify inputs to the recessed token; fix invisible dark placeholders.
- One shared --shadow-dropdown for all menus/listboxes/command palette.

Settings sidebar
- Sticky contained-card rail with subtle scrollbar; collapsible sub-section
  groups (active open by default), cross-page section links.
- Mobile: collapsible disclosure with animated open, outside/Escape dismiss,
  press feedback, and reduced-motion support.

Mobile
- Consolidate the resource header (title + status + links on one row).
- Tighten settings-page vertical rhythm.
- Rebuild the main sidebar as an animated shadcn-style sheet (slide/fade,
  Escape, scroll lock, in-panel close, close-on-navigate).

Fixes
- #11532: selected server invisible in the light-mode terminal toolbar.

Docs: update DESIGN.md tokens, shell layering, and temperature rules.
2026-09-08 07:04:48 +02:00
Andras Bacsai
ba30c64d7d
fix(stripe): prevent duplicate subscription checkouts (#11666) 2026-09-07 20:25:06 +02:00
Andras Bacsai
8a03647a70 feat(domains): compact mobile domain rows and isolate preview modals
Show routing summaries on domain tables below 600px instead of squeezing desktop columns. Scope preview add/edit Livewire events by preview id, authorize preview domain actions, and add search plus unsaved-edit handling.
2026-09-07 20:24:46 +02:00
Andras Bacsai
d75881fa96 feat(domains): keep domain drafts and move preview settings
Preserve in-progress domain edits and redirects across Livewire
refreshes, copy www port overrides for service redirect pairs, and
relocate preview deployment toggles from Advanced to Previews.
Unsaved bars can stay dirty via Alpine while a modal is closed, and
service domain tables stack at narrow widths.
2026-09-07 18:29:58 +02:00
Andras Bacsai
b123356acd feat: add backup controls, resource search, and Sentinel enablement
Unify service backup history with pagination, schedule settings actions, S3 destination details, and team-safe access checks. Display server built-ins as read-only variables and add loading and empty states for searchable resources.
2026-09-07 16:46:37 +02:00
Andras Bacsai
0b462f6a58
feat(backups): alert when scheduled backups are missing (#11433) 2026-09-07 14:09:42 +02:00
Andras Bacsai
08f68016dd
fix(storage): prevent PR suffix dropdown clipping (#11637) 2026-09-05 15:58:12 +02:00
Devrim Tunçer
16295e1ab3
fix(ui): keep modal content across re-renders (#11294) 2026-09-05 14:10:21 +02:00
Andras Bacsai
3c0e43f482 feat(settings): configure CDN URL for stored images
Add a persisted instance setting for S3 image CDN URLs and use it when building image links. Cache profile avatars and project icons with immutable one-year headers.
2026-09-04 21:15:06 +02:00
Andras Bacsai
053b030c42 fix: remove database restart limits and clear stale Traefik state
Drop restart-limit fields and enforcement from database resources, clear cached Traefik version data when proxies change, and show missing service environment variables from disabled deploy actions.
2026-09-04 15:42:26 +02:00
Andras Bacsai
89a66dd255 fix(service): show disabled deploy action when variables are missing 2026-09-04 06:30:35 +02:00
peaklabs-dev
2fc73bc357
fix(ux): show api token description inline 2026-09-03 17:23:17 +02:00
Andras Bacsai
e2e91fbb85
feat(domains): support per-domain internal port overrides (#11594) 2026-09-02 19:39:19 +02:00
Andras Bacsai
7a7564e6b3 fix(ui): improve compose editor layout on mobile screens 2026-09-02 10:22:44 +02:00
Andras Bacsai
8ace0d18e3 fix(database): warn about PostgreSQL password overwrite on full restore 2026-09-01 20:48:39 +02:00
Andras Bacsai
f06aadc4a0 fix(service): warn before removing required ports 2026-09-01 20:33:50 +02:00
Andras Bacsai
e4146a6314
feat(backups): unify service backup management (#11574) 2026-08-31 22:51:30 +02:00
Andras Bacsai
ff8b019296 fix(application): defer Docker Compose loading and preserve domains
Load the compose file only after the user confirms its location, initialize the default compose path when switching build packs, and retain existing application domains.
2026-08-31 21:12:28 +02:00
Andras Bacsai
2bce16e4d4 fix(resources): remove empty-domain placeholder from grid 2026-08-31 17:37:10 +02:00
Andras Bacsai
d67d42039a fix(ui): keep sponsorship reminder listeners functional 2026-08-31 16:52:53 +02:00
Andras Bacsai
adb255dc5c Merge remote-tracking branch 'origin/main' 2026-08-31 13:16:48 +02:00
Andras Bacsai
44bb132833 feat(settings): add development sponsorship reminder preview 2026-08-31 13:16:35 +02:00
Andras Bacsai
67b33c27a9
fix(applications): persist restart limit state for stopped containers (#11566) 2026-08-31 13:13:26 +02:00
Andras Bacsai
ccea7287bf feat(previews): add preview domain management and DNS status tracking 2026-08-30 16:20:16 +02:00
Andras Bacsai
b357522f94 fix(livewire): prevent stale keys and refresh races
Use stable identities for dynamic rows and nested components so reordering does not target the wrong item. Scope storage count and volume-list refreshes, preserve PostgreSQL script identity when renaming files, use Livewire-aware destination redirects, and bump the version to 4.3.13.
2026-08-28 09:26:57 +02:00
Andras Bacsai
97831ef06e feat(media): serve avatars and project icons from S3 or CDN 2026-08-27 22:32:16 +02:00
Andras Bacsai
7b7d5a0aad fix(services): add CDN and default logo fallbacks 2026-08-27 13:45:26 +02:00
🏔️ Peak
22ca3216e8
fix(ui): monaco editor placeholder alignment (#11514) 2026-08-26 15:27:48 +02:00
Andras Bacsai
63cbdd5c52
fix(security): preserve private key editor modal identity (#11497) 2026-08-25 20:51:59 +02:00
Andras Bacsai
abeb839a69
fix(deployments): restore commit links in deployment logs (#11495) 2026-08-25 12:12:12 +02:00
Andras Bacsai
53117611e4
fix(teams): allow deletion with system-wide Git sources (#11500) 2026-08-25 11:28:15 +02:00
Andras Bacsai
ac4f5af7c0
fix(teams): allow deletion with unused private keys (#11499) 2026-08-25 11:18:59 +02:00
Andras Bacsai
c5b7f726b0 fix(security): redact dotted GitHub tokens and contain wide data tables 2026-08-25 10:30:14 +02:00
Andras Bacsai
981163973b fix(server): distinguish proxy restart and update statuses 2026-08-24 10:52:08 +02:00
Andras Bacsai
c1219576cf feat(livewire): handle infrastructure request failures with toast
Add a local preview route and test coverage for proxy-style failures, suppressing raw Livewire error responses and showing a user-friendly toast after gestures.
2026-08-23 13:51:22 +02:00
Andras Bacsai
eb57a691ca feat(domains): add asynchronous DNS validation
Add queued DNS checks with polling, status indicators, and notifications for application and service domains. Improve volume backup target labels and names.
2026-08-21 21:22:04 +02:00
Andras Bacsai
7bbd91175f Revert "Merge branch 'next' into main"
This reverts commit 2598f3e4c8, reversing
changes made to 83f1a2e503.
2026-08-21 12:12:56 +02:00
Andras Bacsai
2598f3e4c8
Merge branch 'next' into main 2026-08-21 12:11:40 +02:00
Andras Bacsai
15072b9cf7 fix(ui): release modal scroll lock before confirmation submission
Close the confirmation modal before submitting destructive actions and reopen it when submission fails or returns an error.
2026-08-21 11:23:04 +02:00
github-actions[bot]
fc6f6fd0d4 Merge remote-tracking branch 'origin/main' into next 2026-08-20 09:10:52 +00:00
Andras Bacsai
38502e8205 fix(resources): preserve deletion when remote cleanup fails
Separate remote service cleanup from resource deletion and ensure database removal
completes despite cleanup errors. Update the disabled two-factor badge icon.
2026-08-20 11:10:14 +02:00