Commit graph

1018 commits

Author SHA1 Message Date
Andras Bacsai
78fe7ee76f fix(ui): use listbox for domain redirects and key terminal canvases
Replace the service domain www-redirect native select with the shared
listbox (htmlId for stable trigger IDs) and allow dropdown overflow.
Key terminal target/session canvases for Livewire DOM branches, and
enable terminal browser debug via ?terminal-debug= plus theme logs.
2026-08-07 17:59:00 +02:00
Andras Bacsai
fff83884da fix(ui): polish create flows and terminal navigation
Open the global terminal outside Livewire navigation, clarify that
image tag and SHA256 digest are mutually exclusive, inset the GitLab
empty state, and show loading on Dockerfile create. Add regression tests.
2026-08-07 17:54:50 +02:00
Andras Bacsai
c07f66cb5e fix(ui): polish create flows for compose and GitHub repos
Use shared listbox for private-repo selection, align listbox
trigger heights with form inputs, restore compose editor spacing
and full width, and wire loading states on create/continue
actions.
2026-08-07 17:25:50 +02:00
Andras Bacsai
9c0908f0fc feat(ui): polish DB public access, backups, and nav
Gate public TCP proxy until a port is set, show loading while saving
access, and open proxy logs in process-dialog. Compact backup
execution actions, add Postgres general section anchors, and tint
resource Actions icons with warning color.
2026-08-07 17:14:43 +02:00
Andras Bacsai
7d5c9fdbe1 fix(ui): hide application domains on compose resource cards
Remove FQDN display from service resource cards in both card and list
layouts, and assert the template no longer renders resource domains.
2026-08-07 16:32:55 +02:00
Andras Bacsai
ada3ea354a feat(ui): add collapsible advanced settings and enlarge compose modal
Extract a shared forms collapsible for advanced SSH/build settings
across boarding, server creation, and application general. Support
larger modals with header actions, close the compose editor after
save via compose-save-finished, and cover the layout in tests.
2026-08-07 16:22:11 +02:00
Andras Bacsai
4926cdba0e fix(ui): mute custom theme input placeholders
Darken --theme-placeholder-color and lower placeholder opacity so
custom-theme inputs read more clearly; update AppearanceThemeTest.
2026-08-07 15:45:58 +02:00
Andras Bacsai
de4e74b4cd feat(server): fall back Sentinel URL to request host
Use the current request scheme/host when no FQDN or public IP is set,
skipping loopback hosts. Polish boarding/server create cards, optional
listbox tooltips, and cover the layout and Sentinel URL behavior in tests.
2026-08-07 15:41:39 +02:00
Andras Bacsai
28f57aafb8 fix(server): keep resources nav active and show tab loading
Use $activeMenu for Resources so Livewire updates do not clear
the sidebar highlight, and disable managed/unmanaged tabs with
spinners while containers load.
2026-08-07 15:24:41 +02:00
Andras Bacsai
8f7eb2d790 feat(server): auto-resolve Sentinel URL and polish setup UI
Ensure a Sentinel endpoint from instance FQDN/IP when enabling, use process dialogs for validation with install state, and tidy server create, boarding, metrics empty state, and log timestamps.
2026-08-07 15:21:18 +02:00
Andras Bacsai
a6f71909fd feat(ui): add Open server links on destination cards
Link primary and additional destination server cards to their server
pages via wire:navigate, and cover the markup in a feature test.
2026-08-07 14:43:04 +02:00
Andras Bacsai
8ae9c03209 feat(terminal): lazy-load targets and polish theme UI
Defer container loading with wire:init and a containersLoaded gate,
add autoStart/starting session state, extract a shared theme selector,
and restyle terminal headers, pickers, and fullscreen chrome. Cover the
new packaging and header behavior in feature tests.
2026-08-07 14:14:26 +02:00
Andras Bacsai
7c6d00c8de fix(ui): cap helper popup width and share destination status
Limit helper info popups to 320px with normal text wrapping so
content stacks vertically. Use the shared status-summary on the
application destination card instead of custom status badges.
2026-08-07 13:02:54 +02:00
Andras Bacsai
4539d1442e feat(ui): show S3 backup status and move domain action
Eager-load S3 on volume backup lists and add an S3 status column with
Configured/Unavailable/Not set badges. Surface Local vs S3 on the
persistent storages backup column. Move service resource domain links
to a globe action in the card footer, and update related tests and grid CSS.
2026-08-07 12:49:25 +02:00
Andras Bacsai
d68b198d53 feat(ui): toggle Server Timing HUD and link missing env badge
Add a local-only command palette action to show/hide the Server Timing
HUD via localStorage and a visibility event. Make the service heading
"Required variables missing" badge link to environment variables, with
tests covering both behaviors.
2026-08-07 12:35:49 +02:00
Andras Bacsai
fd6dbd5863 feat(service): warn when required environment variables are missing
Surface unset required service env vars in the configuration checker
popup and sidebar, refresh on env updates, and keep the env table
horizontally scrollable with correct managed/hardcoded pagination order.
2026-08-07 12:24:09 +02:00
Andras Bacsai
64d73b6922 fix(ui): keep helper popups in visual viewport on mobile
Position helper info popups with visualViewport bounds and
max size so they stay on screen. Ignore helper triggers in the
global icon tooltip handler via data-icon-tooltip-ignore.
2026-08-06 23:38:11 +02:00
Andras Bacsai
39197d0357 fix(ui): keep deployment history columns scrollable on mobile
Replace responsive column-hiding with horizontal scroll and a fixed
min-width grid so Status, Source, Commit, Started, Duration, and Server
stay available on small screens. Also let logs-viewer actions grow in
the primary toolbar so the status badge remains usable.
2026-08-06 21:52:56 +02:00
Andras Bacsai
e4fa2b6964 fix(ui): polish mobile layouts, error pages, and volume backups
Keep error pages full-viewport, lift the unsaved bar above the
mobile keyboard, make status/heading layouts stack cleanly on small
screens, route service DB backups to volume-backups, and tighten
volume backup grid/forms. Cover with feature tests.
2026-08-06 21:29:26 +02:00
Andras Bacsai
262ad8981a feat(ui): unify status summaries, tooltips, and resource headings
Add shared status-summary and icon-tooltip components and wire them into
application, service, and database headings, breadcrumbs, and previews.
Badge production and PR domain links, prefer helper popups below the
trigger, keep full wire targets for button loading, and cover the UI
with feature tests.
2026-08-06 18:15:58 +02:00
Andras Bacsai
6b41899d5b feat(ui): add custom theme color and polish light-mode theming
Support a custom accent theme across nav, terminal, scrollbars, and loaders.
Improve light-mode tokens, helper popup placement, and theme persistence
(including purple→custom migration). Cover with appearance and scrollbar tests.
2026-08-06 16:59:41 +02:00
Andras Bacsai
2a5197fb30 feat(ui): add shared table controls and multi-select filters
Introduce x-table toolbar/search/filter/sort/loading components and
multi-select deployment history filters with OR within groups and AND
across groups. Add live database/service status for breadcrumbs, shared
variables layout controls, logs viewer toolbar polish, and infrastructure
list filter consistency. Document patterns in UI_REDESIGN.md and cover
with feature tests.
2026-08-06 15:37:30 +02:00
Andras Bacsai
66b202adfe feat(ui): restyle public access domains summary
Show configured domain count in a bordered card with helper copy and a
Manage link, and update the feature test assertions to match.
2026-08-06 14:30:06 +02:00
Andras Bacsai
0be13113d1 refactor(application): extract status and internal access components
Move internal hostname loading and breadcrumb status into dedicated
Livewire components with live refresh. Merge public/internal access
into one Access section, bind Enter to save on the unsaved bar, and
drop x-teleport wrappers from popup and global search.
2026-08-06 14:29:25 +02:00
Andras Bacsai
a6ab360ac2 fix(ui): gate copy button on clipboard API support
Only show the copy control when isSecureContext and clipboard.writeText
are available, and style the empty internal hostname state as a readonly
input to match adjacent fields.
2026-08-06 13:58:33 +02:00
Andras Bacsai
9fd2a21f24 fix(domains): close edit modal after save and drop Lima seeds
Dispatch edit-domain-saved so Alpine closes the domain edit modal,
wire Save to updateDomain, and force white active log toolbar text in
dark mode. Seed railpack examples on the local Docker destination only
and remove Lima servers, environments, and V5DevLimaSeeder.
2026-08-06 13:45:19 +02:00
Andras Bacsai
bb83c1e3be feat(ui): polish domains UX and dark-mode loading accents
Group service domain tables with inline redirect controls, live-save
redirects without full refreshes, and only auto-pair www hosts when a
www redirect is active. Align helper tooltips, server-timing HUD, and
loading spinners with dark-theme accents; default theme-color to dark.
2026-08-06 13:18:46 +02:00
Andras Bacsai
232b999cc9 fix(ui): improve tooltip a11y and settings select layout
Make button and helper tooltips keyboard-focusable with ARIA roles,
close helper popups on outside pointer/focus leave, reserve select
chevron padding, rotate DNS chevron when open, and re-key the service
domain list after row changes.
2026-08-06 08:21:02 +02:00
Andras Bacsai
4f966e3759 fix(ui): normalize service logos and fix template icon fallbacks
Map svg/ logo paths to public svgs/, fall back when files are missing,
and tighten hardcoded database logo viewBoxes on the new-resource select page.
2026-08-05 23:31:27 +02:00
Andras Bacsai
bdb367555d feat(ui): unify brand accents and polish shared controls
Standardize highlighted buttons, selected controls, and loading
indicators on coollabs accent colors; improve light-mode log toolbar
styling; enhance small popups with compact/icon modes; and align
navbars, helpers, and related layouts with matching tests.
2026-08-05 22:34:56 +02:00
Andras Bacsai
8e57a9ab6b feat(ui): align auth pages to shared shell and truncate team names
Move email verification and team invitation into x-auth.shell with
shared guidance/alert patterns. Truncate long team names in the mobile
header switcher so actions stay visible. Cover both with markup tests.
2026-08-05 21:35:13 +02:00
Andras Bacsai
4d35c63d89 feat(ui): show internal hostname and densify config UI
Add an application Internal access section that loads the running
container hostname (skipped for Compose apps), densify configuration
diff and popup-small defaults, dock the server-timing HUD into the
mobile top bar, restyle the 2FA challenge with the auth shell, and
enforce 16px mobile form fonts to prevent iOS zoom.
2026-08-05 21:24:25 +02:00
Andras Bacsai
cd62012ff8 fix(ui): reverse collapsed sidebar footer and polish server filter
Use flex-col-reverse when the sidebar is collapsed, apply the shared
input focus class on the server filter field, and mark the selected
server with a check-circle icon. Update navbar layout tests.
2026-08-05 20:28:20 +02:00
Andras Bacsai
ec165412c3 feat(ui): dock resource actions in top bar, user menu in sidebar
Teleport application/database/service heading actions into a fixed
#resource-action-hud-slot so they no longer overlay page content.
Render the account menu in the sidebar footer (with collapse-aware
layout) instead of the header, and drop the project card hover arrow.
2026-08-05 20:17:21 +02:00
Andras Bacsai
85613b01ba feat(ui): expand server sidebar and extract status summary
Move proxy, sentinel, resources, and terminal into the server sidebar
with nested routes and icons; extract navbar status into a shared
status-summary component; add full-width service links and compact
loading support.
2026-08-05 19:54:48 +02:00
Andras Bacsai
d6db943453 feat(ui): OS-aware search shortcuts and mobile settings titles
Show ⌘K or Ctrl+K by platform in the sidebar and command palette.
Add mobile-only section headers and descriptions on settings layouts.
2026-08-05 18:26:24 +02:00
Andras Bacsai
5de6f97256 feat(ui): unify resource nav sidebars and polish project layouts
Extract application/database/service configuration sidebars and
unified headings; improve clone-to-environment, embedded deployments,
storage actions, OAuth icons, terminal, and shared form components.
2026-08-05 17:56:59 +02:00
Andras Bacsai
2291c3fa1c feat(ui): unify team, security, and notification settings layouts
Extract shared settings-layout components and a dedicated team
danger-zone page. Enable modal editing for security resources,
polish OAuth/API-token controls, and align notification and
service configuration UI with the new navigation patterns.
2026-08-05 16:24:31 +02:00
Andras Bacsai
5842d77b81 feat(volume-backups): add service backup UI and polish layouts
Add dedicated service volume-backup Livewire pages and routes, wire
shared storage backups for services, and pass S3 trusted hosts into
MinIO resolve options. Also refine breadcrumbs, sticky sidebars,
destination/GitHub layouts, resource filters, and login recovery link.
2026-08-05 15:15:50 +02:00
Andras Bacsai
0312cc8ffb feat(ui): polish email modal, search loading, and volume tables
Move profile email change into a modal with Alpine focus/close handling,
show a loading overlay during command-palette navigation, and adjust
volumes/config-diff grids plus related service/storage UI. Cover with
feature tests for search, profile, storage, and domains.
2026-08-05 14:07:19 +02:00
Andras Bacsai
a7a06aa6c8 feat(ui): polish domains, storage, env vars and resource nav
Improve project resource UIs: sort domains by DNS failure, stop re-adding www pairs on refresh, lazy-load storage tabs with counts, tighten env-var tables, keep application tabs active across Livewire polls, unify database type labels, and update related CSS/JS and tests.
2026-08-05 13:50:11 +02:00
Andras Bacsai
dbc6f5e08c fix(realtime): force-WS option and polish connection popup UI
Add PUSHER_FORCE_WS so Echo/Pusher can prefer plain WebSocket
transports, redesign the real-time connection warning popup, and
give copy-button inputs durable right padding in settings forms.
2026-08-04 19:36:36 +02:00
Andras Bacsai
1bb54c0ca1 feat(ui): scrollable resource tabs and railpack default
Add a shared resource-heading-tabs scroller with overflow chevrons,
wire it into resource/server navbars, keep links menus outside overflow,
and default new git apps to Railpack instead of Nixpacks.
2026-08-03 23:55:34 +02:00
Andras Bacsai
8ae56587d5
feat(ui): Shadow UI redesign, domain management, and DNS autoconfigure (#11119)
Co-authored-by: ShadowArcanist <162910371+ShadowArcanist@users.noreply.github.com>
2026-08-03 23:11:54 +02:00
Andras Bacsai
0b843bb07c
fix(compose): normalize service-name keys for domains and env vars (#11040) 2026-08-03 23:08:56 +02:00
Andras Bacsai
7b18777f06
feat(mcp): add resource diagnostics and deployment controls (#11000) 2026-08-03 23:08:11 +02:00
Andras Bacsai
5b370713c3 fix(sources): prevent 500 when deleting GitLab/GitHub apps
After delete, Livewire still re-renders the source change view (modal
$refresh / morph). Policy @can checks then call isAdminOfTeam() with a
null team_id and throw a TypeError (HTTP 500) before the redirect.

Guard null team_id in GitlabAppPolicy and GithubAppPolicy, clear the
Livewire model after delete, and skip @can when the model is gone.
2026-08-01 18:34:38 +02:00
Andras Bacsai
e560bdf9e0
fix(api): secure proxy config, clone volumes, and rollback tags (#11003) 2026-07-22 14:52:11 +02:00
Andras Bacsai
3a863378b1 fix(gitlab): hide source secrets from unauthorized users
Only persist the system-wide setting during instant saves, preventing
unvalidated source details from being stored.
2026-07-21 22:11:25 +02:00
Andras Bacsai
aeeb2665cd feat(github): add GitHub App connection testing 2026-07-21 21:54:15 +02:00
Andras Bacsai
b2fed043c5 feat(api): add GitLab Apps CRUD endpoints
There was no API for creating GitLab sources. Add /api/v1/gitlab-apps
list/create/update/delete with OpenAPI docs, sensitive-field redaction,
and feature coverage mirroring the GitHub Apps API.
2026-07-21 21:35:59 +02:00
Andras Bacsai
43919ef4e0 fix(security): encrypt GitLab webhook token and mask input
Webhook secret was stored and shown as plaintext. Use a password field,
encrypt at rest (with legacy plaintext read support), and look up tokens
via findByWebhookToken so encrypted values still authenticate webhooks.
2026-07-21 21:21:04 +02:00
Andras Bacsai
eaa0b0156d feat(gitlab): add custom public endpoint for OAuth redirect
Match the GitHub App endpoint picker so self-hosted / tunnel setups can
select FQDN, IP, app URL, or a custom base. Redirect URI is derived as
{base}/webhooks/source/gitlab/redirect and persisted for token exchange.
2026-07-21 21:11:20 +02:00
Andras Bacsai
e962b81c4e fix(gitlab): reload application secret after save
The secret was always stored encrypted, but the setup form wiped the
input on every load. Load it back for admins (GitHub App parity) so a
reload no longer looks like a failed save.
2026-07-21 21:07:16 +02:00
Andras Bacsai
2450a32d6c fix(ui): rename GitLab setup submit button to Save 2026-07-21 21:02:41 +02:00
Andras Bacsai
fda8e91396 fix(ui): simplify GitLab source setup view
Use the red incomplete-setup alert like GitHub, keep name + OAuth
credentials front-and-center, and tuck GitLab URL / API / SSH / system
wide options into an Advanced accordion for self-hosted users.
2026-07-21 20:59:09 +02:00
Andras Bacsai
418287d511 fix(ui): align GitLab App create modal with GitHub
Match the GitHub create modal layout: intro copy, name/group row,
system-wide warning, self-hosted accordion (URL/API/SSH), and a
bottom Continue button instead of a duplicate header Save.
2026-07-21 20:54:59 +02:00
Andras Bacsai
6f557cf17f fix(security): enforce GitLab App authorization parity with GitHub
GitlabAppPolicy previously allowed any authenticated user to update,
delete, and create GitLab sources. Align it with GithubAppPolicy, require
Application create authorization on the private-repo wizard, and reject
OAuth callbacks from non-admins so members cannot escalate privileges.
2026-07-20 23:21:40 +02:00
Mike Chong
a26091de0a feat: self-hosted GitLab Apps OAuth integration
Adds self-hosted GitLab OAuth sources so Coolify can connect to a self-managed GitLab instance, list private repositories, clone over an OAuth token, and deploy (the GitLab counterpart to GitHub Apps).

Hardening: authenticated, one-time team-bound OAuth callback state; token redaction in deploy logs; custom host port/path kept in clone and ls-remote URLs; submodule OAuth auth; system-wide source selection. Covered by unit and feature tests.

cosigned by OpenAI Codex at M1 Max
2026-07-20 23:21:40 +02:00
Andras Bacsai
ee36124300 Merge remote-tracking branch 'origin/next' into v5-parallel-inertia-react 2026-07-20 12:09:17 +02:00
Andras Bacsai
bf72fd5d88 refactor(backups): centralize storage deletion guard 2026-07-19 23:20:46 +02:00
Andras Bacsai
72a0a57f0e fix(backups): enforce authorization and safe retention
- Gate volume backup retention and S3 controls by update permission
- Preserve backup records when S3 deletion fails
- Share SFTP download streaming with consistent missing-file handling
- Handle schedule creation errors and link service database backups
2026-07-19 23:15:55 +02:00
Andras Bacsai
994eee8377 fix(backups): retain volume backups without server 2026-07-19 22:35:33 +02:00
Andras Bacsai
b97a97e955 Merge remote-tracking branch 'origin/next' into volume-backups-server-s3 2026-07-19 21:45:26 +02:00
Andras Bacsai
32f9b48406 fix(v5): defer production runtime activation
Remove Flux token provisioning and container role handling from production.
Restore private server IP support and document the activation checklist.
2026-07-19 16:47:29 +02:00
Andras Bacsai
d0247d3b09 feat(v5): gate V5 to development environments only
Introduce V5Feature and config so V5 routes, jobs, commands, morph maps,
and model queries run only when enabled. Move V5 migrations to
migrations-v5 (loaded only when enabled), remove Flux from production
Docker/install paths, and add isolation tests.
2026-07-19 11:44:12 +02:00
Andras Bacsai
1cb1d028de Merge remote-tracking branch 'origin/next' into resolve-vite-package-conflicts 2026-07-19 11:42:20 +02:00
Andras Bacsai
0633b543ee feat(api): require POST for state-changing endpoints
Make start/stop/restart, deploy, enable/disable, and server validate
POST-only, with GET returning 405. Server validate accepts optional
install and uses ValidateAndInstallServerJob. Update OpenAPI and tests.
2026-07-19 11:42:04 +02:00
Andras Bacsai
662633399f Merge remote-tracking branch 'origin/next' into volume-backups-server-s3 2026-07-18 16:07:26 +02:00
Andras Bacsai
ae32ab5d7b Merge remote-tracking branch 'origin/next' into v5-parallel-inertia-react 2026-07-18 15:57:26 +02:00
Andras Bacsai
a4ab69df56 feat(v5): authorize creates, deep-link selection, list apps in v4
Restrict V5 application and resource-connection creation to team admins.
Resolve project, environment, and application from query params and keep
session selection in sync. Surface V5 apps on the v4 resource index and
count them for project/environment emptiness. Create the flux data dir
on install and upgrade.
2026-07-18 15:55:47 +02:00
Andras Bacsai
28f8867567 feat(api): add volume backup schedule delete endpoints
Expose DELETE for application, database, and service storage backup
schedules (with OpenAPI docs), reject storage deletes while schedules
exist, skip retention cleanup when no limits are set, and remove S3
archives using the execution’s S3 storage.
2026-07-16 21:44:48 +02:00
Andras Bacsai
913d033c75
fix(resources): clarify build server hosting restrictions (#10961) 2026-07-16 21:35:23 +02:00
Andras Bacsai
5ce61ff1a1 Merge remote-tracking branch 'origin/next' into compose-settings-memory-crash 2026-07-16 16:10:11 +02:00
Andras Bacsai
60129c2c47 fix: measure log size before ANSI strip; harden tasks and volumes
Truncate GetLogs against raw byte length, then strip ANSI colors.
Run scheduled-task docker exec with explicit sudo docker and no_sudo
to avoid double sudo rewriting on non-root servers. Mark git-based
file volumes as files before refreshing content from the server.
2026-07-16 16:02:51 +02:00
Andras Bacsai
fab012b5c8 fix(backups): allow volume backup delete without password when 2FA off
Skip empty-password rejection so delete works when two-step confirmation is disabled; cover with a feature test.
2026-07-16 14:43:02 +02:00
Andras Bacsai
ac36a59088 fix(backups): pin S3 per volume execution and harden deletes
Store s3_storage_id on scheduled volume backup executions so retention
and recovery use the S3 that received the upload. Extract
DeleteScheduledVolumeBackup for UI and resource deletion, and isolate
database backup retention failures so cleanup errors do not fail the job.
2026-07-16 14:30:58 +02:00
Andras Bacsai
8cfa41a7d9 fix(backups): sync Backup Now with live database status
Subscribe BackupEdit to database status broadcasts and refresh the
database status so the Backup Now control updates without a full reload.
2026-07-16 14:01:34 +02:00
Andras Bacsai
ddbed9f8a6 Merge remote-tracking branch 'origin/next' into volume-backups-server-s3 2026-07-16 13:47:15 +02:00
Andras Bacsai
7d699818e8 fix: harden Vultr create, Gmail identity, and provider retries
Wrap Vultr server creation in DB transactions and delete the remote
instance when local persistence fails (API and Livewire). Scope
plus/dot email normalization to gmail.com/googlemail.com only.
Use throw:false on DigitalOcean/Vultr HTTP retries, and normalize
service log line counts via normalizeLogLines.
2026-07-16 13:42:53 +02:00
Andras Bacsai
2719d66042 feat: add ClickHouse backups and cloud ops tools
Enable scheduled ClickHouse backups across the job, API, and UI, and
guard unsupported database types via isBackupSolutionAvailable().
Convert Stripe subscription sync from a job to an action with clearer
discrepancy resolution, and add cloud:export-users plus
cloud:cleanup-unverified-users with tests.
2026-07-16 11:57:52 +02:00
Andras Bacsai
6ae1b4eba2 fix(backups): show setup prompt when no S3 storage is available 2026-07-15 20:36:23 +02:00
Andras Bacsai
91d97bfad2 fix(status): prevent health badge row height expansion 2026-07-15 20:07:51 +02:00
Andras Bacsai
e0f85de3fe fix(backups): move S3 retention settings to retention page 2026-07-15 20:00:10 +02:00
Andras Bacsai
9d04bb7e59 fix(backups): rename storage backup page heading 2026-07-15 18:17:54 +02:00
Andras Bacsai
41eee14bd3 fix(backups): redirect to executions after manual backup queueing
Queue manual database and volume backups before redirecting to their execution views, including schedules with unusable S3 storage.
2026-07-15 17:39:48 +02:00
Andras Bacsai
d7385ad0c4 feat(backups): support scheduled backups for application storage targets
Add polymorphic volume backup scheduling for persistent volumes and directories, expose schedule management via API, and reorganize backup configuration and execution views.
2026-07-15 17:34:22 +02:00
Andras Bacsai
995ec5fbb6 Merge remote-tracking branch 'origin/next' into volume-backups-server-s3 2026-07-15 16:33:51 +02:00
Andras Bacsai
4eec1ac547 fix(backups): stop containers during volume backup creation
Track and recover stopped containers across interrupted backup executions.
2026-07-15 15:59:35 +02:00
Andras Bacsai
63961e0799 feat(backups): add scheduled persistent volume backups 2026-07-15 15:47:57 +02:00
Andras Bacsai
908b5cc09d feat(api): add service database management endpoints
Add service database CRUD, logs, and lifecycle actions, and document service application operations with OpenAPI tests.
2026-07-15 12:29:58 +02:00
Andras Bacsai
4ed8e77226 Merge remote-tracking branch 'origin/next' into feat/noindex-domains 2026-07-14 14:04:47 +02:00
Andras Bacsai
54adea26c2 Merge remote-tracking branch 'origin/next' into feat/noindex-domains 2026-07-14 14:04:06 +02:00
Andras Bacsai
198e9f8fff fix(environment-variable): align settings and actions responsively 2026-07-14 14:02:34 +02:00
Andras Bacsai
59605fe7d3 fix(environment-variable): keep delete button compact 2026-07-14 13:58:15 +02:00
Andras Bacsai
bdc7e53fac Merge remote-tracking branch 'origin/next' into openid-auth-support 2026-07-14 13:55:35 +02:00
Andras Bacsai
34e6a6dd5d feat(api): add application settings to application endpoints 2026-07-14 13:44:45 +02:00
Andras Bacsai
99e255a572 fix(deployment): detect application configuration changes consistently
Expand configuration snapshots, handle defaults from older snapshots, and refresh configuration state after Livewire setting changes.
2026-07-14 12:54:31 +02:00
Alberto Rizzi
4afe131905 feat(domains): add per-domain noindex support
Flagged domains are served with X-Robots-Tag: noindex, nofollow via
Traefik and Caddy routing labels, so an auto-generated technical domain
can be excluded from indexing while the production domain on the same
resource stays indexable.
2026-07-12 13:59:09 +02:00
Andras Bacsai
c8a332a3bc fix(servers): isolate cloud status checks from SSH checks
Track provider state independently, skip SSH work for placeholder IPs, and clean up failed cloud server provisioning.
2026-07-11 22:52:10 +02:00
Andras Bacsai
e01b8a057e fix(servers): retain cloud instances awaiting IPs
Persist DigitalOcean, Hetzner, and Vultr servers before public IP
assignment, then backfill placeholder addresses from provider state.

Treat partial Sentinel snapshots as non-authoritative and document the
destinations API with OpenAPI schemas.
2026-07-11 21:35:10 +02:00
Andras Bacsai
772093928f Merge remote-tracking branch 'origin/next' into v5-parallel-inertia-react 2026-07-11 10:06:49 +02:00
Andras Bacsai
d3fbb32c52 feat(cdn): sync release metadata through BunnyCDN
Replace the legacy sync:bunny flags with an interactive CDN sync flow for service templates and release metadata. Serve official service templates from the Coollabs CDN, update version metadata, and remove obsolete helper scripts.
2026-07-10 14:29:11 +02:00
Andras Bacsai
2a0183bfad Revert "feat(notifications): deduplicate repeated email alerts"
This reverts commit 8c1405e168.
2026-07-09 13:19:48 +02:00
Andras Bacsai
8c1405e168 feat(notifications): deduplicate repeated email alerts
Add notification-level deduplication keys and TTLs for deployment, backup,
server, container, scheduled task, SSL, token, and transactional emails.
Apply deduplication in email channels before sending rendered messages.
2026-07-08 15:23:14 +02:00
Andras Bacsai
e325f93662 Merge remote-tracking branch 'origin/next' into 10870-pr-previews-ignore 2026-07-08 15:06:16 +02:00
Andras Bacsai
f24439f9c8 test(github): cover PR previews without skip ci 2026-07-08 14:44:40 +02:00
Andras Bacsai
3f960d94c3 fix(github): skip opened PR previews with skip ci 2026-07-08 14:41:37 +02:00
Andras Bacsai
0217e2b0c0 feat(server): improve private key and cloud link flows
Add server private key generation from the dropdown, prevent deleting
private keys that are still in use, and close cloud provider link modals
after successful linking.
2026-07-08 13:35:09 +02:00
Andras Bacsai
f4f4274cee fix(github): skip PR previews from head commit flags 2026-07-08 13:31:23 +02:00
Andras Bacsai
9b8aeb4758 feat(server): add private key creation to IP server form 2026-07-08 13:05:29 +02:00
Andras Bacsai
e200d881f5 feat(security): add editable cloud credential pages
Add dedicated show/edit pages for cloud provider tokens and cloud-init
scripts, including descriptions and UUID routes.

Generate private keys directly from the index and surface cloud provider
API loading errors in server creation flows.
2026-07-08 12:58:27 +02:00
Andras Bacsai
7236cb8228 feat(server): add dedicated server creation flow 2026-07-08 12:20:56 +02:00
Andras Bacsai
c303c34cfd feat(digitalocean): add droplet provisioning support 2026-07-08 10:42:58 +02:00
Andras Bacsai
d74206f4a9 Merge remote-tracking branch 'origin/next' into feature/vultr-cloud-provider 2026-07-08 09:48:18 +02:00
Andras Bacsai
b0f0f7d8d0 feat: harden auth flows and server mobile navigation
Add normalized email identity rate limiting for registration and forgot-password requests, and refresh Sentinel status from restart broadcasts.

Rework server sidebars and navbar for mobile menus and active status visibility.
2026-07-08 09:42:52 +02:00
Andras Bacsai
6ed92cb97a fix(vultr): validate public network and token scope
Require IPv6 when public IPv4 is disabled, constrain cloud token
lookup by team and provider during deletion, and encode Vultr instance IDs
in API paths.
2026-07-07 21:39:57 +02:00
Andras Bacsai
31f904ef9f Merge remote-tracking branch 'origin/next' into feature/vultr-cloud-provider 2026-07-07 21:23:07 +02:00
Andras Bacsai
6872f63f5f fix(api): audit moved resources 2026-07-07 21:20:41 +02:00
Andras Bacsai
f244b5e25d test(api): assert target env authorization on moves 2026-07-07 21:07:50 +02:00
Andras Bacsai
676161a627 fix(api): authorize target environment moves 2026-07-07 20:56:55 +02:00
Andras Bacsai
cf63c7d154 Merge remote-tracking branch 'origin/next' into feat/api-move-resources-between-projects 2026-07-07 18:13:37 +02:00
Andras Bacsai
9f13434273 fix(docker): escape container status commands
Build container status commands with escaped container names in the
Docker helper so callers can pass raw identifiers consistently.
2026-07-07 18:00:40 +02:00
Andras Bacsai
a165e03d06 fix(service-apps): harden updates and docker commands
Escape service application lifecycle command arguments for deploy, restart, stop, and log status checks.
Validate API update payloads from JSON/form data before applying allowed fields, preserving explicit boolean and null values.
Add coverage for service application API authorization, team isolation, validation, and command escaping.
2026-07-07 15:10:24 +02:00
Andras Bacsai
95a3c453d8 Merge remote-tracking branch 'origin/next' into 9249-pr-investigation 2026-07-07 14:45:48 +02:00
Andras Bacsai
a8000ac2ad fix(hetzner): require at least one public IP protocol 2026-07-07 14:41:17 +02:00
Andras Bacsai
c9ffa0db96 Merge remote-tracking branch 'origin/next' into feat/hetzner-firewalls-and-internal-networks 2026-07-07 14:37:54 +02:00
Andras Bacsai
b939e09f12 refactor(hetzner): move advanced options into dropdown 2026-07-07 14:36:11 +02:00
Andras Bacsai
d723a52d9c fix(hetzner): secure token-backed option fetches
Authorize stored Hetzner cloud provider tokens before fetching
firewalls or networks, hide provider error details, and keep server
creation intact if backup activation fails.

Collapse advanced Hetzner server options by default while preserving
visibility when advanced values are selected.
2026-07-07 14:24:15 +02:00
Andras Bacsai
aded45acbe Merge remote-tracking branch 'origin/next' into feat/api/tag-management 2026-07-07 14:02:45 +02:00
Andras Bacsai
11b35ba3c1 feat(api): add tags to resource creation
Normalize tag names before attaching them, reject names that are too short
after sanitization, and return 404 when removing tags not attached to the
resource.

Adds a per-team unique tag-name index and migrates duplicate tags onto the
kept record before creating the constraint.
2026-07-07 13:56:33 +02:00
Andras Bacsai
2ad11fdd9a Merge remote-tracking branch 'origin/next' into feat/hetzner-firewalls-and-internal-networks 2026-07-07 13:47:51 +02:00
Andras Bacsai
c58b4fd69c Merge remote-tracking branch 'origin/next' into feature/vultr-cloud-provider 2026-07-07 13:44:37 +02:00
Andras Bacsai
ff976a134f Merge remote-tracking branch 'origin/next' into api-sensitive-data-scrubber 2026-07-07 12:56:19 +02:00
Andras Bacsai
9a2c432c79 fix(api): expose sensitive fields for privileged tokens
Privileged API tokens can read hidden resource fields in environment and
resource responses, including instance-admin team tokens with team_id 0.

Configuration hashes now include hidden environment variable values so
secret edits trigger restart detection.
2026-07-07 12:53:34 +02:00
Andras Bacsai
f617e58401 Merge remote-tracking branch 'origin/next' into feat/api/tag-management
# Conflicts:
#	app/Http/Controllers/Api/ApplicationsController.php
2026-07-07 12:49:19 +02:00
Andras Bacsai
00a3738ec7 Merge remote-tracking branch 'origin/next' into api-application-preview-deployments 2026-07-07 12:38:37 +02:00
Andras Bacsai
cf12e1d7ef feat(api): allow preview deployments on app create
Expose is_preview_deployments_enabled in the application create API
schema and validation, and skip deployment configuration column casts on
sqlite migrations.
2026-07-07 12:36:35 +02:00
Andras Bacsai
2caa5e67ff
fix(github): derive API URLs from GitHub HTML hosts (#10610) 2026-07-07 12:29:15 +02:00
Andras Bacsai
21bd8fa2bc fix(github): reject malformed app URL origins 2026-07-07 12:24:52 +02:00
Andras Bacsai
d01e3a9730
fix(parsers): populate docker_compose_domains for API-created Docker Compose apps (#9300) 2026-07-07 12:17:52 +02:00
Andras Bacsai
d657c10df3
fix(api): allow source commit build setting (#10551) 2026-07-07 12:12:32 +02:00
Andras Bacsai
6c42ca82cb
fix: only strip git_host from repository_url when git_host is github.com (#10274) 2026-07-07 12:11:45 +02:00
Andras Bacsai
2741bc1d0d test(api): cover public git repository URL storage 2026-07-07 12:10:38 +02:00
Andras Bacsai
a2fc08a7b3 Merge remote-tracking branch 'origin/next' into v5-parallel-inertia-react 2026-07-06 23:19:55 +02:00
Andras Bacsai
fbc6fd5ce5 fix(v5): rotate agent tokens every fifteen minutes 2026-07-06 22:35:17 +02:00
Andras Bacsai
51ed86fe63 feat(v5): add coold restart action
Add the V5 server endpoint and UI action to restart coold over SSH with
a fresh host token, plus Flux reconnect handling and coverage for the
new backend, browser, and canvas test suites.
2026-07-06 22:30:50 +02:00
Andras Bacsai
9db103cc77 fix(v5): preserve firewall directions when editing ports 2026-07-06 17:52:04 +02:00
Andras Bacsai
6ae45684f9 feat(v5): add server reconciliation and canvas APIs
Split V5 dashboard behavior into domain controllers and policies,
add agent token rotation/revocation, status reconciliation jobs,
ingress firewall syncing, and canvas connection APIs.

Add migrations for V5 status tracking, server capabilities, resource
connection aliases, and revoked agent tokens.
2026-07-06 17:40:37 +02:00
Andras Bacsai
b6a4c7383a
fix(env): preserve empty service variable values (#10850) 2026-07-03 20:47:18 +02:00
Andras Bacsai
1adeed2a48 fix(github): preserve custom app API URLs 2026-07-03 12:01:16 +02:00
Andras Bacsai
eddcbe819b fix(parser): populate compose domains from service env keys 2026-07-03 11:57:02 +02:00
Andras Bacsai
9b060958aa
fix(ray): remove Ray debug hooks from runtime (#10847) 2026-07-03 11:40:20 +02:00
Andras Bacsai
e551f9c176 Merge remote-tracking branch 'origin/next' into fix/docker-compose-domains-api-9211 2026-07-03 11:32:41 +02:00
Andras Bacsai
29c122b31a fix(api): return deployment UUID strings directly 2026-07-03 11:31:49 +02:00
Andras Bacsai
df854feee8 Merge remote-tracking branch 'origin/next' into v5-parallel-inertia-react 2026-07-03 10:59:49 +02:00
Andras Bacsai
a7dddccd2e Merge remote-tracking branch 'origin/next' into ghe-support-helpers 2026-07-03 10:26:58 +02:00
Andras Bacsai
b5ba40b049 Merge remote-tracking branch 'origin/next' into fix/docker-compose-domains-api-9211 2026-07-03 10:26:19 +02:00
Andras Bacsai
8ce054c10c
fix(git): use cloud install path for ghe apps (#10576) 2026-07-03 10:24:04 +02:00
Andras Bacsai
b90380f542 Merge remote-tracking branch 'origin/next' into ghe-support-helpers 2026-07-03 10:15:29 +02:00
Andras Bacsai
67693acce7
fix(parser): preserve file volume state (#10843) 2026-07-03 10:14:39 +02:00
Andras Bacsai
d73649ca15 Merge remote-tracking branch 'origin/next' into fix-ghe-app-install-url 2026-07-03 10:10:39 +02:00
Andras Bacsai
08e0d02643 Merge remote-tracking branch 'origin/next' into next 2026-07-03 10:09:50 +02:00
Andras Bacsai
4435a46f07 fix(server): hide sentinel status before validation 2026-07-03 10:08:55 +02:00
Andras Bacsai
58f6f9e05b
feat(dev): add Lima testing server fixtures (#10844) 2026-07-03 10:07:55 +02:00
Andras Bacsai
7b317c44c4 Merge remote-tracking branch 'origin/next' into v5-parallel-inertia-react 2026-07-03 10:03:39 +02:00
Andras Bacsai
c0866d4cb3 fix(auth): preserve invite login with database sessions 2026-07-03 09:38:05 +02:00
Andras Bacsai
fd5b2fec9a feat(v5): use resource uuids at boundaries 2026-07-02 21:26:41 +02:00
Andras Bacsai
c9416abec6 Merge remote-tracking branch 'origin/next' into v5-parallel-inertia-react 2026-07-02 21:25:02 +02:00
Andras Bacsai
eb56287b57 Merge remote-tracking branch 'origin/next' into 10633-invitation-link-redirect 2026-07-02 18:55:25 +02:00
Andras Bacsai
cf6f5a2678
feat(registry): add configurable docker registry url (#9017) 2026-07-02 18:52:46 +02:00
Andras Bacsai
99f60228ad fix(api): avoid lazy loading nested server secrets 2026-07-02 17:47:22 +02:00
Andras Bacsai
c6c7ec1c31 fix(security): validate application domains safely
Use shared domain validation and normalization for application, service, and
preview domains so unsafe host input is rejected consistently.

Cover command-substitution payloads in application domain tests.
2026-07-02 17:47:04 +02:00
Andras Bacsai
cc4f666ba2 Merge remote-tracking branch 'origin/next' into improve-application-url-handling 2026-07-02 17:40:31 +02:00
Andras Bacsai
954c1e369c
fix(env-vars): avoid service preview variable lookups (#10837) 2026-07-02 17:39:16 +02:00
Andras Bacsai
d5395f0500 fix(services): preserve template keys for selection 2026-07-02 17:16:40 +02:00
Andras Bacsai
bbff70c8d0 fix: improve application URL handling 2026-07-02 16:52:07 +02:00
Andras Bacsai
13172849e1 Merge remote-tracking branch 'origin/next' into api-sensitive-data-scrubber 2026-07-02 15:57:43 +02:00
Andras Bacsai
6871160623 fix(api): gate sensitive storage and GitHub fields
Expose GitHub app secrets and file storage content only when the request has sensitive read access. Hide LocalFileVolume content by default and resolve application UUIDs from route parameters.
2026-07-02 15:50:43 +02:00
Andras Bacsai
438eeefa73
feat(api): add REST endpoints for destinations (#10405) 2026-07-02 15:34:30 +02:00
Andras Bacsai
70021c8d5e fix(api): handle destination create races as conflicts 2026-07-02 15:33:01 +02:00
Andras Bacsai
88d5aff018 Merge remote-tracking branch 'origin/next' into team-level-mcp-enablement 2026-07-02 15:15:11 +02:00
Andras Bacsai
4ea69fa03a Merge remote-tracking branch 'origin/next' into openid-auth-support 2026-07-02 15:15:00 +02:00
Andras Bacsai
4ef884e1ac Merge remote-tracking branch 'origin/next' into feat/api-destinations 2026-07-02 15:14:13 +02:00
Andras Bacsai
fc32bc6b6c feat(auth): auto-join OAuth users to root team
Add an OAuth setting that provisions newly registered users as Root
team members without creating a personal team.
2026-07-02 15:13:39 +02:00
Andras Bacsai
20b5b90cf9 Merge remote-tracking branch 'origin/next' into improve-s3-storage-handling 2026-07-02 15:06:11 +02:00
Andras Bacsai
78d9244caa fix: improve s3 storage handling 2026-07-02 15:05:05 +02:00
Andras Bacsai
a06c1a7bf5 Improve storage mount path handling 2026-07-02 14:54:38 +02:00
Andras Bacsai
a121386ab4 Merge branch 'next' into improve-resource-route-handling 2026-07-02 13:25:47 +02:00
Andras Bacsai
fb2d477e48 fix: improve team resource route handling 2026-07-02 13:05:27 +02:00
Andras Bacsai
74f4d04f53 fix(backups): default S3 storage for backup schedules
Show the S3 storage selector even when S3 backups are disabled, save
storage changes immediately, and improve responsive confirmation buttons.
2026-07-02 12:47:54 +02:00
Andras Bacsai
76d429fb74 fix(sidebar): center unread badge in settings menu 2026-07-02 12:35:28 +02:00
Julien Bouquillon
77086e28af
Merge branch 'v4.x' into api-application-preview-deployments 2026-07-01 19:11:16 +02:00
Andras Bacsai
22b31f5671 fix(backups): require valid S3 storage selection
Preserve S3 backups when a single valid storage is available, require
explicit selection when multiple storages exist, and disable S3 when none
are available.

Make backup action controls responsive on narrow screens.
2026-07-01 11:14:20 +02:00
Andras Bacsai
559cdbff25 Merge remote-tracking branch 'origin/next' into v5-parallel-inertia-react 2026-06-30 21:31:25 +02:00
Andras Bacsai
78374b566a fix members smtp pw update 2026-06-30 15:29:19 +02:00
Andras Bacsai
29445bf177 fix: align resource creation permissions 2026-06-29 15:57:17 +02:00
Andras Bacsai
7d65a4b496 Merge remote-tracking branch 'origin/next' into harden-database-import-files 2026-06-29 10:35:35 +02:00
Andras Bacsai
2d63d51237 fix: harden database backup imports 2026-06-29 10:27:01 +02:00
Andras Bacsai
a630532308 fix(deploy): preserve deploy key command metadata 2026-06-29 10:17:09 +02:00
Andras Bacsai
3729b5c074 improve github webhook 2026-06-28 15:25:58 +02:00
Andras Bacsai
87d4744390 Validate environment variable keys 2026-06-25 18:19:58 +02:00
Andras Bacsai
bef94a9ce2 feat(mcp): add per-team server toggle 2026-06-25 11:42:19 +02:00
Andras Bacsai
2007d802ef feat(v5): expose corrosion and firewall diagnostics 2026-06-22 13:52:17 +02:00
Andras Bacsai
4cdd45070d Merge remote-tracking branch 'origin/next' into v5-parallel-inertia-react 2026-06-22 12:14:19 +02:00
Andras Bacsai
e3e91b7741 feat(v5): sync server status and ingress access
Add Flux agent token issuing, open and revoke Caddy ingress firewall
rules, broadcast server-scoped application status updates, and update
the dashboard to show unreachable servers as unknown.
2026-06-22 11:56:26 +02:00
Andras Bacsai
75cbcad240 feat(v5): show server stale status and coold logs 2026-06-22 11:14:13 +02:00
Andras Bacsai
0914052b56 fix(v5): rename nginx action to deploy 2026-06-21 22:55:13 +02:00
Andras Bacsai
e543d2b376 feat(v5): deploy nginx applications through Flux
Create nginx containers through Flux image and container primitives instead of SSH, and allow selecting a custom nginx image from the dashboard.
2026-06-21 22:39:16 +02:00
Andras Bacsai
ec3e5dc9eb feat(dev): include firewall capabilities in flux defaults 2026-06-21 21:47:35 +02:00
Andras Bacsai
4061a3844b feat(v5): sync resource firewall rules via Flux 2026-06-21 21:16:08 +02:00
Andras Bacsai
22e3d6960e feat(v5): add app configuration inspector
Add a sheet-based dashboard inspector with overview, networking, and
advanced tabs for applications.

Switch Caddy proxy actions to the generic Flux ingress apply and stop
payloads.
2026-06-21 18:58:01 +02:00
Andras Bacsai
a42785189e fix(dev): cache bust mutable coold nightly assets 2026-06-21 18:15:47 +02:00
Andras Bacsai
6069ac0669 fix(dev): rely on default flux dev capabilities 2026-06-21 17:08:09 +02:00
Andras Bacsai
4938b65f20 refactor(v5): defer builder bootstrap support
Remove active builder flags from dev Lima sync, bootstrap commands,
and server capabilities while documenting the v5 control-plane and
host-agent boundaries.
2026-06-21 16:54:02 +02:00
Andras Bacsai
068a2979fd feat(v5): use bridged Lima hosts for coold dev
Add v5 architecture docs and update dev bootstrap, seeding, and tests to use bridged Lima .local hosts with a container-accessible SSH key.
2026-06-21 15:13:59 +02:00
Andras Bacsai
1c091e9e36 feat(v5): add dashboard ingress routing controls
Add V5 dashboard controls and validation for enabling server-backed app ingress, track generic ingress type/status fields, and improve Flux dispatch timeout/error handling.
2026-06-20 23:10:48 +02:00
Andras Bacsai
ad0bcc8a4a feat(v5): add application ingress routing 2026-06-20 15:08:45 +02:00
Andras Bacsai
86156b6f7a feat(v5): add mesh app canvas 2026-06-20 09:23:16 +02:00
Andras Bacsai
155b07378c refactor(v5): remove CLI-specific fields and labels from clusters UI
Remove server count badge, last run status, and CLI summary from the
cluster detail panel. Rename "CLI state" to "Cluster state" and update
the add-server dialog to drop "CLI-generated" wording. Add test
assertions covering all removed and renamed elements.
2026-06-19 13:53:10 +02:00
Andras Bacsai
24bbfe07c6 feat(v5): add server bootstrap job with realtime cluster broadcasting
- Add V5BootstrapServerJob: SSH into new servers, install coold/WireGuard,
  track bootstrap progress via last_bootstrap_action/status/output fields
- Add V5ClusterUpdated event: broadcasts full cluster+servers payload to
  team private channel on bootstrap state changes
- Add V5RealtimeTestEvent + RealtimeTest page for WebSocket connectivity testing
- Consolidate 3 dropped migrations into base cluster/server migrations:
  WireGuard config, builder CPU quota, status check fields, uuid
- Auto-generate uuid on V5Model create via Schema::hasColumn guard
- Expose currentTeam.id in Inertia shared props
- Add showCluster, realtimeTest, broadcastRealtimeTest controller endpoints
- Add dropdown-menu UI component
2026-06-19 11:44:42 +02:00
Andras Bacsai
00c5a630cf fix(subscription): clamp dynamic quantity to MIN_SERVER_LIMIT on update 2026-06-19 08:27:41 +02:00
Andras Bacsai
3ae87334bd feat(v5): add WireGuard and coold/corrosion config to clusters/servers
Add WireGuard networking fields (interface, management pool, listen port),
container network pool, coold/corrosion versioning, and builder CPU quota
to clusters and servers via new migrations and model fillables.

Expose full cluster and server CRUD on the Clusters page with private key
selection, pending state tracking, and new form primitives (Field, Input,
Textarea). Add server status check fields and a lima test VM config for
development.
2026-06-19 07:23:45 +02:00
Andras Bacsai
5d57b131ff refactor(v5): rename Home to Dashboard and add coollabs brand styles
Rename HomeController, Home page, and V5HomeProps type to Dashboard
equivalents. Update route name from 'home' to 'dashboard'.

Add coollabs brand color tokens to CSS theme and a 'coolify' button
variant using those colors. Add Sheet UI component for slide-over panels.
Update navbar with active-route detection and Sheet-based mobile drawer.
Switch cluster action buttons to use the new 'coolify' variant.
2026-06-16 22:23:50 +02:00
Andras Bacsai
4c41817cda feat(v5): move clusters to dedicated page and remove CLI services
Extract clusters out of Home into a standalone Clusters page with its
own controller action and route. Delete CoolifyCliBootstrap and
CoolifyCliVersion services along with the coolifyCliVersion endpoint.

Add Dialog component, warning CSS token, Inertia progress bar, and a
Clusters nav link. Extend V5Server type with ssh/builder/key fields.
2026-06-16 20:52:38 +02:00
Andras Bacsai
790bd2e28c refactor(v5): migrate frontend from JSX to TypeScript
Convert all v5 JS/JSX source files to TS/TSX, add tsconfig.json,
install typescript and @types/react* dev deps, add typecheck npm
script, create types.ts with shared prop types, and update Tailwind
CSS source glob and shadcn components.json to include TS extensions.
2026-06-16 20:15:36 +02:00
Andras Bacsai
859a701669 refactor(v5): migrate UI primitives from radix-ui to @base-ui/react 2026-06-16 19:49:36 +02:00
Andras Bacsai
6b8f50a90e refactor(v5): extract csrfToken into shared lib/csrf.js module 2026-06-16 19:42:26 +02:00
Andras Bacsai
c178dfdb39 feat(v5): add shadcn/ui with button, select, separator, and navbar 2026-06-16 19:38:21 +02:00
Andras Bacsai
295addb6b0 refactor(dev): replace v5:sync-dev-lima-servers with V5DevLimaSeeder
Switch Lima VM dev-environment sync from a custom Artisan command to a
database seeder. The seeder creates/updates the Development-Lima cluster
and its two servers idempotently, reading ssh_user from the
COOLIFY_CLI_SSH_USER env var (exposed via config('coold.dev_ssh_user')).

dev.sh now passes COOLIFY_CLI_SSH_USER and runs db:seed instead of
building per-server --server flag arrays.
2026-06-16 17:10:40 +02:00
Andras Bacsai
9566b259b2 refactor(v5): remove Project model and consolidate v5 migrations
Drop v5_projects table, Project model, and related alter-table
migrations; fold cluster_id and nullable private_key_id into the
initial v5_servers migration; rename migration files to v5_ prefix;
strip cooldServers/privateKeys/teams props from HomeController and
Home page.
2026-06-16 16:57:52 +02:00
Andras Bacsai
5c23b9aaa5 feat(dev): add example nginx connectivity commands
Add ping and firewall up/down helpers for example nginx dev VMs.
Remove the v5 home ready banner and coolify version controls, and render Flux status as a compact summary.
2026-06-16 16:47:10 +02:00
Andras Bacsai
1e038fecae feat(v5): add server clusters and CLI bootstrap
Create v5 cluster/server persistence, expose them on the home page,
and add a bootstrap endpoint backed by the coolify CLI. Add dev Lima
server sync support and update the dev script firewall flow.
2026-06-16 15:45:16 +02:00
Andras Bacsai
c884aaaeea feat(v5): add coolify CLI version check 2026-06-16 13:57:42 +02:00
Andras Bacsai
1b1b0726a2 feat(dev): add coold VM dev workflow
Add scripts and Lima config for managing local coold endpoint VMs,
mint Flux dev host JWTs, expose coold host details on the V5 home
page, and document the local development workflow.
2026-06-16 11:39:36 +02:00
Andras Bacsai
762daf83a1 feat(container): support comma-separated roles
Allow s6 services to start for specific roles like horizon,
scheduler, nightwatch, and flux while keeping all as the default.
2026-06-15 23:36:47 +02:00
Andras Bacsai
dcd325dc44 feat(v5): add Inertia app shell with Flux health
Adds v5 routing, middleware, home page rendering, team context sharing,
project model/table support, and Flux health reporting. Installs Flux in
container builds with role-aware s6 services and documents runtime roles.
2026-06-15 23:09:49 +02:00
Andras Bacsai
9e021c4037 fix(api): enforce destination access and cleanup networks
Require admin team membership for destination mutations, return invalid-token
responses for tokenless requests, and remove standalone Docker networks when
deleting destinations.
2026-06-15 17:15:56 +02:00
Andras Bacsai
9665aa292c fix(api): block invalid destination types and service deletions 2026-06-15 17:03:01 +02:00
Andras Bacsai
c656892738 fix(auth): store OIDC raw claims as arrays
Handle missing provider payloads by persisting an empty array and add
coverage for multi-audience OIDC azp validation.
2026-06-15 13:33:23 +02:00
Andras Bacsai
f5ecdfa4ce Merge remote-tracking branch 'origin/next' into api-sensitive-data-scrubber 2026-06-15 13:29:25 +02:00
Andras Bacsai
96ea892748 fix(sidebar): remove theme switcher from sidebar navbar 2026-06-15 13:25:31 +02:00
Andras Bacsai
0f05138608 Merge remote-tracking branch 'origin/next' into openid-auth-support 2026-06-15 13:23:04 +02:00
Andras Bacsai
58af19b378
fix(auth): enforce policies across API and Livewire (#8628) 2026-06-15 13:18:29 +02:00
Andras Bacsai
dfd4d7e802 feat(resource-details): make copy fields visible and accessible 2026-06-15 13:17:53 +02:00
Andras Bacsai
371eb1e38c fix(upgrade): hide upgrade labels in collapsed sidebar 2026-06-15 12:56:19 +02:00
Andras Bacsai
22d05c78aa Merge remote-tracking branch 'origin/next' into ghe-support-helpers 2026-06-15 12:55:34 +02:00
Andras Bacsai
507a8afa20 fix(github): sync app slug before generating installation path 2026-06-15 12:55:29 +02:00
Andras Bacsai
b9bda7301a Merge remote-tracking branch 'origin/next' into fix-ghe-app-install-url 2026-06-15 12:55:08 +02:00
Andras Bacsai
8d92059dd6 fix(auth): refresh OIDC JWKS and block unverified account linking 2026-06-15 12:49:51 +02:00