Commit Graph

186 Commits

Author SHA1 Message Date
Jasper Van 1268d902dd Merge commit from fork 2026-08-03 01:05:11 -04:00
Jasper Van 8513b18a8e feat(oauth): expose workspace authorization catalog (#551)
* feat(oauth): expose workspace authorization catalog

* fix(oauth): verify catalog tokens against canonical audience

* fix(auth): normalize Workers preview requests

* Revert "fix(auth): normalize Workers preview requests"

This reverts commit 02009f098f.

* fix(oauth): refresh configured resource scopes
2026-08-02 21:00:20 -04:00
saltbo bc4a71f691 fix(api-keys): restore legacy Better Auth keys 2026-08-02 15:08:51 -04:00
Jasper Van 2657f82ef1 feat(auth): add contextual OAuth workspace grants (#550)
* feat(auth): add contextual OAuth workspace grants

* fix(auth): register RFC 9396 detail types

* fix(openapi): restore delegated CLI auth profile

* fix(store): recover paid capacity fulfillment

* fix(auth): close OAuth contract gaps

* fix(store): resume verified x402 settlements

* chore(deps): update zpan cloud sdk to 2.5.2

* test(store): cover verified settlement recovery

* fix(auth): localize standard consent scopes

* fix(docker): include dependency patches before install

* fix(store): harden x402 purchase responses

* test(auth): cover OAuth authorization boundaries

* docs: add PR 550 verification screenshots

* chore: remove temporary verification screenshots

* docs(openapi): document exhausted capacity response
2026-08-02 13:33:15 -04:00
Jasper Van 1caa4e580c refactor(oauth): replace agent access naming (#549) 2026-08-01 00:32:31 -04:00
saltbo 8402844b5e feat(store): add agent x402 capacity purchases 2026-07-31 09:27:24 -04:00
saltbo a968f85d7c fix(auth): persist delegated agent identity 2026-07-30 20:19:33 -04:00
saltbo e740529ced docs(openapi): describe storage selection override 2026-07-30 16:17:23 -04:00
saltbo d7ba55b9da feat(auth): support external agent resources
Replace bundled agent profiles, API keys, plugin, and skill surfaces with dynamic OAuth client registration, delegated DPoP tokens, discoverable scopes, and Arazzo-backed direct upload workflows.

Refs realmroot/realmroot#115
2026-07-30 10:41:39 -04:00
Jasper Van a890e7bba2 refactor(auth): unify route authorization around scopes (#544) 2026-07-29 23:26:07 -04:00
agent-kanban[bot] 360237d069 feat: add restish zpan upload plugin (#542)
* feat: add restish zpan upload plugin

Agent-Profile: https://agent-kanban.dev/agents/f68cfbce6456edb5

* fix: restore single upload resume for restish plugin

Agent-Profile: https://agent-kanban.dev/agents/f68cfbce6456edb5

* ci(release): publish restish-zpan plugin assets

* fix(restish-zpan): accept restish operation aliases

---------

Co-authored-by: Ethan Cole <ethan-cole@mails.agent-kanban.dev>
Co-authored-by: saltbo <saltbo@foxmail.com>
2026-07-29 16:55:52 -04:00
agent-kanban[bot] 88916f4f03 feat: add agent oauth consent management UI (#541)
* feat: add agent oauth consent management UI

Agent-Profile: https://agent-kanban.dev/agents/7b0ab18fa695f04a

* test: cover agent oauth consent edge paths

Agent-Profile: https://agent-kanban.dev/agents/7b0ab18fa695f04a

* fix: route agent oauth consent through rpc

Agent-Profile: https://agent-kanban.dev/agents/7b0ab18fa695f04a

* test: cover agent oauth consent rpc on workers

Agent-Profile: https://agent-kanban.dev/agents/7b0ab18fa695f04a

* test: cover agent oauth grant-use middleware

Agent-Profile: https://agent-kanban.dev/agents/7b0ab18fa695f04a

---------

Co-authored-by: Iris Tan <iris-tan@mails.agent-kanban.dev>
2026-07-29 16:52:17 -04:00
agent-kanban[bot] d22227ed2f feat: add delegated agent OAuth provider (#539)
* feat: add delegated agent oauth provider

Agent-Profile: https://agent-kanban.dev/agents/e0a1ce35687e48ef

* test(auth): cover delegated OAuth configuration

* fix(auth): route OAuth metadata through worker

* fix(auth): advertise canonical OAuth issuer

* test: cover agent oauth provider integration

Agent-Profile: https://agent-kanban.dev/agents/e0a1ce35687e48ef

* test(auth): cover managed OAuth consent flow

---------

Co-authored-by: Ravi Shah <ravi-shah@mails.agent-kanban.dev>
Co-authored-by: saltbo <saltbo@foxmail.com>
2026-07-29 13:26:44 -04:00
agent-kanban[bot] f2aea1bedb feat: stabilize multipart upload protocol (#537)
Preserve legacy upload clients while adding explicit resumable parts, safe completion recovery, idempotent cleanup, and downloader-bound authorization.
2026-07-29 10:37:31 -04:00
agent-kanban[bot] 1b1b1db772 feat: add workspace agent API keys (#538)
Enforce owner/admin management, terminal expired/revoked lifecycle, explicit workspace scopes, current membership rechecks, and authenticated management UI.
2026-07-29 10:08:44 -04:00
agent-kanban[bot] 4817afecdb feat: migrate content APIs to unified authorization (#534)
Agent-Profile: https://agent-kanban.dev/agents/b0abe6cd7aeba133

Co-authored-by: Noah Reed <noah-reed@mails.agent-kanban.dev>
2026-07-29 02:11:08 -04:00
agent-kanban[bot] 038e23172b feat: establish unified authorization kernel (#533)
* feat: establish unified authorization kernel

Agent-Profile: https://agent-kanban.dev/agents/e0a1ce35687e48ef

* docs(v2.9): sync confirmed agent access plan

---------

Co-authored-by: Ravi Shah <ravi-shah@mails.agent-kanban.dev>
Co-authored-by: saltbo <saltbo@foxmail.com>
2026-07-28 21:34:11 -04:00
saltbo c66590a51b feat(image-hosting): gate custom domains and support origins 2026-07-28 14:48:53 -04:00
Jasper Van faea00d025 feat(image-hosting): improve custom-domain image links (#531) 2026-07-28 02:38:03 -04:00
Jasper Van 6ad1563acc feat(image-hosting): automate Cloudflare domain setup (#530) 2026-07-28 01:03:56 -04:00
Jasper Van 1d58d5b80d feat(image-hosting): add configurable custom domain providers (#529)
* feat(image-hosting): add custom domain providers

* test(image-hosting): cover custom domain provider flows
2026-07-27 22:52:18 -04:00
Jasper Van b2859ec944 refactor(storage): remove legacy custom host downloads (#528)
* refactor(storage): remove custom host downloads

* test(download): cover private signed URLs end to end
2026-07-27 20:00:43 -04:00
Jasper Van ece5f413be fix(download): force browser-downloadable files to save (#527)
* fix(download): force browser-downloadable files to save

* fix(storage): require signed upload CORS headers

* fix(storage): keep upload metadata out of signatures

* fix(storage): sign bare upload commands

* revert: keep upload metadata in signed commands
2026-07-27 18:47:52 -04:00
Jasper Van a5c281b26a refactor(api)!: make site routes RESTful (#526)
Move site configuration under settings, model analytics and licensing as resources, and isolate scheduler runs under the internal API.

BREAKING CHANGE: site email, branding, analytics, licensing, WebDAV verification, and scheduler endpoint paths have changed.

Refs #451
2026-07-27 15:22:28 -04:00
Jasper Van 5473db9be1 fix(downloads): separate list data from task details (#525)
* fix(downloads): separate list items from task details

* fix(downloads): scope task list to downloader

* fix(downloads): stabilize table data
2026-07-27 10:22:47 -04:00
Jasper Van ad0f21bb39 fix: unify list pagination and realtime updates (#524)
* fix!: unify pagination and realtime change delivery

Replace offset paging on affected unbounded collections with signed keyset tokens and infinite loading. Persist scoped resource changes so one global SSE connection can resume and invalidate query caches safely.

BREAKING CHANGE: migrated list APIs now accept pageToken and return nextPageToken instead of page and total fields.

Refs #450

* fix: keep page tokens at the HTTP boundary

Move signed page-token handling out of the pure domain layer so dependency-cruiser architecture checks pass without changing behavior.

* fix: route background job stats through usecase

Keep the HTTP boundary from reaching directly into repository ports and cover the new usecase wrapper.

* fix: align clients and checks with cursor pagination

* refactor: unify pagination boundaries and infinite loading
2026-07-27 02:02:53 -04:00
saltbo 321545dea1 perf(files): lazily load sidebar folder tree 2026-07-26 22:03:01 -04:00
saltbo ae6417878b perf(webdav): cache verified auth bursts 2026-07-26 14:34:29 -04:00
saltbo 3921d9c00d perf(webdav): reduce hot-path database work 2026-07-26 13:51:02 -04:00
Jasper Van d6d811f41c feat(public): redesign profile and share pages (#522)
* feat(public): redesign profile and share pages

* fix(openapi): regenerate Go client

* test(share): cover README validation boundaries
2026-07-24 08:35:05 -04:00
saltbo 0550e41868 feat(shares)!: make landing shares public by default
Replace opt-in profile listings with an opt-out private flag and a unified privacy endpoint.

BREAKING CHANGE: showOnProfile, listedAt, and the profile-listing endpoints are replaced by private and PUT /api/shares/:token/privacy.
2026-07-24 01:07:01 -04:00
agent-kanban[bot] 526d237a4e feat: connect curated shares to public profiles (#519)
* feat: connect curated shares to public profiles

Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5

* chore: retry CI after tunnel failure

Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5

---------

Co-authored-by: Marina Zhou <marina-zhou@mails.agent-kanban.dev>
2026-07-24 00:39:25 -04:00
saltbo 720f7c93aa feat(storage): redesign backend management 2026-07-23 18:16:54 -04:00
saltbo 7bf5d2f587 feat(storage): link files to their locations 2026-07-23 15:02:15 -04:00
saltbo 77475d5ceb feat(storage): add compact file cleanup dialog 2026-07-23 14:52:42 -04:00
saltbo 91720c76fd feat(storage): add usage projection and management page 2026-07-23 13:36:18 -04:00
saltbo 387c731b3b feat(api-keys): unify user ownership and workspace scopes 2026-07-23 01:41:41 -04:00
saltbo eea3dafefa fix(upload): sync stored content type after upload 2026-07-23 00:43:49 -04:00
saltbo 23f679d18c feat(webdav): add admin service controls 2026-07-22 23:25:54 -04:00
saltbo e55ee53496 refactor(stats): unify audit and fact pipelines
Centralize request audit recording, preserve immutable download-task history, and derive hourly statistics and backfills from the same authoritative sources. Add durable user registration facts so admin deletion no longer destroys signup history.
2026-07-21 23:02:52 -04:00
saltbo 14abbf2648 fix(admin): use live overview metrics 2026-07-21 12:39:12 -04:00
saltbo 40c5f10d48 feat(admin): show storage change trend 2026-07-21 12:04:42 -04:00
saltbo b6cbc614b8 fix(admin): enforce exact analytics data sources 2026-07-21 02:38:54 -04:00
saltbo 3abf4f231e fix(storage): preserve purge history and track usage deltas
Retain purged matter and image metadata while hiding tombstones from live reads. Record exact storage deltas and build hourly trends only after the opening balance.
2026-07-21 00:29:27 -04:00
saltbo d9da5094bb feat(admin): add live dashboard overview 2026-07-20 22:35:12 -04:00
saltbo e761b6aec7 feat(webdav): verify derived domains before publishing 2026-07-20 18:54:12 -04:00
saltbo 7fe16f3ed7 refactor(site): replace options with structured config APIs 2026-07-20 15:17:48 -04:00
saltbo 0bf1f9e973 feat(webdav): derive fixed domain from public URL 2026-07-20 13:45:22 -04:00
saltbo 75d7b50538 feat(webdav): support optional custom domains
Serve canonical root-relative DAV URLs on a configured hostname while preserving the existing /dav mount. Reconcile Cloudflare rewrite rules and Worker custom domains during fork deployments, and expose the effective URL through site options.
2026-07-20 12:59:58 -04:00
Jasper Van c85e60f200 fix(analytics): enforce trustworthy offline statistics (#510)
* fix(analytics): enforce trustworthy offline statistics

Separate immutable counters from point-in-time snapshots, expose incomplete coverage instead of synthetic zeroes, and keep browser analytics result-only.

Restore finite Free quota baselines, fail closed for invalid storage quota, reconcile traffic reports fairly, and add production-safe backfill and data-quality diagnostics.

* fix(analytics): preserve global backfill totals

Group generated hourly backfill rows by their projected values so SQLite cannot resolve output aliases to source organization columns and overwrite cross-organization totals.
2026-07-20 10:23:22 -04:00