Skip to content

Auth: keep content public and restrict uploads to administrators#917

Merged
BigSimmo merged 13 commits into
mainfrom
codex/public-content-account-access
Jul 19, 2026
Merged

Auth: keep content public and restrict uploads to administrators#917
BigSimmo merged 13 commits into
mainfrom
codex/public-content-account-access

Conversation

@BigSimmo

@BigSimmo BigSimmo commented Jul 19, 2026

Copy link
Copy Markdown
Owner

Summary

  • Keep published clinical content accessible without an account while preserving owner scoping for private drafts.
  • Persist signed-in favourites and preferences in Supabase with authenticated, owner-scoped APIs.
  • Restrict uploads, corpus management, ingestion, document mutation, and review controls to users with app_metadata.site_role = administrator.
  • Add the additive account-data migration and an approval-gated administrator assignment utility.

Verification

  • npm run verify:pr-local
    • Exact rebased head: runtime, Prettier, ESLint, TypeScript, 321 test files / 2,916 passed / 1 skipped, production build, client bundle secret scan, and 36 offline RAG golden fixtures passed.
  • npm run verify:ui when UI, routing, styling, browser behavior, reduced-motion, or forced-colors behavior changed
    • UI verification not run: the repository-wide heavy-command lock was held by another registered worktree before Playwright started. npm run ensure started the app at the repository-selected URL and /api/local-project-id confirmed the Clinical KB identity before the local server was stopped.
  • npm run verify:release before release or handoff confidence claims
    • Verification not run: release verification was not required to open this PR and can include broader/provider-gated checks.
  • npm run eval:retrieval:quality (must stay 36/36)
    • Verification not run: retrieval, ranking, chunking, and scoring behavior are unchanged.
  • npm run eval:rag -- --limit 15 + npm run eval:quality -- --rag-only
    • Verification not run: answer generation, synthesis, and answer post-processing are unchanged.
  • npm run check:production-readiness
    • Ran locally. Runtime and fail-closed privacy guards passed; the isolated worktree has no .env/.env.local, so Supabase/OpenAI variable checks were environment-blocked.
  • npm run check:deployment-readiness
    • Verification not run: deployment startup and hosting configuration are unchanged.

Risk and rollout

  • Risk: Incorrect administrator claims could deny legitimate corpus-management actions; account persistence uses the service-role client and therefore depends on every query retaining its authenticated user_id constraint. The focused auth review found no remaining P0-P2 issue and the behavior is regression-tested.
  • Rollback: Revert the application commits. The additive favourites/preferences tables may remain inert without affecting public content; do not drop them during rollback because that would delete user-owned data. A later forward migration can archive/remove them after an explicit data decision.
  • Provider or production effects: The approved migration 20260719064735_user_account_data_and_admin_uploads is already recorded on Clinical KB Database (sjrfecxgysukkwxsowpy), and the approved existing Auth account received the administrator claim. No content rows were modified.

Clinical Governance Preflight

  • Source-backed claims still require linked source verification before clinical use
  • No patient-identifiable document workflow was introduced or expanded without explicit governance approval
  • Supabase target remains Clinical KB Database (sjrfecxgysukkwxsowpy)
  • Service-role keys and private document access remain server-only
  • Demo/synthetic content remains clearly separated from real clinical sources
  • Source metadata, review status, and outdated/unknown-source behavior remain conservative
  • Deployment classification/TGA SaMD impact was checked when clinical decision-support behavior changed
    • Not applicable: this change does not alter clinical decision-support behavior.

Notes

  • A second requested administrator email does not yet exist in Supabase Auth and was not fabricated. It can receive the role after normal account creation.
  • The source implementation was isolated from a heavily dirty shared worktree onto a clean branch from current origin/main; unrelated CI, audit, skills, ingestion-worker, schema-snapshot, and migration-repair changes are excluded.

Summary by CodeRabbit

  • New Features
    • Added signed-in account sync for saved favourites and preferences, including new account endpoints and UI updates across services, forms, and differentials.
  • Security
    • Tightened authorization so admin-only users can access sensitive document mutations, reviews/reindexing, bulk edits, uploads, and administrative dashboards/tools.
    • Enforced administrator role validation for privileged operations and updated upload authorization to administrator-owned access.
  • Bug Fixes
    • Improved account session-expiration messaging and corrected setup-status handling for unauthorized cases.
  • Docs
    • Updated environment guidance plus documentation (sitemap and review ledger).
  • Tests
    • Expanded admin gating and favourites/preferences synchronization and rate-limit coverage.

BigSimmo added 2 commits July 19, 2026 15:44
Persist signed-in favourites and preferences in Supabase, enforce administrator claims on corpus mutations, and keep published document reads anonymous. Verified with verify:pr-local; production-readiness remains environment-blocked without local provider variables.
@supabase

supabase Bot commented Jul 19, 2026

Copy link
Copy Markdown

Updates to Preview Branch (codex/public-content-account-access) ↗︎

Deployments Status Updated
Database Sun, 19 Jul 2026 10:08:56 UTC
Services Sun, 19 Jul 2026 10:08:56 UTC
APIs Sun, 19 Jul 2026 10:08:56 UTC

Tasks are run on every commit but only new migration files are pushed.
Close and reopen this PR if you want to apply changes from existing seed or migration files.

Tasks Status Updated
Configurations Sun, 19 Jul 2026 10:08:58 UTC
Migrations Sun, 19 Jul 2026 10:08:59 UTC
Seeding Sun, 19 Jul 2026 10:09:01 UTC
Edge Functions Sun, 19 Jul 2026 10:09:01 UTC

View logs for this Workflow Run ↗︎.
Learn more about Supabase for Git ↗︎.

@coderabbitai

coderabbitai Bot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This change adds administrator authorization for uploads and document mutations, introduces account-backed favourites and preferences, gates administrative UI, removes public-upload configuration, and adds database policies, scripts, documentation, and regression coverage.

Changes

Access and account model

Layer / File(s) Summary
Administrator authorization and upload boundary
src/lib/authorization.ts, src/lib/supabase/auth.ts, scripts/set-site-administrator.ts, src/app/api/upload/route.ts, src/app/api/documents/..., src/app/api/ingestion/...
Administrator claims and safety-gated assignment are added; document, ingestion, evaluation, job, review, and upload operations require administrator authorization.
Account data contracts and synchronization
supabase/migrations/*, src/lib/supabase/database.types.ts, src/app/api/account/*, src/components/account-data-provider.tsx, src/components/clinical-dashboard/use-app-preferences.ts
Favourites and preferences gain validated APIs, owner-scoped tables, RLS policies, normalized contracts, optimistic updates, and authenticated synchronization.
Saved-item and administrator UI
src/app/layout.tsx, src/components/ClinicalDashboard.tsx, src/components/DocumentViewer.tsx, src/components/.../*detail-page.tsx, src/components/clinical-dashboard/settings-dialog.tsx
Administrative surfaces and document tools use administrator claims, while saved items and account prompts use account-backed state.
Tooling, validation, and project records
tests/*, scripts/list-database-skills.mjs, .env.example, docs/*, package.json, supabase/schema.sql, supabase/drift-manifest.json
Access, upload, schema, rate-limit, environment, sitemap, skill, and review-ledger checks are updated.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant AccountDataProvider
  participant AccountAPI
  participant Supabase
  Client->>AccountDataProvider: load or update account data
  AccountDataProvider->>AccountAPI: request favourites or preferences
  AccountAPI->>Supabase: read or write owner-scoped records
  Supabase-->>AccountAPI: account data or status
  AccountAPI-->>AccountDataProvider: normalized response
  AccountDataProvider-->>Client: synchronized UI state
Loading

Possibly related PRs

Suggested labels: codex

Suggested reviewers: claude

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 6.94% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: keeping content public while restricting uploads to administrators.
Description check ✅ Passed The description matches the template with Summary, Verification, Risk and rollout, Clinical Governance Preflight, and Notes sections filled in.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/public-content-account-access

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 79355ba425

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/components/ClinicalDashboard.tsx
Comment thread src/components/DocumentViewer.tsx
@BigSimmo

Copy link
Copy Markdown
Owner Author

@codex resolve actionable Codex review findings for this pull request and current head using the repository instructions. This is the pull request's single automatic repair pass: do not perform a fresh review, create new standalone findings, or request another review. Work only the existing unresolved Codex threads on the current head. Always fix P0 and P1 findings. For P2 and lower findings, fix only clear, scoped, low-risk issues; otherwise disposition them with a concise reason. After fixing or dispositioning a thread, reply in that thread with as the first line, followed by a concise summary; that marker authorizes the workflow to close that exact thread. If human input or new authorization is required, do not use the marker and leave the thread open with the blocker. Finish only after every actionable thread is fixed or dispositioned and closed, or explicitly left open for a human decision. Do not update the branch from main, address unrelated reviews, broaden scope, or create more than one scoped fix commit. Do not use external APIs, paid services, credentials, dependency changes, or broad refactors unless explicitly authorized. Add targeted tests where behavior changes and run the narrowest relevant validation.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 79355ba425

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/components/ClinicalDashboard.tsx

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (2)
src/components/clinical-dashboard/use-app-preferences.ts (1)

9-16: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Fragile string-matching for the "outside AuthProvider" escape hatch.

useAuthSessionIfAvailable distinguishes "not wrapped in AuthProvider" from any other error solely by matching the literal message text thrown in src/lib/supabase/client.tsx's useAuthSession(). If that message is ever reworded, this silently stops catching it and starts re-throwing in any consumer not wrapped by AuthProvider, turning a previously graceful degradation into a crash.

Consider exporting a dedicated optional accessor from src/lib/supabase/client.tsx (e.g. useAuthSessionOptional() returning null when there's no provider) instead of coupling two files via exact error text.

♻️ Proposed direction
+// in src/lib/supabase/client.tsx
+export function useAuthSessionOptional() {
+  return useContext(AuthContext);
+}
-function useAuthSessionIfAvailable() {
-  try {
-    return useAuthSession();
-  } catch (error) {
-    if (error instanceof Error && error.message === "useAuthSession must be used within AuthProvider.") return null;
-    throw error;
-  }
-}
+function useAuthSessionIfAvailable() {
+  return useAuthSessionOptional();
+}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/clinical-dashboard/use-app-preferences.ts` around lines 9 -
16, Replace the error-message matching in useAuthSessionIfAvailable with a
dedicated optional auth-session accessor exported from the Supabase client
module, such as useAuthSessionOptional. Have that accessor return null when no
AuthProvider exists while preserving normal error propagation, and update
useAuthSessionIfAvailable to use it directly.
src/lib/account-preferences.ts (1)

1-119: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Duplicate AppPreferences type and normalizePreferences logic across client and server.
src/lib/account-preferences.ts was introduced to back the server-side /api/account/preferences route, but use-app-preferences.ts keeps its own near-identical copy of the AppPreferences type and normalizePreferences (plus the option-list constants) instead of importing the new shared module. Any future preference field change now has to be made in both places or the client/server contracts silently drift.

  • src/lib/account-preferences.ts#L1-L119: keep as the single canonical source for AppPreferences, option lists, and normalizePreferences.
  • src/components/clinical-dashboard/use-app-preferences.ts#L124-L152: drop the local normalizePreferences (and the local AppPreferences type/option constants it depends on) and import them from @/lib/account-preferences instead.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/lib/account-preferences.ts` around lines 1 - 119, Keep
src/lib/account-preferences.ts lines 1-119 as the canonical source for
AppPreferences, option constants, and normalizePreferences. In
src/components/clinical-dashboard/use-app-preferences.ts lines 124-152, remove
the duplicated local definitions and import the shared symbols from
`@/lib/account-preferences`, updating references as needed without changing
behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/app/api/account/preferences/route.ts`:
- Around line 38-41: Update both the GET and PUT success responses in the
account preferences route to include an explicit Cache-Control header set to
private, no-store, matching the existing account-scoped response pattern while
preserving the current JSON payloads.

In `@src/components/account-data-provider.tsx`:
- Around line 123-186: The favourites actions currently collapse unauthenticated
and request failures into a boolean, causing callers to show misleading sign-in
messages. Update setFavourite and clearFavourites in
src/components/account-data-provider.tsx (lines 123-186) to surface a distinct
failure reason, then update the clearFavourites handling in
src/components/clinical-dashboard/settings-dialog.tsx (lines 234-237) and
setFavourite handling in
src/components/differentials/differential-detail-page.tsx (lines 975-985) to use
that reason or accountData.error, showing sign-in guidance only for
unauthenticated users and the request error otherwise.

In `@src/components/DocumentViewer.tsx`:
- Around line 2658-2670: Pass the administrator authorization gate explicitly
from the DocumentViewer render to DocumentManagementActions by using its
existing canManage or disabled prop, setting it from canUseAdministrativeApis.
Preserve the current callbacks and display behavior while ensuring rename/delete
controls are unavailable whenever canUseAdministrativeApis is false, including
serverDemoMode cases.

---

Nitpick comments:
In `@src/components/clinical-dashboard/use-app-preferences.ts`:
- Around line 9-16: Replace the error-message matching in
useAuthSessionIfAvailable with a dedicated optional auth-session accessor
exported from the Supabase client module, such as useAuthSessionOptional. Have
that accessor return null when no AuthProvider exists while preserving normal
error propagation, and update useAuthSessionIfAvailable to use it directly.

In `@src/lib/account-preferences.ts`:
- Around line 1-119: Keep src/lib/account-preferences.ts lines 1-119 as the
canonical source for AppPreferences, option constants, and normalizePreferences.
In src/components/clinical-dashboard/use-app-preferences.ts lines 124-152,
remove the duplicated local definitions and import the shared symbols from
`@/lib/account-preferences`, updating references as needed without changing
behavior.
🪄 Autofix (Beta)

✅ Autofix completed


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 55e436a9-4875-4189-bbfc-aae8bc634b18

📥 Commits

Reviewing files that changed from the base of the PR and between cac3fc2 and 79355ba.

📒 Files selected for processing (49)
  • .env.example
  • docs/branch-review-ledger.md
  • docs/site-map.md
  • package.json
  • scripts/set-site-administrator.ts
  • src/app/api/account/favourites/route.ts
  • src/app/api/account/preferences/route.ts
  • src/app/api/documents/[id]/labels/route.ts
  • src/app/api/documents/[id]/reindex/route.ts
  • src/app/api/documents/[id]/reviews/route.ts
  • src/app/api/documents/[id]/route.ts
  • src/app/api/documents/[id]/summarize/route.ts
  • src/app/api/documents/[id]/table-facts/route.ts
  • src/app/api/documents/bulk/reindex/route.ts
  • src/app/api/documents/bulk/route.ts
  • src/app/api/eval-cases/route.ts
  • src/app/api/ingestion/batches/route.ts
  • src/app/api/ingestion/jobs/[id]/retry/route.ts
  • src/app/api/ingestion/jobs/route.ts
  • src/app/api/ingestion/quality/route.ts
  • src/app/api/jobs/route.ts
  • src/app/api/setup-status/route.ts
  • src/app/api/upload/route.ts
  • src/app/layout.tsx
  • src/components/ClinicalDashboard.tsx
  • src/components/DocumentViewer.tsx
  • src/components/account-data-provider.tsx
  • src/components/clinical-dashboard/favourites-command-library-page.tsx
  • src/components/clinical-dashboard/settings-dialog.tsx
  • src/components/clinical-dashboard/use-app-preferences.ts
  • src/components/clinical-dashboard/use-saved-registry-favourites.ts
  • src/components/differentials/differential-detail-page.tsx
  • src/components/forms/form-detail-page.tsx
  • src/components/services/service-detail-page.tsx
  • src/lib/account-preferences.ts
  • src/lib/authorization.ts
  • src/lib/client-env.ts
  • src/lib/env.ts
  • src/lib/public-api-access.ts
  • src/lib/supabase/auth.ts
  • src/lib/supabase/client.tsx
  • src/lib/supabase/database.types.ts
  • supabase/migrations/20260719064735_user_account_data_and_admin_uploads.sql
  • tests/account-access-model.test.ts
  • tests/audit-navigation-auth-regressions.test.ts
  • tests/client-secret-surface.test.ts
  • tests/document-admin-rate-limit.test.ts
  • tests/private-access-routes.test.ts
  • tests/supabase-schema.test.ts
💤 Files with no reviewable changes (2)
  • src/lib/client-env.ts
  • src/lib/env.ts

Comment thread src/app/api/account/preferences/route.ts Outdated
Comment thread src/components/account-data-provider.tsx
Comment thread src/components/DocumentViewer.tsx
@coderabbitai

coderabbitai Bot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Note

Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it.

⚠️ Branch updated during autofix.

The branch was updated while autofix was in progress. Please try again.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 812cbf7466

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/components/clinical-dashboard/settings-dialog.tsx Outdated
@coderabbitai

coderabbitai Bot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Note

Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it.

Fixes Applied Successfully

Fixed 5 file(s) based on 3 unresolved review comments.

Files modified:

  • src/app/api/account/preferences/route.ts
  • src/components/DocumentViewer.tsx
  • src/components/account-data-provider.tsx
  • src/components/clinical-dashboard/settings-dialog.tsx
  • src/components/differentials/differential-detail-page.tsx

Commit: 2ed2378a377f12e5fce39af11967fbd1c486c255

The changes have been pushed to the codex/public-content-account-access branch.

Time taken: 5m 25s

coderabbitai Bot and others added 2 commits July 19, 2026 09:24
Fixed 5 file(s) based on 3 unresolved review comments.

Co-authored-by: CodeRabbit <noreply@coderabbit.ai>
@BigSimmo
BigSimmo enabled auto-merge (squash) July 19, 2026 09:26

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7a2c423de4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/components/services/service-detail-page.tsx Outdated
Service and form detail pages treated setFavourite's failure object as
truthy, so signed-out or rejected saves still showed a success notice.
Align both pages with the differential detail pattern and add a regression
assertion that all detail pages inspect result.success.

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Comment thread src/components/services/service-detail-page.tsx Outdated
@github-actions

Copy link
Copy Markdown

CI triage

CI failed on this PR. Automated classification of the 2 failed job(s):

  • Static PR checksneeds investigation: inspect the failing step and uploaded diagnostics; rerun only after classifying the cause.
  • PR requiredneeds investigation: inspect the failing step and uploaded diagnostics; rerun only after classifying the cause.

Compared with main CI run #3549 (success).

Classification is evidence routing, not permission to ignore a failure. Exact quarantined Playwright identities remain governed by the flake ledger.

BigSimmo and others added 2 commits July 19, 2026 17:48
Static PR checks failed format:check on this file; apply Prettier so CI can pass.

Co-authored-by: Cursor <cursoragent@cursor.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: de0cddb1bd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/app/api/account/favourites/route.ts Outdated
Comment thread src/app/api/documents/[id]/summarize/route.ts

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7b1cb54c00

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread package.json
cursoragent and others added 5 commits July 19, 2026 09:58
Add user_favourites and user_preferences tables, RLS policies, grants,
and storage.objects upload revoke to the canonical schema snapshot.
Regenerate supabase/drift-manifest.json so drift verification matches
the post-migration live inventory.

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Return Cache-Control: private, no-store on GET /api/account/favourites so
signed-in saved-item lists cannot be cached across sign-out or account
switches, matching the preferences endpoint.

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Align the Answer from this document control with the administrator-only
summarize API so signed-in non-admin sessions no longer see an enabled
action that returns 403.

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Implement the skills listing/check script referenced by npm run skills and
npm run check:skills so the commands validate .agents/skills against the
maintained database-skills.md catalog.

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
@BigSimmo
BigSimmo merged commit e57533c into main Jul 19, 2026
17 checks passed
@BigSimmo
BigSimmo deleted the codex/public-content-account-access branch July 19, 2026 10:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants