Skip to content

perf: list studio projects from a summary index - #31

Merged
Nowkoo merged 1 commit into
fix/multitrack-recording-bugsfrom
perf/studio-library-index
Oct 11, 2026
Merged

Nowkoo merged 1 commit into
fix/multitrack-recording-bugsfrom
perf/studio-library-index

Conversation

@Nowkoo

@Nowkoo Nowkoo commented Oct 11, 2026

Copy link
Copy Markdown
Contributor

Stacked on the dirty-saves PR.

The library, /music projects, the 36-project limit and deletion now use project summaries (title, track count, length, pending slot). Before, they decoded every project on the server thread. Creating a song from the library did this three times.

  • Summaries are cached in a per-owner projects/<owner>/library.index file, keyed by each project file's size and modification time. save() updates it. Listing rebuilds missing, stale or damaged entries, so files edited outside the studio stay correct, and a lost cache only costs a reparse.
  • Measured with 36 projects of 7,500 notes: listing drops from about 1.9 s and 40 MB to under 5 ms. The first listing after upgrading builds the index once per owner, at the old cost.
  • The delete confirmation keeps a summary instead of a whole decoded project for its two-minute callback. It refuses the deletion if the title, track count, length or pending take changed. Mix-only changes no longer block a confirmed deletion.

Validation: Java 21 mvn clean verify, 293 tests, 100% instruction and branch coverage.

🤖 Generated with Claude Code

The library, /music projects, the 36-project limit and deletion now use
project summaries (title, tracks, length, pending slot) instead of
decoding every project on the server thread. Summaries are cached in a
per-owner library.index file keyed by each project file's size and
modification time. save() updates it, and listing rebuilds missing,
stale or damaged entries, so files changed outside the studio stay
correct.

With 36 projects of 7,500 notes, listing drops from about 1.9 s and
40 MB to under 5 ms. The first listing after upgrading builds the index
once.

The delete confirmation keeps a summary rather than the whole project,
and rejects the deletion if the summary changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 11, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: c2447946-c2a6-4e28-aa5a-3baffb3838d3

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added the size:L 100-499 effective changed lines (tests excluded in mixed PRs). label Oct 11, 2026
Base automatically changed from perf/studio-dirty-saves to fix/multitrack-recording-bugs October 11, 2026 19:37
@Nowkoo
Nowkoo merged commit 6c8eb9d into fix/multitrack-recording-bugs Oct 11, 2026
2 checks passed
@Nowkoo
Nowkoo deleted the perf/studio-library-index branch October 11, 2026 19:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 effective changed lines (tests excluded in mixed PRs).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant