Calendar Control 1.2.5 (build 82) – 2026-10-02 - theme: white by default or black, the □ / ■ glyph before apps and a settings row, stored as dev.alex.calendar-control.theme (rule 53) · the pin is the shared 28 pt glyph and the detached window no longer borrows it for float (rule 31) · the footer key map in the family form, 1–4 views, the digits in its tooltip · tab tooltips · the family key table carries six rows: krest ⌥⌘X, Murmur AIM ⌥⌘U Calendar Control 1.2.4 build 80 Explicit Keep open/Pinned control. Event detail includes selectable meeting URL, copy and Google RSVP route. Join is available whenever a link exists. Ongoing AIM team meetings stay highlighted until their end. 525 native regression checks passed. Google snapshot remains read-only and requires refresh. Calendar Control 1.2.3 (build 73) – 2026-09-24 - today, timeline and week are the primary views; month and focus defaults migrate to today - nearest call has a red signal; focus blocks are excluded even when they contain meeting links - empty calls name the connected-calendar boundary and link to macOS Internet Accounts - 495 native checks pass; local install preserves settings and the existing startup mode Calendar Control 1.2.2 (build 71) – 2026-09-21 - 1.2.2 · the next call is a card again above the rail: a red band while the call runs, the name, the time, "in N min", the calendar and its own join bound to that event; the other calls sit below as quiet chips and no longer repeat the nearest one - 1.2.2 · the focus tab (key f) reads today’s focus note from the vault by date suffix, parses the actions of the day, counts free windows of 30 minutes and longer between 09:00 and 19:00 from EventKit and matches a task to a window; no note for today prints an honest line instead of an empty tab - 1.2.2 · "place a block" opens the existing event sheet prefilled with the task name, its identifier and the time of the window; nothing is written to the calendar on its own - 1.2.2 · a nested NSStackView bug that zeroed the height of the card is fixed - build 71 · the block lands in time blocks: the sheet is handed the wanted calendar name and finds time blocks among the writable ones; no such calendar prints a red line "not found · pick by hand" instead of silently taking the default - build 71 · placing again leads to the next window: the task row shows the time already placed, the button reads "one more block", and the new block leaves the free list by itself - build 71 · EventKit warm-up moved to the background right after launch, so the first click no longer pays for a cold XPC handshake - build 71 · two Raycast scripts call the panel by its URL scheme while the menu bar item is not drawn by the current macOS session - build 71 · self-tests 499 of 499, self-test 31 of 31 Calendar Control 1.2.1 (build 68) – 2026-09-17 - build 68: one family table and one refusal predicate with MEM PRISM, and the siblings' live settings read at recording time Calendar Control 1.2.0 (build 66) – 2026-09-17 - 1.2.0 · the bar contract of four modes with a live preview and a one-time migration, the voxel character in the header, the global key ⌥⌘C, the panel opens with nothing selected, the calls rail as the main view with a gated join, and N earlier as the switch itself. - build 66 · review pass: the tab strip marks the body it shows, so a panel restored into settings no longer sits under a red today underline, and the footer names a view no tab carries. - build 66 · the stand panel (show-testbed) keeps applicationDefined and no outside-click monitor: a repeated show finds the panel it already put there instead of AppKit taking a transient popover off an anchor that never becomes key. - build 66 · make install ends with a calendar-access read-back (--access-state, answered by the running app) and fails the release when the grant is gone, naming the way back; the calls rail needs full access, which an unsigned rebuild asks for again. - build 66 · the QA harness removes its temporary preference domain instead of leaving one file per run. Calendar Control 1.1.0 (build 64) – 2026-09-16 - 1.1.0 · the one highlight rule reaches the three month grids, the next calls live in the header, the create form works on the stand without a sheet, requirements ledger Calendar Control 1.0.2 (build 62) – 2026-09-16 - dense characters restored Calendar Control 1.0.1 (build 61) – 2026-09-16 - shell wave: header, tabs, footer and pin from AIMAppShell; the menu bar draws the same flat mark as the header Calendar Control 1.0.0 (build 60) – 2026-09-16 - shared exports re-vendored after the relay mark restore Calendar Control 0.9.5 (build 59) – 2026-09-16 Upcoming-event card (rule 30) - A card appears the chosen minutes before an event: inside the window when it is open, as a small floating card near the menu bar when the window is closed (settings → floating card, on by default, 45 s), and as the macOS notification. Buttons: join (with a meeting link) or open day, snooze 5 (or the lead when it is shorter), dismiss. One card per occurrence; snooze and dismiss are kept by occurrence id. - Lead time: presets 1 · 3 · 5 · 10 · 15 · 30 or any number of minutes from 1 to 120 typed in settings; the macOS notification uses the same lead. Default 5. - The card is the shared AIMHintCard (N1 export 2026.09.16-n1, hashed in the receipt); preview from settings → preview card or calendarcontrol://card. Window appearance (rule 28) - The window appears with the shared transition: alpha 0 to 1 with a 6 pt rise over 180 ms (motion-window-appear from the tokens), the live mark assembles 700 ms after the first frame; Reduce Motion shows it at once. Testbed (rule 27) - calendarcontrol://card?testbed=1 and --command=card/testbed put the synthetic card in the testbed corner for axdrive captures; hide-card removes it. No activation, no cursor movement. Verification (QA-2026-09-16) - make test: 253/253 isolated checks plus 31 parser cases (26 new: lead 1 to 120, policy by occurrence id, card buttons, non-activating panel, appear tokens); make smoke-cli-routes with the card routes; testbed pass with the frontmost app and the cursor unchanged. Boundaries unchanged: Apple Silicon, macOS 13+, ad-hoc signed local beta, EventKit read plus a single explicit create form, no network. Calendar Control 0.9.4 (build 57) – 2026-09-14 Menu bar icon - The menu-bar item is on by default and shows the mono calendar mark (18 pt template image). Left click shows or hides the window, right click opens the quick menu. Settings → menu bar icon turns the item off; the badge selector still offers the date badges. A config written before 0.9.4 moves once to the icon. - Routes: calendarcontrol://badge/on and calendarcontrol://badge/off next to the existing icon, date, month and next arguments. Window contract (0.9.3 work finished) - Today opens at 760 × 560, week → calendar widens to 1120 × 800 and returns; the last window position is kept. - Month lives in settings → month tab (off by default, key 3 always works); apps ↗ sits in the footer; the permission state is one centred 420 pt card with the character and one button; 16 pt grid, header with live mark 40 pt, version and settings. - Footer status follows the calendar access state on every reload (eventkit · permission required · waiting for access). Verification (QA-2026-09-14, 0.9.4 section) - make test: 227/227 isolated checks plus 31 parser cases; new checks for the menu-bar icon setting and the legacy-config migration. Scoped rollout with verified backup; the live window was captured at today, week and settings. Boundaries unchanged: Apple Silicon, macOS 13+, ad-hoc signed local beta, EventKit read plus a single explicit create form, no network. Calendar Control 0.9.2 (build 55) – 2026-09-14 Live product mark - The shared AI Mindset voxel character (model calendar) sits in the window header at 56 pt next to the title lines. It follows the cursor with a light depth parallax; a click or Space/Return plays one finite scatter and assemble response of 1.6 seconds and moves the red "today" voxel to a neighbouring day. Visual only: calendar data never changes. - Menu bar: the icon badge mode now draws the same character as an 18 pt template image (ink only), so it tints correctly on light and dark bars. Date, compact, month and next badges are unchanged. - About Calendar Control (application menu and the status menu) shows the character large with version, build and the shared token versions. - Motion runs only while the window is visible and not occluded; Reduce Motion keeps the static frame and a click only moves the signal. Shared exports - AIMVoxelView.swift and AIMVoxelModels.swift are vendored byte for byte from the apps design system (voxel models digest 346273caa96e33223b18c9d30ed1d56692cf7e3981d656a0f8e88aedfb2e3ce1). verify_tokens.py checks the token and voxel artifacts against the shared receipt before every build. Verification (QA-2026-09-14) - make test: 223/223 isolated checks plus 31 parser cases; make smoke-cli-routes passed; plutil -lint and strict codesign passed. - Scoped rollout with verified backup; the installed process was replaced and is running. Boundaries unchanged: Apple Silicon, macOS 13+, ad-hoc signed local beta, EventKit read plus a single explicit create form, no network. Calendar Control 0.9.1 (build 54) – 2026-09-13 Native AppKit calendar with a regular Mac window and an optional menu-bar entry. Visual language G2 / Native White N1: white surfaces, bundled IBM Plex Mono, 8 pt controls, 16 pt content, sparse red markers. Shared tokens - Consumes the generated N1 Swift export (token version 2026.09.13-n1, source digest 057f940f65b14a27cb72bffc6a21cb313bb576a49c04cb2b7678cbe326af8f78). verify_tokens.py checks the artifact before packaging. - Panel motion 160 ms state / 180 ms reveal / 140 ms hide, collapsed under Reduce Motion. Views - One 1120 x 800 window for today, day timeline, week (calendar or list), month and settings. Mode switches keep window position. - Week calendar uses the full width for seven day columns and a scrolling hour grid; Go to date handles navigation on demand. - Month is a stable six-row grid with event titles and explicit overflow links. - Overlapping events use separate columns; all-day events stay above the timed grid. - Red marker for today and the current time. Pin keeps the window above other apps. Event details - Single local date/time range with timezone; inclusive last date for all-day ranges. - Complete original notes, selectable, under "show notes" in a 180 pt scrolling region. - Opening a detail sheet keeps the displayed week/month and hour scroll. Selecting an occurrence focuses its exact day. - Escape retains window position and pin; hiding no longer shifts the window; ordinary refresh does not replay navigation motion. Create an event - + event, File -> New Event or Command N. Title, writable destination calendar, start/end, optional all-day range, location/link and notes. - Only "Create event" calls EventKit save. Blank titles, invalid ranges, revoked access and read-only destinations show an error without closing the form. Reminders - Settings -> event reminders. Disabled by default; 5, 10, 15 or 30 minutes before; all timed events or only calls with meeting links. - Reconciles the next 48 hours (up to 48 pending local notifications) on startup, EventKit changes and the minute refresh. No remote notification service. Tools - Opens installed MEM PRISM or Language Relay through a verified local bundle, or the public AIM apps catalog. No event data leaves the app. Verification (QA-2026-09-13) - make test: 223/223 isolated checks plus 31 parser cases. No EventKit writes, foreground windows, meeting links or notifications triggered. - plutil -lint, strict codesign and workspace hygiene checks passed. Boundaries - Apple Silicon, macOS 13+, ad-hoc signed local beta; not notarized. - Reads calendars through macOS EventKit. Account login, remote sync, invitations, editing, deletion and recurring-series mutation stay in macOS Calendar / Internet Accounts. - Audit files (~/.config/calendar-control/audit.json) and screenshots are private local files.