Feature: dashboard most played games open their details, winner card uses the opposite colour, nine recent plays (0.141.0); one Edit Session window with expansions (0.142.0); details open in place, loading hourglass (0.143.0); attendee and resource fix… #104

Merged
pyaniz merged 7 commits from staging into main 2026-10-26 22:27:10 -05:00
Collaborator

What

Three features and a fix on staging (0.141.0, 0.142.0, 0.143.0, then 0.143.1).

0.141.0: dashboard polish

  • Top Winner card is tinted with the colour opposite the winner's, so card and avatar no longer blend. The ring round the avatar is removed; the text colour follows the card for contrast.
  • Most Played keeps its numbers and names; the most played game and the runner-up are each clickable and open the game's details (with the description); since 0.143.0 they open right on the Dashboard.
  • Recent plays shows 9 instead of 10.

0.142.0: one Edit Session window, with expansions

  • The pencil on a scheduled session in the Dashboard no longer opens the small "Override Game" box: it opens the same Edit Session window as the Planner (game, expansions, title / date / time, attendees, resources, Delete for the creator or an admin). The window is now one shared component (features/sessions/SessionEditDialog.tsx) used by both pages.
  • Expansions can be chosen for a session (Game tab, same chips as Record Play). They show as "+ Expansion A, Expansion B" in the Planner timeline and on the Dashboard's next-session and upcoming cards (compact and classic).
  • Data: table calendar_event_expansions (migration V65), keyed by event id like game overrides and session resources, so it covers planned sessions and Google events. New PUT /calendar/events/{id}/expansions; calendar events carry an expansions list. Deleting a planned session removes its expansions.

0.143.0: details in place, and a loading hourglass

  • Most played games now open the details dialog on the Dashboard (no switch to the Collection), with a turning hourglass while the game loads. New GET /games/{id} returns one game in the Collection's shape (plays, votes, owners, tags) for any game that has been played, not only collection games; group access is checked as for other group data.
  • The Collection shows a turning hourglass ("Loading the collection…") on its first load and when the group changes, and the list fades in. Refreshes after votes or edits keep the list on screen. Both respect reduced-motion settings. New shared LoadingHourglass component.

0.143.1: fixes in Edit Session

  • Attendees added in the Details tab are kept. On a Google Calendar session they were silently dropped; they are now stored in Thursday (PUT /calendar/events/{id}/attendees, existing session_attendees table, no migration) and shown with the Google guests. Stored attendees were also saved as "going", which the Dashboard does not group by, so they never showed there; they are now read as accepted / tentative / declined.
  • Game resources in Manage Resources: a new All game resources button opens the same dialog as clicking the game in the Collection, on its Resources tab, instead of the old separate editor.

0.143.2: dialog stacking

  • The game dialog opened from Manage Resources (All game resources) was behind the Resources window. The game dialog, resource editor and pack-away viewer had their own fixed z-index (2000 / 2100 / 2200), below the theme's 2300 for every other dialog. They no longer set one, so dialogs stack in the order they were opened and the newest is always in front.

Verified

  • tsc -b and npm run build pass; the edited backend files compile.
  • Migration (applied twice), the save and read queries, unknown ids being dropped, and the cascade on game delete were run on Postgres 17.
  • The GET /games/{id} queries were run on Postgres 17 against a small copy of the tables.
  • 12 new tests (test_session_expansions.py, test_game_detail.py, test_event_attendees.py) pass with a stand-in runner (pytest is not installed here): please run python -m pytest in backend.

Not verified

  • Nothing was looked at in a browser. The Planner's edit window was moved into a shared component, so please check it still behaves as before.
  • The endpoint was not run end to end against a database.

To test on staging

  1. Dashboard: click the pencil on the next session and on an upcoming one: the Edit Session window opens. Change the game, save, and see it on the card.

  2. Pick a game with expansions, tap two, save: "+ A, B" shows on the Dashboard card and in the Planner timeline. Reopen the window: they are still selected. Change the game: none selected.

  3. Planner: open, edit and delete a session as before; attendees and resources still work.

  4. Dashboard winner card colour with a few winners, 9 recent plays.

  5. Click both Most Played games: the details dialog opens on the Dashboard after a brief hourglass; vote buttons and tabs work. Try a game nobody owns.

  6. Open the Collection: hourglass, then the list fades in; vote on a game and check the list does not flash.

  7. Edit Session on a Google Calendar session: add an attendee on Details, save, reopen: still there, and shown on the Dashboard card. Same on a session created in Thursday.

  8. Manage Resources: "All game resources" opens the Collection's game dialog on Resources, in front. From inside it open the resource editor (and a dropdown in it), and pack-away if you use it: each opens above the previous one.

Release notes added for all versions.

🤖 Generated with Claude Code

## What Three features and a fix on `staging` (0.141.0, 0.142.0, 0.143.0, then 0.143.1). ### 0.141.0: dashboard polish - **Top Winner card** is tinted with the colour opposite the winner's, so card and avatar no longer blend. The ring round the avatar is removed; the text colour follows the card for contrast. - **Most Played** keeps its numbers and names; the most played game and the runner-up are each clickable and open the game's details (with the description); since 0.143.0 they open right on the Dashboard. - **Recent plays** shows 9 instead of 10. ### 0.142.0: one Edit Session window, with expansions - The pencil on a scheduled session in the **Dashboard** no longer opens the small "Override Game" box: it opens the **same Edit Session window as the Planner** (game, expansions, title / date / time, attendees, resources, Delete for the creator or an admin). The window is now one shared component (`features/sessions/SessionEditDialog.tsx`) used by both pages. - **Expansions can be chosen** for a session (Game tab, same chips as Record Play). They show as "+ Expansion A, Expansion B" in the Planner timeline and on the Dashboard's next-session and upcoming cards (compact and classic). - **Data**: table `calendar_event_expansions` (migration **V65**), keyed by event id like game overrides and session resources, so it covers planned sessions and Google events. New `PUT /calendar/events/{id}/expansions`; calendar events carry an `expansions` list. Deleting a planned session removes its expansions. ### 0.143.0: details in place, and a loading hourglass - Most played games now open the details dialog **on the Dashboard** (no switch to the Collection), with a turning hourglass while the game loads. New `GET /games/{id}` returns one game in the Collection's shape (plays, votes, owners, tags) for any game that has been played, not only collection games; group access is checked as for other group data. - The **Collection** shows a turning hourglass ("Loading the collection…") on its first load and when the group changes, and the list fades in. Refreshes after votes or edits keep the list on screen. Both respect reduced-motion settings. New shared `LoadingHourglass` component. ### 0.143.1: fixes in Edit Session - **Attendees added in the Details tab are kept.** On a Google Calendar session they were silently dropped; they are now stored in Thursday (`PUT /calendar/events/{id}/attendees`, existing `session_attendees` table, no migration) and shown with the Google guests. Stored attendees were also saved as "going", which the Dashboard does not group by, so they never showed there; they are now read as accepted / tentative / declined. - **Game resources** in Manage Resources: a new **All game resources** button opens the same dialog as clicking the game in the Collection, on its Resources tab, instead of the old separate editor. ### 0.143.2: dialog stacking - The game dialog opened from Manage Resources (**All game resources**) was behind the Resources window. The game dialog, resource editor and pack-away viewer had their own fixed z-index (2000 / 2100 / 2200), below the theme's 2300 for every other dialog. They no longer set one, so dialogs stack in the order they were opened and the newest is always in front. ## Verified - `tsc -b` and `npm run build` pass; the edited backend files compile. - Migration (applied twice), the save and read queries, unknown ids being dropped, and the cascade on game delete were run on Postgres 17. - The `GET /games/{id}` queries were run on Postgres 17 against a small copy of the tables. - 12 new tests (`test_session_expansions.py`, `test_game_detail.py`, `test_event_attendees.py`) pass with a stand-in runner (pytest is not installed here): please run `python -m pytest` in `backend`. ## Not verified - Nothing was looked at in a browser. The Planner's edit window was moved into a shared component, so please check it still behaves as before. - The endpoint was not run end to end against a database. ## To test on staging 1. Dashboard: click the pencil on the next session and on an upcoming one: the Edit Session window opens. Change the game, save, and see it on the card. 2. Pick a game with expansions, tap two, save: "+ A, B" shows on the Dashboard card and in the Planner timeline. Reopen the window: they are still selected. Change the game: none selected. 3. Planner: open, edit and delete a session as before; attendees and resources still work. 4. Dashboard winner card colour with a few winners, 9 recent plays. 5. Click both Most Played games: the details dialog opens on the Dashboard after a brief hourglass; vote buttons and tabs work. Try a game nobody owns. 6. Open the Collection: hourglass, then the list fades in; vote on a game and check the list does not flash. 7. Edit Session on a Google Calendar session: add an attendee on Details, save, reopen: still there, and shown on the Dashboard card. Same on a session created in Thursday. 8. Manage Resources: "All game resources" opens the Collection's game dialog on Resources, in front. From inside it open the resource editor (and a dropdown in it), and pack-away if you use it: each opens above the previous one. Release notes added for all versions. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Feature: dashboard most played games open their details, winner card uses the opposite colour, nine recent plays (0.141.0)
All checks were successful
Build and Publish Containers / build-and-push (push) Successful in 45s
Mirror to GitHub / mirror (push) Successful in 21s
fa5f117a7d
- Most Played card is split in two: the left half opens the most played game,
  the right half the runner-up (the whole cell on phones). They open the game's
  details on the Games page via router state.
- Top Winner card is tinted with the complement of the winner's colour and the
  ring around the avatar is gone; text colour follows the card for contrast.
- Recent plays shows 9 instead of 10 (fills the three-column grid).
- Stats endpoint returns the game id for the most played game and runner-up.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Fix: Most Played keeps its original look, each game is just clickable (0.141.0)
All checks were successful
Build and Publish Containers / build-and-push (push) Successful in 43s
Mirror to GitHub / mirror (push) Successful in 19s
186a4462ce
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Fix: Most Played links open the game on the Collection page (0.141.0)
All checks were successful
Build and Publish Containers / build-and-push (push) Successful in 43s
Mirror to GitHub / mirror (push) Successful in 19s
ac54d6a277
The link pointed at /games, which redirects to /collection and drops the
router state that says which game to open.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
claude-code changed title from Feature: dashboard most played games open their details, winner card uses the opposite colour, nine recent plays (0.141.0) to Feature: dashboard most played games open their details, winner card uses the opposite colour, nine recent plays (0.141.0); one Edit Session window with expansions (0.142.0) 2026-10-26 21:57:27 -05:00
Feature: dashboard edit opens the shared Edit Session window, and sessions can have expansions (0.142.0)
All checks were successful
Build and Publish Containers / build-and-push (push) Successful in 43s
Mirror to GitHub / mirror (push) Successful in 19s
c9c3e51a98
- The Edit Session dialog moves out of the planner into
  features/sessions/SessionEditDialog.tsx; the planner and the dashboard both
  use it. The dashboard's pencil no longer opens the Override Game box.
- Expansions can be chosen on the Game tab (ExpansionSelector) and are shown
  under the game in the planner timeline and on the dashboard cards.
- Migration V65: calendar_event_expansions, keyed by event id. New
  PUT /calendar/events/{id}/expansions; calendar events carry `expansions`;
  deleting a planned session removes its expansions.
- Tests: test_session_expansions.py. Docs and the planner help page updated.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
claude-code changed title from Feature: dashboard most played games open their details, winner card uses the opposite colour, nine recent plays (0.141.0); one Edit Session window with expansions (0.142.0) to Feature: dashboard most played games open their details, winner card uses the opposite colour, nine recent plays (0.141.0); one Edit Session window with expansions (0.142.0); details open in place, loading hourglass (0.143.0) 2026-10-26 22:03:25 -05:00
Feature: most played games open their details on the dashboard, and the collection shows a loading hourglass (0.143.0)
All checks were successful
Build and Publish Containers / build-and-push (push) Successful in 43s
Mirror to GitHub / mirror (push) Successful in 19s
c3050168d6
- New GET /games/{id}: one game in the shape of a Collection entry (plays,
  votes, owners, expansions-based player count, tags) for any game, seen from
  the caller and, with group_id, from that group (read access is checked).
- The dashboard opens GameDetailsDialog in place with a Backdrop hourglass
  while the game loads; the router-state hop to /collection is removed.
- Collection: first load and group change show a LoadingHourglass and the list
  fades in; refreshes keep the list on screen. Honors reduced motion.
- Tests: test_game_detail.py.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
claude-code changed title from Feature: dashboard most played games open their details, winner card uses the opposite colour, nine recent plays (0.141.0); one Edit Session window with expansions (0.142.0); details open in place, loading hourglass (0.143.0) to Feature: dashboard most played games open their details, winner card uses the opposite colour, nine recent plays (0.141.0); one Edit Session window with expansions (0.142.0); details open in place, loading hourglass (0.143.0); attendee and resource fix… 2026-10-26 22:15:22 -05:00
Fix: attendees added in Edit Session are kept, and game resources open the game's own dialog (0.143.1)
All checks were successful
Build and Publish Containers / build-and-push (push) Successful in 43s
Mirror to GitHub / mirror (push) Successful in 19s
1f04d221ae
- Attendees added on a Google Calendar session were dropped on save. They are
  now stored via PUT /calendar/events/{id}/attendees (session_attendees, no
  migration) and returned with extra=true next to the Google guests.
- Stored attendees were saved as "going", which the dashboard does not group
  by, so they never showed there. They are now read as accepted / tentative /
  declined.
- Manage Resources: "All game resources" opens GameDetailsDialog on its
  Resources tab (as in the Collection) instead of the old separate editor.
- Tests: test_event_attendees.py.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
claude-code changed title from Feature: dashboard most played games open their details, winner card uses the opposite colour, nine recent plays (0.141.0); one Edit Session window with expansions (0.142.0); details open in place, loading hourglass (0.143.0); attendee and resource fix… to Feature: dashboard most played games open their details, winner card uses the opposite colour, nine recent plays (0.141.0); one Edit Session window with expansions (0.142.0); details open in place, loading hourglass (0.143.0); attendee and resource fix… 2026-10-26 22:21:17 -05:00
Fix: the game dialog opened from Manage Resources is in front (0.143.2)
All checks were successful
Build and Publish Containers / build-and-push (push) Successful in 43s
Mirror to GitHub / mirror (push) Successful in 17s
83acac1859
GameDetailsDialog, ResourceEditorDialog and PackAwayViewer set their own
z-index (2000 / 2100 / 2200), below the theme's modal level of 2300, so a game
dialog opened from the Resources or Edit Session window was hidden behind it.
They no longer set one: dialogs share the theme level and stack in the order
they were opened.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
pyaniz merged commit 3c81bde996 into main 2026-10-26 22:27:10 -05:00
Sign in to join this conversation.
No description provided.