Skip to content

fix: show reminder URLs in Reminders notes#60

Merged
steipete merged 8 commits into
openclaw:mainfrom
TurboTheTurtle:fix-reminder-url-field
Jul 1, 2026
Merged

fix: show reminder URLs in Reminders notes#60
steipete merged 8 commits into
openclaw:mainfrom
TurboTheTurtle:fix-reminder-url-field

Conversation

@TurboTheTurtle

@TurboTheTurtle TurboTheTurtle commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Closes #59.

Keeps --url in the public EventKit URL field and also mirrors it to one tool-owned remindctl URL (managed): ... notes line so the link is visible in Reminders.app. edit --url replaces that managed line, notes-only edits retain it, and --clear-url removes the EventKit value plus only the managed line while preserving authored notes.

This rewrites the contributor baseline to make the existing --url command satisfy the reported behavior directly; no additional opt-in flag is required. Authored URL: ... and plain remindctl URL: ... notes remain untouched.

Proof

  • swift test --filter ReminderURLNoteMirrorTests: 11 focused URL-mapping tests passed.
  • make check: strict formatting/SwiftLint passed; 65 tests passed; RemindCore line coverage 91.1% (613/673, 90% required).
  • make build: signed release CLI built successfully; built add --help/edit --help show the EventKit + Reminders notes contract.
  • make docs-site: documentation site built successfully.
  • Live macOS 26.5.2 / Swift 6.3.3 proof used one uniquely named disposable list/reminder: add and info returned the EventKit URL plus managed notes link; notes-only edit retained it; URL edit replaced it; --clear-url removed the URL and only the managed line; reminder and list were deleted; cleanup verified no test list remained.
  • Codex autoreview: accepted and fixed one notes-only-edit finding; rerun found no code defects. A later generated-state P3 was rejected because the file is globally ignored, untracked, and absent from this PR diff.

No release, version, tag, or registry action included.

@clawsweeper

clawsweeper Bot commented Jun 30, 2026

Copy link
Copy Markdown

Codex review: needs maintainer review before merge. Reviewed June 30, 2026, 7:36 PM ET / 23:36 UTC.

Summary
The PR adds an opt-in --show-url-in-notes flag for add/edit URL operations, mirrors/removes a managed notes line when opted in, preserves default EventKit URL behavior, and updates docs/help/tests.

Reproducibility: not applicable. for this PR as a patch review. The linked issue has user screenshots, and the PR body reports live macOS/EventKit proof for the proposed opt-in behavior.

Review metrics: 2 noteworthy metrics.

  • Diff scope: 12 files changed, +321/-16. The PR spans core EventKit writes, CLI command surface, docs/help, and regression tests.
  • New CLI option: 1 opt-in flag added to add/edit. The flag creates a new user-facing contract because it writes a managed line into persisted reminder notes.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #59
Summary: This PR is the candidate fix for the open Reminders.app-visible URL issue; earlier URL read/write work is related but did not settle the notes-mirroring contract.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🐚 platinum hermit
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P2] Get maintainer approval for the opt-in managed-notes contract before merge.

Mantis proof suggestion
A short macOS Reminders.app visual proof would help maintainers judge the app-visible notes behavior and default-notes preservation. A maintainer can ask Mantis to capture proof by posting this exact PR comment:

@openclaw-mantis visual task: verify on macOS that default add --url leaves notes unchanged and add/edit --show-url-in-notes manages one visible URL notes line.

Risk before merge

  • [P1] Merging this PR endorses an opt-in tool-owned remindctl URL (managed): ... notes line as the supported app-visible URL workaround, which is a product contract green CI cannot settle.

Maintainer options:

  1. Approve the managed-notes contract
    A maintainer can explicitly accept the opt-in remindctl URL (managed): ... notes line as supported behavior before merging.
  2. Choose a different URL-visibility path
    If maintainers do not want remindctl-owned note text, pause or close this PR and redirect the linked issue toward a different Reminders.app visibility contract.

Next step before merge

  • [P2] Maintainer judgment is needed for the new opt-in managed-notes contract; there is no narrow automated repair to queue.

Security
Cleared: No concrete security or supply-chain concern was found; the diff changes Swift source, tests, README, and docs only.

Review details

Best possible solution:

Land the opt-in managed-notes path only if maintainers accept it as the supported answer for #59; otherwise redirect that issue to a different app-visible URL approach.

Do we have a high-confidence way to reproduce the issue?

Not applicable for this PR as a patch review. The linked issue has user screenshots, and the PR body reports live macOS/EventKit proof for the proposed opt-in behavior.

Is this the best way to solve the issue?

Mostly yes: the latest opt-in shape preserves existing default URL behavior and isolates managed notes writes. The remaining question is whether OpenClaw should own that notes-mirroring contract.

AGENTS.md: not found in the target repository.

Codex review notes: model internal, reasoning high; reviewed against 4e8643ff0ed9.

Label changes

Label changes:

  • add merge-risk: 🚨 other: The main unresolved merge risk is the product contract for a remindctl-managed notes line, which is not covered by compatibility or CI alone.

Label justifications:

  • P2: This is a normal-priority improvement to a released URL workflow with limited blast radius but real maintainer product judgment.
  • merge-risk: 🚨 other: The main unresolved merge risk is the product contract for a remindctl-managed notes line, which is not covered by compatibility or CI alone.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (live_output): The PR body and latest comment describe live macOS/EventKit proof for unchanged default behavior and opt-in add/edit/clear managed-line behavior.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body and latest comment describe live macOS/EventKit proof for unchanged default behavior and opt-in add/edit/clear managed-line behavior.
Evidence reviewed

What I checked:

Likely related people:

  • jeremylahners: The merged URL-support PR added add --url, edit --url, URL model fields, and EventKit URL create/update assignments that this PR extends. (role: introduced URL write path; confidence: high; commits: 35ca6647e73a, 71c1e1739738; files: Sources/RemindCore/EventKitStore.swift, Sources/RemindCore/Models.swift, Sources/remindctl/Commands/AddCommand.swift)
  • steipete: Recent history shows URL metadata exposure, URL validation/test follow-up, and v0.3.1 release work around the affected URL contract. (role: recent URL-area contributor and release follow-up; confidence: high; commits: 57a73aaae14a, 8162390e1f4e, 04fbfd02e76f; files: Sources/RemindCore/EventKitStore.swift, Sources/RemindCore/Models.swift, Sources/remindctl/CommandHelpers.swift)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal priority bug or improvement with limited blast radius. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. labels Jun 30, 2026
@TurboTheTurtle

Copy link
Copy Markdown
Contributor Author

@openclaw-mantis visual task: verify on macOS that remindctl add/edit --url mirrors one URL line into Reminders.app notes and --clear-url removes it.

@TurboTheTurtle

Copy link
Copy Markdown
Contributor Author

Added live Reminders.app proof to the PR body for add, edit, and clear-url behavior. @clawsweeper re-review

@clawsweeper clawsweeper Bot added proof: sufficient Contributor real behavior proof is sufficient. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 30, 2026
@TurboTheTurtle

Copy link
Copy Markdown
Contributor Author

Addressed the authored-note compatibility finding by switching the generated mirror to a tool-owned remindctl URL: ... line and preserving authored URL: ... notes. Updated proof and validation in the PR body. @clawsweeper re-review

@clawsweeper clawsweeper Bot added rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Jun 30, 2026
@TurboTheTurtle

TurboTheTurtle commented Jun 30, 2026

Copy link
Copy Markdown
Contributor Author

Fixed the notes-only preservation finding: when no URL mirror is being added, replaced, or cleared, authored notes now pass through unchanged, including spacing and empty strings. make check passes on the updated head. @clawsweeper re-review

@TurboTheTurtle

Copy link
Copy Markdown
Contributor Author

Updated head 65171b1 fixes the notes-only preservation finding and make check passes. @clawsweeper re-review

@TurboTheTurtle

Copy link
Copy Markdown
Contributor Author

Updated head 523a84c preserves non-managed note text exactly around URL add/replace/clear, including whitespace, blank lines, empty strings, and newline style. make check passes. @clawsweeper re-review

@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Jun 30, 2026
@TurboTheTurtle

Copy link
Copy Markdown
Contributor Author

Updated head 2cd2771 preserves authored empty notes on URL clear and make check passes with the focused regression. The remaining notes-mirror default is a maintainer product-contract decision. @clawsweeper re-review

@TurboTheTurtle

Copy link
Copy Markdown
Contributor Author

Current head 2cd2771 fixes the empty-string URL-clear edge and make check passes. The remaining notes-mirror default/prefix ownership question is a maintainer contract decision rather than a contributor code repair. @clawsweeper re-review

@TurboTheTurtle

Copy link
Copy Markdown
Contributor Author

Updated head fa22f14 uses an explicit remindctl URL (managed): ... line, preserves authored plain remindctl URL: ... notes, and has fresh live EventKit proof plus make check. @clawsweeper re-review

@TurboTheTurtle

Copy link
Copy Markdown
Contributor Author

Updated current head b6ca899 to preserve the existing default --url EventKit behavior and make Reminders.app-visible notes mirroring explicit via --show-url-in-notes. Fresh make check and live EventKit proof cover default notes unchanged plus opt-in add/edit/clear managed-line behavior. @clawsweeper re-review

@clawsweeper clawsweeper Bot added rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels Jun 30, 2026
@clawsweeper clawsweeper Bot added status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. and removed status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. labels Jun 30, 2026
@steipete
steipete force-pushed the fix-reminder-url-field branch from b6ca899 to cd7e8f2 Compare July 1, 2026 05:55
@steipete steipete changed the title Show reminder URLs in Reminders notes fix: show reminder URLs in Reminders notes Jul 1, 2026
@steipete
steipete merged commit 5ac23a9 into openclaw:main Jul 1, 2026
3 checks passed
@steipete

steipete commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator

Landed as 5ac23a9. Thanks @TurboTheTurtle for the contribution and iterative proof work.

Verification:

  • swift test --filter ReminderURLNoteMirrorTests: 11 focused tests passed.
  • make check: strict format/SwiftLint passed; 65 tests passed; RemindCore coverage 91.1% (613/673, 90% required).
  • make build: signed release CLI built; built add/edit help exposes the EventKit + Reminders notes behavior.
  • make docs-site: docs built successfully.
  • Live macOS 26.5.2 proof: one uniquely named disposable list/reminder exercised add, info, notes-only edit, URL edit, --clear-url, reminder deletion, list deletion, and verified cleanup. EventKit URL and managed notes stayed synchronized; authored notes survived clear.
  • Exact-head CI: run 28496829727 passed; both Socket Security checks passed; no unresolved review threads.
  • Autoreview: one valid notes-only-edit finding accepted and fixed; code rerun clean. One generated-state P3 rejected because the file was globally ignored, untracked, and absent from the PR diff.

No release, version, tag, or registry action performed.

@TurboTheTurtle
TurboTheTurtle deleted the fix-reminder-url-field branch July 1, 2026 05:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. P2 Normal priority bug or improvement with limited blast radius. proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

--url flag is ignored when creating reminders

2 participants