- Add IN_INTERACTIVE flag to detect interactive mode
- die() now returns to menu instead of exiting in interactive mode
- Update options (1-6) run with 'set +e' to prevent crash on errors
- 'set -e' restored after update completes
- Errors are logged and shown as warnings, menu keeps running
- New premium ASCII art banner with EMULATOR text
- Banner shows: Emulator / Nitro-V3 / Nitro-V3-Render
- Subtitle: Updater by Remco — epicnabbo.nl
- Mini banner updated with same branding
- Menu header updated
- Help text updated with branding
- Gold color theme for title text
Running ./update-Nitrov3.sh without arguments now opens the TUI
control panel instead of immediately running a full update.
Use 'update' subcommand or --only= for direct CLI updates.
- Add pick_branch_and_update() wizard for all update options
- Auto-detect available branches from all git repos
- Show branch list with (current) marker for active branch
- Show update summary (branch, mode, site) before confirmation
- Add detect_available_branches() helper to avoid duplication
- Restructure menu: UPDATE / TOOLS categories with labels
- Option 1: Quick Update (uses current branch, no prompts)
- Options 2-6: Full/Selective update with branch picker
- Branch switcher shows all detected branches from repos
- Menu header shows current time, branch, and site URL
- Add detect_branch() function with smart fallback per repo
- Auto-detect branches: tries exact match, capitalization variants,
development/Development, main/master, remote branches
- Never crashes on missing branch - warns and skips instead
- Remove hardcoded branch validation (now accepts any branch name)
- Add branch switcher to interactive menu (option 6)
- Shows current branch and site URL in menu header
- git_update() now uses git pull origin instead of generic pull
- Update help text for --branch option
- Complete rewrite from 584 to 1902 lines
- Interactive TUI control panel with 13 menu options
- CLI subcommands: update, interactive, status, health, backup, restore,
backups, services, database, config, logs, clean, help, version
- Selective updates with --only=emulator|client|renderer|configs
- Animated spinners and progress bars during operations
- System diagnostics: CPU, memory, disk, Redis, Nginx, SSL cert check
- Database manager: info, tables, sizes, optimize, check, custom queries
- Backup management: create, restore with interactive selection, list view
- Service manager: start/stop/restart for emulator, nginx, PM2
- System status dashboard with server info and resource usage
- Health check with 20+ checks and scoring system
- Cache cleanup: Yarn, Laravel, Redis, logs, backups, temp files
- Enhanced webhook notifications with color support
- CLI flags: --dry-run, --force, --verbose, --quiet, --branch, --url
- Fix: derive NITRO_SITE_URL from APP_URL before URL calculation
- Full UTF-8 and ASCII fallback support
The vendor/ entry in .gitignore was blocking lang/vendor/filament/
from being tracked. Added !lang/vendor/ exception and committed all
21 language translation files (login.php + resources.php) so the
other VPS can pull them via git.
All language JSON files (ar, br, cs, da, de, el, es, fi, fr, hu, it, no, pl, pt, ro, ru, se, tr, uk) were missing commandocentrum.* and radio.* keys that were only present in en.json and nl.json.
Added the missing keys with English values as placeholders. All 21 languages now have 305/305 keys (100%). Filament vendor PHP translations were already 100% complete.
- Add CSS variable support to dusk theme components for dynamic text colors
- Fix low-contrast preset color combinations (cyberpunk, neon, magma, forest, obsidian, space)
- Add text-shadow utility classes and apply to site header and backgrounds
- Style logout buttons as proper buttons matching other button styles
- Fix hardcoded text colors in atom theme components
- Replace flowframe/laravel-trend with direct Eloquent DB queries
- Replace srmklive/paypal (abandoned) with new PayPalService using PayPal REST API v2 via Guzzle
- Remove old config/paypal.php, migrate to config('habbo.paypal.*')
- Update blade templates to use habbo.paypal config
- Bump npm packages to latest: @inertiajs/react, axios, esbuild, eslint, sass, tailwindcss, etc.
- Run composer update and yarn upgrade
- Rename all .js/.jsx files to .ts/.tsx across resources/js and theme dirs
- Add TypeScript 6.0 with strict mode, tsconfig.json
- Add type definitions for Inertia page props, Alpine.js, Turbolinks
- Update vite.config.js entries to .ts/.tsx extensions
- Update all Blade @vite() calls to match new .ts/.tsx entry points
- Add TypeScript ESLint config (replacing unused Vue plugin)
- Add @types/react, @types/react-dom, @types/lodash
- Add typecheck script and integrate into check pipeline
- Full tsc --noEmit, ESLint, and production build pass cleanly
- Add pagination to ShopController (50 per page)
- Add throttle:3,10 to radio application store route
- Replace mixed Dutch/English labels in RadioWizardController (English only)
- Replace Dutch error messages in RadioController and RadioSetupController
- Add config('habbo.defaults.avatar_look') for SocialAuthController
- Remove hardcoded default stream URL from RadioSetupController
- Add database indexes for radio_listener_points.earned_at and bans.ip
HIGH:
- Add missing import RadioSongRequestFormRequest (fixes crash on POST)
- Add Purify XSS sanitization for article full_story
- Fix duplicate radio API routes (/api/radio vs /api/radio/v2)
- Add try-catch guards in InstallationController for missing records
MEDIUM:
- Fix N+1: eager load comments.user in ArticleController::show()
- Fix GuestbookController authorization logic
- Remove dead doSetup() method and duplicate route
- Extract shared HasRadioDefaults trait (remove code duplication)
- Use named routes in ForceStaffTwoFactorMiddleware
- Fix WebsiteHelpCenterTicket::isOpen() (no permission leak)
- Enable on WebsiteHelpCenterTicket (matches schema)
- Replace WebsiteTeam::all()->pluck() with direct pluck()
- Replace CatalogPage::all()->pluck() with direct pluck()
- Replace WebsiteBadge::all() with direct pluck()
- Add throttle middleware to guestbook store, logo-generator, radio embed
LOW:
- Remove unused imports
- Remove dead /inertia-test route
- Consolidate cache keys in RadioController