Skip to content

Handle Google Calendar working locations#1930

Draft
3mdistal wants to merge 2 commits into
mainfrom
codex/calendar-working-locations
Draft

Handle Google Calendar working locations#1930
3mdistal wants to merge 2 commits into
mainfrom
codex/calendar-working-locations

Conversation

@3mdistal

@3mdistal 3mdistal commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Sync Google eventType=workingLocation events with native workingLocationProperties, render all-day working locations in a slim translated lane above ordinary all-day events, and keep them non-blocking for availability.
  • Preserve continuous multi-day all-day spans while separating the two lanes, with deterministic clipping and row packing covered by pure layout tests.
  • Add a focused Home / Office / Other editor in popover and pinned-panel surfaces. Recurring events default to This day only, with an explicit All days option that still targets the visible instance ID.
  • Keep Google payloads coherent: labels live in workingLocationProperties; the forbidden generic location field is stripped defensively; office metadata is preserved only while the event remains an office location.
  • Record the working-hours API spike outcome: Google Calendar v3 exposes working-location events, but its Settings/discovery surface has no structured working-hours resource. No working-hours settings UI or Find a Time changes are included.

Verification

  • pnpm -C templates/calendar test — 38 files, 231 tests passed
  • pnpm -C templates/calendar typecheck
  • pnpm -C templates/calendar build
  • pnpm guard:i18n-catalogs — 16 catalog directories passed
  • pnpm exec oxfmt --check <18 modified TypeScript files>
  • git diff origin/main --check
  • Rebasing onto current origin/main completed cleanly; every local gate above passed again after the final rebase.

Browser and provider QA

  • Verified the working-location lane appears above ordinary all-day events on desktop and at 390px without horizontal overflow.
  • Verified a Tuesday-through-Thursday ordinary all-day event remains one continuous span.
  • Verified French chip, popover, pinned-panel, and aria-label text (Accueil, Lieu de travail : Accueil) and restored the app to English afterward.
  • Created one disposable Home working location, changed it to Office and then Other through the native editor, and received HTTP 200 for both updates.
  • Confirmed both action payloads omitted generic location; Google read-back returned native officeLocation / customLocation properties with transparency: transparent.
  • Confirmed the chip and pinned heading updated immediately after each save.
  • Deleted all disposable events and confirmed zero QA matches remained. Alice's existing recurring Home series was not mutated.

Successful user story

A hybrid worker can scan where they are working separately from all-day commitments, open a focused translated editor, change a visible location from Home to Office or Other, see the chip and pinned detail update immediately, and read the same native non-blocking properties back from Google Calendar. Ordinary multi-day all-day events remain a single continuous span below the location lane.

Review and logs

  • Task ledger: .task-sweep/calendar-working-location-feedback-ledger.md (local handoff artifact)
  • Opus planning: .task-sweep/logs/claude-opus-plan-output-20260709-142915.jsonl
  • Opus final complete-diff review: .task-sweep/logs/claude-opus-review-final-output-20260709-161320.jsonl
  • Final Opus verdict: VERDICT: NO BLOCKERS

Risks and follow-ups

  • A live mutation of Alice's real recurring working-location series was intentionally not performed. Unit/action coverage proves visible-instance IDs and scope: single|all; the UI default was verified read-only on an existing recurring occurrence.
  • Weekly per-day location settings and copy-to-all remain deferred until the app has a real event-backed reconciliation action. Google Calendar v3 does not expose working-hours settings as structured provider data.
  • Find a Time remains behaviorally unchanged.
  • Separate pre-existing follow-up: manually changing create-dialog date inputs can retain the prior date state. It was reproduced outside the working-location edit path and is not introduced by this diff.

@netlify

This comment has been minimized.

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Visual recap — skipped

The visual recap job did not run for this pull request. This is informational only and does not block the PR.

Recap skipped for f320661: draft PR.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@3mdistal 3mdistal force-pushed the codex/calendar-working-locations branch from 9936864 to f3434fd Compare July 9, 2026 20:16
@3mdistal 3mdistal force-pushed the codex/calendar-working-locations branch from f3434fd to f320661 Compare July 9, 2026 20:33
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.

1 participant