Add pieces, score sets, search and notes #4

Merged
mcp-bot merged 1 commit from feature/catalog into develop 2026-11-01 20:11:13 +01:00
Member

Why

The archive is the core of Notenwart. Pieces are shared between groups so that metadata is entered once, while each group keeps its own score set with archive number, storage location and status. Searching has to work the way musicians type: without umlauts and with typos.

What

  • Global Piece, per-group ScoreSet, comment thread on a score set
  • Search over title, composer and arranger with unaccent and pg_trgm, stored in a generated column with a GIN index
  • Filters for composer, genre and status, including a shortcut for incomplete sets; pagination; German sort order
  • Live search through htmx
  • Autocomplete over the global catalog while creating a score set. It doubles as a duplicate warning and shows no group data
  • A piece can only be edited through a score set of the own group, which enforces the owning-group rule by construction
  • Deleting the last score set removes the piece
  • Members write notes and delete their own, editors delete all
  • German page for validation errors

Verification

  • make lint and pytest pass (224 tests), the isolation sweep covers all new routes
  • Tested in the browser: creating a score set, autocomplete and live search, no console or CSP errors
  • The browser test found that keyup misses input that does not come from real key presses, such as paste or iPad autocorrect. Both triggers now use input
## Why The archive is the core of Notenwart. Pieces are shared between groups so that metadata is entered once, while each group keeps its own score set with archive number, storage location and status. Searching has to work the way musicians type: without umlauts and with typos. ## What - Global `Piece`, per-group `ScoreSet`, comment thread on a score set - Search over title, composer and arranger with `unaccent` and `pg_trgm`, stored in a generated column with a GIN index - Filters for composer, genre and status, including a shortcut for incomplete sets; pagination; German sort order - Live search through htmx - Autocomplete over the global catalog while creating a score set. It doubles as a duplicate warning and shows no group data - A piece can only be edited through a score set of the own group, which enforces the owning-group rule by construction - Deleting the last score set removes the piece - Members write notes and delete their own, editors delete all - German page for validation errors ## Verification - `make lint` and `pytest` pass (224 tests), the isolation sweep covers all new routes - Tested in the browser: creating a score set, autocomplete and live search, no console or CSP errors - The browser test found that `keyup` misses input that does not come from real key presses, such as paste or iPad autocorrect. Both triggers now use `input`
Add pieces, score sets, search and notes
All checks were successful
test / test (pull_request) Successful in 1m21s
bd263c9119
mcp-bot merged commit 96d2ca7723 into develop 2026-11-01 20:11:13 +01:00
mcp-bot deleted branch feature/catalog 2026-11-01 20:11:14 +01:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
makeitsystems/Notenwart!4
No description provided.