Commit Graph
16856 Commits
Author SHA1 Message Date
Aditya Tripathi e050ea339c refactor(files): Monaco editor, single-stat listing, kebab actions, hardening
Address review feedback and UX issues on the file browser.

Editor
- Replace the TipTap editor with Monaco, reusing the self-hosted assets. The
  editor is kept mounted (wire:ignore) and preloaded on page init, and receives
  content + language via the load-file-editor event, applying the language with
  setModelLanguage so highlighting is correct without recreating the instance.
- Keep the Monaco instance on the DOM node, not in Alpine reactive state, so its
  object graph is never proxied (that hung and crashed the tab).
- Drop @tiptap/*, lowlight and highlight.js; remove the TipTap CSS and JS.
- Broaden guessLanguage to Monaco ids and common extension-less/dotfiles.

Listing / read (perf)
- List a directory in one stat call instead of a per-entry loop (embedding a
  real tab, since stat -c does not expand \t), and surface owner/group columns.
- Fold the read size-cap, binary probe and base64 into one SSH round trip.

Actions
- Collapse the per-row Edit/Download/Rename/Delete buttons into a 3-dots menu.
- Fix actions silently failing on names with apostrophes: the entry name now
  lives in the row's Alpine scope instead of passing @js() through a component
  attribute (which double-encodes the quotes).

Hardening
- Lock client-controllable state (container/type/resource) with #[Locked].
- Re-check guard() in open/goTo/refresh; sanitize upload filenames; clean up the
  download temp file and report errors; route >96KiB writes through docker cp.

Tests updated and extended (32 passing). Frontend rebuild (npm run build) is
still needed only to drop TipTap from the bundle; the editor works without it.
2026-08-27 16:31:39 +00:00
Aditya Tripathi f93d73cfc1 fix(files): harden file browser against tampering and large writes
- Escape dynamic file/path names with @js() in Livewire click handlers
  instead of interpolating raw strings, and lock resource/container
  properties to prevent client-side property tampering
- Route writes over ~96 KiB through docker cp instead of an inline
  base64 shell argument, which was capped by MAX_ARG_STRLEN
- Treat empty files as editable text instead of misclassifying them
  as binary
2026-08-27 14:34:12 +00:00
Aditya Tripathi 6366c1e8e3 fix(files): use matching header buttons for upload and refresh 2026-08-26 20:08:05 +00:00
Aditya Tripathi b22cb987fd feat(files): IDE-style editor with line-number gutter, active line, and Ln/Col status bar 2026-08-26 18:12:54 +00:00
Aditya Tripathi 90b31be258 fix(files): recreate TipTap editor per open to avoid mismatched-transaction error 2026-08-26 18:04:54 +00:00
Aditya Tripathi b218792606 fix(files): load editor content via dispatched event; correct TipTap v3 setContent signature 2026-08-26 17:51:07 +00:00
Aditya Tripathi d70e548f85 fix(files): adopt standard settings-workspace layout; nav shown by default with animated toggle 2026-08-26 17:33:27 +00:00
Aditya Tripathi d00e1c013e feat(files): toggle to reveal the full resource sidebar on demand 2026-08-26 17:24:30 +00:00
Aditya Tripathi 4f4287f9e0 feat(files): new-file action, permissions + chmod, TipTap syntax-highlight editor, breadcrumb + grid fixes 2026-08-26 16:40:47 +00:00
Aditya Tripathi cf4ee8b407 fix(files): render file list as design-system grid table, compact icon actions 2026-08-26 14:28:52 +00:00
Aditya Tripathi e64bd317d2 fix(files): use formatBytes helper instead of intl-dependent Number::fileSize 2026-08-26 14:22:21 +00:00
Aditya Tripathi 4e12ecad9e feat(files): add reicon download glyph and use it on the download action 2026-08-26 14:08:36 +00:00
Aditya Tripathi 1df552366e test(files): add file browser browser smoke test 2026-08-26 14:04:55 +00:00
Aditya Tripathi f5cb0091d9 feat(files): add Files tab and routes for applications, services and databases 2026-08-26 13:56:00 +00:00
Aditya Tripathi 5e0349a93e feat(files): design-system file browser view 2026-08-26 13:52:04 +00:00
Aditya Tripathi d155016ac2 feat(files): add mkdir, rename, delete, edit, upload and download actions 2026-08-26 13:49:46 +00:00
Aditya Tripathi c2ea86b54b feat(files): add FileBrowser component with auth, mount and navigation 2026-08-26 13:48:40 +00:00
Aditya Tripathi 1e47cbfac2 feat(files): add upload and download byte transfer 2026-08-26 13:39:34 +00:00
Aditya Tripathi d6a39f1a80 feat(files): add write, mkdir, rename and delete operations 2026-08-26 13:38:56 +00:00
Aditya Tripathi b68462734f feat(files): read files with binary and size guards 2026-08-26 13:38:29 +00:00
Aditya Tripathi a8f143cf60 feat(files): execute directory listing and default-root resolution over SSH 2026-08-26 13:36:46 +00:00
Aditya Tripathi c37000eaeb feat(files): add container listing command builder and parser 2026-08-26 13:35:42 +00:00
Aditya Tripathi 41a6dc9e0b feat(files): add FileEntry DTO with folders-first ordering 2026-08-26 13:35:08 +00:00
🏔️ PeakandGitHub afe2cd4a8c fix(notifications): restore missing toggleEvent on Email settings component (#11512) 2026-08-26 14:50:16 +02:00
peaklabs-dev 58d074721c Merge remote-tracking branch 'origin/main' into next 2026-08-24 19:47:51 +02:00
Erick Licona MoralesandGitHub 2b5fd8e2ec fix(api): accept cuid for private_key_uuid on GitHub App update (#11468) 2026-08-24 19:44:56 +02:00
🏔️ PeakandGitHub b48c3f97ab feat(ui): split action button into primary and secondary actions (#11409) 2026-08-24 19:41:25 +02:00
peaklabs-dev 41389a654f refactor(ui): cleanup css 2026-08-24 19:37:02 +02:00
Andras BacsaiandGitHub 071ab976c2 feat(audit): add team activity tracking and audit log (#11462) 2026-08-24 18:03:15 +02:00
Andras BacsaiandGitHub d9f0820a6f fix(database): restore custom PostgreSQL backup archives (#11481) 2026-08-24 16:27:45 +02:00
Andras Bacsai 3c72405efa fix(audit): restore horizontal scrolling for mobile event tables 2026-08-24 12:31:44 +02:00
Andras Bacsai 4e40a2c05b fix(audit): validate event filters and preserve suppression state
Validate audit event API pagination and filters, serialize paginated responses, and restore the prior audit-logging state after nested suppression callbacks.
2026-08-24 11:03:24 +02:00
Andras BacsaiandGitHub 5f5f305569 fix(deployments): honor selected Docker image rollback tag (#11480) 2026-08-24 10:57:22 +02:00
Andras Bacsai 981163973b fix(server): distinguish proxy restart and update statuses 2026-08-24 10:52:08 +02:00
Andras Bacsai 2289de4489 fix(audit): prevent duplicate API update events
Suppress model audit logging during API application saves while preserving the explicit event, and improve audit log actor display spacing and token tooltips.
2026-08-24 10:42:04 +02:00
Andras Bacsai 57a322ba11 fix(audit): restrict sensitive fields and centralize event filtering 2026-08-24 10:05:29 +02:00
Andras Bacsai 50913dc409 fix(livewire): refresh service config after required variable updates 2026-08-24 09:45:31 +02:00
Andras Bacsai d74352f423 fix(audit): harden audit logging and admin controls
Log audit failures, redact invitation emails, exclude noisy model fields, and gate audit-log filters and pagination by admin access.
2026-08-24 09:13:20 +02:00
Andras Bacsai 5d06c226a3 feat(templates): add Obsidian LiveSync CouchDB service template
Add the Obsidian LiveSync compose template, service logo, and coverage for its configuration.
2026-08-24 09:10:19 +02:00
Andras Bacsai dbc0aa529f feat(templates): add HashiCorp Vault service template
Add Vault Compose configuration and generated service metadata with coverage for deployment settings.
2026-08-24 09:04:51 +02:00
Andras Bacsai c1f29beff1 feat(audit): expose team events and log integration actions
Add an admin-only audit-events API endpoint and restrict audit-log UI access. Record integration token and secret manager changes, key access, and references in audit events.
2026-08-24 07:56:21 +02:00
Andras BacsaiandGitHub 3da7f5a5a5 fix(docker): handle commas in container label values (#11477) 2026-08-24 00:25:55 +02:00
Andras BacsaiandGitHub 16352fad23 fix(proxy): restore project networks after host reboot (#11476) 2026-08-24 00:22:29 +02:00
Andras Bacsai 8726746241 Merge remote-tracking branch 'origin/next' into team-resource-audit-logging 2026-08-24 00:02:30 +02:00
Andras BacsaiandGitHub 4454340b09 feat(secrets): add 3rd party secret manager providers (#11474) 2026-08-24 00:01:23 +02:00
Andras Bacsai 6d716e54d7 fix(database): preserve credentials and activity context on start
Keep raw secret values for database credentials, escape Redis passwords in startup commands, and pass user context through queued database starts.
2026-08-23 23:03:06 +02:00
Andras Bacsai f49c330d9d feat(database): queue starts and resolve credentials securely
Extract database start command execution into a shared service and job, preserving activity tracking and status events while supporting resolved secret credentials.
2026-08-23 22:33:03 +02:00
Andras Bacsai 91d4467322 feat(secrets): resolve integrations across deployments and databases
Add secret manager integration links and API support, resolve referenced credentials in database startup commands, and improve environment variable handling and filtering.
2026-08-23 21:33:00 +02:00
Andras Bacsai 4cd75e05b5 chore: remove obsolete AI lessons and task notes 2026-08-23 21:11:26 +02:00
Andras Bacsai ba179d50ac feat(secrets): add integration token and application manager APIs
Add API endpoints for creating validated secret manager tokens and configuring application secret manager settings. Suppress secret-bearing deployment command logs and redact resolved remote secrets.
2026-08-23 20:42:20 +02:00