chore(studio): move review-context comments to the PR

Claude-Session: https://claude.ai/code/session_01MLH8WVg8zBJnmZTYTV3ooo
This commit is contained in:
Alaister Young committed 2026-07-07 11:04:37 +08:00
1 parent a288437fc5
commit f1ca4d3880
4 files changed
+11 -14

No files matched your search

+2 -2
View File
@@ -6,8 +6,8 @@
* at module scope. Optional chaining does NOT guard an undeclared `process`
* identifier in the browser, so any built chunk containing it throws
* `ReferenceError: process is not defined` at load time (observed on the
* table editor route). The Vite dev server shims `process`, which is why
* this only surfaced in the production/test build.
* table editor route). The Vite dev server shims `process`, so the crash
* only surfaces in the production/test build.
*
* vite.config.ts aliases `@sentry/nextjs` to this module for the TanStack
* build only — app source keeps importing `@sentry/nextjs`, and the Next
+2 -2
View File
@@ -10,12 +10,12 @@ import { searchParamsToRecord, type SearchRecord } from './router-search-params'
// `navigate({ to: renderQueryString(search) || '.', from })`. That shape is
// doubly broken for us:
// - TanStack resolves a `?`-only relative `to` by *appending* it to the
// current path, injecting a trailing slash — every nuqs write turned
// current path, injecting a trailing slash — every nuqs write turns
// `/auth/providers?provider=x` into `/auth/providers/?provider=x`.
// - Embedding the query string in `to` at all sends it through TanStack's
// path interpolation, which percent-decodes and then strips control
// characters — `%0A` newlines in values (e.g. Logs Explorer SQL in `s`)
// were silently deleted.
// are silently deleted.
// So we navigate with `to` = the current pathname and the query as a
// TanStack `search` *object*, which the router serialises through the app's
// Next-style codec (lib/router-search-params) without touching the path
+3 -4
View File
@@ -7,10 +7,9 @@
* --font-sans -> body (Inter) [theme.css: --font-sans]
* --font-heading -> headings (Manrope) [globals.css @theme inline]
* --font-source-code-pro -> mono (Source Code Pro)
* #47306 renamed the sans var from --font-custom to --font-sans and added
* --font-heading (Manrope); this file wasn't updated, so on TanStack the body
* fell through to the theme fallback chain (Circular/system) and headings had
* no Manrope.
* If a var is renamed on the Next side (fonts/index.ts / theme.css), rename it
* here too — otherwise the TanStack build silently falls through to the theme
* fallback chain.
*
* All three families are vendored below (matching next/font, which self-hosts
* them on the Next build) so nothing depends on the Google Fonts CDN at runtime
+4 -6
View File
@@ -418,8 +418,7 @@ export default defineConfig(({ command, mode }) => {
// transform above — a blanket `'define.amd': 'false'` define would also
// rewrite the *read* in vendored bundles that install their own local
// `define` shim (monaco-editor's `esm/vs/base/common/marked/marked.js`)
// and break them the same way an unguarded transform did — see the
// plugin's comment.
// and break them — see the plugin's comment for the failure mode.
const sharedDefines = {
global: 'globalThis',
}
@@ -444,7 +443,7 @@ export default defineConfig(({ command, mode }) => {
// (`next/dist/shared/lib/constants`), whose module scope evaluates
// `process?.features?.typescript` — optional chaining doesn't guard
// an undeclared `process` in the browser, so every built chunk
// containing it (e.g. table-editor) crashed at load with
// containing it (e.g. table-editor) crashes at load with
// "ReferenceError: process is not defined". Dev is unaffected
// because the dev pipeline shims `process`. Point the bare import
// at a shim that re-exports `@sentry/react` (same 10.x version —
@@ -557,10 +556,9 @@ export default defineConfig(({ command, mode }) => {
// entire exports object `{ default: fn }`, and call sites like
// `AwesomeDebouncePromise(fn, 500)` crash with "is not a function" at
// SSR module evaluation. Surfaces on routes that load the table grid.
// `@sentry/nextjs` itself needed CJS workarounds here (noExternal +
// ssr.optimizeDeps.include) — both dropped now that the resolve.alias
// `@sentry/nextjs` deliberately has no entry here: the resolve.alias
// above rewrites it to the `@sentry/react`-backed shim before SSR
// resolution ever sees the id. `@sentry/react` ships real ESM
// resolution ever sees the id, and `@sentry/react` ships real ESM
// ("import" condition → build/esm), so plain externalization works.
noExternal: ['lodash', /^next(\/|$)/, 'tslib', 'react-use', 'awesome-debounce-promise'],
},