Skip to content

Calendar with no end-date field: the week/day "Resize start" handle still moves the event, and the calendar-view renderer drops endEditable #29197

Closed

Description

@objectstack-fleet

domain:ui#1 · zhuangjianguo · session_01QsR2jUJ19MstFvFhjgiYTu

Filing gate: ② out-of-scope finding, class a, from #29020 (PR #29146; report /mnt/project-files/issue-29020/os-dev-report.json) · filed by domain:ui#1 · ⛔ Not a claim. No grade: triage sets it.

Business reason. A calendar view whose object has no end-date field shows each event as a point in time. After #29020, such a view no longer offers resizing the end. Two doors are still left open:

Measured (the #29020 dev, by reading and in tests at PR #29146 head 88ee38a1; not run live).

  • With no end field, the time-grid top handle stays. Dragging it changes start, and the event redraws 1 h long.
  • calendar-view-renderer passes no endEditable to CalendarView, so authored nodes get the default true.

Wanted.

  1. With no end-date field, week and day views draw no resize handle at all. Moving the event stays a drag of its body.
  2. The renderer forwards endEditable (or derives it from the node's end field) so that authored calendar nodes match ObjectCalendar.
  3. Views with an end field are unchanged. No new metadata key.

Tests. No end field: no top handle in week and day views, and an authored node with no end field draws no end handles. With an end field, both handles stay.

Reader. domain:ui (area:records). Size S. Serialize after PR #29146 (#29020).

Dedupe. Searched calendar resize start handle, endEditable renderer: only #29020.

Links back: #29020, PR #29146.

Activity

  1. added
    bugSomething isn't working
    pm:queueReady for the PM dispatch loop
    domain:uiDomain lane — seat card indexed by label:pm:seat
    on Nov 2, 2026
  2. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: p2 (priority added) · 2026-11-02T09:59Z

    ⛔ Not a claim.


    Generated by Claude Code

  3. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#1 · zhuangjianguo · session_01QsR2jUJ19MstFvFhjgiYTu

    Claim: PM loop round 19 · 2026-11-02T10:04Z
    Session: session_01QsR2jRjkd6BVRcw6N7MyTu (card thread, os-dev); dispatched by seat session session_01QsR2jUJ19MstFvFhjgiYTu
    Account: zhuangjianguo
    Branch: claude/project-thread-dyr5y4 (platform-assigned to the card thread; it can push only this branch)
    Worktree: objectstack-issue-29197
    Domain: domain:ui
    Seat: domain:ui#1
    File surface: ui/packages/plugin-calendar/src/CalendarView.tsx (the week/day top "Resize start" handle and the pointer-down resize zones gated on endEditable), ui/packages/plugin-calendar/src/calendar-view-renderer.tsx (forwards a boolean endEditable host hatch, as it does slotMinutes; no new metadata or types key), their tests (including flipping the two ObjectCalendar.endEditable-29020 cases that pin the top handle), one line in content/docs/frontend/plugins/plugin-calendar.mdx, and a root .changeset. Any other file is declared by a claim amendment before code (stop on breach; explain in the report)
    Container & model: S, mode:thread, model: default tier (dispatch-gates --tier: no path-derived mandate), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: a calendar with no end-date field draws no resize handle in any view, the week/day top handle included, and authored calendar nodes can say so through the renderer; views with an end field are unchanged
    Thread-read: 6574266722
    Premise: holds (at origin/main 45e9b2f1: the dev read at 45e9b2f (after 10bfd70): the time-grid top handle is not gated on endEditable, and calendar-view-renderer does not forward it; endDateField defaults to end, so the renderer forwards a host boolean instead of deriving)
    Serial constraints cleared: after PR #29146 (#29020), landed as 10bfd70.

  4. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 2, 2026
  5. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#1 · zhuangjianguo · session_01QsR2jRjkd6BVRcw6N7MyTu
    os-dev-report

    {
      "issue": 29197,
      "status": "done",
      "branch": "claude/project-thread-dyr5y4",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/29292",
      "session": "session_01QsR2jRjkd6BVRcw6N7MyTu",
      "premise_still_valid": true,
      "summary": "CalendarView endEditable={false} now also hides the week/day top 'Resize start' handle, and handleEventPointerDown ignores top/bottom zones when false, so a calendar with no stored end draws no resize handle in any view; body moves unchanged. ObjectCalendar unchanged (already passes Boolean(endDateField)). calendar-view-renderer forwards a host boolean endEditable like slotMinutes, not derived from endDateField (defaults to 'end', so every node names an end field; premise note in PR body). Docs bullet in plugin-calendar.mdx, patch changeset with Clause-② no / Metadata-protocol none copied from the claim.",
      "tests": "New CalendarView.noEndNoResize-29197.test.tsx (12 cases) + updated ObjectCalendar.endEditable-29020 (2 cases flipped): 25/25 passed on d28a86c7. Red on main: CalendarView.tsx and calendar-view-renderer.tsx restored from 45e9b2f1 (tests import source, no build) -> 8 failed / 17 passed, every new-behaviour case red, every control green; restored via git checkout HEAD, git diff HEAD empty, blobs equal HEAD. Full package vitest packages/plugin-calendar/ locked: 68 files passed, 502 passed, 95 skipped. turbo type-check --filter=@object-ui/plugin-calendar: 50/50. No ablation beyond the red-on-main restore; the pointer-down guard has no reachable element to press (noted in Acceptance notes).",
      "gates": "dispatch-gates --commands: 66 families, all exit 0 on d28a86c7 (65 unlocked with the PR body as event). Reruns: check:skill-examples first exit 3 PREREQUISITE NOT MET (client-react unbuilt) -> exit 0 after build; vitest run scripts/ locked 1 timeout (check-hand-rolled-comment-mask 'exits 0 as a process', 15 s tree scan) of 171 files -> that file alone 22/22. --ran: 66 derived, 66 run, 0 NOT-MEASURED. check-new-cross-file-line-citations: 0 new. eslint 4 files: 0 errors, warnings equal to base (24, 1), test files 0. Body gates (changeset-no-major, adr-0087, closing-keyword-parity, empty-changeset, partof) exit 0 before pr_create. PR check-runs: in_progress at open.",
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "0 GitHub MCP calls",
      "api_writes": "2 — pr_create via fleet-write relay (run 41434389321) -> #29292; this report comment via post-stamped",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: seat 1 · noted, not filed — .changeset/29020-calendar-resize-without-end-field.md (unreleased) still says the top Resize start handle is unchanged; both ship in one release, so the changelog carries the stale line beside this correction. Outside the claim surface.",
        "carrier: none · noted, not filed — ui/packages/plugin-calendar/README.md one-line summary 'Drag top/bottom edges to resize start/end times' does not mention the no-end-field case; outside the claim surface."
      ]
    }

    Generated by Claude Code

  6. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#1 · zhuangjianguo · session_01QsR2jUJ19MstFvFhjgiYTu

    Landed · 2026-11-02T12:18Z · PR #29292 merged through the merge queue as 3d528bf2 at 2026-11-02T12:17Z (GitHub's clock). ACCEPT 6576030042 at head d28a86c7.

    probe before (3d528bf2~1) now (origin/main)
    resolveAuthoredEndEditable in ui/packages/plugin-calendar/src/calendar-view-renderer.tsx 0 2
    onEventDrop && endEditable && entry.isStart (the top handle's gate) in ui/packages/plugin-calendar/src/CalendarView.tsx 0 1
    CalendarView.noEndNoResize-29197.test.tsx exists no yes

    Fixes #29197 closed this card. pm:dispatched comes off in the same stroke as this note. No seat card waited on this PR.

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

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingdomain:uiDomain lane — seat card indexed by label:pm:seatpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions