Files
coolify/package.json
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

27 lines
748 B
JSON

{
"name": "coolify",
"private": true,
"type": "module",
"scripts": {
"dev": "vite --host",
"build": "vite build",
"clean": "docker compose -f docker-compose.yml -f docker-compose.dev.yml down --remove-orphans"
},
"devDependencies": {
"@tailwindcss/postcss": "4.3.3",
"laravel-vite-plugin": "3.1.3",
"postcss": "8.5.26",
"tailwind-scrollbar": "4.0.2",
"tailwindcss": "4.3.3",
"vite": "8.2.1"
},
"dependencies": {
"@tailwindcss/forms": "0.5.11",
"@tailwindcss/typography": "0.5.20",
"@xterm/addon-fit": "0.11.0",
"@xterm/xterm": "6.0.0",
"playwright": "^1.58.2",
"tw-animate-css": "^1.4.0"
}
}