Notes field per entry #13

Closed
opened 2026-04-17 12:47:22 -06:00 by claude-code · 0 comments
Collaborator

Goal

Add an optional free-text notes field to each entry for goals, due dates, account numbers, or any context. Examples: "Christmas fund goal $1800 by Nov", "renewal Mar 2027", "account ending 1234".

Behavior

  • notes TEXT NULL on both entry and month_entry
  • Snapshot copies the budget entry's notes into each month_entry at creation time
  • Editable inline via HTMX, same hx-trigger="change" pattern as name / planned / applied on the month page
  • Budget page add form gains an optional notes input; entries render notes as editable text below the name
  • Budget page gets a small POST /entries/{entry_id}/notes endpoint so existing entries' notes can be edited without delete-and-recreate
  • Notes changes do NOT affect deviation state on the month page (deviation is about dollar amounts and names, not annotation)

Display

Notes appear as a second line under the name in each entry row, rendered in smaller muted text when filled, placeholder "notes..." when empty. Same on both pages.

Acceptance criteria

  • Alembic migration adds notes to entry and month_entry, nullable
  • Creating a budget entry accepts an optional notes form field
  • POST /entries/{id}/notes updates a budget entry's notes
  • Creating a month entry accepts an optional notes form field
  • POST /month/{year_month}/entries/{id} accepts a notes form field
  • Snapshot (create_month) copies entry.notes to month_entry.notes
  • Both pages render a notes input per entry row
  • Editing notes on the month page does not flip the row to state-edited
  • Pytest covers CRUD for notes and the snapshot-copy behaviour
  • No regression in existing tests, group totals, zero amount, deviation flags, or debt target

Out of scope

  • Full inline edit of name / amount on the budget page (separate consideration)
  • Markdown or rich text in notes
  • Search by notes content
## Goal Add an optional free-text notes field to each entry for goals, due dates, account numbers, or any context. Examples: "Christmas fund goal $1800 by Nov", "renewal Mar 2027", "account ending 1234". ## Behavior * `notes TEXT NULL` on both `entry` and `month_entry` * Snapshot copies the budget entry's notes into each month_entry at creation time * Editable inline via HTMX, same `hx-trigger="change"` pattern as name / planned / applied on the month page * Budget page add form gains an optional notes input; entries render notes as editable text below the name * Budget page gets a small POST `/entries/{entry_id}/notes` endpoint so existing entries' notes can be edited without delete-and-recreate * Notes changes do NOT affect deviation state on the month page (deviation is about dollar amounts and names, not annotation) ## Display Notes appear as a second line under the name in each entry row, rendered in smaller muted text when filled, placeholder "notes..." when empty. Same on both pages. ## Acceptance criteria * [ ] Alembic migration adds `notes` to `entry` and `month_entry`, nullable * [ ] Creating a budget entry accepts an optional `notes` form field * [ ] `POST /entries/{id}/notes` updates a budget entry's notes * [ ] Creating a month entry accepts an optional `notes` form field * [ ] `POST /month/{year_month}/entries/{id}` accepts a `notes` form field * [ ] Snapshot (`create_month`) copies `entry.notes` to `month_entry.notes` * [ ] Both pages render a notes input per entry row * [ ] Editing notes on the month page does not flip the row to `state-edited` * [ ] Pytest covers CRUD for notes and the snapshot-copy behaviour * [ ] No regression in existing tests, group totals, zero amount, deviation flags, or debt target ## Out of scope * Full inline edit of name / amount on the budget page (separate consideration) * Markdown or rich text in notes * Search by notes content
Sign in to join this conversation.
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: archeious/quartermaster#13
No description provided.