From the user demo: lessons should default to a week view on both the front end and in wp-admin.
Front end (assets/js/booking.js) — the booking calendar now opens in the Week view, anchored to the week of the earliest open slot so the first look is never empty. The List view stays available via the existing toggle.
wp-admin — Scheduler and My Lessons were flat tables only. They now open in a Week calendar (same usc_view/usc_week pattern and markup as the availability page) showing each lesson's start time, student, and status per day, with previous/next-week navigation. The original table remains as the List view since it carries the per-lesson HST and e-transfer edit forms.
Added a generic WeekCalendar::bucket() (template-typed) so lesson display rows reuse the same seven-day bucketing as availability slots.
Tests
New LessonControllerTest cases: week is the default, lessons bucket into the right day, usc_week navigation is honoured, out-of-week lessons are hidden, and the list view still renders on usc_view=list.
New WeekCalendarTest::testBucketGroupsItemsByExtractedDay.
composer test — 369 tests pass; composer lint (PHPStan level 10) and composer cs clean.
Closes #76
## What & why
From the user demo: lessons should default to a **week view** on both the front end and in wp-admin.
- **Front end** (`assets/js/booking.js`) — the booking calendar now opens in the Week view, anchored to the week of the earliest open slot so the first look is never empty. The List view stays available via the existing toggle.
- **wp-admin** — **Scheduler** and **My Lessons** were flat tables only. They now open in a Week calendar (same `usc_view`/`usc_week` pattern and markup as the availability page) showing each lesson's start time, student, and status per day, with previous/next-week navigation. The original table remains as the **List** view since it carries the per-lesson HST and e-transfer edit forms.
- Added a generic `WeekCalendar::bucket()` (template-typed) so lesson display rows reuse the same seven-day bucketing as availability slots.
## Tests
- New `LessonControllerTest` cases: week is the default, lessons bucket into the right day, `usc_week` navigation is honoured, out-of-week lessons are hidden, and the list view still renders on `usc_view=list`.
- New `WeekCalendarTest::testBucketGroupsItemsByExtractedDay`.
- `composer test` — 369 tests pass; `composer lint` (PHPStan level 10) and `composer cs` clean.
Docs updated: `docs/features/lesson-booking.md`.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
The front-end booking calendar now opens in the Week view (anchored to the
week of the earliest open slot) with List still available. The Scheduler and
My Lessons admin pages gain a week calendar (usc_view/usc_week, bucketed via
a new generic WeekCalendar::bucket()) and open in it by default; the original
table remains as the List view since it carries the HST / e-transfer forms.
Closes#76
Co-Authored-By: Claude Fable 5 <[email protected]>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #76
What & why
From the user demo: lessons should default to a week view on both the front end and in wp-admin.
assets/js/booking.js) — the booking calendar now opens in the Week view, anchored to the week of the earliest open slot so the first look is never empty. The List view stays available via the existing toggle.usc_view/usc_weekpattern and markup as the availability page) showing each lesson's start time, student, and status per day, with previous/next-week navigation. The original table remains as the List view since it carries the per-lesson HST and e-transfer edit forms.WeekCalendar::bucket()(template-typed) so lesson display rows reuse the same seven-day bucketing as availability slots.Tests
LessonControllerTestcases: week is the default, lessons bucket into the right day,usc_weeknavigation is honoured, out-of-week lessons are hidden, and the list view still renders onusc_view=list.WeekCalendarTest::testBucketGroupsItemsByExtractedDay.composer test— 369 tests pass;composer lint(PHPStan level 10) andcomposer csclean.Docs updated:
docs/features/lesson-booking.md.🤖 Generated with Claude Code