Repository navigation
Backlog after 0.4: what's left before 1.0 and what we could build next #146
Copy link
Copy link
Open
Description
A snapshot of what's left and what we could do next, taken after 0.4 (2026-10-12). Pick items from here; open a focused issue when one is picked up. Roadmap: #1. Plan: IMPLEMENTATION_PLAN.md.
In progress
- Availability: customizable shading (gradients, recipes) and a busy/available status API #140 Customizable availability shading and resource status (PRs Availability, part 1: shading that says why, replaceable shading, and a status API (#140) #141, Availability, part 2: resource status badge, demo and docs (#140) #142, merged)
- Busy during a range: who's busy while you book a room or set up a meeting #144 Busy during a range: who's busy while you book a room (PR Scheduling: who's busy while you place an event (#144) #145, merged)
Before a public 1.0
Today the calendar can't be installed: the packages are 0.0.0 and not on npm, and there's no shadcn add.
- Build the shadcn registry, serve it from the docs site, and test shadcn add in clean apps #43 Build the shadcn registry, serve it from the docs site, and test
npx shadcn add <url>in clean Vite and Next apps (calendar-fullhas no duplicate files; dnd stays optional) (PR Build the shadcn registry, serve it from the docs site, and test shadcn add in clean apps (#43) #176) - Release tooling: lockstep versions, changelog, dry run, export/API/size checks, manual publish #46 Release tooling (rescoped; Add the MIT LICENSE and package links; keep calendar-testing private (#46, part 1) #175 and Release tooling: lockstep versions, changelog, release checks, dry run and a guarded publish (#46) #177, runbook in
docs/internal/releasing.md):- versions and changelog;
- a dry-run build of every artifact;
- export, API and size checks;
- an explicit publish step.
- Add a
LICENSEfile.package.jsonsays MIT, but the repo has no license file. Done in Add the MIT LICENSE and package links; keep calendar-testing private (#46, part 1) #175: MIT in every published tarball, plusrepository,homepageandbugslinks. - Short Firefox + WebKit run, part of Cross-browser test matrix (Chromium, Firefox, WebKit) #133. Temporal isn't native everywhere, so test the polyfill path. Done in A Firefox and WebKit run of the a11y suite and real interactions (#47) #183:
vp run browsers(inready:full), WebKit ontemporal-polyfill, real mouse and keyboard interactions; follow-ups WebKit: four a11y test groups fail in the Firefox and WebKit run #181, Playwright's Firefox doesn't start on macOS 27 #182, Safari: keys can leave the focused event out of view in the scrolling agenda #185, Firefox and WebKit on a CI runner: timing failures change from run to run #192. - Release audit and the 1.0 release candidate #47 Release audit, rescoped to a checklist: exports, SSR, a11y, size, and docs installing the published artifacts. Then a release candidate. Phase 1 (Fix the a11y flakes that keep CI red on main (#47) #178, A local quality gate in three tiers, the same tasks CI runs (#47) #179, A Firefox and WebKit run of the a11y suite and real interactions (#47) #183, The release audit's evidence index, and the small gaps it closed (#47) #193) and phase 2 done: the gate under load (Full gate: browser runs one at a time on half the cores, with a watchdog (#47) #195, Browser tests wait for what they check, not for time (#47) #204), READMEs and the
icslicense (READMEs for the published packages, and ics under MIT AND Unicode-3.0 (#47) #196), the release artifacts (The SSR fixture, the docs site and the registry's clean apps on the release artifacts (#47) #203), the gate policy and a release job that runs the whole full tier (Gate policy: the full tier runs for releases, and the release job runs all of it (#47) #206), the evidence index (Release audit: the phase 2 evidence and what blocks 1.0.0-rc.1 (#47) #208). RC report: no-go for1.0.0-rc.1until the blockers in Release 1.0.0-rc.1 #207 clear (Safari: keys can leave the focused event out of view in the scrolling agenda #185, Manual VoiceOver and NVDA passes before the release candidate #186, the npm setup; CalendarEventSource is public API that nothing accepts #200 is built, Root takes a CalendarEventSource as well as an array (#200) #212). The docs site's domain is resolved: it serves athttps://time.molten.sh(Docs site moves to time.molten.sh #210). - [P7] Publish calendar-testing harness and consumer contract fixtures #45
calendar-testing: built after all, and it publishes with 1.0 (feat(testing): add builders, a deterministic environment and a render harness #252, feat(testing): add queries, keyboard and pointer drivers, and assertions #253, feat(testing): add fixtures and use the harness in the SSR fixture #255): a deterministic environment, builders and fixtures, a render and hydration harness, queries, keyboard and pointer drivers, and assertions.calendar-recurrencewas no stub either, and publishes. - feat(release): release from CI with one command #259 Release with one command,
vp run release(or/releasein Claude Code), that nobody confirms: it starts the release workflow, which gates the release commit and publishes through npm trusted publishing, with provenance and no token.1.0.0-rc.1went out from the oldrelease.yml; feat(release): release from CI with one command #259 is for the next release. - Owner decisions:
- the first release's checklist, with these decisions and the RC blockers: Release 1.0.0-rc.1 #207;
- make the repo public (Actions are usually free for public repos, which would bring back CI and Pullfrog);
- publish through GitHub Actions with provenance, or locally with a token;
- the
@moltenshipnpm scope; 1.0.0-rc.1first, or straight to1.0.0.
Small follow-ups (tracked)
- Agenda follow-ups from #136 (minor) #138 Agenda follow-ups from Agenda: virtualized, plus a scrolling agenda for months or years (#131) #136
- Availability status and shading: leftover review nits from #140 #143 Leftover review nits from Availability: customizable shading (gradients, recipes) and a busy/available status API #140
- Annotations in month, agenda and resource views #132 Annotations in month, agenda and resource views
- Cross-browser test matrix (Chromium, Firefox, WebKit) #133 Full cross-browser test matrix: closed as done by A Firefox and WebKit run of the a11y suite and real interactions (#47) #183; what still fails is in WebKit: four a11y test groups fail in the Firefox and WebKit run #181, Playwright's Firefox doesn't start on macOS 27 #182 and Safari: keys can leave the focused event out of view in the scrolling agenda #185.
Ideas: not tracked yet, roughly by user value
Google Calendar-style features the library doesn't have yet:
- Recurring events ([Epic 8] Recurrence package #2, [P8] Recurrence: contracts, RFC 5545 engine and range-bounded expansion #48): bounded expansion, exceptions, "this / following / all" edits. Real apps ask for this most.
- Undo / redo for edits: Ctrl/Cmd+Z after a drag, plus an "Undo" toast (Undo and redo for event edits #227: PRs feat: add an opt-in event history to undo and redo event changes #232, feat: add undo and redo keys, an undo toast, and undo in the demo #238). Opt-in:
createEventHistory,useCalendarHistory,useCalendarHistoryShortcutsand the registry's undo toast; recurring events aren't supported yet. Follow-up: Undo and redo: wait for the drop to render, and show a waiting undo #236. - Duplicate an event by Alt/Option-drag, or a "Duplicate" action.
- External drag-and-drop: drag unscheduled items, such as tasks or a backlog, from outside the calendar into a slot or resource. Done in Optional dnd-kit adapter: drag items into the calendar and events out #237: the external-drop primitive in
@moltenship/calendar-dnd(feat(dnd): drop outside drags into calendar views #240), the optional@moltenship/calendar-dnd-kitadapter (feat(dnd-kit): add an optional dnd-kit adapter #243), and the demo's unscheduled tasks and docs guide (feat(demo): drag unscheduled tasks into the calendar and back #248). - Find a time: suggest the next free slot for a set of people and rooms (builds on Busy during a range: who's busy while you book a room or set up a meeting #144). Also room capacity and buffers between bookings (from Availability: working hours, exceptions, availability policy and per-resource time zones #129 "Later").
- Secondary time zone column in the time grid (Secondary time zones in the time grid #165).
- Year view: a 12-month overview.
- ICS import and export helpers, maybe as a separate package.
- Mobile pass: touch long-press to create and drag, a small-screen layout for the demo (3-day or day), and checking the bottom-sheet and dialog behaviour. Findings and plan: Mobile pass: touch gestures, a small-screen layout, and checks of popovers and dialogs on phones #217; done in Touch drags start after 450 ms, and the page holds still under them (#217) #218 and A small-screen layout: 3-day views, 24 px month targets on touch, a toolbar that wraps (#217) #223, with follow-ups Annotation marks are under 24 px on touch screens (WCAG 2.5.8) #219 and Check touch drags on a real iPhone #220.
- Docs: a theme builder to tweak the calendar's tokens live and copy the CSS #166 Docs playground and theme builder: tweak tokens live (colors, density, shading recipes) and copy the CSS.
- Integration recipes:
- Docs: load events with TanStack Query through onVisibleRangeChange #163 loading events with TanStack Query through
onVisibleRangeChange; - a Next.js App Router example (Integration recipe: a Next.js App Router example #164);
- a Google Calendar sync example (Integration recipe: sync with Google Calendar #167).
- Docs: load events with TanStack Query through onVisibleRangeChange #163 loading events with TanStack Query through
- Overlap policies per calendar and per resource (Overlap policies per calendar and per resource #230, from Overlap layout policies for timed events (columns, equal, stack) #130's "Later"): overlap layouts per resource and per calendar, where a group takes its events' layout when they all agree, in the time grid, resource columns and the timeline's hour rows, which can stack;
conflictPolicymodes per resource, such as roomsblockand peoplewarn. Done in feat: per-resource and per-calendar overlap layouts #233, feat(core): per-resource conflict modes #235 and feat: stacked rows in the resource timeline #239; follow-ups in Follow-ups from per-resource overlap policies (#230) #241. - Layout and frame budgets checked in CI (from the old "Later" list).
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
pullfrog commentedon Oct 12, 2026
Moltenship commentedon Oct 12, 2026
Decision (owner):
@moltenship/calendar-recurrencepublishes with 1.0 together with the other packages, so it is no longer marked private as a stub. Its dependency@moltenship/icspublishes too. The recurrence epic (#2) is implemented and gated: #156–#159, plus the gate in #161; the limits left open are in #160. #45 still applies tocalendar-testing.feat(release): release from CI with one command (#259)