Conversation
## Summary This pull request restores Super Analyzer for modern Apple Music library exports and fixes broken Share-menu exports (PDF/HTML). It also updates documentation and adds a fat-JAR build script. This PR and its code were written using [Cursor in privacy mode](https://cursor.com/data-use). ### Library parsing (`FileParser`) - Replace `Vector` playlist lookups with `HashSet` for faster track membership checks - Detect the Music playlist more robustly (single-line or split `<key>Music</key>` / `<true/>`) - Add phase logging so large libraries show progress in the terminal - Improve null-safety and progress-bar accounting during parse ### Share export fixes (`Share`, `HomeWindow`) - Fix Swing deadlock on macOS by showing save dialogs on the UI thread before starting background export - Render chart PNGs on the EDT during PDF/HTML export - Fix crash in Album Likes chart when albums have no genre (`ColorSeriesXYDataSet`) - Ensure PDF documents are closed in a `finally` block (fixes zero-byte PDFs on error) - Fix HTML template reading and complete multi-chart HTML export ### Other - Lazy-init combo box items in `Analysis` for export paths - Add `build-jar.sh` to produce a runnable fat JAR (`build/super-analyzer.jar`) - Update `README.md`, in-app help (`SuperAnalyzer.properties`, `help.html`) for Apple Music export workflow and Java 8+ requirements - Update `.gitignore` to exclude build artifacts, JARs, and library XML exports ## Test plan - [ ] `./build.sh` compiles without errors - [ ] `./build-jar.sh` produces `build/super-analyzer.jar` - [ ] `java -jar build/super-analyzer.jar` launches the UI - [ ] Analyze an exported `Library.xml` from Apple Music; confirm terminal shows Phase 1/2 progress and analysis completes - [ ] **Share → Save Analysis as PDF** produces a non-empty PDF with all charts - [ ] **Share → Save Analysis as HTML** produces a folder with `index.html` and all chart PNGs - [ ] **Share → Save Chart as Image** still works for an individual chart - [ ] Help panel shows updated Apple Music instructions and version **3.6**
elskewe
reviewed
Jul 9, 2026
elskewe
left a comment
Collaborator
There was a problem hiding this comment.
Been quite a while since I've worked on SuperAnalyzer (or with Java for that matter) but here are some things I noticed. I never used the sharing options, but if they do work now that is great :)
added 2 commits
July 11, 2026 08:38
Restores inline code comments that Cursor had unnecessarily removed.
Extract shared view-export logic into `runViewExport()` so `exportViewImage()` and `exportViewImages()` no longer duplicate the `SwingUtilities.invokeAndWait` wrapper, view creation, and error handling. Refactor `addPdfChartImages()` to call `exportViewImages()` instead of inlining the same export logic again.
elskewe
reviewed
Aug 9, 2026
elskewe
left a comment
Collaborator
There was a problem hiding this comment.
See my comment. Apart from that, it looks good and also compiles and runs :)
Avoid duplicating the class/resource build steps by reusing `build.sh`, then keep fat-JAR packaging in `build-jar.sh`.
Author
|
Yay! Thanks, @elskewe! I just pushed one more small change, that being to Should be good to merge! |
Collaborator
@tombly do you have anything to add? |
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.
Summary
This pull request restores Super Analyzer for modern Apple Music library exports and fixes broken Share-menu exports (PDF/HTML). It also updates documentation and adds a fat-JAR build script.
This PR and its code were written using Cursor in privacy mode.
Library parsing (
FileParser)Vectorplaylist lookups withHashSetfor faster track membership checks<key>Music</key>/<true/>)Share export fixes (
Share,HomeWindow)ColorSeriesXYDataSet)finallyblock (fixes zero-byte PDFs on error)Other
Analysisfor export pathsbuild-jar.shto produce a runnable fat JAR (build/super-analyzer.jar)README.md, in-app help (SuperAnalyzer.properties,help.html) for Apple Music export workflow and Java 8+ requirements.gitignoreto exclude build artifacts, JARs, and library XML exportsTest plan
./build.shcompiles without errors./build-jar.shproducesbuild/super-analyzer.jarjava -jar build/super-analyzer.jarlaunches the UILibrary.xmlfrom Apple Music; confirm terminal shows Phase 1/2 progress and analysis completesindex.htmland all chart PNGs