Fix stale model picker shortcut labels - #4433

Closed
colonelpanic8 wants to merge 1 commit into
pingdotgg:mainfrom
colonelpanic8:fix/model-picker-shortcuts
Closed

Fix stale model picker shortcut labels#4433
colonelpanic8 wants to merge 1 commit into
pingdotgg:mainfrom
colonelpanic8:fix/model-picker-shortcuts

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Include the positional shortcut-label map in the virtualized model list's invalidation state.
  • Include the other external row-render dependencies so cached model rows refresh when their presentation changes.
  • Add a focused regression test that verifies the list receives the current per-model shortcut mapping.

Why

LegendList caches rows by model key, but model-picker shortcuts are assigned by visible position. When models ahead of a cached row were inserted, removed, filtered, or reordered, the row could retain its previous label and display the same shortcut as another model.

Fixes#4432.

UI Changes

Behavior-only correction: after filtering the live model list to Opus models, the surviving rows refresh to unique shortcuts from Ctrl+1 through Ctrl+4. No layout or styling changes.

Checklist

  • vp test run apps/web/src/components/chat/ModelPickerContent.test.tsx
  • vp fmt --check apps/web/src/components/chat/ModelPickerContent.tsx apps/web/src/components/chat/ModelPickerContent.test.tsx
  • vp lint apps/web/src/components/chat/ModelPickerContent.tsx apps/web/src/components/chat/ModelPickerContent.test.tsx
  • Verified the real picker in an isolated web environment by filtering/reordering the model list and confirming unique positional labels.
  • Focused web typecheck is currently blocked by unrelated existing dependency/type errors, including @effect/vitest exports and existing LegendList callback inference errors.

Note

Low Risk
Localized UI fix in the model picker virtualization layer with a regression test; no auth, data, or API changes.

Overview
Fixes stale positional shortcut labels (e.g. duplicate Ctrl+1) in the virtualized model picker when the visible list is filtered, reordered, or edited.

LegendList caches rows by model key; jump shortcuts are assigned by position, so cached rows kept old labels until something else invalidated them. ModelPickerContent now passes a memoized modelListExtraData object to extraData instead of only favoritesSet, including modelJumpLabelByKey plus active selection, favorites, lock state, disabled reasons, and favorite toggles so rows re-render when presentation changes.

Adds a focused Vitest test that asserts the list receives the current per-model shortcut map in extraData.

Reviewed by Cursor Bugbot for commit c7ac18d. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Fix stale shortcut labels in model picker rows by expanding LegendList cache key

ModelPickerContent.tsx passes only favoritesSet as extraData to LegendList, which caches rows by model key. When the list reorders (e.g. a model is added or removed), positional shortcut labels like Ctrl+1 become stale because rows are not invalidated.

  • Replaces the favoritesSetextraData prop with a useMemo-computed modelListExtraData object that includes activeInstanceId, activeModel, favoritesSet, getModelDisabledReason, isLocked, modelJumpLabelByKey, and toggleFavorite.
  • Any change to these values now triggers a full row re-render, keeping shortcut labels in sync with list position.
  • Adds a Vitest test suite in ModelPickerContent.test.tsx asserting the correct modelJumpLabelByKey map is passed through extraData.

Macroscope summarized c7ac18d.

@coderabbitai

coderabbitaiBot commented Jul 24, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: da41e741-dc8b-441f-8430-06a31524d50e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 24, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

Straightforward bug fix that corrects stale shortcut label rendering in a virtualized list by including modelJumpLabelByKey in the cache invalidation dependencies. Small, self-contained change with clear intent and a test to verify the fix.

You can customize Macroscope's approvability policy. Learn more.

@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch 3 times, most recently from fabe41a to 2b107b9CompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8ChatGPT Codex Connector

Copy link
Copy Markdown
ContributorAuthor

Reproduced the stale shortcut-label behavior and verified the fix in #4433 at 2b107b9f8a50dd7999e94a55f61509bdc7a1ed57.

Using the same isolated web environment at a 390×844 viewport:

  • Before (unfixed checkout): filtering the live model list to opus leaves cached rows with their old full-list shortcuts (Ctrl+2 through Ctrl+6) instead of reassigning them from the filtered positions.
  • After (PR head): the same flow refreshes every row to unique positional shortcuts Ctrl+1 through Ctrl+5.

Before — stale cached labels

Unfixed model picker showing stale shortcut labels after filtering

After — fixed positional labels

PR 4433 model picker showing refreshed unique positional shortcut labels

Focused regression test also passes:

vp test run apps/web/src/components/chat/ModelPickerContent.test.tsx
Test Files 1 passed (1)
Tests 1 passed (1)

colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from 2b107b9 to e28ca5eCompareJuly 27, 2026 11:14
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from e28ca5e to 722921aCompareJuly 28, 2026 02:07
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from 722921a to c7ac18dCompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5400, which has merged and covers this change on the current architecture. Thanks for the contribution.

colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 18, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Model picker assigns duplicate keyboard shortcuts

2 participants

@colonelpanic8@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Fix stale model picker shortcut labels - #4433

Closed
colonelpanic8 wants to merge 1 commit into
pingdotgg:mainfrom
colonelpanic8:fix/model-picker-shortcuts
Closed

Fix stale model picker shortcut labels#4433
colonelpanic8 wants to merge 1 commit into
pingdotgg:mainfrom
colonelpanic8:fix/model-picker-shortcuts

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Include the positional shortcut-label map in the virtualized model list's invalidation state.
  • Include the other external row-render dependencies so cached model rows refresh when their presentation changes.
  • Add a focused regression test that verifies the list receives the current per-model shortcut mapping.

Why

LegendList caches rows by model key, but model-picker shortcuts are assigned by visible position. When models ahead of a cached row were inserted, removed, filtered, or reordered, the row could retain its previous label and display the same shortcut as another model.

Fixes#4432.

UI Changes

Behavior-only correction: after filtering the live model list to Opus models, the surviving rows refresh to unique shortcuts from Ctrl+1 through Ctrl+4. No layout or styling changes.

Checklist

  • vp test run apps/web/src/components/chat/ModelPickerContent.test.tsx
  • vp fmt --check apps/web/src/components/chat/ModelPickerContent.tsx apps/web/src/components/chat/ModelPickerContent.test.tsx
  • vp lint apps/web/src/components/chat/ModelPickerContent.tsx apps/web/src/components/chat/ModelPickerContent.test.tsx
  • Verified the real picker in an isolated web environment by filtering/reordering the model list and confirming unique positional labels.
  • Focused web typecheck is currently blocked by unrelated existing dependency/type errors, including @effect/vitest exports and existing LegendList callback inference errors.

Note

Low Risk
Localized UI fix in the model picker virtualization layer with a regression test; no auth, data, or API changes.

Overview
Fixes stale positional shortcut labels (e.g. duplicate Ctrl+1) in the virtualized model picker when the visible list is filtered, reordered, or edited.

LegendList caches rows by model key; jump shortcuts are assigned by position, so cached rows kept old labels until something else invalidated them. ModelPickerContent now passes a memoized modelListExtraData object to extraData instead of only favoritesSet, including modelJumpLabelByKey plus active selection, favorites, lock state, disabled reasons, and favorite toggles so rows re-render when presentation changes.

Adds a focused Vitest test that asserts the list receives the current per-model shortcut map in extraData.

Reviewed by Cursor Bugbot for commit c7ac18d. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Fix stale shortcut labels in model picker rows by expanding LegendList cache key

ModelPickerContent.tsx passes only favoritesSet as extraData to LegendList, which caches rows by model key. When the list reorders (e.g. a model is added or removed), positional shortcut labels like Ctrl+1 become stale because rows are not invalidated.

  • Replaces the favoritesSetextraData prop with a useMemo-computed modelListExtraData object that includes activeInstanceId, activeModel, favoritesSet, getModelDisabledReason, isLocked, modelJumpLabelByKey, and toggleFavorite.
  • Any change to these values now triggers a full row re-render, keeping shortcut labels in sync with list position.
  • Adds a Vitest test suite in ModelPickerContent.test.tsx asserting the correct modelJumpLabelByKey map is passed through extraData.

Macroscope summarized c7ac18d.

@coderabbitai

coderabbitaiBot commented Jul 24, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: da41e741-dc8b-441f-8430-06a31524d50e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 24, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

Straightforward bug fix that corrects stale shortcut label rendering in a virtualized list by including modelJumpLabelByKey in the cache invalidation dependencies. Small, self-contained change with clear intent and a test to verify the fix.

You can customize Macroscope's approvability policy. Learn more.

@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch 3 times, most recently from fabe41a to 2b107b9CompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8ChatGPT Codex Connector

Copy link
Copy Markdown
ContributorAuthor

Reproduced the stale shortcut-label behavior and verified the fix in #4433 at 2b107b9f8a50dd7999e94a55f61509bdc7a1ed57.

Using the same isolated web environment at a 390×844 viewport:

  • Before (unfixed checkout): filtering the live model list to opus leaves cached rows with their old full-list shortcuts (Ctrl+2 through Ctrl+6) instead of reassigning them from the filtered positions.
  • After (PR head): the same flow refreshes every row to unique positional shortcuts Ctrl+1 through Ctrl+5.

Before — stale cached labels

Unfixed model picker showing stale shortcut labels after filtering

After — fixed positional labels

PR 4433 model picker showing refreshed unique positional shortcut labels

Focused regression test also passes:

vp test run apps/web/src/components/chat/ModelPickerContent.test.tsx
Test Files 1 passed (1)
Tests 1 passed (1)

colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from 2b107b9 to e28ca5eCompareJuly 27, 2026 11:14
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from e28ca5e to 722921aCompareJuly 28, 2026 02:07
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from 722921a to c7ac18dCompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5400, which has merged and covers this change on the current architecture. Thanks for the contribution.

colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 18, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Model picker assigns duplicate keyboard shortcuts

2 participants

@colonelpanic8@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Fix stale model picker shortcut labels - #4433

Closed
colonelpanic8 wants to merge 1 commit into
pingdotgg:mainfrom
colonelpanic8:fix/model-picker-shortcuts
Closed

Fix stale model picker shortcut labels#4433
colonelpanic8 wants to merge 1 commit into
pingdotgg:mainfrom
colonelpanic8:fix/model-picker-shortcuts

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Include the positional shortcut-label map in the virtualized model list's invalidation state.
  • Include the other external row-render dependencies so cached model rows refresh when their presentation changes.
  • Add a focused regression test that verifies the list receives the current per-model shortcut mapping.

Why

LegendList caches rows by model key, but model-picker shortcuts are assigned by visible position. When models ahead of a cached row were inserted, removed, filtered, or reordered, the row could retain its previous label and display the same shortcut as another model.

Fixes#4432.

UI Changes

Behavior-only correction: after filtering the live model list to Opus models, the surviving rows refresh to unique shortcuts from Ctrl+1 through Ctrl+4. No layout or styling changes.

Checklist

  • vp test run apps/web/src/components/chat/ModelPickerContent.test.tsx
  • vp fmt --check apps/web/src/components/chat/ModelPickerContent.tsx apps/web/src/components/chat/ModelPickerContent.test.tsx
  • vp lint apps/web/src/components/chat/ModelPickerContent.tsx apps/web/src/components/chat/ModelPickerContent.test.tsx
  • Verified the real picker in an isolated web environment by filtering/reordering the model list and confirming unique positional labels.
  • Focused web typecheck is currently blocked by unrelated existing dependency/type errors, including @effect/vitest exports and existing LegendList callback inference errors.

Note

Low Risk
Localized UI fix in the model picker virtualization layer with a regression test; no auth, data, or API changes.

Overview
Fixes stale positional shortcut labels (e.g. duplicate Ctrl+1) in the virtualized model picker when the visible list is filtered, reordered, or edited.

LegendList caches rows by model key; jump shortcuts are assigned by position, so cached rows kept old labels until something else invalidated them. ModelPickerContent now passes a memoized modelListExtraData object to extraData instead of only favoritesSet, including modelJumpLabelByKey plus active selection, favorites, lock state, disabled reasons, and favorite toggles so rows re-render when presentation changes.

Adds a focused Vitest test that asserts the list receives the current per-model shortcut map in extraData.

Reviewed by Cursor Bugbot for commit c7ac18d. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Fix stale shortcut labels in model picker rows by expanding LegendList cache key

ModelPickerContent.tsx passes only favoritesSet as extraData to LegendList, which caches rows by model key. When the list reorders (e.g. a model is added or removed), positional shortcut labels like Ctrl+1 become stale because rows are not invalidated.

  • Replaces the favoritesSetextraData prop with a useMemo-computed modelListExtraData object that includes activeInstanceId, activeModel, favoritesSet, getModelDisabledReason, isLocked, modelJumpLabelByKey, and toggleFavorite.
  • Any change to these values now triggers a full row re-render, keeping shortcut labels in sync with list position.
  • Adds a Vitest test suite in ModelPickerContent.test.tsx asserting the correct modelJumpLabelByKey map is passed through extraData.

Macroscope summarized c7ac18d.

@coderabbitai

coderabbitaiBot commented Jul 24, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: da41e741-dc8b-441f-8430-06a31524d50e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 24, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

Straightforward bug fix that corrects stale shortcut label rendering in a virtualized list by including modelJumpLabelByKey in the cache invalidation dependencies. Small, self-contained change with clear intent and a test to verify the fix.

You can customize Macroscope's approvability policy. Learn more.

@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch 3 times, most recently from fabe41a to 2b107b9CompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8ChatGPT Codex Connector

Copy link
Copy Markdown
ContributorAuthor

Reproduced the stale shortcut-label behavior and verified the fix in #4433 at 2b107b9f8a50dd7999e94a55f61509bdc7a1ed57.

Using the same isolated web environment at a 390×844 viewport:

  • Before (unfixed checkout): filtering the live model list to opus leaves cached rows with their old full-list shortcuts (Ctrl+2 through Ctrl+6) instead of reassigning them from the filtered positions.
  • After (PR head): the same flow refreshes every row to unique positional shortcuts Ctrl+1 through Ctrl+5.

Before — stale cached labels

Unfixed model picker showing stale shortcut labels after filtering

After — fixed positional labels

PR 4433 model picker showing refreshed unique positional shortcut labels

Focused regression test also passes:

vp test run apps/web/src/components/chat/ModelPickerContent.test.tsx
Test Files 1 passed (1)
Tests 1 passed (1)

colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from 2b107b9 to e28ca5eCompareJuly 27, 2026 11:14
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from e28ca5e to 722921aCompareJuly 28, 2026 02:07
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from 722921a to c7ac18dCompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5400, which has merged and covers this change on the current architecture. Thanks for the contribution.

colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 18, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Model picker assigns duplicate keyboard shortcuts

2 participants

@colonelpanic8@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Fix stale model picker shortcut labels - #4433

Closed
colonelpanic8 wants to merge 1 commit into
pingdotgg:mainfrom
colonelpanic8:fix/model-picker-shortcuts
Closed

Fix stale model picker shortcut labels#4433
colonelpanic8 wants to merge 1 commit into
pingdotgg:mainfrom
colonelpanic8:fix/model-picker-shortcuts

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Include the positional shortcut-label map in the virtualized model list's invalidation state.
  • Include the other external row-render dependencies so cached model rows refresh when their presentation changes.
  • Add a focused regression test that verifies the list receives the current per-model shortcut mapping.

Why

LegendList caches rows by model key, but model-picker shortcuts are assigned by visible position. When models ahead of a cached row were inserted, removed, filtered, or reordered, the row could retain its previous label and display the same shortcut as another model.

Fixes#4432.

UI Changes

Behavior-only correction: after filtering the live model list to Opus models, the surviving rows refresh to unique shortcuts from Ctrl+1 through Ctrl+4. No layout or styling changes.

Checklist

  • vp test run apps/web/src/components/chat/ModelPickerContent.test.tsx
  • vp fmt --check apps/web/src/components/chat/ModelPickerContent.tsx apps/web/src/components/chat/ModelPickerContent.test.tsx
  • vp lint apps/web/src/components/chat/ModelPickerContent.tsx apps/web/src/components/chat/ModelPickerContent.test.tsx
  • Verified the real picker in an isolated web environment by filtering/reordering the model list and confirming unique positional labels.
  • Focused web typecheck is currently blocked by unrelated existing dependency/type errors, including @effect/vitest exports and existing LegendList callback inference errors.

Note

Low Risk
Localized UI fix in the model picker virtualization layer with a regression test; no auth, data, or API changes.

Overview
Fixes stale positional shortcut labels (e.g. duplicate Ctrl+1) in the virtualized model picker when the visible list is filtered, reordered, or edited.

LegendList caches rows by model key; jump shortcuts are assigned by position, so cached rows kept old labels until something else invalidated them. ModelPickerContent now passes a memoized modelListExtraData object to extraData instead of only favoritesSet, including modelJumpLabelByKey plus active selection, favorites, lock state, disabled reasons, and favorite toggles so rows re-render when presentation changes.

Adds a focused Vitest test that asserts the list receives the current per-model shortcut map in extraData.

Reviewed by Cursor Bugbot for commit c7ac18d. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Fix stale shortcut labels in model picker rows by expanding LegendList cache key

ModelPickerContent.tsx passes only favoritesSet as extraData to LegendList, which caches rows by model key. When the list reorders (e.g. a model is added or removed), positional shortcut labels like Ctrl+1 become stale because rows are not invalidated.

  • Replaces the favoritesSetextraData prop with a useMemo-computed modelListExtraData object that includes activeInstanceId, activeModel, favoritesSet, getModelDisabledReason, isLocked, modelJumpLabelByKey, and toggleFavorite.
  • Any change to these values now triggers a full row re-render, keeping shortcut labels in sync with list position.
  • Adds a Vitest test suite in ModelPickerContent.test.tsx asserting the correct modelJumpLabelByKey map is passed through extraData.

Macroscope summarized c7ac18d.

@coderabbitai

coderabbitaiBot commented Jul 24, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: da41e741-dc8b-441f-8430-06a31524d50e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 24, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

Straightforward bug fix that corrects stale shortcut label rendering in a virtualized list by including modelJumpLabelByKey in the cache invalidation dependencies. Small, self-contained change with clear intent and a test to verify the fix.

You can customize Macroscope's approvability policy. Learn more.

@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch 3 times, most recently from fabe41a to 2b107b9CompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8ChatGPT Codex Connector

Copy link
Copy Markdown
ContributorAuthor

Reproduced the stale shortcut-label behavior and verified the fix in #4433 at 2b107b9f8a50dd7999e94a55f61509bdc7a1ed57.

Using the same isolated web environment at a 390×844 viewport:

  • Before (unfixed checkout): filtering the live model list to opus leaves cached rows with their old full-list shortcuts (Ctrl+2 through Ctrl+6) instead of reassigning them from the filtered positions.
  • After (PR head): the same flow refreshes every row to unique positional shortcuts Ctrl+1 through Ctrl+5.

Before — stale cached labels

Unfixed model picker showing stale shortcut labels after filtering

After — fixed positional labels

PR 4433 model picker showing refreshed unique positional shortcut labels

Focused regression test also passes:

vp test run apps/web/src/components/chat/ModelPickerContent.test.tsx
Test Files 1 passed (1)
Tests 1 passed (1)

colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from 2b107b9 to e28ca5eCompareJuly 27, 2026 11:14
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from e28ca5e to 722921aCompareJuly 28, 2026 02:07
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from 722921a to c7ac18dCompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5400, which has merged and covers this change on the current architecture. Thanks for the contribution.

colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 18, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Model picker assigns duplicate keyboard shortcuts

2 participants

@colonelpanic8@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Fix stale model picker shortcut labels - #4433

Closed
colonelpanic8 wants to merge 1 commit into
pingdotgg:mainfrom
colonelpanic8:fix/model-picker-shortcuts
Closed

Fix stale model picker shortcut labels#4433
colonelpanic8 wants to merge 1 commit into
pingdotgg:mainfrom
colonelpanic8:fix/model-picker-shortcuts

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Include the positional shortcut-label map in the virtualized model list's invalidation state.
  • Include the other external row-render dependencies so cached model rows refresh when their presentation changes.
  • Add a focused regression test that verifies the list receives the current per-model shortcut mapping.

Why

LegendList caches rows by model key, but model-picker shortcuts are assigned by visible position. When models ahead of a cached row were inserted, removed, filtered, or reordered, the row could retain its previous label and display the same shortcut as another model.

Fixes#4432.

UI Changes

Behavior-only correction: after filtering the live model list to Opus models, the surviving rows refresh to unique shortcuts from Ctrl+1 through Ctrl+4. No layout or styling changes.

Checklist

  • vp test run apps/web/src/components/chat/ModelPickerContent.test.tsx
  • vp fmt --check apps/web/src/components/chat/ModelPickerContent.tsx apps/web/src/components/chat/ModelPickerContent.test.tsx
  • vp lint apps/web/src/components/chat/ModelPickerContent.tsx apps/web/src/components/chat/ModelPickerContent.test.tsx
  • Verified the real picker in an isolated web environment by filtering/reordering the model list and confirming unique positional labels.
  • Focused web typecheck is currently blocked by unrelated existing dependency/type errors, including @effect/vitest exports and existing LegendList callback inference errors.

Note

Low Risk
Localized UI fix in the model picker virtualization layer with a regression test; no auth, data, or API changes.

Overview
Fixes stale positional shortcut labels (e.g. duplicate Ctrl+1) in the virtualized model picker when the visible list is filtered, reordered, or edited.

LegendList caches rows by model key; jump shortcuts are assigned by position, so cached rows kept old labels until something else invalidated them. ModelPickerContent now passes a memoized modelListExtraData object to extraData instead of only favoritesSet, including modelJumpLabelByKey plus active selection, favorites, lock state, disabled reasons, and favorite toggles so rows re-render when presentation changes.

Adds a focused Vitest test that asserts the list receives the current per-model shortcut map in extraData.

Reviewed by Cursor Bugbot for commit c7ac18d. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Fix stale shortcut labels in model picker rows by expanding LegendList cache key

ModelPickerContent.tsx passes only favoritesSet as extraData to LegendList, which caches rows by model key. When the list reorders (e.g. a model is added or removed), positional shortcut labels like Ctrl+1 become stale because rows are not invalidated.

  • Replaces the favoritesSetextraData prop with a useMemo-computed modelListExtraData object that includes activeInstanceId, activeModel, favoritesSet, getModelDisabledReason, isLocked, modelJumpLabelByKey, and toggleFavorite.
  • Any change to these values now triggers a full row re-render, keeping shortcut labels in sync with list position.
  • Adds a Vitest test suite in ModelPickerContent.test.tsx asserting the correct modelJumpLabelByKey map is passed through extraData.

Macroscope summarized c7ac18d.

@coderabbitai

coderabbitaiBot commented Jul 24, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: da41e741-dc8b-441f-8430-06a31524d50e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 24, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

Straightforward bug fix that corrects stale shortcut label rendering in a virtualized list by including modelJumpLabelByKey in the cache invalidation dependencies. Small, self-contained change with clear intent and a test to verify the fix.

You can customize Macroscope's approvability policy. Learn more.

@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch 3 times, most recently from fabe41a to 2b107b9CompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8ChatGPT Codex Connector

Copy link
Copy Markdown
ContributorAuthor

Reproduced the stale shortcut-label behavior and verified the fix in #4433 at 2b107b9f8a50dd7999e94a55f61509bdc7a1ed57.

Using the same isolated web environment at a 390×844 viewport:

  • Before (unfixed checkout): filtering the live model list to opus leaves cached rows with their old full-list shortcuts (Ctrl+2 through Ctrl+6) instead of reassigning them from the filtered positions.
  • After (PR head): the same flow refreshes every row to unique positional shortcuts Ctrl+1 through Ctrl+5.

Before — stale cached labels

Unfixed model picker showing stale shortcut labels after filtering

After — fixed positional labels

PR 4433 model picker showing refreshed unique positional shortcut labels

Focused regression test also passes:

vp test run apps/web/src/components/chat/ModelPickerContent.test.tsx
Test Files 1 passed (1)
Tests 1 passed (1)

colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from 2b107b9 to e28ca5eCompareJuly 27, 2026 11:14
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from e28ca5e to 722921aCompareJuly 28, 2026 02:07
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from 722921a to c7ac18dCompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5400, which has merged and covers this change on the current architecture. Thanks for the contribution.

colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 18, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Model picker assigns duplicate keyboard shortcuts

2 participants

@colonelpanic8@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Fix stale model picker shortcut labels - #4433

Closed
colonelpanic8 wants to merge 1 commit into
pingdotgg:mainfrom
colonelpanic8:fix/model-picker-shortcuts
Closed

Fix stale model picker shortcut labels#4433
colonelpanic8 wants to merge 1 commit into
pingdotgg:mainfrom
colonelpanic8:fix/model-picker-shortcuts

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Include the positional shortcut-label map in the virtualized model list's invalidation state.
  • Include the other external row-render dependencies so cached model rows refresh when their presentation changes.
  • Add a focused regression test that verifies the list receives the current per-model shortcut mapping.

Why

LegendList caches rows by model key, but model-picker shortcuts are assigned by visible position. When models ahead of a cached row were inserted, removed, filtered, or reordered, the row could retain its previous label and display the same shortcut as another model.

Fixes#4432.

UI Changes

Behavior-only correction: after filtering the live model list to Opus models, the surviving rows refresh to unique shortcuts from Ctrl+1 through Ctrl+4. No layout or styling changes.

Checklist

  • vp test run apps/web/src/components/chat/ModelPickerContent.test.tsx
  • vp fmt --check apps/web/src/components/chat/ModelPickerContent.tsx apps/web/src/components/chat/ModelPickerContent.test.tsx
  • vp lint apps/web/src/components/chat/ModelPickerContent.tsx apps/web/src/components/chat/ModelPickerContent.test.tsx
  • Verified the real picker in an isolated web environment by filtering/reordering the model list and confirming unique positional labels.
  • Focused web typecheck is currently blocked by unrelated existing dependency/type errors, including @effect/vitest exports and existing LegendList callback inference errors.

Note

Low Risk
Localized UI fix in the model picker virtualization layer with a regression test; no auth, data, or API changes.

Overview
Fixes stale positional shortcut labels (e.g. duplicate Ctrl+1) in the virtualized model picker when the visible list is filtered, reordered, or edited.

LegendList caches rows by model key; jump shortcuts are assigned by position, so cached rows kept old labels until something else invalidated them. ModelPickerContent now passes a memoized modelListExtraData object to extraData instead of only favoritesSet, including modelJumpLabelByKey plus active selection, favorites, lock state, disabled reasons, and favorite toggles so rows re-render when presentation changes.

Adds a focused Vitest test that asserts the list receives the current per-model shortcut map in extraData.

Reviewed by Cursor Bugbot for commit c7ac18d. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Fix stale shortcut labels in model picker rows by expanding LegendList cache key

ModelPickerContent.tsx passes only favoritesSet as extraData to LegendList, which caches rows by model key. When the list reorders (e.g. a model is added or removed), positional shortcut labels like Ctrl+1 become stale because rows are not invalidated.

  • Replaces the favoritesSetextraData prop with a useMemo-computed modelListExtraData object that includes activeInstanceId, activeModel, favoritesSet, getModelDisabledReason, isLocked, modelJumpLabelByKey, and toggleFavorite.
  • Any change to these values now triggers a full row re-render, keeping shortcut labels in sync with list position.
  • Adds a Vitest test suite in ModelPickerContent.test.tsx asserting the correct modelJumpLabelByKey map is passed through extraData.

Macroscope summarized c7ac18d.

@coderabbitai

coderabbitaiBot commented Jul 24, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: da41e741-dc8b-441f-8430-06a31524d50e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 24, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

Straightforward bug fix that corrects stale shortcut label rendering in a virtualized list by including modelJumpLabelByKey in the cache invalidation dependencies. Small, self-contained change with clear intent and a test to verify the fix.

You can customize Macroscope's approvability policy. Learn more.

@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch 3 times, most recently from fabe41a to 2b107b9CompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8ChatGPT Codex Connector

Copy link
Copy Markdown
ContributorAuthor

Reproduced the stale shortcut-label behavior and verified the fix in #4433 at 2b107b9f8a50dd7999e94a55f61509bdc7a1ed57.

Using the same isolated web environment at a 390×844 viewport:

  • Before (unfixed checkout): filtering the live model list to opus leaves cached rows with their old full-list shortcuts (Ctrl+2 through Ctrl+6) instead of reassigning them from the filtered positions.
  • After (PR head): the same flow refreshes every row to unique positional shortcuts Ctrl+1 through Ctrl+5.

Before — stale cached labels

Unfixed model picker showing stale shortcut labels after filtering

After — fixed positional labels

PR 4433 model picker showing refreshed unique positional shortcut labels

Focused regression test also passes:

vp test run apps/web/src/components/chat/ModelPickerContent.test.tsx
Test Files 1 passed (1)
Tests 1 passed (1)

colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from 2b107b9 to e28ca5eCompareJuly 27, 2026 11:14
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from e28ca5e to 722921aCompareJuly 28, 2026 02:07
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from 722921a to c7ac18dCompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5400, which has merged and covers this change on the current architecture. Thanks for the contribution.

colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 18, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Model picker assigns duplicate keyboard shortcuts

2 participants

@colonelpanic8@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Fix stale model picker shortcut labels - #4433

Closed
colonelpanic8 wants to merge 1 commit into
pingdotgg:mainfrom
colonelpanic8:fix/model-picker-shortcuts
Closed

Fix stale model picker shortcut labels#4433
colonelpanic8 wants to merge 1 commit into
pingdotgg:mainfrom
colonelpanic8:fix/model-picker-shortcuts

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Include the positional shortcut-label map in the virtualized model list's invalidation state.
  • Include the other external row-render dependencies so cached model rows refresh when their presentation changes.
  • Add a focused regression test that verifies the list receives the current per-model shortcut mapping.

Why

LegendList caches rows by model key, but model-picker shortcuts are assigned by visible position. When models ahead of a cached row were inserted, removed, filtered, or reordered, the row could retain its previous label and display the same shortcut as another model.

Fixes#4432.

UI Changes

Behavior-only correction: after filtering the live model list to Opus models, the surviving rows refresh to unique shortcuts from Ctrl+1 through Ctrl+4. No layout or styling changes.

Checklist

  • vp test run apps/web/src/components/chat/ModelPickerContent.test.tsx
  • vp fmt --check apps/web/src/components/chat/ModelPickerContent.tsx apps/web/src/components/chat/ModelPickerContent.test.tsx
  • vp lint apps/web/src/components/chat/ModelPickerContent.tsx apps/web/src/components/chat/ModelPickerContent.test.tsx
  • Verified the real picker in an isolated web environment by filtering/reordering the model list and confirming unique positional labels.
  • Focused web typecheck is currently blocked by unrelated existing dependency/type errors, including @effect/vitest exports and existing LegendList callback inference errors.

Note

Low Risk
Localized UI fix in the model picker virtualization layer with a regression test; no auth, data, or API changes.

Overview
Fixes stale positional shortcut labels (e.g. duplicate Ctrl+1) in the virtualized model picker when the visible list is filtered, reordered, or edited.

LegendList caches rows by model key; jump shortcuts are assigned by position, so cached rows kept old labels until something else invalidated them. ModelPickerContent now passes a memoized modelListExtraData object to extraData instead of only favoritesSet, including modelJumpLabelByKey plus active selection, favorites, lock state, disabled reasons, and favorite toggles so rows re-render when presentation changes.

Adds a focused Vitest test that asserts the list receives the current per-model shortcut map in extraData.

Reviewed by Cursor Bugbot for commit c7ac18d. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Fix stale shortcut labels in model picker rows by expanding LegendList cache key

ModelPickerContent.tsx passes only favoritesSet as extraData to LegendList, which caches rows by model key. When the list reorders (e.g. a model is added or removed), positional shortcut labels like Ctrl+1 become stale because rows are not invalidated.

  • Replaces the favoritesSetextraData prop with a useMemo-computed modelListExtraData object that includes activeInstanceId, activeModel, favoritesSet, getModelDisabledReason, isLocked, modelJumpLabelByKey, and toggleFavorite.
  • Any change to these values now triggers a full row re-render, keeping shortcut labels in sync with list position.
  • Adds a Vitest test suite in ModelPickerContent.test.tsx asserting the correct modelJumpLabelByKey map is passed through extraData.

Macroscope summarized c7ac18d.

@coderabbitai

coderabbitaiBot commented Jul 24, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: da41e741-dc8b-441f-8430-06a31524d50e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 24, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

Straightforward bug fix that corrects stale shortcut label rendering in a virtualized list by including modelJumpLabelByKey in the cache invalidation dependencies. Small, self-contained change with clear intent and a test to verify the fix.

You can customize Macroscope's approvability policy. Learn more.

@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch 3 times, most recently from fabe41a to 2b107b9CompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8ChatGPT Codex Connector

Copy link
Copy Markdown
ContributorAuthor

Reproduced the stale shortcut-label behavior and verified the fix in #4433 at 2b107b9f8a50dd7999e94a55f61509bdc7a1ed57.

Using the same isolated web environment at a 390×844 viewport:

  • Before (unfixed checkout): filtering the live model list to opus leaves cached rows with their old full-list shortcuts (Ctrl+2 through Ctrl+6) instead of reassigning them from the filtered positions.
  • After (PR head): the same flow refreshes every row to unique positional shortcuts Ctrl+1 through Ctrl+5.

Before — stale cached labels

Unfixed model picker showing stale shortcut labels after filtering

After — fixed positional labels

PR 4433 model picker showing refreshed unique positional shortcut labels

Focused regression test also passes:

vp test run apps/web/src/components/chat/ModelPickerContent.test.tsx
Test Files 1 passed (1)
Tests 1 passed (1)

colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from 2b107b9 to e28ca5eCompareJuly 27, 2026 11:14
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from e28ca5e to 722921aCompareJuly 28, 2026 02:07
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from 722921a to c7ac18dCompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5400, which has merged and covers this change on the current architecture. Thanks for the contribution.

colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 18, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Model picker assigns duplicate keyboard shortcuts

2 participants

@colonelpanic8@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Fix stale model picker shortcut labels - #4433

Closed
colonelpanic8 wants to merge 1 commit into
pingdotgg:mainfrom
colonelpanic8:fix/model-picker-shortcuts
Closed

Fix stale model picker shortcut labels#4433
colonelpanic8 wants to merge 1 commit into
pingdotgg:mainfrom
colonelpanic8:fix/model-picker-shortcuts

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Include the positional shortcut-label map in the virtualized model list's invalidation state.
  • Include the other external row-render dependencies so cached model rows refresh when their presentation changes.
  • Add a focused regression test that verifies the list receives the current per-model shortcut mapping.

Why

LegendList caches rows by model key, but model-picker shortcuts are assigned by visible position. When models ahead of a cached row were inserted, removed, filtered, or reordered, the row could retain its previous label and display the same shortcut as another model.

Fixes#4432.

UI Changes

Behavior-only correction: after filtering the live model list to Opus models, the surviving rows refresh to unique shortcuts from Ctrl+1 through Ctrl+4. No layout or styling changes.

Checklist

  • vp test run apps/web/src/components/chat/ModelPickerContent.test.tsx
  • vp fmt --check apps/web/src/components/chat/ModelPickerContent.tsx apps/web/src/components/chat/ModelPickerContent.test.tsx
  • vp lint apps/web/src/components/chat/ModelPickerContent.tsx apps/web/src/components/chat/ModelPickerContent.test.tsx
  • Verified the real picker in an isolated web environment by filtering/reordering the model list and confirming unique positional labels.
  • Focused web typecheck is currently blocked by unrelated existing dependency/type errors, including @effect/vitest exports and existing LegendList callback inference errors.

Note

Low Risk
Localized UI fix in the model picker virtualization layer with a regression test; no auth, data, or API changes.

Overview
Fixes stale positional shortcut labels (e.g. duplicate Ctrl+1) in the virtualized model picker when the visible list is filtered, reordered, or edited.

LegendList caches rows by model key; jump shortcuts are assigned by position, so cached rows kept old labels until something else invalidated them. ModelPickerContent now passes a memoized modelListExtraData object to extraData instead of only favoritesSet, including modelJumpLabelByKey plus active selection, favorites, lock state, disabled reasons, and favorite toggles so rows re-render when presentation changes.

Adds a focused Vitest test that asserts the list receives the current per-model shortcut map in extraData.

Reviewed by Cursor Bugbot for commit c7ac18d. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Fix stale shortcut labels in model picker rows by expanding LegendList cache key

ModelPickerContent.tsx passes only favoritesSet as extraData to LegendList, which caches rows by model key. When the list reorders (e.g. a model is added or removed), positional shortcut labels like Ctrl+1 become stale because rows are not invalidated.

  • Replaces the favoritesSetextraData prop with a useMemo-computed modelListExtraData object that includes activeInstanceId, activeModel, favoritesSet, getModelDisabledReason, isLocked, modelJumpLabelByKey, and toggleFavorite.
  • Any change to these values now triggers a full row re-render, keeping shortcut labels in sync with list position.
  • Adds a Vitest test suite in ModelPickerContent.test.tsx asserting the correct modelJumpLabelByKey map is passed through extraData.

Macroscope summarized c7ac18d.

@coderabbitai

coderabbitaiBot commented Jul 24, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: da41e741-dc8b-441f-8430-06a31524d50e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 24, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

Straightforward bug fix that corrects stale shortcut label rendering in a virtualized list by including modelJumpLabelByKey in the cache invalidation dependencies. Small, self-contained change with clear intent and a test to verify the fix.

You can customize Macroscope's approvability policy. Learn more.

@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch 3 times, most recently from fabe41a to 2b107b9CompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8ChatGPT Codex Connector

Copy link
Copy Markdown
ContributorAuthor

Reproduced the stale shortcut-label behavior and verified the fix in #4433 at 2b107b9f8a50dd7999e94a55f61509bdc7a1ed57.

Using the same isolated web environment at a 390×844 viewport:

  • Before (unfixed checkout): filtering the live model list to opus leaves cached rows with their old full-list shortcuts (Ctrl+2 through Ctrl+6) instead of reassigning them from the filtered positions.
  • After (PR head): the same flow refreshes every row to unique positional shortcuts Ctrl+1 through Ctrl+5.

Before — stale cached labels

Unfixed model picker showing stale shortcut labels after filtering

After — fixed positional labels

PR 4433 model picker showing refreshed unique positional shortcut labels

Focused regression test also passes:

vp test run apps/web/src/components/chat/ModelPickerContent.test.tsx
Test Files 1 passed (1)
Tests 1 passed (1)

colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from 2b107b9 to e28ca5eCompareJuly 27, 2026 11:14
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from e28ca5e to 722921aCompareJuly 28, 2026 02:07
@colonelpanic8
colonelpanic8force-pushed the fix/model-picker-shortcuts branch from 722921a to c7ac18dCompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5400, which has merged and covers this change on the current architecture. Thanks for the contribution.

colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 18, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Model picker assigns duplicate keyboard shortcuts

2 participants

@colonelpanic8@juliusmarminge