Quentin Gliech
ee1a104705
Render the CAPTCHA widgets with React on server-rendered pages
...
Instead of provider-specific markup and script tags in the head, the
captcha.form() template macro now emits a placeholder element carrying
the CAPTCHA configuration in data attributes, on which a new entrypoint
mounts the React Captcha component. The widget still injects its hidden
response field inside the form, so the server-side verification flow is
unchanged.
This is the first use of inline React components to progressively
enhance server-rendered pages.
2026-08-14 15:47:19 +02:00
Quentin Gliech
d0370a6b3f
Simplify the Captcha component back down
...
The previous commit grew a load timeout, script-tag eviction, an error
boundary and a retry button, and swapped the imperative `CaptchaHandle`
ref for an `onValidChange` callback. None of that is needed to mount a
widget on a server-rendered page, and some of it does not work: removing
the `<script>` tag does not stop a load the browser has already started,
and the timeout deletes the global onload callback, so an SDK which is
merely slow ends up calling into nothing.
Go back to exposing validity through a ref, and keep only the
per-provider placeholder heights, which are what stops the page jumping
once the widget renders. Whatever a React form needs to react to the
captcha being solved belongs with that form.
2026-08-14 15:47:19 +02:00
Quentin Gliech
182e08d0cb
Add a React component to render CAPTCHA widgets
...
Adds a reusable Captcha React component along with the type
definitions for the supported providers (hCaptcha, Cloudflare
Turnstile, Google reCAPTCHA). The provider SDKs are lazy-loaded by the
component itself, suspending the tree while they load, and evicted on
failure so a retry can re-attempt the load. The widgets report
solved/expired state through an `onValidChange` callback.
2026-08-10 16:51:37 +02:00
Quentin Gliech
2085f1097f
Rename the WithCaptcha template context field to captcha_config
...
The field name is now more descriptive of what it actually is – the
configuration of the CAPTCHA provider – and aligns with the key used
when passing it to the client-side React form.
2026-08-10 15:01:55 +02:00
Quentin Gliech and GitHub
ed45464b9f
Load frontend translations with JS dynamic imports rather than fetching as JSON ( #5915 )
2026-08-10 15:01:36 +02:00
Quentin Gliech and GitHub
8892cc7eb8
Remove the GraphQL playground ( #5914 )
2026-08-10 14:57:59 +02:00
Quentin Gliech
cacc757cef
Emit a modulepreload for dynamically imported chunks in include_asset
...
Now that the translations are lazily imported JS chunks rather than plain JSON
assets, `include_asset('locales/<lang>.json')` resolves to a manifest entry
flagged `isDynamicEntry`. Those must not be evaluated eagerly with a `<script>`
tag, so emit the same `modulepreload` hint we already use for imported chunks,
integrity included, and drop the now-unreachable top-level JSON preload.
2026-08-07 17:59:27 +02:00
Quentin Gliech
5d7a66557a
Load frontend translations with dynamic imports instead of fetch
...
`import.meta.glob` now generates lazy loaders for the locale JSON modules
rather than hashed asset URLs, so `Backend.read` awaits an `import()` instead
of doing a `fetch`. This puts translation loading under the `script-src` CSP
directive instead of `connect-src`, and lets the browser preload them as
modules, which the `<link rel="preload" as="fetch">` hint never really did
because of the credentials-mode mismatch.
Dynamic imports are cached for the lifetime of the page, so locale
hot-reloading now triggers a full page reload in dev instead of asking i18next
to re-read its resources.
2026-08-07 17:59:26 +02:00
Quentin Gliech
c3b5fa3b0c
Remove the GraphQL playground
...
The interactive playground page and its route/config option are gone; the GraphQL API itself (POST /graphql) is unaffected. External GraphQL usage is deprecated anyway in favour of the REST admin API.
2026-08-07 12:26:42 +02:00
Quentin Gliech and GitHub
682b8d26d3
build(deps): bump the sentry group across 1 directory with 3 updates ( #5894 )
2026-08-07 10:23:54 +02:00
Quentin Gliech and GitHub
28338969e1
build(deps-dev): bump storybook from 10.4.6 to 10.5.3 in the storybook group across 1 directory ( #5897 )
2026-08-07 10:23:10 +02:00
Quentin Gliech and GitHub
2df5d84439
build(deps): bump EmbarkStudios/cargo-deny-action from 2.0.20 to 2.1.1 ( #5891 )
2026-08-07 10:19:05 +02:00
Quentin Gliech
146b7fe379
Update the Sentry transport to use the new options API
2026-08-07 10:07:38 +02:00
dependabot[bot] and GitHub
e7cb472bc8
build(deps): bump EmbarkStudios/cargo-deny-action from 2.0.20 to 2.1.1
...
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/embarkstudios/cargo-deny-action ) from 2.0.20 to 2.1.1.
- [Release notes](https://github.com/embarkstudios/cargo-deny-action/releases )
- [Commits](https://github.com/embarkstudios/cargo-deny-action/compare/bb137d7af7e4fb67e5f82a49c4fce4fad40782fe...3c6349835b2b7b196a839186cb8b78e02f7b5f25 )
---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
dependency-version: 2.1.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-08-07 08:03:01 +00:00
dependabot[bot] and GitHub
bc2587bd2e
build(deps-dev): bump storybook
...
Bumps the storybook group with 1 update in the / directory: [storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/core ).
Updates `storybook` from 10.4.6 to 10.5.3
- [Release notes](https://github.com/storybookjs/storybook/releases )
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md )
- [Commits](https://github.com/storybookjs/storybook/commits/v10.5.3/code/core )
---
updated-dependencies:
- dependency-name: storybook
dependency-version: 10.5.2
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: storybook
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-08-07 07:59:31 +00:00
Quentin Gliech and GitHub
63cb828dea
build(deps): bump the tanstack-router group across 1 directory with 2 updates ( #5901 )
2026-08-07 09:55:13 +02:00
Quentin Gliech
300ede9fe8
Regenerate src/routeTree.gen.ts
2026-08-07 09:39:09 +02:00
dependabot[bot] and GitHub
6ed06dde73
build(deps): bump the tanstack-router group across 1 directory with 2 updates
...
Bumps the tanstack-router group with 2 updates in the / directory: [@tanstack/react-router](https://github.com/TanStack/router/tree/HEAD/packages/react-router ) and [@tanstack/router-plugin](https://github.com/TanStack/router/tree/HEAD/packages/router-plugin ).
Updates `@tanstack/react-router` from 1.170.17 to 1.170.18
- [Release notes](https://github.com/TanStack/router/releases )
- [Changelog](https://github.com/TanStack/router/blob/main/packages/react-router/CHANGELOG.md )
- [Commits](https://github.com/TanStack/router/commits/@tanstack/react-router@1.170.18/packages/react-router )
Updates `@tanstack/router-plugin` from 1.168.19 to 1.168.23
- [Release notes](https://github.com/TanStack/router/releases )
- [Changelog](https://github.com/TanStack/router/blob/main/packages/router-plugin/CHANGELOG.md )
- [Commits](https://github.com/TanStack/router/commits/@tanstack/router-plugin@1.168.23/packages/router-plugin )
---
updated-dependencies:
- dependency-name: "@tanstack/react-router"
dependency-version: 1.170.18
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: tanstack-router
- dependency-name: "@tanstack/router-plugin"
dependency-version: 1.168.22
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: tanstack-router
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-08-06 19:51:31 +00:00
Quentin Gliech and GitHub
205d31d109
Revert "build(deps-dev): bump the graphql-codegen group" ( #5909 )
2026-08-06 18:44:06 +02:00
Quentin Gliech
e58527d807
Revert "build(deps-dev): bump the graphql-codegen group across 1 directory with 2 updates"
...
This reverts commit dca32d3871 .
2026-08-06 17:03:04 +02:00
Quentin Gliech and GitHub
c8609fbce5
build(deps-dev): bump the graphql-codegen group with 2 updates ( #5900 )
2026-08-05 13:48:20 +02:00
Quentin Gliech and GitHub
a5800983b8
build(deps): bump softprops/action-gh-release from 3.0.0 to 3.0.2 ( #5888 )
2026-08-05 13:37:38 +02:00
Quentin Gliech and GitHub
ee0db1548a
build(deps): bump the i18next group with 3 updates ( #5899 )
2026-08-05 13:37:14 +02:00
dependabot[bot] and GitHub
dca32d3871
build(deps-dev): bump the graphql-codegen group across 1 directory with 2 updates
...
Bumps the graphql-codegen group with 2 updates in the / directory: [@graphql-codegen/cli](https://github.com/dotansimha/graphql-code-generator/tree/HEAD/packages/graphql-codegen-cli ) and [@graphql-codegen/client-preset](https://github.com/dotansimha/graphql-code-generator/tree/HEAD/packages/presets/client ).
Updates `@graphql-codegen/cli` from 7.1.3 to 7.2.0
- [Release notes](https://github.com/dotansimha/graphql-code-generator/releases )
- [Changelog](https://github.com/dotansimha/graphql-code-generator/blob/master/packages/graphql-codegen-cli/CHANGELOG.md )
- [Commits](https://github.com/dotansimha/graphql-code-generator/commits/@graphql-codegen/cli@7.2.0/packages/graphql-codegen-cli )
Updates `@graphql-codegen/client-preset` from 6.0.1 to 6.1.0
- [Release notes](https://github.com/dotansimha/graphql-code-generator/releases )
- [Changelog](https://github.com/dotansimha/graphql-code-generator/blob/master/packages/presets/client/CHANGELOG.md )
- [Commits](https://github.com/dotansimha/graphql-code-generator/commits/@graphql-codegen/client-preset@6.1.0/packages/presets/client )
---
updated-dependencies:
- dependency-name: "@graphql-codegen/cli"
dependency-version: 7.2.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: graphql-codegen
- dependency-name: "@graphql-codegen/client-preset"
dependency-version: 6.1.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: graphql-codegen
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-08-05 11:34:26 +00:00
dependabot[bot] and GitHub
93977aa119
build(deps): bump the sentry group across 1 directory with 3 updates
...
Bumps the sentry group with 1 update in the / directory: [sentry](https://github.com/getsentry/sentry-rust ).
Updates `sentry` from 0.48.2 to 0.48.5
- [Release notes](https://github.com/getsentry/sentry-rust/releases )
- [Changelog](https://github.com/getsentry/sentry-rust/blob/master/CHANGELOG.md )
- [Commits](https://github.com/getsentry/sentry-rust/compare/0.48.2...0.48.5 )
Updates `sentry-tower` from 0.48.2 to 0.48.5
- [Release notes](https://github.com/getsentry/sentry-rust/releases )
- [Changelog](https://github.com/getsentry/sentry-rust/blob/master/CHANGELOG.md )
- [Commits](https://github.com/getsentry/sentry-rust/compare/0.48.2...0.48.5 )
Updates `sentry-tracing` from 0.48.2 to 0.48.5
- [Release notes](https://github.com/getsentry/sentry-rust/releases )
- [Changelog](https://github.com/getsentry/sentry-rust/blob/master/CHANGELOG.md )
- [Commits](https://github.com/getsentry/sentry-rust/compare/0.48.2...0.48.5 )
---
updated-dependencies:
- dependency-name: sentry
dependency-version: 0.48.5
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: sentry
- dependency-name: sentry-tower
dependency-version: 0.48.5
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: sentry
- dependency-name: sentry-tracing
dependency-version: 0.48.5
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: sentry
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-08-05 11:31:54 +00:00
Quentin Gliech and GitHub
396f4419ca
build(deps): bump opentelemetry-semantic-conventions from 0.32.0 to 0.32.1 in the opentelemetry group ( #5892 )
2026-08-05 13:31:09 +02:00
Quentin Gliech and GitHub
5258872dad
build(deps-dev): bump the vite group across 1 directory with 2 updates ( #5906 )
2026-08-05 13:30:32 +02:00
Quentin Gliech and GitHub
b58efe2a73
build(deps): bump docker/login-action from 4.2.0 to 4.4.0 ( #5889 )
2026-08-05 13:28:31 +02:00
Quentin Gliech and GitHub
0a6564d4cd
build(deps): bump socket2 from 0.6.4 to 0.6.5 ( #5895 )
2026-08-05 13:28:08 +02:00
Quentin Gliech and GitHub
9dcd8ad254
build(deps): bump actions/setup-node from 6.4.0 to 7.0.0 ( #5890 )
2026-08-05 13:25:16 +02:00
Quentin Gliech and GitHub
5ede8ad3ab
build(deps): bump docker/metadata-action from 6.1.0 to 6.2.0 ( #5887 )
2026-08-05 13:24:00 +02:00
dependabot[bot] and GitHub
c9e44c8bb8
build(deps): bump the i18next group across 1 directory with 3 updates
...
Bumps the i18next group with 3 updates in the / directory: [i18next](https://github.com/i18next/i18next ), [react-i18next](https://github.com/i18next/react-i18next ) and [i18next-cli](https://github.com/i18next/i18next-cli ).
Updates `i18next` from 26.3.4 to 26.3.6
- [Release notes](https://github.com/i18next/i18next/releases )
- [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md )
- [Commits](https://github.com/i18next/i18next/compare/v26.3.4...v26.3.6 )
Updates `react-i18next` from 17.0.8 to 17.0.10
- [Changelog](https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md )
- [Commits](https://github.com/i18next/react-i18next/compare/v17.0.8...v17.0.10 )
Updates `i18next-cli` from 1.65.0 to 1.66.2
- [Changelog](https://github.com/i18next/i18next-cli/blob/main/CHANGELOG.md )
- [Commits](https://github.com/i18next/i18next-cli/compare/v1.65.0...v1.66.2 )
---
updated-dependencies:
- dependency-name: i18next
dependency-version: 26.3.6
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: i18next
- dependency-name: i18next-cli
dependency-version: 1.66.2
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: i18next
- dependency-name: react-i18next
dependency-version: 17.0.10
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: i18next
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-08-05 11:12:26 +00:00
dependabot[bot] and GitHub
3c1c0705b8
build(deps-dev): bump the vite group across 1 directory with 2 updates
...
Bumps the vite group with 2 updates in the / directory: [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react ) and [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite ).
Updates `@vitejs/plugin-react` from 6.0.3 to 6.0.4
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases )
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md )
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@6.0.4/packages/plugin-react )
Updates `vite` from 8.1.3 to 8.1.5
- [Release notes](https://github.com/vitejs/vite/releases )
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md )
- [Commits](https://github.com/vitejs/vite/commits/v8.1.5/packages/vite )
---
updated-dependencies:
- dependency-name: "@vitejs/plugin-react"
dependency-version: 6.0.4
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: vite
- dependency-name: vite
dependency-version: 8.1.5
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: vite
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-08-05 11:11:26 +00:00
dependabot[bot] and GitHub
0949eb68f0
build(deps): bump opentelemetry-semantic-conventions
...
Bumps the opentelemetry group with 1 update in the / directory: [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-rust ).
Updates `opentelemetry-semantic-conventions` from 0.32.0 to 0.32.1
- [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases )
- [Changelog](https://github.com/open-telemetry/opentelemetry-rust/blob/main/docs/release_0.32.md )
- [Commits](https://github.com/open-telemetry/opentelemetry-rust/compare/opentelemetry-semantic-conventions-0.32.0...opentelemetry-semantic-conventions-0.32.1 )
---
updated-dependencies:
- dependency-name: opentelemetry-semantic-conventions
dependency-version: 0.32.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: opentelemetry
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-08-05 11:09:55 +00:00
dependabot[bot] and GitHub
a288db8d80
build(deps): bump socket2 from 0.6.4 to 0.6.5
...
Bumps [socket2](https://github.com/rust-lang/socket2 ) from 0.6.4 to 0.6.5.
- [Release notes](https://github.com/rust-lang/socket2/releases )
- [Changelog](https://github.com/rust-lang/socket2/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/socket2/commits/v0.6.5 )
---
updated-dependencies:
- dependency-name: socket2
dependency-version: 0.6.5
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-08-05 11:09:45 +00:00
Quentin Gliech and GitHub
7084ae1752
build(deps): bump clap from 4.5.50 to 4.5.60 ( #5896 )
2026-08-05 13:08:25 +02:00
dependabot[bot] and GitHub
54d8cfcc45
build(deps): bump actions/setup-node from 6.4.0 to 7.0.0
...
Bumps [actions/setup-node](https://github.com/actions/setup-node ) from 6.4.0 to 7.0.0.
- [Release notes](https://github.com/actions/setup-node/releases )
- [Commits](https://github.com/actions/setup-node/compare/v6.4.0...v7 )
---
updated-dependencies:
- dependency-name: actions/setup-node
dependency-version: 7.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-08-05 11:08:05 +00:00
dependabot[bot] and GitHub
e47779f8ef
build(deps): bump docker/login-action from 4.2.0 to 4.4.0
...
Bumps [docker/login-action](https://github.com/docker/login-action ) from 4.2.0 to 4.4.0.
- [Release notes](https://github.com/docker/login-action/releases )
- [Commits](https://github.com/docker/login-action/compare/650006c6eb7dba73a995cc03b0b2d7f5ca915bee...af1e73f918a031802d376d3c8bbc3fe56130a9b0 )
---
updated-dependencies:
- dependency-name: docker/login-action
dependency-version: 4.4.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-08-05 11:07:36 +00:00
dependabot[bot] and GitHub
cbf91149d5
build(deps): bump softprops/action-gh-release from 3.0.0 to 3.0.2
...
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release ) from 3.0.0 to 3.0.2.
- [Release notes](https://github.com/softprops/action-gh-release/releases )
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md )
- [Commits](https://github.com/softprops/action-gh-release/compare/b4309332981a82ec1c5618f44dd2e27cc8bfbfda...3d0d9888cb7fd7b750713d6e236d1fcb99157228 )
---
updated-dependencies:
- dependency-name: softprops/action-gh-release
dependency-version: 3.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-08-05 11:07:17 +00:00
dependabot[bot] and GitHub
6e77139c37
build(deps): bump docker/metadata-action from 6.1.0 to 6.2.0
...
Bumps [docker/metadata-action](https://github.com/docker/metadata-action ) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/docker/metadata-action/releases )
- [Commits](https://github.com/docker/metadata-action/compare/80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9...dc802804100637a589fabce1cb79ff13a1411302 )
---
updated-dependencies:
- dependency-name: docker/metadata-action
dependency-version: 6.2.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-08-05 11:07:07 +00:00
Quentin Gliech and GitHub
2a2741ee00
Read javascript entrypoints configuration from data attributes ( #5886 )
2026-08-05 13:05:37 +02:00
dependabot[bot] and GitHub
313ba9f72f
build(deps): bump clap from 4.5.50 to 4.5.60
...
Bumps [clap](https://github.com/clap-rs/clap ) from 4.5.50 to 4.5.60.
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.50...clap_complete-v4.5.60 )
---
updated-dependencies:
- dependency-name: clap
dependency-version: 4.5.60
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-08-04 19:07:05 +00:00
matrixbot and GitHub
6193fc3569
Automatic merge back to main ( #5905 )
2026-08-04 21:04:07 +02:00
github-actions[bot] and GitHub
f28451c4e5
1.22.0
v1.22.0
2026-08-04 18:47:51 +00:00
matrixbot and GitHub
0ed1f96c27
Translations updates for v1.22 ( #5904 )
2026-08-04 20:24:11 +02:00
github-actions[bot] and GitHub
24b2bc3c57
Translations updates
2026-08-04 18:03:18 +00:00
Quentin Gliech and GitHub
d174b4a71c
Ignore RUSTSEC-2026-0222 as we are not affected by it ( #5903 )
2026-08-04 18:18:09 +02:00
Quentin Gliech
9c8a56903c
Ignore RUSTSEC-2026-0222 as we are not affected by it
2026-08-04 17:49:08 +02:00
Quentin Gliech
a1bfbb6cdd
Read the entrypoint configuration from data attributes
...
Instead of injecting configuration through inline <script> tags setting
window globals, server-rendered templates now carry the configuration
as data attributes on the entrypoint mount node, validated client-side
with a valibot schema over element.dataset. This removes all inline
scripts from the templates, which is friendlier to CSP, and gives the
frontend runtime-validated, typed configuration.
The DOM read and the wiring now happen in the entrypoints themselves:
main.tsx parses the mount node dataset, owns the QueryClient, and
injects the basepath and GraphQL endpoint into the router and request
layer instead of those being module-scope singletons.
2026-07-30 20:51:01 +02:00
matrixbot and GitHub
19f3d146a5
Automatic merge back to main ( #5884 )
2026-07-30 19:01:57 +02:00