Spotify search field typing on new project
The Spotify search box on new project no longer loses focus or keystrokes when Livewire updates.
wire:ignoreon the Spotify picker; less aggressive MIDI/artist Livewire bindings.- JS — Skip picker re-init while the search input is focused.
Technical details
wire:ignore on spotify-picker; wire:model midi without live; morph.updated guard; spotify-artist-picker.js.
Spotify artist picker on new project form
Fixed Spotify link and artist name disappearing on the new project screen.
- Livewire sync — Selecting a Spotify artist updates server state so MIDI upload re-renders do not clear the link.
- Artist name — Field syncs while typing; linked artist restores after Livewire updates.
Technical details
spotify-artist-picker.js syncLivewireArtistFields; linkedSpotifyId props; wire:model.live on project create artist.
Project edit and delete (builder + admin)
Full project CRUD in the workspace UI.
- Builders — Edit song name and artist; delete own projects (files removed from storage).
- Admin / superadmin — See all projects with owner column; edit, reassign owner, or delete any project.
Technical details
ProjectController edit/update/destroy; UpdateProjectRequest; Project deleting hook; ProjectCrudTest.
Forge: auto-install python venv OS package
Deploy script can install python3.x-venv when missing (typical Forge sudo).
ensure-python-venv.sh— Probes venv creation, runs apt install for pythonX.Y-venv, then builds.venv.- Opt out —
CHARTBUILDER_SKIP_APT_VENV=1in Forge environment.
Technical details
probe_venv_ok; try_apt_install_venv; deploying-forge.md updated.
Forge Python venv script hardening
Safer chart engine setup on Laravel Forge after failed deploys.
ensure-python-venv.sh— Detects missingensurepip, removes incomplete.venv(no pip), recreates cleanly.- Forge docs —
python3.12-venvapt step, remove broken venv undercurrent/. Deploying on Laravel Forge.
Technical details
venv_is_healthy check for python+pip; deploying-forge troubleshooting table.
Laravel Forge Python deploy (venv + checks)
Chart processing on Forge requires a server-side Python venv (not in git).
scripts/ensure-python-venv.sh— Add to Forge deploy script aftercomposer install.chartbuilder:python-check— STDERR smoke test for venv + CLI.- Path resolution — Fixes broken PWD placeholders in
.env; clearer errors when Python is missing. - Docs — Deploying on Laravel Forge.
Technical details
ChartbuilderPython helper; ChartbuilderPythonCheckCommand; ensure-python-venv.sh; deploying-forge.md.
Chart processing without a queue worker
Projects no longer stay stuck on Processing when no queue worker is running.
- Synchronous processing (default) —
CHARTBUILDER_PROCESS_SYNCHRONOUSLY=trueruns Python in the web request; set false only whenqueue:workis running. Process charts. - Song name from MIDI — Smarter filename suggestion (drops guitar/repaired/etc.); you can edit the title; manual edits are not overwritten. Create a chart project.
chartbuilder:deploy-check— STDERR output (works with-q), Python path checks, non-zero exit on failures.
Technical details
ProcessProjectChart onConnection sync; ChartProcessingService set_time_limit; SongNameFromMidiFilename trailing junk; DeployConsoleOutput on deploy-check; ProcessProjectChartJobTest.
grant-superadmin visible output on deploy
SSH deploy scripts that run Artisan with -q no longer hide grant-superadmin results.
chartbuilder:grant-superadmin— Progress and success/error lines print to STDERR (visible with-q).- Deploy docs — Note to run
optimize:clearif the command is missing after deploy.
Technical details
DeployConsoleOutput; explicit withCommands registration in bootstrap/app.php; RolesSeeder invoked in-process.
Fix grant-superadmin for Google-linked accounts
Production superadmin grant now targets the account you actually sign in with.
chartbuilder:grant-superadmin— Finds users by Googleprovider_emailas well asusers.email; promotes placeholder@users.chartbuilder.localrows to the platform email when safe.- Platform superadmin on sign-in — Same matching rules for
mtech801@gmail.comafter Google OAuth.
Technical details
User::findByEmailAddress; PlatformSuperAdmin::userIsPlatformSuperAdmin; stale seed user cleanup; GrantSuperAdminCommandTest.
Email verification required for workspace access
Accounts must confirm their email before using the dashboard, projects, or admin tools.
- Verify your email — Link sent on register and Google sign-in; resend from the notice page. Verify your email.
- Google sign-in — No longer auto-verifies; click the link in your inbox like password sign-ups.
- Platform superadmin —
mtech801@gmail.comremains auto-verified for operations.
Technical details
MustVerifyEmail + verified middleware on internal routes; LoginResponse/RegisterResponse redirect to verification.notice; SocialAuthController sends verification instead of marking verified_at; EmailVerificationTest.
Production deploy path, platform superadmin, and Google OAuth docs
Operations and access fixes for chartmonix.com.
- Platform superadmin —
mtech801@gmail.comis always granted superadmin on sign-in (admin shell + New project). - Deploy checklist — Deploying,
chartbuilder:deploy-check,chartbuilder:grant-superadmin. - Google OAuth — Sign in with Google updated for production domains (redirect URI typos).
- makeitsoprod — Promote development to production after each release.
Technical details
PlatformSuperAdmin helper; GrantSuperAdminCommand; ChartbuilderDeployCheckCommand; scripts/make-it-so-prod.sh; visitor dashboard notice when not builder.
Project create: MIDI-first flow and song name from filename
Smoother new-project flow for builders.
- MIDI first — Pick your
.mid/.midifile before naming the chart. - Song name from filename — Title prefills from the MIDI filename (edit anytime). Create a chart project.
- Bitbucket Git from
.env— Local HTTPS push helper (scripts/configure-bitbucket-git.sh). - E2E test superadmin — Local-only seeded account for QA. E2E test user.
Technical details
Livewire 4 x-on:change + updatedMidi() with SongNameFromMidiFilename helper; scripts/bitbucket-git-credential.sh; E2eSuperAdminSeeder; Indifference MIDI fixture for tests.
Workspace UX, public product pages, and admin shell
Polish release for builders and admins.
- Projects menu — Quick list of your projects with complete/incomplete status.
- Light / dark mode — Toggle in the header; Profile appearance (OS → browser → account). UI theming.
- Public What's new & roadmap — /whats-new and /docs/roadmap without login.
- Admin shell — Brand sidebar + header for admins (Users).
- Spotify on project create — Paste artist URLs (e.g. open.spotify.com/artist/…) reliably links artists.
- Release workflow — Make it so with VERSION and changelog:sync.
Technical details
NavProjectsComposer, theme.js + theme_preference column, layouts.admin/app delegation for admins, spotify-artist-picker Livewire init fix, sticky footer flex layout, Vite indigo safelist for admin CSS.
Phase 1 workspace: MIDI → chart.json → GP5
Shipped the first builder workspace: upload MIDI, queue processing, and download chart.json and GP5 exports.
- Chart projects — Create a chart project, download exports.
- Artists — Saved artists, admin visibility, Spotify linking (search + paste artist URL).
- In-app documentation — Docs, roadmap, and detailed What's new notes.
- Google sign-in on https://chartbuilder.com — Sign in with Google.
Technical details
Laravel workspace (projects, project_files, ProcessProjectChart job, chart:process). Python chartbuilder engine (chart_v1 JSON, GP5 export). MySQL + Herd local domain. Release versioning: VERSION file, config/changelog-releases.php, changelog:sync.