Expose DAV source selection and conflict states - #254
Conversation
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
|
Warning Review limit reached
More reviews will be available in 36 minutes and 2 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (13)
📝 WalkthroughWalkthroughThis PR implements explicit user selection of calendar and WebDAV writeback sources, surfaces ETag/If-Match state before intent creation, maps 409 HTTP responses to If-Match/ETag conflict messages, and adds mobile drawer scroll-locking. Governance rules, plan documentation, component state tracking, and test coverage are updated to support the new writeback source selection and conflict-handling behavior. ChangesCalendar/WebDAV Writeback Source Selection & Conflict UI
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
PR governance metadata gate is not ready for
|
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@frontend/src/app/calendar/page.test.tsx`:
- Around line 167-218: The test "lets the user choose a specific customer-owned
calendar source before intent creation" uses fetchMock to intercept
"/api/calendar/writeback-sources" and "/api/calendar/writeback-intent" but
doesn't assert the signed-session Authorization header; update the fetchMock
branch that handles "/api/calendar/writeback-intent" to assert init?.headers
includes an Authorization header with a Bearer token (e.g., check header key
"Authorization" and that its value starts with "Bearer "), so the test verifies
the signed-session/authenticated request path end-to-end while keeping the
existing body and response assertions in the same fetchMock handler.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 44573031-bb75-4566-853f-e5d4ad54f082
📒 Files selected for processing (13)
AGENTS.mdREADME.mddocs/plans/2026-05-27-calendar-writeback-intent-ui.mddocs/plans/2026-05-27-data-webdav-writeback-intent-ui.mddocs/plans/2026-05-28-dav-source-selection-conflict-ui.mdfrontend/src/app/calendar/page.test.tsxfrontend/src/app/data/page.test.tsxfrontend/src/components/CalendarLayout.tsxfrontend/src/components/DashboardLayout.tsxfrontend/src/components/DataLayout.tsxfrontend/tests/e2e/dashboard-branding.spec.tsfrontend/tests/e2e/helpers.tsfrontend/tests/e2e/mobile-hamburger.spec.ts
84a61ff to
99373bf
Compare
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
|
Current head Evidence:
Temporary gate action planned:
|
Summary
409as If-Match/ETag conflict instead of a generic failure.Verification
npm cinpm test -- src/app/calendar/page.test.tsx src/app/data/page.test.tsxnpm run lint -- src/components/CalendarLayout.tsx src/components/DataLayout.tsx src/components/DashboardLayout.tsx src/app/calendar/page.test.tsx src/app/data/page.test.tsx tests/e2e/mobile-hamburger.spec.ts tests/e2e/dashboard-branding.spec.ts tests/e2e/helpers.tsnpm run typecheckPOSTCSS_WORKERS=1 DISABLE_POSTCSS_WORKERS=true NEXT_STATIC_GENERATION_MAX_CONCURRENCY=1 NEXT_STATIC_GENERATION_MIN_PAGES_PER_WORKER=100 npm run buildenv -u NO_COLOR -u FORCE_COLOR LIVE_BASE_URL=http://127.0.0.1:18198 PLAYWRIGHT_PORT=18198 npm run test:e2e -- tests/e2e/dashboard-branding.spec.ts tests/e2e/mobile-hamburger.spec.ts --project=desktop -g "calendar writeback|data WebDAV|hamburger menu toggles"Screenshot evidence inspected
calendar-writeback-intent-desktop.pngcalendar-writeback-intent-mobile.pngcalendar-writeback-intent-mobile-scroll.pngdata-webdav-writeback-intent-desktop.pngdata-webdav-writeback-intent-mobile.pngdata-webdav-writeback-intent-mobile-scroll.pngmobile-hamburger-open.pngmobile-hamburger-open-scrolled.pngNotes
Summary by CodeRabbit
Release Notes
New Features
Tests
Documentation