Commit Graph

514 Commits

Author SHA1 Message Date
Jeff Emmett 4416286087 Update task task-025 2025-12-04 16:54:39 -08:00
Jeff Emmett 052c98417d feat: Add Private Workspace zone for data sovereignty (Phase 3)
- PrivateWorkspaceShapeUtil: Frosted glass container shape with:
  - Dashed indigo border for visual distinction
  - Pin/collapse/close buttons in header
  - Dark mode support
  - Position/size persistence to localStorage
  - Helper functions for zone detection

- PrivateWorkspaceTool: Tool for creating workspace zones

- usePrivateWorkspace hook:
  - Creates/toggles workspace visibility
  - Listens for 'add-google-items-to-canvas' events
  - Places items inside the private zone
  - Persists visibility state

- PrivateWorkspaceManager: Headless component that manages
  workspace lifecycle inside Tldraw context

Items added from GoogleExportBrowser will now appear in the
Private Workspace zone as placeholder text shapes (Phase 4
will add proper GoogleItemShape with visual badges).

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 16:54:27 -08:00
Jeff Emmett 6d963f62f1 Create task task-037 2025-12-04 16:49:08 -08:00
Jeff Emmett 58671a1c0b Update task task-025 2025-12-04 16:46:41 -08:00
Jeff Emmett 069ba1510c Update task task-033 2025-12-04 16:46:28 -08:00
Jeff Emmett 33f5dc7e7f refactor: Rename GoogleDataBrowser to GoogleExportBrowser
- Rename component file and interface for consistent naming
- Update all imports and state variables in UserSettingsModal
- Better reflects the purpose as a data export browser

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 16:46:10 -08:00
Jeff Emmett c1acf34ccd Create task task-036 2025-12-04 16:45:11 -08:00
Jeff Emmett 06c9e48999 Update task task-035 2025-12-04 16:41:01 -08:00
Jeff Emmett a754ffab57 feat(components): add GoogleDataBrowser popup modal
Phase 2 of Data Sovereignty Zone implementation:
- Create GoogleDataBrowser component with service tabs (Gmail, Drive, Photos, Calendar)
- Searchable item list with checkboxes for multi-select
- Select All/Clear functionality
- Dark mode support with consistent styling
- "Add to Private Workspace" button
- Privacy note explaining local-only encryption
- Emits 'add-google-items-to-canvas' event for Board.tsx integration

Integration with UserSettingsModal:
- Import and render GoogleDataBrowser when "Open Data Browser" clicked
- Handler for adding selected items to canvas

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 16:40:52 -08:00
Jeff Emmett 2b5a1736d7 Update task task-035 2025-12-04 16:33:48 -08:00
Jeff Emmett c9c8c008b2 feat(settings): add Google Workspace integration card
Phase 1 of Data Sovereignty Zone implementation:
- Add Google Workspace section to Settings > Integrations tab
- Show connection status, import counts (emails, files, photos, events)
- Connect/Disconnect Google account buttons
- "Open Data Browser" button (Phase 2 will implement the browser)
- Add getStoredCounts() and getInstance() to GoogleDataService

Privacy messaging: "Your data is encrypted with AES-256 and stored
only in your browser. Choose what to share to the board."

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 16:33:39 -08:00
Jeff Emmett 8bc3924a10 Merge origin/main into feature/google-export
Bring in all the latest changes from main including:
- Index validation and migration for tldraw shapes
- UserSettingsModal with integrations tab
- CryptID authentication updates
- AI services (image gen, video gen, mycelial intelligence)
- Automerge sync improvements
- Various UI improvements

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 16:29:34 -08:00
Jeff Emmett 35b5d22c4e Update task task-031 2025-12-04 15:42:51 -08:00
Jeff Emmett cd9b36dc21 Update task task-031 2025-12-04 15:37:16 -08:00
Jeff Emmett 47bd1044a1 Update task task-030 2025-12-04 15:37:02 -08:00
Jeff Emmett d9fac31a7a Create task task-035 2025-12-04 15:36:08 -08:00
Jeff Emmett da9467cdac Update task task-030 2025-12-04 15:30:25 -08:00
Jeff Emmett 686dc7c705 Update task task-029 2025-12-04 15:29:05 -08:00
Jeff Emmett eadef4ee36 Create task task-034 2025-12-04 15:24:43 -08:00
Jeff Emmett c42b986e3d Update task task-025 2025-12-04 15:24:32 -08:00
Jeff Emmett 985221d848 Update task task-033 2025-12-04 15:23:14 -08:00
Jeff Emmett e69ed0e867 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 377b8f0bca Update task task-029 2025-12-04 15:21:13 -08:00
Jeff Emmett fb6697a052 Update task task-033 2025-12-04 15:01:40 -08:00
Jeff Emmett ebb3ab661b Create task task-033 2025-12-04 13:44:43 -08:00
Jeff Emmett 477af6ae05 Update task task-028 2025-12-04 13:44:04 -08:00
Jeff Emmett 36ea5e5482 Update task task-028 2025-12-04 13:34:28 -08:00
Jeff Emmett f9f54f9f32 Update task task-028 2025-12-04 13:24:44 -08:00
Jeff Emmett 878227f31d Update task task-028 2025-12-04 13:12:44 -08:00
Jeff Emmett c95ece9fe5 Create task task-032 2025-12-04 13:12:10 -08:00
Jeff Emmett 538dbcd807 Create task task-031 2025-12-04 13:12:10 -08:00
Jeff Emmett f0d261ff98 Create task task-030 2025-12-04 13:12:10 -08:00
Jeff Emmett 1ec6faed56 Create task task-029 2025-12-04 13:12:09 -08:00
Jeff Emmett 37cd086ff0 Create task task-028 2025-12-04 13:12:06 -08:00
Jeff Emmett 808532a1b6 Create task task-027 2025-12-04 13:06:11 -08:00
Jeff Emmett a48708525c Update task task-025 2025-12-04 12:51:27 -08:00
Jeff Emmett c4e50f01fd Create task task-026 2025-12-04 12:48:09 -08:00
Jeff Emmett 16acd3d6ef Update task task-025 2025-12-04 12:43:47 -08:00
Jeff Emmett a50e3dad58 Update task task-001 2025-12-04 12:35:25 -08:00
Jeff Emmett 22ac1d65dd Update task task-025 2025-12-04 12:28:49 -08:00
Jeff Emmett f67ee111e6 Update task task-001 2025-12-04 12:27:04 -08:00
Jeff Emmett 63264cf636 Update task task-001 2025-12-04 12:25:53 -08:00
Jeff Emmett 0ec4e9382f Create task task-025 2025-12-04 12:25:35 -08:00
Jeff Emmett 8cda0d4e28 Merge main into feature/open-mapping, resolve conflicts 2025-12-04 06:51:35 -08:00
Jeff Emmett 8dac699acf Merge branch 'main' into feature/open-mapping 2025-12-04 06:50:37 -08:00
Jeff Emmett 966e1855c1 chore: remove open-mapping files (should be on feature branch) 2025-12-04 06:45:27 -08:00
Jeff Emmett 4f1a6d1314 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 8c90727b93 Create task task-024 2025-12-04 06:30:57 -08:00
Jeff Emmett 7a471b0e37 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 068ff7d3be Merge main, resolve conflict taking remote 2025-12-04 15:04:22 +01:00