Skip to content

Add responsive event counts and nightly delivery - #22

Open
redbasi wants to merge 22 commits into
mainfrom
codex/calendar-nightly-delivery
Open

redbasi wants to merge 22 commits into
mainfrom
codex/calendar-nightly-delivery

Conversation

@redbasi

@redbasi redbasi commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

Summary

Busy days now default to a total-count button in compact calendars, making dense schedules easier to scan and activate. Wide calendars retain event summaries.

  • Add independent compact/wide gridEventDisplay modes and onEventOverflowActivate for application-owned day choosers, with count-aware render hooks and preserved keyboard/focus behavior.
  • Make component layout respond to container width, adopt Vite library/example builds and its Baseline Widely available targets, and provide native dialog and palette fallbacks.
  • Add the remote-data walkthrough and runnable example, update API/migration/accessibility guidance, and automate screenshot preparation with a before/after review gallery.
  • Stabilize browser fixtures and reject flaky CI results. Hosted CI and publication run Chromium/WebKit; Firefox remains supported and is exercised locally, with optional repeated qualification.
  • Publish daily at 09:00 UTC or manually from reviewed main through OIDC-only nightly delivery, retaining exact package/source/Pages evidence. latest remains on historical alpha until stable publication; historical releases stay frozen.

Related work

None.

Verification

  • Final CI-mode npm run check passed on 6ddebb0bd84c852230246de58de51aec33a9cad5: 176 tooling tests, 295 unit tests, 290 Chromium/WebKit browser passes, one documented capability skip, zero flaky results, ten current screenshots, and dependency-free installed tarball verification including extension tree shaking and packed-byte DOM interaction. A second screenshot preparation confirmed current evidence without building or capturing.
  • The all-three-engine local gate previously passed on 69377e41e890cfcdff3e04e5fb7b432dcf6718e8: 428 browser passes, five documented capability skips, and zero flaky results. The subsequent Firefox policy commit changes no runtime code; its generated package tarball has the identical SHA-256 digest.
  • Browser regression coverage includes count activation, keyboard/focus, container breakpoints, narrow layouts, enlarged text, Baseline fallbacks, remote loading/cancellation, and the open application chooser. Local Firefox checks remain available with CI unset; hosted required checks use Chromium/WebKit.
  • All ten canonical screenshot scenes were visually reviewed; stale-aware preparation and a second current-evidence invocation passed. Automated accessibility, keyboard, focus, enlargement, RTL, and preference scenarios are included in the browser gate; these do not substitute for actual assistive-technology testing.
  • Shared recipe data now drives server, landing-smoke, and recipe accessibility checks. Rendered style assertions replace brittle source-text expectations, and package-only pager tests use the existing minimal fixture. Both corrected pager tests passed 20 Firefox repetitions each without retries, plus Chromium/WebKit checks.
  • Vite example styles resolve from source without prebuilt output, including direct CSS requests and hot-update invalidation. Compact date labels reuse the existing minimum height when two digits wrap at 200% text. The new regression fails against the previous CSS; all 81 count/layout checks and 20 zero-retry Firefox repetitions pass. Static site layout fixtures use inert DOM parsing and explicit sections, and marker fixtures now require valid hook results, ready state, and no errors; all 30 container checks pass across three engines.
  • A paired CSS-only comparison found no new slowdown from the minimum-height fix. All 42 normal-text date geometries, workload counts, and DOM results matched. A repeated screenshot diagnostic reproduced both old and refreshed focus-image hashes from the same source with identical geometry/styles and no animation: the difference is confined to 246 rounded-edge pixels. Reference images remain manually reviewed; CI verifies them read-only.
  • Hosted Firefox failures occur during initial navigation despite successfully loaded resources and rendered pages. The upstream navigation report has no verified released fix. Firefox automation is therefore local-only for now; the Playwright pin and supported browser window remain unchanged. Contract tests verify both local and hosted project selection, and documentation and required-status settings match that policy.
  • The optional yielding-adapter documentation example passed TypeScript 6.0.3 strict checking and 15 fake-clock cases covering scheduler/timer paths, cancellation, adapter failure, and unnecessary-yield avoidance.
  • Controlled Chromium comparisons against 40cd4fa show faster default compact rendering in the measured scenarios. A 30-pair confirmation retained a legacy event-mode resize cost from 900 to 320 CSS px: median layout completion increased from 16.75 to 18.65 ms (+1.9 ms, +11.3%). Resize checks recorded zero DOM replacements, source calls, or hook invocations. These measurements do not establish universal performance parity.

Risk and compatibility

  • The compact default changes visibly. Set gridEventDisplay: { compact: "events" } to preserve individual compact event presentation; review custom overflow visuals and count activation against the updated public contracts.
  • Vite updates now define the supported browser targets. ESM, explicit stylesheet imports, declarations, optional WebMCP isolation, and zero runtime dependencies remain package contracts.
  • Publication requires the exact npm-nightly trusted-publisher binding and hosted controls. It introduces no npm token or secondary dist-tag writer. Public package and release Pages verification remain required after publication; this PR does not claim delivery is complete.
  • The legacy resize regression above remains a measured limitation. The default count mode improves the measured compact path without changing synchronous local-array semantics.
  • Core distribution now uses two ESM files instead of 48: raw bytes decreased from 324,758 to 275,422; separately gzipped files decreased from 76,932 to 60,593 bytes. CSS gzip increased from 6,130 to 6,887 bytes. These are static distribution measurements at gzip level 9, not an npm tarball or bundled-consumer comparison.

Checklist

  • The change is focused, and I added regression coverage for changed behavior or explained why none is needed.
  • I followed the coding conventions and ran npm run check with the repository-selected Node.js and npm toolchain.
  • When public behavior changed, I updated affected types, documentation, examples, migration guidance, and the Unreleased changelog.
  • When visual or interaction behavior changed, I reconciled it with the design system, repeated affected accessibility checks, and updated canonical screenshots only when required.
  • When WebMCP, untrusted input, or another security boundary changed, I followed the WebMCP contract and security policy as applicable.
  • I added no prohibited dependency, install hook, remote asset, generated distribution, secret, private event data, or unrelated formatting change.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 13, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-13T07:43:32.160365Z 6ddebb0 New commits
🔒 Security Review Completed 2026-09-13T05:28:37.979623Z 0633725 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Comment thread tests/e2e/container-modernization.spec.js Fixed
Comment thread tests/e2e/container-modernization.spec.js Fixed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 69377e41e8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

if (dayShortcuts.length > 0) {
button.setAttribute("aria-keyshortcuts", dayShortcuts.join(" "));
}
setDayActionShortcuts(button, gridActionSnapshot.length > 0, this.options.onDayContextMenu !== undefined);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Advertise F2 only when a visible grid action exists

When presentation modes differ by breakpoint, gridActionSnapshot can contain only an action hidden at the current container width. For example, with gridEventDisplay: { compact: "events", wide: "count" } and a single non-actionable event, the wide-only count button is hidden in compact mode, but this call still adds aria-keyshortcuts="F2"; pressing F2 is then prevented while focus remains on the day. This exposes a nonfunctional shortcut to assistive technology, so the shortcut state needs to track whether the current responsive presentation has an eligible action.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants