-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Google Drive uploads + unified Storage layer #1784
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 66 commits
Commits
Show all changes
71 commits
Select commit
Hold shift + click to select a range
25a5e50
feat(web-domain): add Storage schemas and upload target models
richiemcilroy 57b5395
feat(web-domain): attach storage integration metadata to Video
richiemcilroy b0b2594
feat(database): add storage integrations and object metadata tables
richiemcilroy b1ab930
feat(web-backend): add Storage Effect service for S3 and Google Drive
richiemcilroy a35d7ad
chore(web-backend): export storage integration helpers from package
richiemcilroy 0def2ca
feat(web-backend): map storage integration ids in VideosRepo
richiemcilroy d5e694b
feat(web-backend): route video storage through unified Storage service
richiemcilroy a53eead
refactor(web-backend): surface StorageError in Videos RPC mapping
richiemcilroy 41da9a9
fix(loom): default storage integration on imported videos
richiemcilroy fb119f5
feat(api-contract): add desktop storage integration RPC shapes
richiemcilroy ba5eec6
feat(web): add database video decoder for storage-aware domain
richiemcilroy f304b24
feat(web): add Google Drive storage quota cache helpers
richiemcilroy 6863e85
feat(web): add upload-target client for Drive resumable uploads
richiemcilroy 021fdc1
feat(web): register Storage layer in ManagedRuntime dependencies
richiemcilroy b7f75d1
feat(web api): add authenticated Google Drive object streaming route
richiemcilroy 966bb17
feat(web api): add desktop Google Drive storage integration routes
richiemcilroy 276b432
feat(web api): wire desktop uploads to Storage and quota invalidation
richiemcilroy 65fac13
feat(web api): route multipart uploads through Storage access layer
richiemcilroy 9097eb3
feat(web api): align playlist thumbnail and webhook paths with Storage
richiemcilroy e6a5c3f
feat(actions): resolve video operations against Storage backends
richiemcilroy af94f6c
feat(workflows): propagate storage integration across video jobs
richiemcilroy 2259a56
chore(web): regenerate workflow automation manifest snapshot
richiemcilroy 9983a6b
feat(web): teach web recorder uploads about Drive targets
richiemcilroy 4fff0d1
feat(import): unify file imports with Storage upload helpers
richiemcilroy fda9fb5
feat(web): hydrate Google Drive quota cache in dashboard providers
richiemcilroy 070aa22
feat(web): adjust share and embed pages for storage metadata
richiemcilroy 03c1849
chore(web homepage): remove legacy Features section component
richiemcilroy 53f6228
feat(web homepage): add bento panel illustrations
richiemcilroy 3c7b2b0
feat(web homepage): ship Bento marketing layout and refreshed copy
richiemcilroy f5017b2
fix(media-server): probe Drive-hosted FFmpeg inputs reliably
richiemcilroy 56ea266
feat(desktop): honor server upload targets for Drive recordings
richiemcilroy 7c2c3a3
feat(desktop): add Google Drive storage settings flows
richiemcilroy f437de3
test(web): align coverage with Drive storage uploads
richiemcilroy a571e8c
feat(database): add Google Drive token fields and storage FKs
richiemcilroy fec866e
feat(web-backend): persist Google Drive access token in StorageRepo
richiemcilroy 81597da
fix(web): escape HTML in Google Drive OAuth callback pages
richiemcilroy 036fe0e
feat(web-backend): add Google Drive token refresh lease and request c…
richiemcilroy a57b9e5
feat(web): clear Google Drive token cache on connect and disconnect
richiemcilroy bcfd28e
feat(web-backend): wire GoogleDriveTokenStore into Drive storage access
richiemcilroy a23d814
feat(desktop): parse provider from multipart initiate API response
richiemcilroy f63032f
feat(desktop): detect Drive multipart uploads via provider flag
richiemcilroy 7c7a852
chore(web): reformat workflow v1 manifest
richiemcilroy e24de0d
fix(web): escape HTML in Google Drive OAuth callback pages
richiemcilroy 0ccddbe
feat(web): clear Google Drive token cache on connect and disconnect
richiemcilroy 5b5552c
feat(desktop): parse provider from multipart initiate API response
richiemcilroy 3883b29
feat(desktop): detect Drive multipart uploads via provider flag
richiemcilroy c4975da
chore(web): reformat workflow v1 manifest
richiemcilroy 65b3d87
Merge branch 'google-integration' of https://github.com/CapSoftware/C…
richiemcilroy eae3b1a
Refactor storage/decoding and handle Drive not connected
richiemcilroy e6b2e51
feat(database): add googleDriveStorageQuotaCache column
richiemcilroy 4532342
refactor(storage): drop quota cache field from Drive config type
richiemcilroy 46abf6b
refactor(storage): expose getS3WritableAccessForUser helper
richiemcilroy 9cb4c0e
feat(web): detect desktop feature flags from request headers
richiemcilroy dafb054
feat(desktop): advertise googleDriveUpload in API request headers
richiemcilroy c522e40
feat(web): gate uploads on Drive support vs S3 writable access
richiemcilroy 71ca82e
refactor(web): persist Drive quota cache in integration column
richiemcilroy 8fdecfc
fix(web): clear Drive quota cache on OAuth disconnect flows
richiemcilroy 00efb5f
chore(web): refresh workflow manifest step ordering
richiemcilroy 5414acc
feat(web-backend): add Drive lookup by cap object key
richiemcilroy 8aec215
feat(web-backend): recover stale Drive IDs on storage reads
richiemcilroy 438d6d3
fix(api): distinguish 404 vs 502 in storage object proxy
richiemcilroy ff3dc16
feat(api): expose upload targets in batch signed URLs
richiemcilroy 8c6c99e
fix(web-recorder): set byte total when finalizing Drive streams
richiemcilroy c9529f9
test(web): cover Drive chunked finalize Content-Range
richiemcilroy 9b39856
fix(share): defer segment playback with shared helper
richiemcilroy 1eeaf13
chore(web): refresh workflow bundle manifest
richiemcilroy 4c4a030
fix(web-backend): return null on invalid storage object token JSON
richiemcilroy af9ad47
fix(web-backend): complete Google Drive multipart with explicit objec…
richiemcilroy d8bb36a
fix(web): treat Google Drive final chunk 308 as incomplete upload
richiemcilroy bc21c71
fix(web): reject upload URL reuse when video owner differs
richiemcilroy a139aea
fix(web): map storage proxy errors and handle failed effects
richiemcilroy File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
containshere can mis-detect non-Google hosts that happen to include the substring in the URL. Parsing + checking host/path keeps this strict and avoids false positives.