You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Blockers (from review):
- Migration 050_provider_type renumbered to 054_provider_type to avoid
collision with upstream main's 051-053. src/db.rs migration array +
CLAUDE.md index updated.
- Migration-count assertions in db.rs tests bumped from 50 to 54.
Substantive review items folded in:
- sync_folder_items now caps at 200 SOAP iterations; a server that
never sets IncludesLastItemInRange=true returns partial results and
is resumed from the latest cursor next sync. (#8)
- synth_vcalendar emits DTSTAMP per RFC 5545; EWS doesn't expose a
stable last-modified, so we use Utc::now(). (#6)
- EWS sync_delta comment rewritten to acknowledge "EWS sources rely
on full fetches" rather than claiming the cursor gets bootstrapped.
(#3, option A)
- fetch_events_since wired into sync_ews_source with the same 90-day
lookback used by the CalDAV path. The EWS impl uses CalendarView
(server-side window). remove_orphaned_ews_events now takes the same
since_prefix scoping as the CalDAV variant so events outside the
window are not flagged as orphans. (#4)
- format_dt TODO documenting naive-local TZID drift on non-recurring
items. (#7)
- Autodiscover redirect policy now carries an explicit comment about
the SSRF residual risk on intermediate Location headers. (#5)
- 054_provider_type.sql explains the calendars.href / calendars.ctag
reuse for EWS folder ItemId / ChangeKey. (#9)
- extract_vcalendar comment corrected: the \r\n /\r\n\t replacements
are RFC 5545 §3.1 line-fold unfolding, not "stray indentation".
Rebase side-effects:
- SSRF guard now uses upstream's CALRS_ALLOW_PRIVATE_HOSTS allowlist
(hostname-scoped) instead of the previous boolean toggle. private_
host_allowlist() is exposed for the serve startup WARN log.
- Sources flow (commands/source.rs, commands/sync.rs, web/mod.rs)
reconciled with upstream's OAuth2 dispatch + orphan-cancel work:
EWS sources go through the provider trait, CalDAV sources keep the
CaldavClient path (basic-auth or OAuth2 unchanged).
- new sync_ews_source/upsert_calendar_provider/upsert_provider_events
helpers in commands/sync.rs to keep the EWS path off the CalDAV
CaldavClient signature.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments