Commit Graph

1577 Commits

Author SHA1 Message Date
BilalG1
bbac70e4bf
Merge branch 'dev' into external-db-sync 2026-02-03 13:27:25 -08:00
Bilal Godil
61f2b79f46 Merge branch 'external-db-sync' of https://github.com/stack-auth/stack-auth into external-db-sync 2026-02-03 11:35:58 -08:00
Bilal Godil
d04e944f8d concurrent fix 2026-02-03 11:35:52 -08:00
BilalG1
3370e637f1
test fixes (#1155)
<!--

Make sure you've read the CONTRIBUTING.md guidelines:
https://github.com/stack-auth/stack-auth/blob/dev/CONTRIBUTING.md

-->
2026-02-03 11:22:28 -08:00
Konsti Wohlwend
7a35751f8e
Sign up rules (#1138)
<!-- CURSOR_SUMMARY -->
> [!NOTE]
> **High Risk**
> Touches core sign-up/auth flows and user restriction semantics
(including new DB constraints) and introduces dynamic rule
evaluation/logging; misconfiguration or CEL/parser bugs could block
sign-ups or incorrectly restrict users.
> 
> **Overview**
> Introduces **CEL-based sign-up rules** (config-driven) that are
evaluated during password/OTP/OAuth sign-ups and anonymous upgrades;
matching rules can reject sign-ups or mark users as admin-restricted,
and triggers are logged for analytics.
> 
> Extends `ProjectUser` with `restrictedByAdmin` plus public/private
restriction details, updates restriction computation/filtering, and
exposes these fields via user CRUD (including validation + DB constraint
enforcing consistency when unrestricted).
> 
> Adds a new dashboard **Sign-up Rules** page with a visual condition
builder (CEL <-> visual tree), drag-reorder by priority, per-rule 48h
sparkline analytics via a new hidden internal endpoint, and adds
user-page UI to view/edit manual restrictions. Also refactors ClickHouse
client initialization to require env vars (removing
`isClickhouseConfigured` checks) and adjusts CI container startup wait
time.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
2141e689e8c1b72303b805e9234f996010d0880. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Sign-up Rules: visual rule builder, in-project CRUD with drag-reorder,
per-rule analytics, backend evaluation, and admin UI.
* Admin user restrictions: dashboard controls, banners/status,
public/private admin details surfaced in user views.

* **APIs & Schema**
* Config and user schemas extended; new SignUpRejected error and sign-up
rule types added.

* **Tests**
* Extensive unit and E2E coverage for rules, parser, evaluator,
analytics, and restricted-user flows.

* **Docs**
  * Editorial guidance added to AGENTS.md.

* **Chores**
* DB statement timeout, updated clean script, minor dependency
additions.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-03 11:08:24 -08:00
BilalG1
1038d1ab2c
Merge branch 'dev' into external-db-sync 2026-02-03 10:20:17 -08:00
Konstantin Wohlwend
13cd1f0f2b chore: update package versions
Some checks failed
all-good: Did all the other checks pass? / all-good (push) Has been cancelled
Ensure Prisma migrations are in sync with the schema / check_prisma_migrations (22.x) (push) Has been cancelled
Docker Server Build and Push / Docker Build and Push Server (push) Has been cancelled
Docker Server Build and Run / docker (push) Has been cancelled
Runs E2E API Tests / E2E Tests (Node ${{ matrix.node-version }}, Freestyle ${{ matrix.freestyle-mode }}) (mock, 22.x) (push) Has been cancelled
Runs E2E API Tests / E2E Tests (Node ${{ matrix.node-version }}, Freestyle ${{ matrix.freestyle-mode }}) (prod, 22.x) (push) Has been cancelled
Runs E2E API Tests with custom port prefix / build (22.x) (push) Has been cancelled
Runs E2E API Tests with external source of truth / build (22.x) (push) Has been cancelled
Lint & build / lint_and_build (latest) (push) Has been cancelled
Mirror main branch to main-mirror-for-wdb / lint_and_build (push) Has been cancelled
Publish npm packages / publish (push) Has been cancelled
Dev Environment Test With Custom Base Port / restart-dev-and-test-with-custom-base-port (push) Has been cancelled
Dev Environment Test / restart-dev-and-test (push) Has been cancelled
Run setup tests with custom base port / setup-tests-with-custom-base-port (push) Has been cancelled
Run setup tests / setup-tests (push) Has been cancelled
Publish Swift SDK to prerelease repo / publish (push) Has been cancelled
Sync Main to Dev / sync-commits (push) Has been cancelled
TOC Generator / TOC Generator (push) Has been cancelled
2026-02-03 10:06:48 -08:00
Konstantin Wohlwend
ebc8fc1f4e Fix tests 2026-02-03 10:02:02 -08:00
Konstantin Wohlwend
097c0310c4 Check all users when verifying data integrity 2026-02-03 10:00:30 -08:00
Bilal Godil
62171dc231 single test run 2026-02-03 09:44:14 -08:00
Konstantin Wohlwend
abc8daf9cb Tracing for email health endpoint 2026-02-03 09:25:27 -08:00
Bilal Godil
8910138be9 fixes 2026-02-03 09:19:58 -08:00
BilalG1
686a1e6d2f
Merge branch 'dev' into external-db-sync 2026-02-02 18:33:17 -08:00
Aman Ganapathy
9002b63f7a
[Fix] Fix Various bugs on the Explore Apps Page (#1142)
### Context

There are a smattering of bugs on the explore apps page. Clicking
"Enable App" may enable the app, but the button still shows, plus it
causes unnecessary redirects while the modal is still up. This behavior
can be seen in the linked clip


https://github.com/user-attachments/assets/09b12ccf-e174-4289-91f3-4f0e73cfe7e4

### Summary of Changes

We dynamically handle the modal open state, and track the path updates.
This lets us deal with the bugs above while avoiding unnecessary
renders, allowing reopening of previously opened modals, and preventing
unnecessary redirects.
Dealing with the enable apps button issues also now allows users to
navigate to the app page from the explore apps modal.

We also add a disable button to the modal. Previously, users had to
check the options for each app in order to disable it. Now they can do
it on the modal itself, which is in line with how the "Enable App"
functionality works.

### UI Demo




https://github.com/user-attachments/assets/5bfd35c6-5d28-4f99-958a-9300533e2351
2026-02-02 17:36:26 -08:00
Aman Ganapathy
abc320b4db
[Refactor] [Fix] Email Rendering Pipeline Refactor, Error Handling, and Bug Fixes (#1140)
### Context
We noticed some errors pop up on sentry related to email rendering.
These errors seem to have been triggered by the same issue, and could be
categorized as follows:

1. Sanity test mismatch, even when the errors from freestyle and vercel
sandbox were broadly similar. This occurred due to stack traces
differing in different execution environments.
2. Rendering errors from freestyle and vercel sandbox caused by the
theme not being imported/ empty theme component.

Upon investigation, this occurred because hitting save on the email
themes page with an invalid theme (ex: deleting the `export` keyword, or
renaming the `EmailTheme` component) still triggers `bundleAndExecute`
with the invalid themes. This will obviously fail and cause the errors
to be logged, however there is no cause for concern here because the
error is returned and the save is denied because an error is returned.
It's more of a matter of noisy error logs and too strict sanity test
comparisons.

Beyond that, `js-execution` is a little opaque and hard to understand,
and this can mask errors in logic.

We also noticed a new issue: manually throwing an error in the email
theme code editor, and then trying to save was actually successful. This
was because the version of `react-email/components` we were using had
faulty error handling, and fell back to client side rendering, masking
the error. This wasn't caught by our `try-catch` safeguards because it
was a render time issue that was masked. More specifically, this was
what `react-email` was doing: `Switched to client rendering because the
server rendering errored`.

### Summary of Changes

We loosen the sanity test comparison between engine execution results in
case of errors. We then refactor the `js-execution` and
`email-rendering` files to read better, and to only `captureError` when
a service is down, but not for runtime errors in the user submitted
code.

To deal with the other bug, we bumped `react-email/components` to the
latest version. However, doing so exposed a gap between real `freestyle`
and our `freestyle-mock`: with the mock, the errors that were now raised
were treated as uncaught exceptions, crashing the mock server.
Consequently, we switched to using `node` over `bun`.

We also expanded test coverage to account for different error paths. 

Co-authored-by: Konstantin Wohlwend <n2d4xc@gmail.com>
2026-02-02 17:35:51 -08:00
BilalG1
093eaf08f6
e2e: isolate external DB sync cleanup per suite (#1148)
Possible CI flake fix: track external DB sync cleanup per test suite to
avoid cross-suite config resets.\n\n- Lint: pass\n- Typecheck: pass

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **New Features**
* Added external database synchronization, enabling data replication
from the internal database to external PostgreSQL databases with
incremental batching and sequence tracking.
  * Introduced background cron job execution system for scheduled tasks.

* **Tests**
* Added comprehensive test suites for external database synchronization
scenarios including basic operations, advanced configurations,
high-volume data transfers, and race condition handling.

* **Chores**
* Enhanced CI/CD workflows to support external database sync operations.
* Updated Docker configuration and environment variables for improved
testing infrastructure.

* **Bug Fixes**
* Increased test timeout threshold for session expiration tests to
accommodate slower executions.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-02 16:09:28 -08:00
BilalG1
31b8d8040d
query timing route (#1146)
<!--

Make sure you've read the CONTRIBUTING.md guidelines:
https://github.com/stack-auth/stack-auth/blob/dev/CONTRIBUTING.md

-->


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **New Features**
* Added a dedicated endpoint to retrieve query timing statistics using
query identifiers.
* Query responses now include a unique query_id for tracking and
reference.

* **Improvements**
  * Query timeout validation now enforces a maximum limit of 2 minutes.
* Query response structure updated to support separate timing
information retrieval.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-02 16:07:59 -08:00
Bilal Godil
ba1df26792 fix tests 2026-02-02 13:57:57 -08:00
BilalG1
e5cbc1af54
Merge branch 'dev' into external-db-sync 2026-02-02 13:21:15 -08:00
Konstantin Wohlwend
0f8b23dda1 Reduce error flickering 2026-02-02 13:07:45 -08:00
Bilal Godil
b841f7b2f0 fix tests 2026-02-02 12:20:40 -08:00
Bilal Godil
b5781a146d Merge remote-tracking branch 'origin/dev' into external-db-sync 2026-02-02 10:57:38 -08:00
Konstantin Wohlwend
ab99302257 Fix lint 2026-02-02 10:48:39 -08:00
Madison
231b49308d
[Changelog] Updates to US date format, adds images. (#1143)
<img width="509" height="858" alt="image"
src="https://github.com/user-attachments/assets/520a1a01-f13f-4e20-a3e7-9e47a777b507"
/>

Full image view support:
<img width="2345" height="924" alt="image"
src="https://github.com/user-attachments/assets/f22f7a83-fc47-4d37-a251-56f1fbb62c8f"
/>





<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added interactive fullscreen image preview for changelog entries with
keyboard and click-to-close controls.

* **Improvements**
  * Unified changelog date format to US M/D/YY for consistent display.
* Broadened external image loading so changelog images from common hosts
display reliably.
  * Inserted image badge placeholders to enhance changelog visuals.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-02 11:21:21 -06:00
Bilal Godil
fe393e9c36 merge dev 2026-02-02 09:06:21 -08:00
Konstantin Wohlwend
6856f8761e Reorder imports
Some checks failed
all-good: Did all the other checks pass? / all-good (push) Has been cancelled
Ensure Prisma migrations are in sync with the schema / check_prisma_migrations (22.x) (push) Has been cancelled
DB migrations are backwards-compatible / Check if migrations changed (push) Has been cancelled
Docker Server Build and Push / Docker Build and Push Server (push) Has been cancelled
Docker Server Build and Run / docker (push) Has been cancelled
Runs E2E API Tests / E2E Tests (Node ${{ matrix.node-version }}, Freestyle ${{ matrix.freestyle-mode }}) (mock, 22.x) (push) Has been cancelled
Runs E2E API Tests / E2E Tests (Node ${{ matrix.node-version }}, Freestyle ${{ matrix.freestyle-mode }}) (prod, 22.x) (push) Has been cancelled
Runs E2E API Tests with custom port prefix / build (22.x) (push) Has been cancelled
Runs E2E API Tests with external source of truth / build (22.x) (push) Has been cancelled
Lint & build / lint_and_build (latest) (push) Has been cancelled
Dev Environment Test With Custom Base Port / restart-dev-and-test-with-custom-base-port (push) Has been cancelled
Dev Environment Test / restart-dev-and-test (push) Has been cancelled
Run setup tests with custom base port / setup-tests-with-custom-base-port (push) Has been cancelled
Run setup tests / setup-tests (push) Has been cancelled
TOC Generator / TOC Generator (push) Has been cancelled
DB migrations are backwards-compatible / Test migrations with ${{ needs.check-migrations-changed.outputs.base_branch }} branch code (push) Has been cancelled
DB migrations are backwards-compatible / No migration changes (skipped) (push) Has been cancelled
2026-01-31 17:07:44 -08:00
Konstantin Wohlwend
d2beaa96c1 Fix tests 2026-01-30 23:54:44 -08:00
Konstantin Wohlwend
507859e71f Upgrade PostHog 2026-01-30 23:38:06 -08:00
Konstantin Wohlwend
da209f686c Better Clickhouse errors during development 2026-01-30 22:39:17 -08:00
Bilal Godil
856aaf3d46 fix tests 2026-01-30 18:07:55 -08:00
Konstantin Wohlwend
57a050ef01 Run Query in Control Center 2026-01-30 17:56:10 -08:00
BilalG1
85bb8933ec
Merge branch 'dev' into external-db-sync 2026-01-30 16:42:54 -08:00
Konstantin Wohlwend
823733e8fb Allow certain long-running paths
Some checks failed
all-good: Did all the other checks pass? / all-good (push) Has been cancelled
Ensure Prisma migrations are in sync with the schema / check_prisma_migrations (22.x) (push) Has been cancelled
Docker Server Build and Push / Docker Build and Push Server (push) Has been cancelled
Docker Server Build and Run / docker (push) Has been cancelled
Runs E2E API Tests / E2E Tests (Node ${{ matrix.node-version }}, Freestyle ${{ matrix.freestyle-mode }}) (mock, 22.x) (push) Has been cancelled
Runs E2E API Tests / E2E Tests (Node ${{ matrix.node-version }}, Freestyle ${{ matrix.freestyle-mode }}) (prod, 22.x) (push) Has been cancelled
Runs E2E API Tests with custom port prefix / build (22.x) (push) Has been cancelled
Runs E2E API Tests with external source of truth / build (22.x) (push) Has been cancelled
Lint & build / lint_and_build (latest) (push) Has been cancelled
Mirror main branch to main-mirror-for-wdb / lint_and_build (push) Has been cancelled
Publish npm packages / publish (push) Has been cancelled
Dev Environment Test With Custom Base Port / restart-dev-and-test-with-custom-base-port (push) Has been cancelled
Dev Environment Test / restart-dev-and-test (push) Has been cancelled
Run setup tests with custom base port / setup-tests-with-custom-base-port (push) Has been cancelled
Run setup tests / setup-tests (push) Has been cancelled
Publish Swift SDK to prerelease repo / publish (push) Has been cancelled
Sync Main to Dev / sync-commits (push) Has been cancelled
TOC Generator / TOC Generator (push) Has been cancelled
2026-01-30 16:40:37 -08:00
Konstantin Wohlwend
9ba141597b Domain stopgaps 2026-01-30 16:20:41 -08:00
Konstantin Wohlwend
28144334eb Fix tests 2026-01-30 16:20:01 -08:00
Bilal Godil
f726f6165b Merge remote-tracking branch 'origin/dev' into external-db-sync 2026-01-30 16:10:39 -08:00
Bilal Godil
ce5a1bbcbd fix tests 2026-01-30 15:44:29 -08:00
Konstantin Wohlwend
0bb39192f8 Improve control center query button 2026-01-30 15:36:43 -08:00
Bilal Godil
74c634b916 fix lint 2026-01-30 15:11:20 -08:00
BilalG1
744b871d4b
Merge branch 'dev' into external-db-sync 2026-01-30 15:05:29 -08:00
Bilal Godil
044377e087 fix tests 2026-01-30 15:05:17 -08:00
Bilal Godil
4b7dd53bf8 attempt test fixes 2026-01-30 14:22:02 -08:00
Konstantin Wohlwend
f741698971 chore: update package versions 2026-01-30 14:14:14 -08:00
Bilal Godil
bd788b4761 fix env 2026-01-30 13:28:54 -08:00
Bilal Godil
1f6774272c fix env 2026-01-30 13:23:02 -08:00
Bilal Godil
939b1a96c6 resolve pr comments 2026-01-30 11:13:52 -08:00
Bilal Godil
79e330ff94 comment resolving 2026-01-30 10:55:29 -08:00
Bilal Godil
0c1a02e381 fix flaky test and external sot sync 2026-01-30 09:51:16 -08:00
Bilal Godil
ac261d24f0 increase session test time 2026-01-29 17:38:26 -08:00
Bilal Godil
c4ed09aa6b fix 2026-01-29 14:52:25 -08:00