compassmock/drizzle/meta/_journal.json
Nicholai 017b0797c7
feat(files): Google Drive integration (#49)
* feat(files): wire file browser to Google Drive API

replace mock file data with real Google Drive integration
via domain-wide delegation (service account impersonation).

- add google drive REST API v3 library (JWT auth, drive
  client, rate limiting, token cache)
- add schema: google_auth, google_starred_files tables,
  users.googleEmail column
- add 16+ server actions for full CRUD (browse, upload,
  download, create folders, rename, move, trash/restore)
- add download proxy route with google-native file export
- add folder-by-ID route (/dashboard/files/folder/[id])
- refactor use-files hook to fetch from server actions
  with mock data fallback when disconnected
- update all file browser components (upload, rename,
  move, context menu, breadcrumb, drag-drop, nav)
- add settings UI: connection, shared drive picker,
  user email mapping
- extract shared AES-GCM crypto from netsuite module
- dual permission: compass RBAC + google workspace ACLs

* docs(files): add Google Drive integration guide

covers architecture decisions, permission model,
setup instructions, and known limitations.

---------

Co-authored-by: Nicholai <nicholaivogelfilms@gmail.com>
2026-02-06 22:18:25 -07:00

118 lines
2.3 KiB
JSON
Executable File

{
"version": "7",
"dialect": "sqlite",
"entries": [
{
"idx": 0,
"version": "6",
"when": 1769219785552,
"tag": "0000_nice_sabra",
"breakpoints": true
},
{
"idx": 1,
"version": "6",
"when": 1769222679525,
"tag": "0001_gorgeous_sebastian_shaw",
"breakpoints": true
},
{
"idx": 2,
"version": "6",
"when": 1769231679439,
"tag": "0002_tricky_harpoon",
"breakpoints": true
},
{
"idx": 3,
"version": "6",
"when": 1769286212480,
"tag": "0003_burly_kabuki",
"breakpoints": true
},
{
"idx": 4,
"version": "6",
"when": 1769287376759,
"tag": "0004_quick_firebrand",
"breakpoints": true
},
{
"idx": 5,
"version": "6",
"when": 1770235828892,
"tag": "0005_concerned_midnight",
"breakpoints": true
},
{
"idx": 6,
"version": "6",
"when": 1770235964505,
"tag": "0006_brainy_vulcan",
"breakpoints": true
},
{
"idx": 7,
"version": "6",
"when": 1770321600000,
"tag": "0007_add_customer_fields",
"breakpoints": true
},
{
"idx": 8,
"version": "6",
"when": 1770320934942,
"tag": "0008_superb_lifeguard",
"breakpoints": true
},
{
"idx": 9,
"version": "6",
"when": 1770343768032,
"tag": "0009_curious_matthew_murdock",
"breakpoints": true
},
{
"idx": 10,
"version": "6",
"when": 1770345545163,
"tag": "0010_busy_shockwave",
"breakpoints": true
},
{
"idx": 11,
"version": "6",
"when": 1770353981978,
"tag": "0011_damp_shiver_man",
"breakpoints": true
},
{
"idx": 12,
"version": "6",
"when": 1770389906158,
"tag": "0012_chilly_lake",
"breakpoints": true
},
{
"idx": 13,
"version": "6",
"when": 1770427704637,
"tag": "0013_curved_ricochet",
"breakpoints": true
},
{
"idx": 14,
"version": "6",
"when": 1770431392946,
"tag": "0014_new_giant_girl",
"breakpoints": true
},
{
"idx": 15,
"version": "6",
"when": 1770439304946,
"tag": "0015_busy_photon",
"breakpoints": true
}
]
}