diff --git a/README.md b/README.md index 9b81d4c..a7e35a3 100644 --- a/README.md +++ b/README.md @@ -183,13 +183,12 @@ terminal needed; a small, scoped host service performs the restart). ## Updating ```bash -cd clusev -sudo ./update.sh # pulls the latest code, then rebuilds, restarts and migrates +sudo clusev update # pulls the latest code, then rebuilds, restarts and migrates ``` -`update.sh` fast-forwards the repo (it never discards local changes), re-runs the idempotent installer -non-interactively, and updates itself if the script changed. Secrets and the configured domain / -e-mail are preserved. (The older two-step `git pull && sudo ./install.sh` still works.) +`sudo clusev update` fast-forwards the repo (it never discards local changes), re-runs the idempotent +installer non-interactively, and updates itself if the script changed. Secrets and the configured +domain / e-mail are preserved. (The older two-step `git pull && sudo ./install.sh` still works.) --- @@ -202,8 +201,7 @@ new password) as a fallback. Completely locked out (lost password and 2FA, no SMTP)? Recover from the host: ```bash -cd clusev -docker compose -f docker-compose.prod.yml exec app php artisan clusev:reset-admin +clusev reset-admin ``` This clears the second factor so you can set a new password on the next login. The bare-IP diff --git a/tests/Feature/CommandShortcutsTest.php b/tests/Feature/CommandShortcutsTest.php index 798531d..dad7c24 100644 --- a/tests/Feature/CommandShortcutsTest.php +++ b/tests/Feature/CommandShortcutsTest.php @@ -18,6 +18,7 @@ class CommandShortcutsTest extends TestCase 'resources/views/livewire/help/content/de/domain-tls.blade.php', 'resources/views/livewire/help/content/en/domain-tls.blade.php', 'docker/motd/00-clusev', + 'README.md', ]; /** Operator-facing files that must use the short `sudo clusev update`, never `sudo ./update.sh`. */ @@ -30,6 +31,7 @@ class CommandShortcutsTest extends TestCase 'lang/en/system.php', 'lang/de/versions.php', 'lang/en/versions.php', + 'README.md', ]; public function test_no_display_surface_leaks_the_long_compose_filename(): void