Commit graph

3621 commits

Author SHA1 Message Date
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
8046e5a28d fix(ui): correct shield-star reicon path geometry 2026-08-05 20:33:05 +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
ff0590137d style(ui): use solid sidebar pills instead of accent gradients
Active and nested nav rows are rounded-md with neutral selected fills
and a left accent rail. Remove purple/yellow gradient washes and update
the redesign notes to match.
2026-08-04 00:22:33 +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
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
aeeb2665cd feat(github): add GitHub App connection testing 2026-07-21 21:54:15 +02:00
Andras Bacsai
add7d6ac10 fix(ui): show only Connected for finished GitLab sources 2026-07-21 21:23:44 +02:00
Andras Bacsai
53a42530d0 fix(ui): unify incomplete source status as Setup required
Use the same warning label for unfinished GitHub and GitLab sources,
and drop the host URL from the GitLab incomplete state line.
2026-07-21 21:22:57 +02:00
Andras Bacsai
3772a55458 fix(ui): show GitHub icon next to GitHub sources
Match the GitLab source cards by rendering the shared git-icon next to
GitHub App names on the sources index.
2026-07-21 21:21:58 +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
94c3129ad1 fix(ui): show GitLab Connected badge beside title
Match application status layout by placing the Connected badge next to
the page heading, and drop the redundant Disconnect action (re-auth is
done via Connect after tokens expire or credentials are updated).
2026-07-21 21:19:48 +02:00
Andras Bacsai
9299340944 fix(ui): remove Public endpoint heading on GitLab setup 2026-07-21 21:16:10 +02:00
Andras Bacsai
1d63c1eaa2 fix(ui): move GitLab public endpoint controls into step 2
Keep OAuth app instructions first; put endpoint selection with the
credentials form so setup flows top-to-bottom without a separate section.
2026-07-21 21:13:22 +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
ef4a18833e fix(ui): put Save Credentials beside Step 2 heading
Match the page action pattern used elsewhere by placing the submit
button next to the credentials step title instead of under the form.
2026-07-21 21:02:04 +02:00
Andras Bacsai
8782079dcc fix(ui): place GitLab group name after application secret
Keep the primary setup/credentials flow ordered as name, OAuth
credentials, then group name, with self-hosted URL fields advanced-only.
2026-07-21 21:00:34 +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
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
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
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
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
913d033c75
fix(resources): clarify build server hosting restrictions (#10961) 2026-07-16 21:35:23 +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
ddbed9f8a6 Merge remote-tracking branch 'origin/next' into volume-backups-server-s3 2026-07-16 13:47:15 +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
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
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