Skip to content

My Festival: non-drink entries and timeline add / backfill #462

Description

@richardthe3rd

Context

ADR 0006 (Accepted), Phase 4. Lets the diary capture the whole festival — non-drink moments (food, a band, "arrived") and entries the user forgot to log at the time. Depends on #461 (the LogEntry model + migration).

What

  • A "+" on the My Festival timeline creates a check-in:
    • pick a drink (catalogue search) → a tasting (rate / recommend / note / photo), or
    • type a free-text title → an other entry (a title + optional note/photo, no rating/recommend).
  • Time defaults to now but is freely set, so backfilling a forgotten entry is the same flow with an earlier time — no special path.
  • Entries are editable after the fact (any field incl. the timestamp; setting/clearing drinkId flips a tasting ↔ other) and deletable.

UX to resolve here (deliberately left out of the ADR)

  • Drink-picker / search component for the tasting path.
  • Datetime setting: a raw picker is fiddly one-handed — provide relative quick-picks ("just now / 1h ago / earlier today") alongside it.
  • Titleless other: require a title or derive it from the note's first line — the timeline must never show a blank entry.
  • Heterogeneous timeline: a visual-consistency rule for rich drink rows next to plain freeform notes.
  • Delete affordance: reconsider confirm-dialog vs. an undo snackbar (the log is private and fully reversible).
  • Accessibility: Semantics on the "+", the picker, and every new row.

Acceptance

Deep widget tests (add a drink tasting and a non-drink other via the "+", assert both render in the timeline; backfill sets an earlier time; edit + delete flows), semantic tests for new interactive elements, ./bin/mise run check clean.

Relates to #315. Implements ADR 0006 Phase 4. Depends on #461.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions