What’s new
Recent ships, newest first. Generated from the dev-notes triage + commit log — terse summaries focused on user-visible behavior.
Parts list: auto-grouped by category
Parts without an explicit category now get a sensible one inferred from their name (Brakes, Suspension, Engine, Cooling, Fuel, Electrical, Body & Paint…). The render is grouped, so a 100-part build is browsable at a glance instead of one flat scroll.
Linked photos appear on tasks
Tasks now show their linked media as thumbnail chips on each row — same pattern parts already had. Click a thumb to open the lightbox; arrow keys cycle, ESC closes.
Chat survives navigation
When the AI uses navigate() to open a page mid-response, the conversation no longer wipes. Turns are mirrored to session storage and rehydrate instantly if the panel ever remounts.
Album: delete + metadata overlay
Hover any photo in the album for a date + filename overlay. Trash icon on hover deletes the photo (with confirmation) and removes the R2 blobs. The lightbox now shows full EXIF / size / tags / linked-parts info pinned to the bottom.
Cross-device chat sync
Open the AI chat on your phone, close the laptop, come back later — the same conversation thread is on both devices and continues from where you left off. Photos uploaded from one surface appear in the other's album within ~100 ms.
TTS reads cleaner
The assistant's voice no longer pronounces 'one, two, three' for markdown list markers, no longer reads heading hashes aloud, and substitutes 'link' for raw URLs.
Voice latency: never drops a turn
If you finish speaking while the AI is still mid-response, your next turn now queues instead of being silently dropped. A watchdog caps the silence timer at 6 seconds so noisy environments can't lock the buffer.
Voice: single mic toggle
One tap on the mic enters always-on mode. Tap again while the AI is speaking to interrupt. Push-to-talk and wake-word modes still exist in settings for power users.
Cross-owner uploads blocked
Photos uploaded via mobile or chat can no longer accidentally land on another user's build, even when the caller is admin. Closes a privacy hole.
AI: list_recent_media + set_media_build
list_recent_media now works without a build_slug, returning your most recent uploads across all builds (handy for finding photos that landed on the wrong one). New set_media_build tool reassigns a media row — the AI can fix misrouted uploads with a single call.
Voice: faster first audio
TTS now streams sentence-by-sentence: the first sentence speaks the moment the AI types its first period instead of waiting for the whole response. 16 kHz mic + 100 ms WS frames + KeepAlive every 8 s keep the upstream tight on flaky networks.
Public garage pages
Builds with visibility=public now render at pitcrewchief.com/<slug>; the home + explore-builds pages pull live data from the DB.