Skip to content

Update dashboard_overview.html#8

Closed
nathanael-h wants to merge 1 commit into
olivierlambert:mainfrom
nathanael-h:patch-1
Closed

Update dashboard_overview.html#8
nathanael-h wants to merge 1 commit into
olivierlambert:mainfrom
nathanael-h:patch-1

Conversation

@nathanael-h

Copy link
Copy Markdown
Contributor

fix bad route to add calendar source

fix bad route to add calendar source
@codecov-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 13.38%. Comparing base (cbc1373) to head (7a9e508).
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files
@@           Coverage Diff           @@
##             main       #8   +/-   ##
=======================================
  Coverage   13.38%   13.38%           
=======================================
  Files          16       16           
  Lines        5498     5498           
=======================================
  Hits          736      736           
  Misses       4762     4762           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

olivierlambert added a commit that referenced this pull request Mar 12, 2026
…debar

- Fix LOCATION field in ICS events leaking ORGANIZER info (RFC 5545
  line folding caused by trailing spaces after CRLF)
- Fix wrong event times in CalDAV write-back: convert guest-timezone
  times to UTC with Z suffix instead of floating time
- Fix hardcoded "UTC" guest_timezone in approve/confirm handlers,
  now fetched from booking record
- Fix broken "Add a calendar source" link on dashboard overview
  (/dashboard/sources/add → /dashboard/sources/new) (fixes PR #8)
- Show calrs version in dashboard sidebar (closes #7)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@olivierlambert

Copy link
Copy Markdown
Owner

Thanks! Fix included in v0.18.2 (commit d8bfea7). Applied the same fix directly since we were cutting a patch release.

huntervcx pushed a commit to DYB-Corp/calrs that referenced this pull request Jun 3, 2026
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. (olivierlambert#8)
- synth_vcalendar emits DTSTAMP per RFC 5545; EWS doesn't expose a
  stable last-modified, so we use Utc::now(). (olivierlambert#6)
- EWS sync_delta comment rewritten to acknowledge "EWS sources rely
  on full fetches" rather than claiming the cursor gets bootstrapped.
  (olivierlambert#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. (olivierlambert#4)
- format_dt TODO documenting naive-local TZID drift on non-recurring
  items. (olivierlambert#7)
- Autodiscover redirect policy now carries an explicit comment about
  the SSRF residual risk on intermediate Location headers. (olivierlambert#5)
- 054_provider_type.sql explains the calendars.href / calendars.ctag
  reuse for EWS folder ItemId / ChangeKey. (olivierlambert#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>
huntervcx pushed a commit to DYB-Corp/calrs that referenced this pull request Jun 3, 2026
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. (olivierlambert#8)
- synth_vcalendar emits DTSTAMP per RFC 5545; EWS doesn't expose a
  stable last-modified, so we use Utc::now(). (olivierlambert#6)
- EWS sync_delta comment rewritten to acknowledge "EWS sources rely
  on full fetches" rather than claiming the cursor gets bootstrapped.
  (olivierlambert#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. (olivierlambert#4)
- format_dt TODO documenting naive-local TZID drift on non-recurring
  items. (olivierlambert#7)
- Autodiscover redirect policy now carries an explicit comment about
  the SSRF residual risk on intermediate Location headers. (olivierlambert#5)
- 054_provider_type.sql explains the calendars.href / calendars.ctag
  reuse for EWS folder ItemId / ChangeKey. (olivierlambert#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>
olivierlambert pushed a commit that referenced this pull request Jun 4, 2026
* feat(providers): add Microsoft Exchange (EWS) calendar provider

Introduces a generic CalendarProvider trait so calrs is no longer
hard-wired to CalDAV. Adds an EWS implementation targeting on-prem
Exchange 2019 (also compatible with 2016/2013) with Autodiscover,
calendar listing, full + windowed event fetch, create/delete, and
SyncFolderItems delta sync.

The CalDAV path is preserved unchanged behind a thin adapter; sync,
source management, and write-back now dispatch on a new provider_type
column (migration 050). HTTPS-only and SSRF-safe URL validation is
shared across both providers, and Autodiscover candidate URLs are
re-validated before they get hit.

Layout:
  src/providers/     trait + factory + caldav adapter
  src/ews/           soap, autodiscover, operations, parse, ical synth

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fixup(ews): drop unused Context import + dead summary_view, collapse
            duplicate connection-check arms, rustfmt

Cargo.lock is updated by Cargo's first compile after a fresh dependency
add (async-trait); committing it so a clean checkout doesn't churn it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* wip: save ews provider work

* feat: clean sources presets filtered via backend

* fixup(ews): address review blockers + substantive items

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>

---------

Co-authored-by: Arthur Perrot <aperrot@dyb.fr>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
huntervcx pushed a commit to DYB-Corp/calrs that referenced this pull request Jun 25, 2026
…debar

- Fix LOCATION field in ICS events leaking ORGANIZER info (RFC 5545
  line folding caused by trailing spaces after CRLF)
- Fix wrong event times in CalDAV write-back: convert guest-timezone
  times to UTC with Z suffix instead of floating time
- Fix hardcoded "UTC" guest_timezone in approve/confirm handlers,
  now fetched from booking record
- Fix broken "Add a calendar source" link on dashboard overview
  (/dashboard/sources/add → /dashboard/sources/new) (fixes PR olivierlambert#8)
- Show calrs version in dashboard sidebar (closes olivierlambert#7)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
huntervcx added a commit to DYB-Corp/calrs that referenced this pull request Jun 25, 2026
…ert#103)

* feat(providers): add Microsoft Exchange (EWS) calendar provider

Introduces a generic CalendarProvider trait so calrs is no longer
hard-wired to CalDAV. Adds an EWS implementation targeting on-prem
Exchange 2019 (also compatible with 2016/2013) with Autodiscover,
calendar listing, full + windowed event fetch, create/delete, and
SyncFolderItems delta sync.

The CalDAV path is preserved unchanged behind a thin adapter; sync,
source management, and write-back now dispatch on a new provider_type
column (migration 050). HTTPS-only and SSRF-safe URL validation is
shared across both providers, and Autodiscover candidate URLs are
re-validated before they get hit.

Layout:
  src/providers/     trait + factory + caldav adapter
  src/ews/           soap, autodiscover, operations, parse, ical synth

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fixup(ews): drop unused Context import + dead summary_view, collapse
            duplicate connection-check arms, rustfmt

Cargo.lock is updated by Cargo's first compile after a fresh dependency
add (async-trait); committing it so a clean checkout doesn't churn it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* wip: save ews provider work

* feat: clean sources presets filtered via backend

* fixup(ews): address review blockers + substantive items

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. (olivierlambert#8)
- synth_vcalendar emits DTSTAMP per RFC 5545; EWS doesn't expose a
  stable last-modified, so we use Utc::now(). (olivierlambert#6)
- EWS sync_delta comment rewritten to acknowledge "EWS sources rely
  on full fetches" rather than claiming the cursor gets bootstrapped.
  (olivierlambert#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. (olivierlambert#4)
- format_dt TODO documenting naive-local TZID drift on non-recurring
  items. (olivierlambert#7)
- Autodiscover redirect policy now carries an explicit comment about
  the SSRF residual risk on intermediate Location headers. (olivierlambert#5)
- 054_provider_type.sql explains the calendars.href / calendars.ctag
  reuse for EWS folder ItemId / ChangeKey. (olivierlambert#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>

---------

Co-authored-by: Arthur Perrot <aperrot@dyb.fr>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

3 participants