fix(settings): redirect removed toolbar section to web analytics - #67019
Conversation
|
Size Change: +331 kB (+0.51%) Total Size: 65.7 MB 📦 View Changed
ℹ️ View Unchanged
|
|
This PR hasn't seen activity in a week! Should it be merged, closed, or further worked on? If you want to keep it open, please remove the |
|
👋 Visual changes detected for this PR. Review and approve in PostHog Visual Review If these changes are unexpected, they may be caused by a flaky test or a broken snapshot on master. Don't approve — rerun the job or wait for a fix. |
|
This PR hasn't seen activity in a week! Should it be merged, closed, or further worked on? If you want to keep it open, please remove the |
The dedicated Toolbar settings section was removed and its authorized-URL config folded into Web analytics, but the settings router only canonicalized the llm-analytics rename, so `/settings/project-toolbar` (and `environment-toolbar`) fell through to a "Setting not found" page while the sidebar still highlighted Toolbar. Map both legacy ids to `project-web-analytics` via `LEGACY_SETTINGS_SECTIONS`, the same redirect mechanism already used for llm-analytics. Separately, register a redirect for bare `/alerts` to `/insights?tab=alerts`, which previously 404'd since no route was registered for it. Generated-By: PostHog Code Task-Id: b6f7a43a-d747-46fe-8734-dffc0c3a022d
The removed `/settings/project-toolbar#authorized-urls` deep link now redirects to the Web analytics section, but the `#authorized-urls` anchor pointed at a setting id that no longer exists (it was renamed to `web-analytics-authorized-urls`), so the page didn't scroll to it. Canonicalize the legacy `authorized-urls` hash to `web-analytics-authorized-urls` in `canonicalSettingsHashParams`, mirroring the existing `llm-analytics-byok` rename handling, so the deep link lands on the actual setting. Generated-By: PostHog Code Task-Id: b6f7a43a-d747-46fe-8734-dffc0c3a022d
f1bc892 to
1a41dcd
Compare
The bare /alerts route now resolves to a dedicated Alerts scene (registered in products.tsx), so redirecting /alerts to urls.alerts() would be a circular self-redirect that shadows the real page. Remove it; only the toolbar settings redirect remains needed. Generated-By: PostHog Code Task-Id: b6f7a43a-d747-46fe-8734-dffc0c3a022d
🤖 CI report
|
| Root | Eager (shipped) | Δ vs base | Budget |
|---|---|---|---|
entry (logged-out pages, app bootstrap)src/index.tsx |
1.24 MiB · 22 files | no change | ███░░░░░░░ 27.6% of 4.51 MiB |
authenticated shell (every logged-in page)src/scenes/AuthenticatedShell.tsx |
8.09 MiB · 3,014 files | no change | ████████░░ 83.3% of 9.71 MiB |
🟢 node_modules/monaco-editor/ stays out of src/index.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 node_modules/monaco-editor/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
Largest files eagerly shipped from src/index.tsx
| Size | File |
|---|---|
| 126.8 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 24.6 KiB | ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js |
| 6.3 KiB | ../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js |
| 4.5 KiB | ../node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js |
| 3.9 KiB | ../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js |
| 1.4 KiB | ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js |
| 1.3 KiB | src/RootErrorBoundary.tsx |
| 912 B | ../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js |
| 789 B | src/scenes/ChunkLoadErrorBoundary.tsx |
| 762 B | src/index.tsx |
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
| Size | File |
|---|---|
| 281.6 KiB | ../node_modules/.pnpm/posthog-js@1.407.5/node_modules/posthog-js/dist/rrweb.js |
| 267.7 KiB | ../node_modules/.pnpm/@posthog+icons@0.38.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js |
| 235.5 KiB | src/taxonomy/core-filter-definitions-by-group.json |
| 226.5 KiB | ../node_modules/.pnpm/posthog-js@1.407.5/node_modules/posthog-js/dist/module.js |
| 154.3 KiB | ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js |
| 126.8 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 105.2 KiB | src/lib/api.ts |
| 94.0 KiB | ../packages/quill/packages/quill/dist/index.js |
| 93.3 KiB | ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js |
| 90.6 KiB | ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js |
Posted automatically by check-eager-graph · sizes are eager output bytes (shipped, post-tree-shake) from the esbuild metafile · part of #32479
✅ Toolbar bundle — eager 2.18 MiB within budget
What the toolbar ships to customer pages, measured from the esbuild output (minified, post-tree-shake). The eager set is the entry plus everything statically imported from it — fetched before any feature runs; deferred chunks load lazily. The eager guardrail is 5.72 MiB. Each output file must also stay below 10 MB, where CloudFront stops compressing it. The module boundary is enforced separately by check-toolbar-graph.
| Metric | Size | Δ vs base | Budget |
|---|---|---|---|
| Eager (shipped) entry + static imports |
2.18 MiB · 17 files | no change | ████░░░░░░ 38.2% of 5.72 MiB |
| Deferred (lazy) | 2.07 MiB · 33 files | no change | n/a — loads on demand |
Loader dist/toolbar.js |
1.1 KiB | no change | █░░░░░░░░░ 5.8% of 19.5 KiB |
Largest eagerly-shipped chunks
| Size | File |
|---|---|
| 716.9 KiB | dist/toolbar/toolbar-app-5ZPNOWI2.css |
| 546.0 KiB | dist/toolbar/chunk-chunk-RYIMUIPJ.js |
| 484.3 KiB | dist/toolbar/chunk-chunk-H6BYZJQ3.js |
| 133.6 KiB | dist/toolbar/chunk-chunk-XBQFUAE7.js |
| 131.8 KiB | dist/toolbar/chunk-chunk-T5KY5WYR.js |
| 71.0 KiB | dist/toolbar/toolbar-app-CDD54Z26.js |
| 69.0 KiB | dist/toolbar/chunk-chunk-27JL52RE.js |
| 35.6 KiB | dist/toolbar/chunk-chunk-Q3YINSLU.js |
| 20.9 KiB | dist/toolbar/chunk-chunk-4HWCX3DX.js |
| 12.2 KiB | dist/toolbar/chunk-chunk-PIK3PADE.js |
Posted automatically by check-toolbar-size · sizes are toolbar output bytes (shipped, post-tree-shake) from the esbuild metafile
✅ Dist folder size — 🔺 +2.0 KiB (+0.0%)
Total size of the built frontend/dist folder (all assets), compared against the base branch.
Total: 1363.05 MiB · 🔺 +2.0 KiB (+0.0%)
⚠️ Playwright — 1 flaky
🎭 Playwright report · View test results →
- Split a person with multiple distinct IDs (chromium)
These issues are not necessarily caused by your changes.
Annoyed by this section? Help fix flakies and failures and it will go green!
Resolves a conflict in `LEGACY_SETTINGS_SECTIONS`: master added toolbar aliases in #67019 while this branch added the `project-members` alias. Both belong, so both are kept. Generated-By: PostHog Code Task-Id: e470a1d0-4c11-4624-ad30-f993d28c4811
Problem
/settings/project-toolbar(andenvironment-toolbar) shows a "Setting not found" page even though the sidebar still highlights Toolbar. The dedicated Toolbar settings section was removed and its toolbar/authorized-URL config folded into the Web analytics section, but the settings router'scanonicalSettingsSection/LEGACY_SETTINGS_SECTIONSonly covers the llm-analytics rename — soproject-toolbarfalls through,selectedSectionresolves to null, andSettings.tsxrenders<NotFound object="setting" />.This is a recurring papercut, not a hard block (the sidebar link still works), but it's confusing — the nav highlights Toolbar while the page says the setting doesn't exist — and
/settings/project-toolbar#authorized-urlsis still linked from somewhere stale, so the dead page keeps getting hit across many projects.Changes
project-toolbarandenvironment-toolbartoLEGACY_SETTINGS_SECTIONS, mapping them toproject-web-analytics(where the authorized-URL config now lives). This reuses the exact redirect mechanism already in place for the llm-analytics rename, so the router cleanlyreplaces the URL instead of 404ing.#authorized-urlshash deep link to the renamedweb-analytics-authorized-urlssetting, so/settings/project-toolbar#authorized-urlslinks land on and scroll to the right setting (mirrors the existingllm-analytics-byok→ai-observability-byokhash rewrite).project-web-analyticsto theSettingSectionIdunion (the runtime already produces this id by mappingenvironment-web-analytics→project-web-analytics).How did you test this code?
I'm an agent. I added and ran automated tests in
settingsSceneLogic.test.tscovering the toolbar section redirect (bothproject-toolbarandenvironment-toolbarresolve toproject-web-analytics) and the#authorized-urlsdeep-link hash rewrite. The fullsettingsSceneLogicsuite passes (9/9). The new tests catch a regression no existing test did: that a removed/legacy settings section id redirects instead of rendering NotFound, and that the legacy hash deep link resolves to the renamed setting.Automatic notifications
Docs update
🤖 Agent context
Autonomy: Fully autonomous
Authored by PostHog Code from an inbox report flagging
not_found_shownevents on/settings/project-toolbar#authorized-urls.Root cause was traced through
settingsSceneLogic.ts(canonicalSettingsSection+LEGACY_SETTINGS_SECTIONS+canonicalSettingsHashParams) andsettingsLogic.ts(theenvironment-*→project-*section mapping). Chose to mirror the existing llm-analytics legacy mapping rather than re-introduce a Toolbar section, since the config genuinely moved into Web analytics.Created with PostHog Code from an inbox report.