Commit graph

45 commits

Author SHA1 Message Date
willchen96
1fa0554ea5 Refactor ProjectPageParts and ProjectPageHeader components for improved loading states and skeleton UI. Update Modal and PageHeader components to support loading states. Enhance RenameableTitle for better caret positioning. Adjust DisplayWorkflowModal to utilize the new Modal component structure. Update WorkflowList to include loading indicators and improve sticky header behavior. 2026-06-11 21:50:58 +08:00
willchen96
444d1d38e4 feat: enhance user profile management and MFA login flow
- Refactor user profile loading and updating logic to improve state management and reduce unnecessary checks.
- Update MFA login gate to streamline verification checks and improve user experience.
- Ensure consistent handling of user ID across profile context and components.
- Improve error handling and loading states in user-related API calls.
2026-06-10 18:55:33 +08:00
willchen96
3a10943200 feat: implement multi-factor authentication (MFA) setup and verification flow
- Add SecurityPage component for managing MFA settings, including enrollment and verification.
- Create MfaLoginGate to handle MFA verification state during login.
- Develop MfaVerificationPopup for user input of verification codes.
- Implement VerifyMfaPage for the MFA verification process after login.
- Introduce reusable VerificationCodeInput component for entering verification codes.
- Integrate Supabase MFA API for managing factors and verification.
- Add loading states and error handling for a better user experience.
2026-06-10 03:48:08 +08:00
cosimoastrada
15c96b0dd4
Merge pull request #171 from willchen96/feat/courtlistener-versioning-liquid-glass
Add courtlistener intergration, liquid glass redesign, UI improvements, version control, various fixes
2026-06-09 01:48:40 +08:00
willchen96
f32a194b33 Sync CourtListener verification and document safety updates
- Refine CourtListener citation verification, bulk lookup logging, and API fallback behavior
- Persist cancelled chat stream output and render cancellation as the final assistant message
- Add document/version deletion safety fixes and shared warning/modal UI updates
- Sync document panel, case law panel, and response UI styling refinements
- Harden OSS sync script to preserve local env, dependency, and generated files
2026-06-09 01:46:58 +08:00
willchen96
44e868eb42 Add courtlistener intergration, liquid glass redesign, UI improvements, version control, various fixes 2026-06-06 15:48:47 +08:00
cosimoastrada
d39f5806e5
Merge pull request #148 from willchen96/document-ui-tabular-updates
Update document UI, tabular reviews, and storage caching
2026-05-18 00:25:08 +08:00
willchen96
4f3384334a Update document UI, tabular reviews, and storage caching 2026-05-18 00:21:40 +08:00
cosimoastrada
2bbb628891
Merge pull request #146 from willchen96/require-download-signing-secret
fix: require dedicated download signing secret
2026-05-17 01:06:53 +08:00
willchen96
ea48cdedd5 fix: require dedicated download signing secret 2026-05-17 01:05:01 +08:00
cosimoastrada
2f24cae407
Merge pull request #139 from willchen96/add-contributing-guide
docs: add contributing guide
2026-05-16 01:48:03 +08:00
willchen96
b685e86028 docs: add contributing guide 2026-05-16 01:47:22 +08:00
cosimoastrada
4ba4d53c38
Merge pull request #138 from willchen96/supabase-env-cleanup
fix: enforce SUPABASE_URL and SUPABASE_SECRET_KEY presence in server-side client; remove unused supabase-server.ts file
2026-05-16 01:16:51 +08:00
willchen96
9749d601fa fix: enforce SUPABASE_URL and SUPABASE_SECRET_KEY presence in server-side client; remove unused supabase-server.ts file 2026-05-16 01:16:05 +08:00
cosimoastrada
aed8c42e94
Merge pull request #137 from willchen96/require-user-api-key-secret
fix: update encryption key retrieval to use only USER_API_KEYS_ENCRYPTION_SECRET
2026-05-16 00:55:57 +08:00
willchen96
b4ba274264 fix: update encryption key retrieval to use only USER_API_KEYS_ENCRYPTION_SECRET; remove supabase secret key fallback 2026-05-16 00:53:14 +08:00
cosimoastrada
4290104cd0
Merge pull request #136 from willchen96/prevent-self-sharing
feat: prevent users from sharing projects and reviews with themselves
2026-05-16 00:06:40 +08:00
willchen96
87e55d6046 feat: prevent users from sharing projects and reviews with themselves 2026-05-16 00:05:16 +08:00
cosimoastrada
9e7046d4aa
Merge pull request #132 from willchen96/project-page-deployment-fixes
refactor: enhance error handling and streamline API key management in LLM modules
2026-05-14 23:57:23 +08:00
willchen96
08d996781a feat: enhance workflow sharing by preventing users from sharing with themselves and normalizing email inputs 2026-05-14 23:29:08 +08:00
willchen96
a2368a7479 refactor: enhance error handling and streamline API key management in LLM modules 2026-05-14 23:20:28 +08:00
cosimoastrada
2e8eafc78e
Merge pull request #64 from willchen96/project-page-deployment-fixes
Sync deployment and project page fixes
2026-05-13 02:38:45 +08:00
willchen96
f39f175273 Sync deployment and project page fixes 2026-05-13 02:32:26 +08:00
cosimoastrada
56c6051f90
Merge pull request #62 from willchen96/sync/next-opennext-cloudflare
chore: update Next and Cloudflare dependencies
2026-05-12 13:42:55 +08:00
willchen96
91d0c2a089 chore: update Next and Cloudflare dependencies 2026-05-12 13:40:01 +08:00
cosimoastrada
469ee4adec
Merge pull request #56 from willchen96/legal-download-updates
Update OSS setup docs and remove app legal pages
2026-05-11 03:20:04 +08:00
willchen96
af5691e773 Update OSS setup docs and remove app legal pages 2026-05-11 03:15:34 +08:00
cosimoastrada
0ac2744a8e
Merge pull request #21 from Metbcy/fix/download-secret-fail-fast
fix(security): fail fast when download HMAC secret is missing (closes #7)
2026-05-11 02:20:27 +08:00
willchen96
a84c1cc113 docs: improve setup guidance and env examples 2026-05-10 22:36:29 +08:00
cosimoastrada
dbbf19697e
Merge pull request #51 from aaronjmars/security/tabular-document-idor
fix(security): scope tabular-review document_ids by access (CWE-639)
2026-05-10 21:03:38 +08:00
cosimoastrada
029181b2ff
Merge pull request #52 from willchen96/sync/jsonb-shared-with-s3-path-style
fix: handle JSONB shared_with filters and path-style S3
2026-05-10 20:23:13 +08:00
willchen96
625bca4d84 fix: handle JSONB shared_with filters and path-style S3 2026-05-10 20:19:30 +08:00
Aeon (aaronjmars)
e261d2e4bd fix(security): scope tabular-review document_ids by access (CWE-639)
The tabular-review routes accept user-supplied document_ids in
request bodies (POST /tabular-review, PATCH /:reviewId) and stale
cell rows on byte-fetching paths (POST /:reviewId/regenerate-cell,
POST /:reviewId/generate). None of those paths checked whether the
caller can read those documents — a free-account attacker could plant
foreign UUIDs into their own review and have the server fetch the
bytes from R2 + run an LLM extraction over them, returning verbatim
text via the standard review GET.

Adds filterAccessibleDocumentIds(documentIds, userId, userEmail, db)
next to the existing access helpers (owner-of-doc OR project member),
and applies it at the four entry points:

- POST /tabular-review               drop unauthorised on insert
- PATCH /:reviewId                   drop newly-added unauthorised; keep
                                     already-attached cells so non-owner
                                     collaborators don't accidentally
                                     orphan rows they can't directly
                                     access
- POST /:reviewId/regenerate-cell    refuse byte fetch when caller has
                                     no access to the underlying doc
- POST /:reviewId/generate           filter docIds before parallel LLM
                                     fetch (defense-in-depth for legacy
                                     cells planted before this fix)

Fails closed silently rather than 403'ing so legacy clients that pass
stale ids don't error out the whole review.

Detected by Aeon + manual review.
Severity: high
CWE-639 (Authorization Bypass Through User-Controlled Key)
2026-05-10 04:50:21 +00:00
cosimoastrada
f40c25d07f
Merge pull request #48 from willchen96/sync/openai-model-support
feat: add OpenAI model support and harden OSS security defaults
2026-05-09 15:07:47 +08:00
willchen96
bef75b082d feat: add OpenAI model support and harden OSS security defaults 2026-05-09 14:55:51 +08:00
cosimoastrada
adc2cf2370
Merge pull request #31 from fayerman-source/codex/safe-local-testing-guide
docs: add safe local testing guide
2026-05-08 23:05:15 +08:00
cosimoastrada
1f191fea59
Merge branch 'main' into codex/safe-local-testing-guide 2026-05-08 23:05:03 +08:00
cosimoastrada
e5a3d6f222
Merge pull request #28 from fayerman-source/codex/validate-project-folders
fix(projects): validate folder ownership before folder mutations
2026-05-08 22:55:15 +08:00
cosimoastrada
7f5dd217d7
Merge pull request #46 from willchen96/sync/security-profile-chat-headers
Sync security and backend profile updates
2026-05-08 21:12:04 +08:00
willchen96
ba6f771144 Sync security and backend profile updates 2026-05-08 20:45:16 +08:00
Eli Fayerman
fce2f2d941 docs: add safe local testing guide 2026-05-04 20:09:05 -04:00
Eli Fayerman
7062a30039 fix project folder boundary checks 2026-05-04 11:59:04 -04:00
Metbcy
eb4414092e fix(security): fail fast when download HMAC secret is missing
Resolves the issue where getSecret() silently fell back to the literal
string "dev-secret" when neither DOWNLOAD_SIGNING_SECRET nor
SUPABASE_SECRET_KEY was set. Because the codebase is public, that
fallback let anyone forge valid /download/:token signatures against a
mis-configured deployment.

- Throw at first call instead of returning the hardcoded string, with a
  message pointing the operator at `openssl rand -hex 32`.
- Document DOWNLOAD_SIGNING_SECRET in backend/.env.example so deployers
  following the README know to set it (and that it should be distinct
  from SUPABASE_SECRET_KEY).

Closes #7
2026-05-03 00:12:44 +00:00
willchen96
d9690965b5 Add local repo contents 2026-04-29 19:49:06 +02:00
willchen96
65739ef1ce Initial empty commit 2026-04-29 19:47:10 +02:00