CluPilotCloud/resources/views
nexxo 90131f088a Add a raw .env editor to the Integrations page, with a net under it
Everything the console has no field for is still real — MAIL_*, DB_*,
APP_KEY, whichever key nobody has built a form for yet — and without a way to
touch it from here, the operator needs a shell and the console page misses
its own point. EnvFileEditor is the net, not just the warning:

1. Validates before writing. A line that is neither blank, nor a comment, nor
   KEY=value is rejected outright, and an empty file (syntactically "valid" by
   that rule, but not survivable) is refused too. write() never touches the
   file before checking the new content.
2. Backs up before every write that actually happens — a timestamped copy
   beside .env, before the new content lands. Never pruned automatically; the
   page says so, next to where it says where they land.
3. Names the keys a mistake here can lock an operator out with — APP_KEY,
   DB_*, REDIS_*, SESSION_* — rather than a blanket warning nobody reads.
4. Gated by secrets.manage and the same confirmed password the vault entries
   use — this is the one place on the page that can reach every credential
   the vault otherwise keeps write-only.
5. Says plainly what saving does not do: queue, queue-provisioning, scheduler
   and reverb only read .env at their own startup, and names the restart
   command plus config:clear.
6. Marks which .env keys SecretVault currently overrides, so editing a line
   that a stored vault value already shadows does not look broken.

Two issues surfaced by Codex review and fixed before this commit: the raw
file content stayed in the Livewire component snapshot after the password
confirmation window expired on its own (not only on an explicit re-lock), and
the first save on an installation with no .env yet failed trying to back up a
file that was never there.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 01:51:27 +02:00
..
components Merge credentials and infrastructure into one Integrations page 2026-07-29 01:49:39 +02:00
errors Refuse a portal login for an address that already belongs to an operator 2026-07-28 14:42:16 +02:00
layouts Answer a check at once, start an update at once, and count down to neither 2026-07-28 22:25:07 +02:00
livewire Add a raw .env editor to the Integrations page, with a net under it 2026-07-29 01:51:27 +02:00
mail Put every mail in one design, and confirm an order when the money arrives 2026-07-29 00:14:04 +02:00
pdf Stop the invoice printing my own indentation 2026-07-29 01:45:55 +02:00
vendor/wire-elements-modal fix(admin): no admin lockout (is_admin fallback); centered modal width; datacenter edit modal + country dropdown 2026-07-25 18:09:17 +02:00
coming-soon.blade.php One design system for every surface 2026-07-27 16:03:47 +02:00
landing.blade.php Say EU and stop there, as the approved template does 2026-07-28 09:19:24 +02:00
legal.blade.php feat(landing): public marketing homepage at / (+ legal placeholders) 2026-07-25 08:59:39 +02:00
status.blade.php Show times on the operator's clock, keep storing them in UTC 2026-07-27 17:32:21 +02:00
welcome.blade.php feat(portal): design foundation — Tailwind v3, tokens, self-hosted fonts 2026-07-25 00:43:01 +02:00