-
Notifications
You must be signed in to change notification settings - Fork 431
feat(*): introduce /types subpath exports #7644
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
4036653
faedec2
f62de6d
c0e4cce
0c5e91e
8d2b5e8
f14ee11
36f827b
5853ffa
8afa5ce
1f37e8e
a14cd28
94f1785
d9de356
912ebc7
e69c2f7
869c8e2
bb22fdb
ee020e0
11a27e9
1747104
b370fa1
69abb27
b035510
c678e6b
7ee6f04
4df35a7
3ad9878
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| --- | ||
| '@clerk/clerk-js': patch | ||
| '@clerk/shared': patch | ||
| --- | ||
|
|
||
| Add `reset` method to the sign-in resource. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| "@clerk/localizations": patch | ||
| --- | ||
|
|
||
| Updated Hebrew localization placeholders for user input fields | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| --- | ||
| '@clerk/clerk-js': patch | ||
| '@clerk/shared': patch | ||
| --- | ||
|
|
||
| Add `reset` method to the new signUp resource. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| '@clerk/ui': patch | ||
| --- | ||
|
|
||
| Fix `TaskChooseOrganization` to complete organization activation when logo upload fails |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| "@clerk/clerk-js": patch | ||
| --- | ||
|
|
||
| fix(clerk-js): Handle missing window.location in React Native navigation |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| '@clerk/localizations': patch | ||
| --- | ||
|
|
||
| Update translations for locales: Spanish (es-ES) billing page improvements, Portuguese (pt-BR) enterprise connections and password errors, and comprehensive Finnish (fi-FI) updates across authentication, billing, and organization management |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| '@clerk/upgrade': patch | ||
| --- | ||
|
|
||
| Fix typos in core-3 upgrade guide change files |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| --- | ||
| --- |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| --- | ||
| --- |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| '@clerk/upgrade': patch | ||
| --- | ||
|
|
||
| Fix issue where package.json files were ignored. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| '@clerk/react': patch | ||
| --- | ||
|
|
||
| Destructure `getContainer` from button components. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| "@clerk/shared": patch | ||
| --- | ||
|
|
||
| Use `globalThis` instead of `global` in `isomorphicBtoa` and `isomorphicAtob` for cross-platform compatibility |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,128 @@ | ||
| --- | ||
| "@clerk/backend": minor | ||
| "@clerk/shared": minor | ||
| "@clerk/clerk-js": minor | ||
| "@clerk/tanstack-react-start": minor | ||
| "@clerk/nextjs": patch | ||
| "@clerk/astro": patch | ||
| --- | ||
|
|
||
| Add `satelliteAutoSync` option to optimize satellite app handshake behavior | ||
|
|
||
| Satellite apps currently trigger a handshake redirect on every first page load, even when no cookies exist. This creates unnecessary redirects to the primary domain for apps where most users aren't authenticated. | ||
|
|
||
| **New option: `satelliteAutoSync`** (default: `false`) | ||
| - When `false` (default): Skip automatic handshake if no session cookies exist, only trigger after explicit sign-in action | ||
| - When `true`: Satellite apps automatically trigger handshake on first load (previous behavior) | ||
|
|
||
| **New query parameter: `__clerk_sync`** | ||
| - `__clerk_sync=1` (NeedsSync): Triggers handshake after returning from primary sign-in | ||
| - `__clerk_sync=2` (Completed): Prevents re-sync loop after handshake completes | ||
|
|
||
| Backwards compatible: Still reads legacy `__clerk_synced=true` parameter. | ||
|
|
||
| **SSR redirect fix**: Server-side redirects (e.g., `redirectToSignIn()` from middleware) now correctly add `__clerk_sync=1` to the return URL for satellite apps. This ensures the handshake is triggered when the user returns from sign-in on the primary domain. | ||
|
|
||
| **CSR redirect fix**: Client-side redirects now add `__clerk_sync=1` to all redirect URL variants (`forceRedirectUrl`, `fallbackRedirectUrl`) for satellite apps, not just the default `redirectUrl`. | ||
|
|
||
| ## Usage | ||
|
|
||
| ### SSR (Next.js Middleware) | ||
| ```typescript | ||
| import { clerkMiddleware } from '@clerk/nextjs/server'; | ||
|
|
||
| export default clerkMiddleware({ | ||
| isSatellite: true, | ||
| domain: 'satellite.example.com', | ||
| signInUrl: 'https://primary.example.com/sign-in', | ||
| // Set to true to automatically sync auth state on first load | ||
| satelliteAutoSync: true, | ||
| }); | ||
| ``` | ||
|
|
||
| ### SSR (TanStack Start) | ||
| ```typescript | ||
| import { clerkMiddleware } from '@clerk/tanstack-react-start/server'; | ||
|
|
||
| export default clerkMiddleware({ | ||
| isSatellite: true, | ||
| domain: 'satellite.example.com', | ||
| signInUrl: 'https://primary.example.com/sign-in', | ||
| // Set to true to automatically sync auth state on first load | ||
| satelliteAutoSync: true, | ||
| }); | ||
| ``` | ||
|
|
||
| ### CSR (ClerkProvider) | ||
| ```tsx | ||
| <ClerkProvider | ||
| publishableKey="pk_..." | ||
| isSatellite={true} | ||
| domain="satellite.example.com" | ||
| signInUrl="https://primary.example.com/sign-in" | ||
| // Set to true to automatically sync auth state on first load | ||
| satelliteAutoSync={true} | ||
| > | ||
| {children} | ||
| </ClerkProvider> | ||
| ``` | ||
|
|
||
| ### SSR (TanStack Start with callback) | ||
| ```typescript | ||
| import { clerkMiddleware } from '@clerk/tanstack-react-start/server'; | ||
|
|
||
| // Options callback - receives context object, returns options | ||
| export default clerkMiddleware(({ url }) => ({ | ||
| isSatellite: true, | ||
| domain: 'satellite.example.com', | ||
| signInUrl: 'https://primary.example.com/sign-in', | ||
| satelliteAutoSync: url.pathname.startsWith('/dashboard'), | ||
| })); | ||
| ``` | ||
|
|
||
| ## Migration Guide | ||
|
|
||
| ### Behavior change: `satelliteAutoSync` defaults to `false` | ||
|
|
||
| Previously, satellite apps would automatically trigger a handshake redirect on every first page load to sync authentication state with the primary domain—even when no session cookies existed. This caused unnecessary redirects to the primary domain for users who weren't authenticated. | ||
|
|
||
| The new default (`satelliteAutoSync: false`) provides a better experience for end users. Performance-wise, the satellite app can be shown immediately without attempting to sync state first, which is the right behavior for most use cases. | ||
|
|
||
| **To preserve the previous behavior** where visiting a satellite while already signed in on the primary domain automatically syncs your session, set `satelliteAutoSync: true`: | ||
|
|
||
| ```typescript | ||
| export default clerkMiddleware({ | ||
| isSatellite: true, | ||
| domain: 'satellite.example.com', | ||
| signInUrl: 'https://primary.example.com/sign-in', | ||
| satelliteAutoSync: true, // Opt-in to automatic sync on first load | ||
| }); | ||
| ``` | ||
|
|
||
| ### TanStack Start: Function props to options callback | ||
|
|
||
| The `clerkMiddleware` function no longer accepts individual props as functions. If you were using the function form for props like `domain`, `proxyUrl`, or `isSatellite`, migrate to the options callback pattern. | ||
|
|
||
| **Before (prop function form - no longer supported):** | ||
| ```typescript | ||
| import { clerkMiddleware } from '@clerk/tanstack-react-start/server'; | ||
|
|
||
| export default clerkMiddleware({ | ||
| isSatellite: true, | ||
| // ❌ Function form for individual props no longer works | ||
| domain: (url) => url.hostname, | ||
| }); | ||
| ``` | ||
|
|
||
| **After (options callback form):** | ||
| ```typescript | ||
| import { clerkMiddleware } from '@clerk/tanstack-react-start/server'; | ||
|
|
||
| // ✅ Wrap entire options in a callback function | ||
| export default clerkMiddleware(({ url }) => ({ | ||
| isSatellite: true, | ||
| domain: url.hostname, | ||
| })); | ||
| ``` | ||
|
|
||
| The callback receives a context object with the `url` property (a `URL` instance) and can return options synchronously or as a Promise for async configuration. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| --- | ||
| "@clerk/ui": minor | ||
| "@clerk/react": minor | ||
| "@clerk/shared": patch | ||
| --- | ||
|
|
||
| Add shared React variant to reduce bundle size when using `@clerk/react`. | ||
|
|
||
| Introduces a new `ui.shared.browser.js` build variant that externalizes React dependencies, allowing the host application's React to be reused instead of bundling a separate copy. This can significantly reduce bundle size for applications using `@clerk/react`. | ||
|
|
||
| **New features:** | ||
| - `@clerk/ui/register` module: Import this to register React on `globalThis.__clerkSharedModules` for sharing with `@clerk/ui` | ||
| - `clerkUIVariant` option: Set to `'shared'` to use the shared variant (automatically detected and enabled for compatible React versions in `@clerk/react`) | ||
|
|
||
| **For `@clerk/react` users:** No action required. The shared variant is automatically used when your React version is compatible. | ||
|
|
||
| **For custom integrations:** Import `@clerk/ui/register` before loading the UI bundle, then set `clerkUIVariant: 'shared'` in your configuration. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| --- | ||
| --- |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| '@clerk/clerk-js': patch | ||
| --- | ||
|
|
||
| Fix issue where `signUp.password()` created a new sign-up when called after `signUp.create()` |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| '@clerk/ui': minor | ||
| --- | ||
|
|
||
| Extract `<ProviderIcon />` component to ensure consistency is usage across the UI components. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| '@clerk/ui': patch | ||
| --- | ||
|
|
||
| Fix incorrect guard for hiding "Create organization" action. The `maxAllowedMemberships` setting limits seats per organization, not the number of organizations a user can create. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| --- | ||
| --- | ||
|
Comment on lines
+1
to
+2
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Changeset is incomplete and missing package declarations and description. The changeset file contains only empty YAML frontmatter with no package declarations or change description. For a feature that adds
Without a proper changeset, the automated release process won't version bump the affected packages or generate changelog entries. 📝 Example of a properly formatted changeset ---
+'@clerk/react': minor
+'@clerk/nextjs': minor
+'@clerk/astro': minor
+'@clerk/chrome-extension': minor
+'@clerk/expo': minor
+'@clerk/express': minor
+'@clerk/fastify': minor
+'@clerk/nuxt': minor
+'@clerk/react-router': minor
+'@clerk/tanstack-react-start': minor
+'@clerk/vue': minor
---
+
+Introduce `/types` subpath exports for all SDK packages. You can now import Clerk types directly from your SDK package:
+
+```ts
+import type { ClerkOptions } from '@clerk/react/types';
+```
+
+This eliminates the need to install `@clerk/types` separately and ensures type versions always match your SDK version.🤖 Prompt for AI Agents |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| "@clerk/shared": patch | ||
| --- | ||
|
|
||
| Use `globalThis` instead of `global` in `encodeB64` |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| "@clerk/localizations": patch | ||
| --- | ||
|
|
||
| Updated es-ES translations for billing |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| --- | ||
| '@clerk/react': minor | ||
| '@clerk/nextjs': minor | ||
| '@clerk/tanstack-react-start': minor | ||
| '@clerk/react-router': minor | ||
| '@clerk/express': minor | ||
| '@clerk/fastify': minor | ||
| '@clerk/astro': minor | ||
| '@clerk/nuxt': minor | ||
| '@clerk/vue': minor | ||
| '@clerk/expo': minor | ||
| '@clerk/chrome-extension': minor | ||
| --- | ||
|
|
||
| Add `/types` subpath export to re-export types from `@clerk/shared/types` along with SDK-specific types. This allows importing Clerk types directly from the SDK package (e.g., `import type { UserResource } from '@clerk/react/types'`) without needing to install `@clerk/types` as a separate dependency. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add tests for the new No tests were added or updated; please add coverage to ensure each new 🤖 Prompt for AI Agents |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| '@clerk/react': minor | ||
| --- | ||
|
|
||
| Add automatic environment variable fallback for Vite applications. When `publishableKey` is not explicitly provided to `ClerkProvider`, the SDK now checks for `VITE_CLERK_PUBLISHABLE_KEY` and `CLERK_PUBLISHABLE_KEY` environment variables. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| --- | ||
| --- |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| --- | ||
| --- |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -70,10 +70,35 @@ jobs: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| E2E_CLERK_UI_VERSION: "latest" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| E2E_NEXTJS_VERSION: "canary" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| E2E_NPM_FORCE: "true" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| E2E_REACT_DOM_VERSION: "19.2.1" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| E2E_REACT_VERSION: "19.2.1" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| E2E_REACT_DOM_VERSION: "19.2.3" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| E2E_REACT_VERSION: "19.2.3" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| INTEGRATION_INSTANCE_KEYS: ${{ secrets.INTEGRATION_INSTANCE_KEYS }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Print error logs for immediate visibility in CI | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Print App Error Logs | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if: steps.integration_tests.outputs.exit_code != '0' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| run: | | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| echo "=== Integration Test Failed ===" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| echo "" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Integration tests use os.tmpdir() which is /tmp on Linux | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if [ -d /tmp/.temp_integration ]; then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| echo "=== App Error Logs (.err.log files) ===" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| find /tmp/.temp_integration -name "*.err.log" -type f 2>/dev/null | while read f; do | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| echo "" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| echo "--- $f ---" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| tail -100 "$f" 2>/dev/null || echo "(empty or not readable)" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| done | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| echo "" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| echo "=== App Stdout Logs (last 50 lines each) ===" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| find /tmp/.temp_integration -name "e2e.*.log" -type f 2>/dev/null | while read f; do | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| echo "" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| echo "--- $f ---" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| tail -50 "$f" 2>/dev/null || echo "(empty or not readable)" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| done | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| else | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| echo "=== No app logs found (directory /tmp/.temp_integration does not exist) ===" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+77
to
+100
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Avoid leaking secrets/PII in CI log output. These logs can include runtime tokens or user data; printing them verbatim to CI logs is risky. Please add redaction (or gate the output) before emitting log contents. 🔒 Suggested redaction helper - name: Print App Error Logs
if: steps.integration_tests.outputs.exit_code != '0'
run: |
echo "=== Integration Test Failed ==="
echo ""
+ redact() {
+ sed -E \
+ -e 's/(sk_(live|test)_[A-Za-z0-9]+)/[REDACTED]/g' \
+ -e 's/("?(api|secret|token|key)"?\s*[:=]\s*")[^"]+/\1[REDACTED]/gi'
+ }
# Integration tests use os.tmpdir() which is /tmp on Linux
if [ -d /tmp/.temp_integration ]; then
echo "=== App Error Logs (.err.log files) ==="
find /tmp/.temp_integration -name "*.err.log" -type f 2>/dev/null | while read f; do
echo ""
echo "--- $f ---"
- tail -100 "$f" 2>/dev/null || echo "(empty or not readable)"
+ tail -100 "$f" 2>/dev/null | redact || echo "(empty or not readable)"
done
echo ""
echo "=== App Stdout Logs (last 50 lines each) ==="
find /tmp/.temp_integration -name "e2e.*.log" -type f 2>/dev/null | while read f; do
echo ""
echo "--- $f ---"
- tail -50 "$f" 2>/dev/null || echo "(empty or not readable)"
+ tail -50 "$f" 2>/dev/null | redact || echo "(empty or not readable)"
done
else
echo "=== No app logs found (directory /tmp/.temp_integration does not exist) ==="
fi📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Upload test artifacts if tests failed | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Upload Test Artifacts | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if: steps.integration_tests.outputs.exit_code != '0' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -82,10 +107,8 @@ jobs: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| name: test-artifacts-${{ matrix.test-name }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| path: | | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ${{runner.temp}}/test-output.log | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /tmp/.temp_integration/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| integration/test-results/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
108
to
111
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Scope artifacts to logs only to reduce leakage/size. Uploading the whole temp dir risks capturing secrets or bulky files (e.g., caches, node_modules). Prefer whitelisting log files. ♻️ Suggested narrowing of artifacts with:
name: test-artifacts-${{ matrix.test-name }}
path: |
${{runner.temp}}/test-output.log
- /tmp/.temp_integration/
+ /tmp/.temp_integration/**/*.log
integration/test-results/
retention-days: 7📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| integration/.next/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ${{runner.temp}}/clerk-js/node_modules/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ${{runner.temp}}/clerk-ui/node_modules/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| retention-days: 7 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Report Status | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add test/verification coverage for the localization update.
There’s no accompanying test or validation for the updated Hebrew placeholders. Please add a minimal localization snapshot/RTL verification (or document the manual verification in CI) to prevent regressions. As per coding guidelines, please add tests covering these changes.
🤖 Prompt for AI Agents