Repository navigation
Musical checkpoint analysis and a history you can trust - #2
Merged
Merged
Conversation
Requiring "electron" from plain Node resolves the binary path and can trigger a binary download, which made the preload unit test hang on a fresh install. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Drop recharts, embla-carousel-react, input-otp, react-day-picker, vaul, react-resizable-panels, next-themes, date-fns, @tanstack/react-virtual and @base-ui/react; none were imported. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Flow and copy - Timeline grouped by day; runs of small-edit saves collapse and can be collapsed again. Latest, first, pinned, named, noted and previewed checkpoints are never hidden in a group. - Checkpoint panel leads with "Continue from here" and says the current project is not changed; shows whether a checkpoint is safe from automatic cleanup and why. - Header shows the project path, an honest status, and pause/resume/ retry inline; branches show what they were continued from, and the app switches to a new branch once it is created. - Two-step onboarding that can't get stuck, with a not-a-backup note; removes mockups of UI that doesn't exist. - Watched folders confirm before removal and explain that found projects keep recording; storage panel uses plain language. - Remove misleading copy: "saved" badge, "No file changes", always-on "Live" badge, "Protected projects" count, updatedAt as last activity. Fixes - Detail panel is keyed by checkpoint, so a name/note being edited can no longer be saved onto the next selected checkpoint. - Toasts no longer follow the OS theme; drop the theme provider and its stray "d" hotkey. - "Analyze changes" surfaces failures. Cleanup - One dark token palette with readable text tiers instead of ad-hoc white/alpha classes and hex backgrounds. - Shared project status, path and relative-time helpers replace three copies of each; unused store state, UI components and assets removed. - Rename checkpoint components to match the domain language. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Analysis (server) - New Live Set reader: arrangement clips on MIDI and audio tracks (audio clips were previously never read), notes, samples, device chains with parameter values, mixer in dB, automation lanes, tempo, locators. - New comparison against the previous checkpoint of the same set: clips added / removed / moved / edited with bar ranges, note-level diffs, named device, mixer, automation and tempo changes, and a one-line headline per save. - Ignore Live's bookkeeping: renumbered object ids, warp timings and clip lengths re-derived on tempo changes, auto-renumbered track names, opaque plugin state (reported separately, never in the headline). - Every checkpoint gets a stored summary (headline, song silhouette, changed regions) computed in the background, existing history included; summaries recompute when the previous checkpoint changes. - GET /api/projects/:id/saves/:saveId/analysis serves the full comparison, cached on disk and removed with its checkpoint. - Remove als-parser, als-diff, smart-naming, the manual "Analyze" flow, and unused cheerio / xml2js; older state drops setDiff/trackSummary. Interface (desktop) - History rows draw each checkpoint's song shape on a shared bar scale, lit in Ableton track colours where it changed. - Checkpoint detail shows an arrangement diff map, a piano-roll note diff, and every change in plain words, grouped by track. - Graphite palette where saturated colour comes only from the music; Instrument Sans and Geist Mono. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
History list
- Each save is a time and one short line; your own names lead.
- Search box finds the saves where something changed ("bass", "tempo",
"louder") across every change, names and notes, and shows the change
that matched.
- Timeline spine: node size shows how much changed, colour shows which
track (Ableton's track colours); track names in the line use the same
colour.
- Named saves and saves with audio get a larger row and play button.
- Drop the song-shape strips, bar ruler and sidebar shapes.
Analysis
- Summaries keep every change in words (`changes`) and a short headline.
- Track names drop Live's auto-number ("4-Serum 2" → "Serum 2").
- Volume changes read as louder / quieter.
- ANALYSIS_VERSION 2: stored summaries recompute in the background.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Echoform's history didn't tell the truth about the song. The old diff never read audio clips at all (on audio tracks they live under
MainSequencer/Sample), only counted things ("+3 clips"), and read Live's own bookkeeping as edits. The UI added misleading copy on top (a wrong "saved" badge, "No file changes" on saves that exist because the file changed, an always-on "Live" badge).What changed
Analysis (server)
live-set.ts): arrangement clips on MIDI and audio tracks, notes, samples, device chains with parameter values, mixer in dB, automation, tempo, locators.set-compare.ts): clips added / removed / moved / edited with bar ranges, note-level diffs, named device, mixer, automation and tempo changes, all in plain words.GET /api/projects/:id/saves/:saveId/analysisand cached on disk.als-parser,als-diff,smart-naming, the manual "Analyze" flow, and unusedcheerio/xml2js. Older state dropssetDiff/trackSummaryon load.Interface (desktop)
electron, which downloads its binary).Testing
Known
bun run auditfails onmaintoo: newly published high-severity advisories (sharp, undici, svgo, smol-toml) not in the reviewed baseline. CI will fail on that step until it's addressed.🤖 Generated with Claude Code