Commit Graph

552 Commits

Author SHA1 Message Date
Jeff Emmett 639e25d0d4 Update task task-031 2025-12-04 15:42:51 -08:00
Jeff Emmett 981cd5a61b Update task task-031 2025-12-04 15:37:16 -08:00
Jeff Emmett e948a90879 Update task task-030 2025-12-04 15:37:02 -08:00
Jeff Emmett 2ca2d33f94 Create task task-035 2025-12-04 15:36:08 -08:00
Jeff Emmett f14023764a Update task task-030 2025-12-04 15:30:25 -08:00
Jeff Emmett 0dff1fa04e Update task task-029 2025-12-04 15:29:05 -08:00
Jeff Emmett d1641a0132 Create task task-034 2025-12-04 15:24:43 -08:00
Jeff Emmett f750e05012 Update task task-025 2025-12-04 15:24:32 -08:00
Jeff Emmett 600fc738f9 Update task task-033 2025-12-04 15:23:14 -08:00
Jeff Emmett 58ff544c46 feat: implement Google Data Sovereignty module for local-first data control
Core modules:
- encryption.ts: WebCrypto AES-256-GCM, HKDF key derivation, PKCE utilities
- database.ts: IndexedDB schema for gmail, drive, photos, calendar
- oauth.ts: OAuth 2.0 PKCE flow with encrypted token storage
- share.ts: Create tldraw shapes from encrypted data
- backup.ts: R2 backup service with encrypted manifest

Importers:
- gmail.ts: Gmail import with pagination and batch storage
- drive.ts: Drive import with folder navigation, Google Docs export
- photos.ts: Photos thumbnail import (403 issue pending investigation)
- calendar.ts: Calendar import with date range filtering

Test interface at /google route for debugging OAuth flow.

Known issue: Photos API returning 403 on some thumbnail URLs - needs
further investigation with proper OAuth consent screen setup.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:22:40 -08:00
Jeff Emmett db9593b90d Update task task-029 2025-12-04 15:21:13 -08:00
Jeff Emmett aadad1bf84 Update task task-033 2025-12-04 15:01:40 -08:00
Jeff Emmett 2c1d4b36a7 Create task task-033 2025-12-04 13:44:43 -08:00
Jeff Emmett bb6a930730 Update task task-028 2025-12-04 13:44:04 -08:00
Jeff Emmett f5e665eecc Update task task-028 2025-12-04 13:34:28 -08:00
Jeff Emmett f9c955e275 Update task task-028 2025-12-04 13:24:44 -08:00
Jeff Emmett bca3c5c68d Update task task-028 2025-12-04 13:12:44 -08:00
Jeff Emmett 35659fbfbb Create task task-032 2025-12-04 13:12:10 -08:00
Jeff Emmett 3502081f1d Create task task-031 2025-12-04 13:12:10 -08:00
Jeff Emmett 82d20dd9c7 Create task task-030 2025-12-04 13:12:10 -08:00
Jeff Emmett 30ecacb4ca Create task task-029 2025-12-04 13:12:09 -08:00
Jeff Emmett 48320ac4e2 Create task task-028 2025-12-04 13:12:06 -08:00
Jeff Emmett 7d74bf2ad9 Create task task-027 2025-12-04 13:06:11 -08:00
Jeff Emmett cf083c8b62 Update task task-025 2025-12-04 12:51:27 -08:00
Jeff Emmett 28dfbaf565 Create task task-026 2025-12-04 12:48:09 -08:00
Jeff Emmett f4ad474814 Update task task-025 2025-12-04 12:43:47 -08:00
Jeff Emmett d094c2b398 Update task task-001 2025-12-04 12:35:25 -08:00
Jeff Emmett d5e612ba7c Update task task-025 2025-12-04 12:28:49 -08:00
Jeff Emmett 64d07bdcab Update task task-001 2025-12-04 12:27:04 -08:00
Jeff Emmett 8f2026ef9c Update task task-001 2025-12-04 12:25:53 -08:00
Jeff Emmett 990974f7d0 Create task task-025 2025-12-04 12:25:35 -08:00
Jeff Emmett f726bac67a Merge main into feature/open-mapping, resolve conflicts 2025-12-04 06:51:35 -08:00
Jeff Emmett dd4861458d Merge branch 'main' into feature/open-mapping 2025-12-04 06:50:37 -08:00
Jeff Emmett 7ef0533a8f chore: remove open-mapping files (should be on feature branch) 2025-12-04 06:45:27 -08:00
Jeff Emmett 2747113348 feat: add open-mapping collaborative route planning module
Introduces a comprehensive mapping and routing layer for the canvas
that provides advanced route planning capabilities beyond Google Maps.

Built on open-source foundations:
- OpenStreetMap for base map data
- OSRM/Valhalla for routing engines
- MapLibre GL JS for map rendering
- VROOM for route optimization
- Y.js for real-time collaboration

Features planned:
- Multi-path routing with alternatives comparison
- Real-time collaborative waypoint editing
- Layer management (basemaps, overlays, custom GeoJSON)
- Calendar/scheduling integration
- Budget tracking per waypoint/route
- Offline tile caching via PWA

Includes:
- TypeScript types for routes, waypoints, layers
- React hooks for map instance, routing, collaboration
- Service abstractions for multiple routing providers
- Docker Compose config for backend deployment
- Setup script for OSRM data preparation

Backlog task: task-024

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 06:39:26 -08:00
Jeff Emmett 48818816c4 Create task task-024 2025-12-04 06:30:57 -08:00
Jeff Emmett 0e812be6b1 fix: properly validate tldraw fractional indexing format
The previous validation allowed "b1" which is invalid because 'b' prefix
expects 2-digit integers (10-99), not 1-digit. This caused ValidationError
when selecting old format content.

Now validates that:
- 'a' prefix: 1 digit (a0-a9)
- 'b' prefix: 2 digits (b10-b99)
- 'c' prefix: 3 digits (c100-c999)
- etc.

Invalid indices are converted to 'a1' as a safe default.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 06:30:50 -08:00
Jeff Emmett 717c7de7ea Merge main, resolve conflict taking remote 2025-12-04 15:04:22 +01:00
Jeff Emmett 12f41ded44 Update backlog tasks from server 2025-12-04 15:02:54 +01:00
Jeff Emmett f8790c9934 docs: add data sovereignty architecture for Google imports and local file uploads
- Add GOOGLE_DATA_SOVEREIGNTY.md: comprehensive plan for secure local storage
  of Gmail, Drive, Photos, Calendar data with client-side encryption
- Add LOCAL_FILE_UPLOAD.md: multi-item upload tool with same encryption model
  for local files (images, PDFs, documents, audio, video)
- Update OFFLINE_STORAGE_FEASIBILITY.md to reference new docs

Key features:
- IndexedDB encrypted storage with AES-256-GCM
- Keys derived from WebCrypto auth (never leave browser)
- Safari 7-day eviction mitigations
- Selective sharing to boards via Automerge
- Optional encrypted R2 backup

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 04:47:22 -08:00
Jeff Emmett 5e176f761f Update task task-018 2025-12-04 04:27:37 -08:00
Jeff Emmett 808d9e0d40 Update task task-017 2025-12-04 04:27:35 -08:00
Jeff Emmett 0ed1864ec0 Update task task-001 2025-12-04 04:13:56 -08:00
Jeff Emmett 5c58dc6579 Update task task-001 2025-12-04 04:09:47 -08:00
Jeff Emmett dbb0fb841e chore: clean up duplicate task-016 files
Removed auto-generated duplicates that were overwritten.
Correct tasks are now task-018 and task-019.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 04:04:57 -08:00
Jeff Emmett 4ff3ea5eee Update task task-015 2025-12-04 04:03:00 -08:00
Jeff Emmett d941ea937e Update task task-018 2025-12-04 04:02:57 -08:00
Jeff Emmett 458d933a1d Update task task-017 2025-12-04 04:02:50 -08:00
Jeff Emmett 9c15d7e048 Create task task-019 2025-12-04 04:02:22 -08:00
Jeff Emmett a9cb298979 Create task task-018 2025-12-04 04:02:21 -08:00