Skip to content

table improvements + additional project collection tracking - #8

Merged
bretth18 merged 5 commits into
mainfrom
b/tableimprove
Jul 14, 2026
Merged

table improvements + additional project collection tracking#8
bretth18 merged 5 commits into
mainfrom
b/tableimprove

Conversation

@bretth18

@bretth18 bretth18 commented Jul 14, 2026

Copy link
Copy Markdown
Owner

Description

This PR introduces a new concept of "collections" (e.g., albums, EPs, singles) to group Ableton projects, and makes several database and UI improvements to support this feature. It also refines project deletion, improves JSON decode cache performance, and enhances sample file parsing for missing-sample detection.

Collections (Music Project Grouping):

  • Added a new collections table and associated CollectionRecord model, with migration to schema version 5. Projects can now be assigned to a collection, and collections have metadata such as kind (album, EP, etc.) and status (planning, in progress, released, etc.). (abledex/Database/CollectionRecord.swift, abledex/Database/AppDatabase.swift, abledex.xcodeproj/project.pbxproj, abledex/Database/ProjectRecord.swift) [1] [2] [3] [4] [5] [6]

  • Implemented CRUD operations for collections in the database layer, including assigning/removing projects to/from collections. (abledex/Database/AppDatabase.swift)

UI Enhancements:

  • Updated the main content view to display a collection header when a collection is selected, and to show the correct navigation title. Added a developer-only toggle for switching between SwiftUI and NSTableView implementations. (abledex/ContentView.swift) [1] [2]

Database and Performance Improvements:

  • Refactored project and location deletion to use GRDB's query interface for safer and more reliable UUID handling. (abledex/Database/AppDatabase.swift) [1] [2]
  • Rewrote the JSON decode cache for project records to use a generation-based LRU eviction strategy, improving cache hit performance and reducing locking overhead. (abledex/Database/ProjectRecord.swift) [1] [2] [3]

Ableton Project Parsing:

  • Enhanced the ALS parser to extract both absolute and relative sample file references for improved missing-sample detection, and to parse the minor version from the project header. (abledex/Scanner/ALSParser.swift) [1] [2] [3] [4] [5] [6]

These changes lay the groundwork for organizing projects into higher-level music releases, improve reliability and performance, and add new capabilities for sample management.

How to test

  • Ensure all checks pass

Author checklist

This PR:

  • Satisfies a goal that is specific & clearly motivated
  • Adds value in isolation (whether user-facing or sustainability-related)
  • Contains a concise & easy-to-understand title + description
  • Adheres to SRP by default
  • Presents the best possible implementation to meet its goal, given constraints at hand

@bretth18 bretth18 self-assigned this Jul 14, 2026
@bretth18
bretth18 merged commit 989d8b7 into main Jul 14, 2026
3 checks passed
@bretth18
bretth18 deleted the b/tableimprove branch July 14, 2026 21:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant