Skip to content

feat(org-calendar): link back to the appointment in the event description - #206

Merged
luflow merged 2 commits into
mainfrom
claude/github-issue-205-e0mm69
Sep 3, 2026
Merged

feat(org-calendar): link back to the appointment in the event description#206
luflow merged 2 commits into
mainfrom
claude/github-issue-205-e0mm69

Conversation

@luflow

@luflow luflow commented Sep 3, 2026

Copy link
Copy Markdown
Owner

The deep link was only in the VEVENT URL property, which the Calendar app
does not surface, so the "--- Attendance ---" block told people how many
were coming but gave them no way to answer without hunting for the app.

The link now sits at the end of that block, reusing the "View or change
your response" wording of the personal iCal feed. It stays outside the
response-summary switch: that switch exists to keep a calendar write per
answer out of the activity stream, and the link never changes.

Because the block is now always present, DESCRIPTION is too — clearing an
appointment's description leaves the block rather than dropping the
property. Renamed SUMMARY_SEPARATOR/stripResponseSummary to
BLOCK_SEPARATOR/stripAppendedBlock so the names still say what the marker
covers; stripping is unchanged, so the calendar-to-app echo stays a no-op.

Existing events pick the link up on the next sync of the appointment or
via the admin's "Sync upcoming appointments now" button — no forced mass
write on upgrade.

Closes #205

…tion

The deep link was only in the VEVENT URL property, which the Calendar app
does not surface, so the "--- Attendance ---" block told people how many
were coming but gave them no way to answer without hunting for the app.

The link now sits at the end of that block, reusing the "View or change
your response" wording of the personal iCal feed. It stays outside the
response-summary switch: that switch exists to keep a calendar write per
answer out of the activity stream, and the link never changes.

Because the block is now always present, DESCRIPTION is too — clearing an
appointment's description leaves the block rather than dropping the
property. Renamed SUMMARY_SEPARATOR/stripResponseSummary to
BLOCK_SEPARATOR/stripAppendedBlock so the names still say what the marker
covers; stripping is unchanged, so the calendar-to-app echo stays a no-op.

Existing events pick the link up on the next sync of the appointment or
via the admin's "Sync upcoming appointments now" button — no forced mass
write on upgrade.

Closes #205
…ng stub

Follow-up cleanup on the #205 change.

The link line was spelled out twice — once here, once in the personal iCal
feed — and what the two copies shared was a Transifex source string, so a
reword in one would have forked it into a second string to translate with
nothing checking. IcalService::appointmentLinkLine() now owns it.

escapeIcalText() joins unfoldIcalContent() and icalPropertyName() as a
static pure transform, for the reason their docblock already gives: the
unit test had started restating the escaping rule in a stub, and the copy
was lossy — it reproduced newlines but not the ,/;/\ escaping, so the
DESCRIPTION assertions described a shape production never emits. Typing
generateVEvent()'s $l as IL10N was needed to pass it on, and takes 27
entries out of the psalm baseline.

The four description tests differed only in their inputs and are now one
data provider. Added the round trip they were all missing: everything the
sync appends is what stripAppendedBlock takes off again — the invariant
the marker exists for, previously asserted only as two hand-written halves
that could drift. The e2e fixture now carries the block the app actually
writes, link line included.

Also: the summary switch takes the summary out, not the block, and
managedProperties() no longer offers the description as its example of a
property that can be absent.
@luflow
luflow merged commit 3e7dad6 into main Sep 3, 2026
6 checks passed
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.

[Feature] Sync with Organizational Calendar: Add Link to attendance in description

2 participants