Release beta: flexible width/height props, validated-events fix (TC3), dev-time misuse warnings (K-03/K-05), type-aware linting & playground redesign#73
Merged
Conversation
- @actions/core 3.0.0 → 3.0.1 - @actions/http-client 4.0.0 → 4.0.1 - undici 6.24.1 → 6.25.0 - Additional transitive dependency updates
- Replace two-calendar layout with a single focused Calendar instance - Rename kebab-case files to PascalCase (App, ControlPanel, TestFixtures) - Rebuild ControlPanel with collapsible sections and modified-count badges - Add per-section and global Reset buttons - Add theme colour pickers and localeMessages label overrides - Replace checkboxes with CSS toggle switches for boolean props
- Add Result + Notes columns to all test matrices (A–L) with current run data - Merge 286 PASS, 4 FAIL, 19 N/A results from 2026-05-07 test session - Update "Results file" reference to point to this file instead of TEST_REPORT.md - Add TEST_REPORT.md to .gitignore (local-only artifact) - Document G-12, K-03, K-05, TC3 failures and cross-cutting findings PLAYWRIGHT_TEST_PLAN.md is now the single source of truth for both test spec and results.
Previously the bundle visualizer ran on every build, opening dist/stats.html in the browser unconditionally. Wrap it in a process.env.ANALYZE guard so it only activates when needed. - visualizer now skipped unless ANALYZE=1 is set - run with: $env:ANALYZE=1; npm run build
…script - Switch from recommendedTypeChecked (was: recommended) in eslint.config.js; add parserOptions.project to enable type-aware rules - Chain tsc --noEmit before eslint in lint and lint:fix scripts so all TypeScript compiler errors appear when running npm run lint - Fix type-safety issues uncovered by stricter checking: replace non-null assertion with optional chaining in DayColumn, remove unnecessary HTMLElement cast in Popover, simplify config fallback cast in CalendarContext - Fix useResizeObserver test: convert dynamic act import to static top-level import and move assertion outside the async callback - Exclude eslint.config.js and vite.config.ts from type-aware linting as they are not part of tsconfig.json
- Add §1.2 Loading States (skeleton/overlay modes, RTL, console hygiene) - Add §1.12–1.16: Color Scheme, i18n/RTL, Responsive Layout, Accessibility, Compound API - Add §2.6–2.8: DST boundaries, year/month spanning, Unicode/XSS edge cases - Add §3 Known Issues table tracking confirmed bugs (G-12, K-03, K-05, TC3) - Expand §1.6 with creatable prop, testId, and popover focus/viewport tests - Expand §1.7 with AllDayBanner expand/collapse toggle tests - Renumber §1.2–1.10 → §1.3–1.11 to accommodate new Loading States section - Clarify dayType prop: controls day-name format, not time bounds
…er bypass useEvents() correctly filtered negative-duration events, but CalendarProvider received the unfiltered allProps.events in its config prop. All sub-views read events from that config via useCalendarProps(), bypassing the filter entirely. Passing validEvents into the config spread closes the bypass for every view, including compound-component children. Adds a regression test (TC3).
Consolidates the Playwright MCP test playbook into a Claude Code slash command at .claude/commands/playwright.md. Captures the 310-case test matrix (sweeps A-L), session init protocol, fixture/prop catalogs, common selectors, and per-run result log. - 12 sweeps x 309 executed cases with PASS/FAIL/N/A results - TC3 negative-duration filter regression tracked through full discovery -> fix (commit 7e5714b) -> verified-closed lifecycle - Known Issues and Open Follow-up Items tables updated through the 2026-05-17 retest (only K-03 and K-05 remain as OPEN library FAILs) - Run Log preserves 2026-05-07 / 05-16 / 05-17 (initial) / 05-17 (retest)
- Emit console.warn (K-03) when eventsAreSorted=true but the array is unsorted — surfaces silent render-order bugs at development time - Emit console.warn (K-05) when enableEnrichedEvents=true but enrichedEventsByDate is absent — prevents silent multi-day fallback - Thread enrichedEventsByDate into useEvents call in Calendar.tsx - Add warnSpy guards to existing tests affected by the new warnings - Add 6 new tests covering warn/no-warn branches for K-03 and K-05
Update TEST_CASES.md known-issues table to reflect that K-03 and K-05 are now resolved — both misuse patterns emit a console.warn instead of failing silently. Update JSDoc on enrichedEventsByDate, enableEnrichedEvents, and eventsAreSorted props to document the console.warn contract so consumers are aware at authoring time.
- Export CalendarClassNames from src/index.ts (was missing from public API) - Add 20 cn* fields to PanelState, DEFAULTS, and SECTION_KEYS - Assemble classNames object in toCalendarProps (undefined when all empty) - Add "Class Names" section in JSX with text inputs grouped by view area (Global, Month, Events, Week/Day, Schedule) -- enables E-13--E-18 interactive re-run
Call onChange outside the setState updater in patch and resetSection so the parent setState no longer fires during React's render phase, fixing the "Cannot update a component while rendering" warning. Change the Section header from a <button> to a div with role="button" (tabIndex, onKeyDown, aria-expanded) so the reset control can be a real nested button without invalid <button>-in-<button> markup.
Document Firefox/WebKit cross-browser testing and bring the playbook in line with the 2026-05-19 and 2026-05-21 runs. - Add `--browser=firefox|webkit` parsing, a Cross-Browser Sessions section (tool namespaces, 29-case CB subset, CB Known Issues), and a Browser column on the Test Run Log - Record CB results: full parity across Firefox/WebKit/Chromium; D-17 verified PASS via a scrollTo spy (headless Firefox no-ops smooth scroll); note the browser-independent "1280pxpx" preset quirk - Close K-03/K-05 and follow-up items 3-10; mark all 20 VIS screenshots captured; refresh the Known Issues and Open Follow-up tables
…into version_2
Add a global `colorScheme: "light"` arg in the Storybook preview config so every story renders light by default instead of following the OS `prefers-color-scheme` (the library's `auto` default). Also exclude the `.storybook` directory from typed ESLint linting, matching how `src/stories` and `vite.config.ts` are handled, so the pre-commit hook stops failing on `.storybook/preview.ts`. - Applies the light default to all current and future stories from one point - Explicit dark/auto demo stories override via their own args, so unaffected - Adds `.storybook` to eslint.config.js ignores to fix typed-lint parse errors
feat: v2 hardening — event validation fix, DX warnings, playground & tooling
Previously, width and height were always interpolated as `${value}px`,
which doubled the unit for string inputs like "1280px" or "100%".
- Add `toCssLength` utility: passes strings verbatim, appends px to numbers
- Use `toCssLength` for `--calendar-width` and `--calendar-height` CSS vars
in both CalendarContent and the compound-children code path
- Wrap string heights in `calc(${rawHeight} - ${HEADER_HEIGHT}px)` so the
header is correctly subtracted for any CSS length string
- Add unit tests for `toCssLength` and regression tests for dimension vars
(A-11/J-12 regression coverage)
All entries in the Known Issues, Cross-Browser Known Issues, and Open Follow-up Items tables were CLOSED or RESOLVED, making them dead weight in the command file. Removing them keeps the run instructions lean. - Drop Known Issues table (G-12, K-03, K-05, TC3, TC3-ROOT — all closed) - Drop Cross-Browser Known Issues table (D-17 resolved, A-11/J-12 fixed) - Drop Open Follow-up Items table (all 10 items closed) - Remove [KNOWN BUG] tagging instruction and Known Issues/Follow-up sections from the TEST_REPORT.md template - Remove Known Issues section from TEST_CASES.md (same bugs, all fixed)
|
🎉 This PR is included in version 2.0.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request Checklist
Description
Promotes the accumulated
devwork tobeta. This batch covers library-facingfixes and enhancements, developer-experience warnings, a full playground redesign,
and tooling/docs updates.
Library (
src/)width/heightnow accept CSS strings (e.g."100%","60vh") in additionto numbers. A new
toCssLength()util normalizes values; string heights subtractthe header via
calc()so the content area stays a valid CSS length.Calendarnow passes the validatedvalidEventsinto the context config instead of the raw
eventsarray.console.warns for misuse patterns: K-03 (unsorted array passed witheventsAreSorted) and K-05 (enableEnrichedEventswithoutenrichedEventsByDate).CalendarClassNamestype from the public API.enrichedEventsByDate,enableEnrichedEvents, andeventsAreSortedto document the new warning behavior.
Playground
ControlPanel),shared
TestFixtures, andclassNamesprop support.Tooling & Docs
tscerrors now surfaced in the lint script.ANALYZEenv flag./playwrightslash-command playbook; consolidated test docs intoTEST_CASES.md; dependency updates.Fixes # (N/A — promotion PR)
Type of change
How Has This Been Tested?
npm run build)Added/updated unit tests:
Calendar.test.tsx,useEvents.test.ts,useResizeObserver.test.ts,common.test.ts. Run withnpm test.