Views
Grid, kanban, calendar, timeline, gallery and form views over the same records.
Group a grid by up to three fields with totals per group, drag records across a month or a week, plan work in lanes on a timeline, browse cards with cover images, and collect records with a public form.
- Grid grouping by up to 3 fields with sums, averages, minimums, maximums and counts per group
- Calendar by month or week, multi-day bars, drag to reschedule, records without a date in a side list
- Timeline by day, week or month, lanes by a select, user or link field, drag to move or resize
- Gallery cards with a cover image and the fields you choose
- Kanban by a single select field, forms with a shareable link
41 of 41 automated tests pass in 6 files (2026-10-21).




Verification record
The test method and results below are the project's own record, kept next to the code and published unedited.
Calendar, timeline, gallery and grid grouping: verification record
Date: 2026-10-13 (tests re-run with npm run verify). Feature: part 2 of the feature expansion (spec).
What was tested
- Calendar views by month and week, with multi-day bars, drag to reschedule and unscheduled records.
- Timeline (Gantt) views by start and end date or duration, in lanes, at day, week and month scale.
- Gallery views with chosen fields and cover images.
- Grids grouped by up to 3 fields with collapsible headers, counts and per-group summaries.
- Date windows in the engine, so calendars and timelines load only what is visible.
- Views over MCP (
create_view,update_view).
How
- Unit tests (Vitest, Node): day arithmetic across years and leap days, month grids, spans and row packing, timeline scales, stored values in any time zone, the one-day query padding near midnight, grouped rows and collapsing, group labels and summaries, timeline lanes.
- Worker integration tests (workerd, real Durable Objects): date-window queries (overlap, end before start, combined with filters and created time, invalid windows), group levels and group keys, summaries without fan-out at 3 levels, consecutive grouped rows, cleanup of view references when fields are deleted, search applied to summaries, and the HTTP routes.
- UI checks with Playwright against
wrangler devin the “Views QA” base (8 projects, 246 tasks), comparing what is shown with the API. - Bench:
npm run bench, 50,000 rows.
Results
Tests: 41 of 41 passed in 6 files (npm run verify, 2026-10-14).
Bench (local wrangler dev, Apple M5 Pro, Node v24.18.1, 50,000 rows; local numbers, not production):
| Action | ms |
|---|---|
| Calendar month window (6 weeks, 2,000 rows inline) | 75.4 |
| Grid grouped by 2 fields with sum summaries (query plus two aggregates) | 579.33 |
| Kanban group counts | 64.95 |
UI scenarios:
| Scenario | What was checked | Result | Screenshot |
|---|---|---|---|
| Calendar month | Records on their days, multi-day bars, “+N more”; the month window holds 156 records, equal to the API | Pass | month |
| Calendar week | Week view | Pass | week |
| Timeline | Projects by start and duration in Status lanes, today line | Pass | timeline |
| Gallery | Cards with the chosen fields | Pass | gallery |
| Grid grouped by 3 levels | Status, Priority, Assignee headers with counts; Todo: 89 records, Estimate sum 735.4, equal to the API | Pass | grid |
| Phone | Calendar at 390 px | Pass | phone |
Known limits
- Group summaries are requested one level at a time, and refresh every open view.
- Timeline drags do not handle cancel or Esc; bars and group headers are not keyboard operable.
- Dragging a timed record in the week view ignores where it was grabbed.
- Grouping by created time puts each record in its own group.
- No task dependencies, recurring events or time zones other than the browser’s (out of scope for this part).