Commit graph

2 commits

Author SHA1 Message Date
callumalpass
73fcaf30ea feat(i18n): complete missing translations and internationalize hardcoded strings
Complete missing translations for all languages:
- de, es, fr: All missing keys translated (100% coverage for existing keys)
- ja, ru, zh: Missing keys translated and stale keys updated

Add 159 new translation keys for previously hardcoded strings:
- modals.deviceCode (12 keys)
- modals.icsEventInfo (18 keys)
- modals.timeblockInfo (23 keys)
- modals.timeblockCreation (20 keys)
- modals.icsNoteCreation (16 keys)
- views.stats (25 keys)
- views.agenda, views.notes, views.kanban (additional keys)
- components.dateContextMenu (10 keys)
- components.subgroupMenuBuilder (10 keys)
- notices (23 keys)

Update source files to use i18n:
- 5 modal files
- 5 view files
- 3 component files
- OAuthService, FilterBar

Translation status:
- de, es: 100% (1704/1704)
- fr, ja, ru, zh: ~90% of new keys translated
2025-11-02 20:30:20 +11:00
callumalpass
f007bf1a7c
feat: add OAuth 2.0 calendar integration for Google and Microsoft Calendar (#997)
Adds comprehensive OAuth 2.0 integration for Google Calendar and Microsoft Calendar
with two authentication modes: Quick Setup (Device Flow) and Advanced Setup (standard
OAuth flow with user credentials).

## Features

**Calendar Providers**
- Google Calendar and Microsoft Calendar integration with full CRUD operations
- Unified CalendarProvider abstraction for extensibility
- Events display in Bases calendar view with drag-and-drop scheduling

**Authentication**
- Quick Setup: OAuth 2.0 Device Flow (RFC 8628) - requires license key, no OAuth app configuration needed
- Advanced Setup: Standard OAuth flow with PKCE - use your own Google Cloud/Azure credentials

**Sync & Performance**
- Incremental sync using sync tokens (Google) and delta links (Microsoft)
- Exponential backoff retry logic for rate limiting
- Token refresh with mutex pattern to prevent race conditions
- Automatic refresh every 15 minutes

## Technical Implementation

**New Services**
- OAuthService: OAuth flows, token management, and revocation
- GoogleCalendarService: Google Calendar API client
- MicrosoftCalendarService: Microsoft Graph API client
- LicenseService: Lemon Squeezy license validation
- CalendarProvider: Abstract base class for calendar integrations

**Error Handling**
- Custom error types for calendar operations
- Validation helpers for IDs and required fields
- Graceful handling of expired tokens and API errors

**Security**
- Device Flow uses only public client IDs (no secrets bundled)
- PKCE support for standard OAuth flow
- Tokens stored securely in Obsidian's data folder
- Token revocation on disconnect

## Testing

- Comprehensive test coverage: 1,423 tests passing
- Tests cover CRUD operations, error handling, rate limiting, and timezone handling
- Manually tested with real Google and Microsoft accounts

## Documentation

- Setup instructions in docs/calendar-setup.md
- Users configure via Settings → Integrations → Calendar
2025-10-26 16:40:35 +11:00