KolektivComputer / KolektivComputer/kalendee

OAuth: Connected Accounts settings UI

Open
#1 0 comments 0 reactions 1 assignee Claimed by @LizAinslie View on GitHub
c/enhancement c/feature i/apple i/discord i/gcal t/server t/web
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.