KolektivComputer / KolektivComputer/kalendee
OAuth: Connected Accounts settings UI
- Dominant language
- Kotlin
- Stars
- 0
- Forks
- 0
- Avg merge
- 11h 20m
- Merged PRs (30d)
- 23
Description
## Context
The Keel pack settings page has account/appearance/notifications tabs, but nothing consumes the OAuth types and actions generated by the `feat/oauth-foundation` branch. This issue adds the `connections` tab: per-provider connect buttons, account cards, calendar selection, sync status/last error, disconnect, and "Sync now". The types/actions already exist in `server/pack/src/lib/page-types.ts` (`ProviderSummary`, `ConnectionSummary`, `kalendee.connectProvider`, `kalendee.disconnectAccount`), so most of this is pack UI work against generated contracts.
## Tasks
- [ ] Add the `connections` tab to the settings nav and `parseSettingsTab` routing (keep existing tabs working)
- [ ] Per-provider connect buttons using `kalendee.connectProvider`; open the returned start URL and handle the return
- [ ] Account cards: provider icon/badge, account email, display name, status (`active` / `needs_reauth` / `disabled`)
- [ ] Calendar selection: list discovered external calendars with enable/disable toggles
- [ ] Status: last sync time, last error, `needs_reauth` call-to-action linking to reconnect
- [ ] Disconnect with confirmation (`kalendee.disconnectAccount`)
- [ ] "Sync now" button (wired once #1 exists; disabled with a hint until then)
- [ ] OAuth callback result messaging (success / denied / error / registration gated) on return
- [ ] daisyUI theming, lucide deep-import icons, accessible labels/tooltips; `pnpm typecheck` clean
## References
- `docs/external-calendars.md` — M1: Settings "Connected Accounts" tab
- `server/pack/src/pages/kalendee/settings/+page.svelte`
- `server/pack/src/lib/page-types.ts` — `ProviderSummary`, `ConnectionSummary`, `kalendee.connectProvider`, `kalendee.disconnectAccount`
- `server/src/main/kotlin/dev/kolektiv/kalendee/web/ConnectionActions.kt`
- `server/src/main/kotlin/dev/kolektiv/kalendee/api/OAuthRoutes.kt`
- `server/src/main/kotlin/dev/kolektiv/kalendee/oauth/ConnectionService.kt`
## Dependencies
- **Depends on branch `feat/oauth-foundation`** (page types, actions, DI) — currently being restored.
- "Sync now" and calendar selection depend on #1's discovery/pull; the tab can ship with connect/disconnect first.
Contributor guide
Assessment
This issue has not been assessed yet.