feat(web): pin the current thread from the command palette - #5809

Closed
Bhanu1776 wants to merge 2 commits into
pingdotgg:mainfrom
Bhanu1776:feat/palette-pin-current-thread
Closed

feat(web): pin the current thread from the command palette#5809
Bhanu1776 wants to merge 2 commits into
pingdotgg:mainfrom
Bhanu1776:feat/palette-pin-current-thread

Conversation

@Bhanu1776

@Bhanu1776Bhanu1776 commented Aug 9, 2026

Copy link
Copy Markdown

What Changed

Adds a contextual action and configurable shortcut for the active thread: Pin current thread (Unpin current thread when the thread is already pinned).

  • Appears only while a real thread is open — hidden on drafts (activeThread is null for them) and on servers that predate thread.pin/thread.unpin, using the same threadPinning capability gate (version-skew contract) as the sidebar and chat-header menus.
  • Dispatches through the existing useThreadActions().pinThread/unpinThread mutations, so top-of-pinned-run placement, orderKey handling, and capability guards are the existing code paths — no new pin logic.
  • Failures surface through the palette's existing stackedThreadToast pattern, ignoring interrupted commands like the other menus do.
  • The item reads pinnedAt reactively, so title/icon flip between Pin/Unpin and the palette never offers a stale action.
  • Adds thread.togglePin, defaulting to mod+alt+shift+p (⌥⇧⌘P on macOS), inactive while a terminal has focus and shown beside the palette action for discoverability.

No new dependencies or server behavior changes.

Why

Pinning today is mouse-only: hover a sidebar row for its context menu, or open the chat-header menu. But pinning is exactly the kind of mid-flow action you want without leaving the keyboard — you're reading a thread you know you'll come back to: ⌘K, "pin", Enter, done. The palette already models thread-contextual actions ("New thread in <project>"), so this slots into the existing Actions group without any new UI surface. The direct shortcut makes the same toggle available without opening the palette.

UI Changes

Palette on the current thread, searching "pin" — before, the only hit is "Project settings" (substring of its grouping search term); after, the action is first:

BeforeAfter
before: no pin action in paletteafter: Pin current thread action in palette

After Enter, the thread lands in the sidebar's pinned block (server round-trip, not local state), and the palette then offers the inverse:

Pinned resultToggled action
thread in pinned block after actionUnpin current thread action on a pinned thread

Full interaction (⌘K → "pin" → Enter → pinned block → ⌘K → "unpin" → Enter), keyboard only:

pin/unpin from the command palette

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Add pin/unpin current thread to the command palette and keyboard shortcut

  • Adds a thread.togglePin action to the command palette that shows when the active thread is non-draft and the environment supports pinning; toggles between "Pin current thread" and "Unpin current thread".
  • Binds mod+alt+shift+p as the default keyboard shortcut for thread.togglePin (outside terminal focus), handled in both the global shortcuts component and the command palette.
  • Surfaces error toasts on pin/unpin failures, excluding user interruptions.

Macroscope summarized e407e8a.

@coderabbitai

coderabbitaiBot commented Aug 9, 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: c3bf98f4-7daf-43b4-b0b1-3ae7da6d50f9

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

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:M 30-99 changed lines (additions + deletions). labels Aug 9, 2026
@macroscopeapp

macroscopeappBot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a new command palette action and keyboard shortcut (mod+alt+shift+p) for pinning/unpinning threads. While the underlying logic exists, adding new user-facing entry points for this functionality warrants human review.

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

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 9, 2026
@maria-rcks

Copy link
Copy Markdown
Collaborator

keybind?

@Bhanu1776

Copy link
Copy Markdown
Author

@maria-rcks this is intentionally palette-only for now, so it works from the keyboard without reserving another global shortcut. Do you have a preferred keybind in mind, or should I add it to the keybinding system?

@Bhanu1776

Copy link
Copy Markdown
Author

@maria-rcks ??

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 14, 2026 05:44

Dismissing prior approval to re-evaluate e407e8a

@Bhanu1776

Copy link
Copy Markdown
Author

@t3dotgg Bro, please review

@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together.

Theo decided to close this PR after reviewing the command palette proposal and the discussion after the review request. The pin and unpin shortcut landed in #8440, but the command palette entry proposed here did not land and is not being taken forward.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed.

@t3dotggt3dotgg closed this Aug 28, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 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.

3 participants

@Bhanu1776@maria-rcks@t3dotgg
, '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

feat(web): pin the current thread from the command palette - #5809

Closed
Bhanu1776 wants to merge 2 commits into
pingdotgg:mainfrom
Bhanu1776:feat/palette-pin-current-thread
Closed

feat(web): pin the current thread from the command palette#5809
Bhanu1776 wants to merge 2 commits into
pingdotgg:mainfrom
Bhanu1776:feat/palette-pin-current-thread

Conversation

@Bhanu1776

@Bhanu1776Bhanu1776 commented Aug 9, 2026

Copy link
Copy Markdown

What Changed

Adds a contextual action and configurable shortcut for the active thread: Pin current thread (Unpin current thread when the thread is already pinned).

  • Appears only while a real thread is open — hidden on drafts (activeThread is null for them) and on servers that predate thread.pin/thread.unpin, using the same threadPinning capability gate (version-skew contract) as the sidebar and chat-header menus.
  • Dispatches through the existing useThreadActions().pinThread/unpinThread mutations, so top-of-pinned-run placement, orderKey handling, and capability guards are the existing code paths — no new pin logic.
  • Failures surface through the palette's existing stackedThreadToast pattern, ignoring interrupted commands like the other menus do.
  • The item reads pinnedAt reactively, so title/icon flip between Pin/Unpin and the palette never offers a stale action.
  • Adds thread.togglePin, defaulting to mod+alt+shift+p (⌥⇧⌘P on macOS), inactive while a terminal has focus and shown beside the palette action for discoverability.

No new dependencies or server behavior changes.

Why

Pinning today is mouse-only: hover a sidebar row for its context menu, or open the chat-header menu. But pinning is exactly the kind of mid-flow action you want without leaving the keyboard — you're reading a thread you know you'll come back to: ⌘K, "pin", Enter, done. The palette already models thread-contextual actions ("New thread in <project>"), so this slots into the existing Actions group without any new UI surface. The direct shortcut makes the same toggle available without opening the palette.

UI Changes

Palette on the current thread, searching "pin" — before, the only hit is "Project settings" (substring of its grouping search term); after, the action is first:

BeforeAfter
before: no pin action in paletteafter: Pin current thread action in palette

After Enter, the thread lands in the sidebar's pinned block (server round-trip, not local state), and the palette then offers the inverse:

Pinned resultToggled action
thread in pinned block after actionUnpin current thread action on a pinned thread

Full interaction (⌘K → "pin" → Enter → pinned block → ⌘K → "unpin" → Enter), keyboard only:

pin/unpin from the command palette

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Add pin/unpin current thread to the command palette and keyboard shortcut

  • Adds a thread.togglePin action to the command palette that shows when the active thread is non-draft and the environment supports pinning; toggles between "Pin current thread" and "Unpin current thread".
  • Binds mod+alt+shift+p as the default keyboard shortcut for thread.togglePin (outside terminal focus), handled in both the global shortcuts component and the command palette.
  • Surfaces error toasts on pin/unpin failures, excluding user interruptions.

Macroscope summarized e407e8a.

@coderabbitai

coderabbitaiBot commented Aug 9, 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: c3bf98f4-7daf-43b4-b0b1-3ae7da6d50f9

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

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:M 30-99 changed lines (additions + deletions). labels Aug 9, 2026
@macroscopeapp

macroscopeappBot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a new command palette action and keyboard shortcut (mod+alt+shift+p) for pinning/unpinning threads. While the underlying logic exists, adding new user-facing entry points for this functionality warrants human review.

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

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 9, 2026
@maria-rcks

Copy link
Copy Markdown
Collaborator

keybind?

@Bhanu1776

Copy link
Copy Markdown
Author

@maria-rcks this is intentionally palette-only for now, so it works from the keyboard without reserving another global shortcut. Do you have a preferred keybind in mind, or should I add it to the keybinding system?

@Bhanu1776

Copy link
Copy Markdown
Author

@maria-rcks ??

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 14, 2026 05:44

Dismissing prior approval to re-evaluate e407e8a

@Bhanu1776

Copy link
Copy Markdown
Author

@t3dotgg Bro, please review

@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together.

Theo decided to close this PR after reviewing the command palette proposal and the discussion after the review request. The pin and unpin shortcut landed in #8440, but the command palette entry proposed here did not land and is not being taken forward.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed.

@t3dotggt3dotgg closed this Aug 28, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 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.

3 participants

@Bhanu1776@maria-rcks@t3dotgg
, '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

feat(web): pin the current thread from the command palette - #5809

Closed
Bhanu1776 wants to merge 2 commits into
pingdotgg:mainfrom
Bhanu1776:feat/palette-pin-current-thread
Closed

feat(web): pin the current thread from the command palette#5809
Bhanu1776 wants to merge 2 commits into
pingdotgg:mainfrom
Bhanu1776:feat/palette-pin-current-thread

Conversation

@Bhanu1776

@Bhanu1776Bhanu1776 commented Aug 9, 2026

Copy link
Copy Markdown

What Changed

Adds a contextual action and configurable shortcut for the active thread: Pin current thread (Unpin current thread when the thread is already pinned).

  • Appears only while a real thread is open — hidden on drafts (activeThread is null for them) and on servers that predate thread.pin/thread.unpin, using the same threadPinning capability gate (version-skew contract) as the sidebar and chat-header menus.
  • Dispatches through the existing useThreadActions().pinThread/unpinThread mutations, so top-of-pinned-run placement, orderKey handling, and capability guards are the existing code paths — no new pin logic.
  • Failures surface through the palette's existing stackedThreadToast pattern, ignoring interrupted commands like the other menus do.
  • The item reads pinnedAt reactively, so title/icon flip between Pin/Unpin and the palette never offers a stale action.
  • Adds thread.togglePin, defaulting to mod+alt+shift+p (⌥⇧⌘P on macOS), inactive while a terminal has focus and shown beside the palette action for discoverability.

No new dependencies or server behavior changes.

Why

Pinning today is mouse-only: hover a sidebar row for its context menu, or open the chat-header menu. But pinning is exactly the kind of mid-flow action you want without leaving the keyboard — you're reading a thread you know you'll come back to: ⌘K, "pin", Enter, done. The palette already models thread-contextual actions ("New thread in <project>"), so this slots into the existing Actions group without any new UI surface. The direct shortcut makes the same toggle available without opening the palette.

UI Changes

Palette on the current thread, searching "pin" — before, the only hit is "Project settings" (substring of its grouping search term); after, the action is first:

BeforeAfter
before: no pin action in paletteafter: Pin current thread action in palette

After Enter, the thread lands in the sidebar's pinned block (server round-trip, not local state), and the palette then offers the inverse:

Pinned resultToggled action
thread in pinned block after actionUnpin current thread action on a pinned thread

Full interaction (⌘K → "pin" → Enter → pinned block → ⌘K → "unpin" → Enter), keyboard only:

pin/unpin from the command palette

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Add pin/unpin current thread to the command palette and keyboard shortcut

  • Adds a thread.togglePin action to the command palette that shows when the active thread is non-draft and the environment supports pinning; toggles between "Pin current thread" and "Unpin current thread".
  • Binds mod+alt+shift+p as the default keyboard shortcut for thread.togglePin (outside terminal focus), handled in both the global shortcuts component and the command palette.
  • Surfaces error toasts on pin/unpin failures, excluding user interruptions.

Macroscope summarized e407e8a.

@coderabbitai

coderabbitaiBot commented Aug 9, 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: c3bf98f4-7daf-43b4-b0b1-3ae7da6d50f9

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

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:M 30-99 changed lines (additions + deletions). labels Aug 9, 2026
@macroscopeapp

macroscopeappBot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a new command palette action and keyboard shortcut (mod+alt+shift+p) for pinning/unpinning threads. While the underlying logic exists, adding new user-facing entry points for this functionality warrants human review.

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

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 9, 2026
@maria-rcks

Copy link
Copy Markdown
Collaborator

keybind?

@Bhanu1776

Copy link
Copy Markdown
Author

@maria-rcks this is intentionally palette-only for now, so it works from the keyboard without reserving another global shortcut. Do you have a preferred keybind in mind, or should I add it to the keybinding system?

@Bhanu1776

Copy link
Copy Markdown
Author

@maria-rcks ??

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 14, 2026 05:44

Dismissing prior approval to re-evaluate e407e8a

@Bhanu1776

Copy link
Copy Markdown
Author

@t3dotgg Bro, please review

@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together.

Theo decided to close this PR after reviewing the command palette proposal and the discussion after the review request. The pin and unpin shortcut landed in #8440, but the command palette entry proposed here did not land and is not being taken forward.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed.

@t3dotggt3dotgg closed this Aug 28, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 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.

3 participants

@Bhanu1776@maria-rcks@t3dotgg
, '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

feat(web): pin the current thread from the command palette - #5809

Closed
Bhanu1776 wants to merge 2 commits into
pingdotgg:mainfrom
Bhanu1776:feat/palette-pin-current-thread
Closed

feat(web): pin the current thread from the command palette#5809
Bhanu1776 wants to merge 2 commits into
pingdotgg:mainfrom
Bhanu1776:feat/palette-pin-current-thread

Conversation

@Bhanu1776

@Bhanu1776Bhanu1776 commented Aug 9, 2026

Copy link
Copy Markdown

What Changed

Adds a contextual action and configurable shortcut for the active thread: Pin current thread (Unpin current thread when the thread is already pinned).

  • Appears only while a real thread is open — hidden on drafts (activeThread is null for them) and on servers that predate thread.pin/thread.unpin, using the same threadPinning capability gate (version-skew contract) as the sidebar and chat-header menus.
  • Dispatches through the existing useThreadActions().pinThread/unpinThread mutations, so top-of-pinned-run placement, orderKey handling, and capability guards are the existing code paths — no new pin logic.
  • Failures surface through the palette's existing stackedThreadToast pattern, ignoring interrupted commands like the other menus do.
  • The item reads pinnedAt reactively, so title/icon flip between Pin/Unpin and the palette never offers a stale action.
  • Adds thread.togglePin, defaulting to mod+alt+shift+p (⌥⇧⌘P on macOS), inactive while a terminal has focus and shown beside the palette action for discoverability.

No new dependencies or server behavior changes.

Why

Pinning today is mouse-only: hover a sidebar row for its context menu, or open the chat-header menu. But pinning is exactly the kind of mid-flow action you want without leaving the keyboard — you're reading a thread you know you'll come back to: ⌘K, "pin", Enter, done. The palette already models thread-contextual actions ("New thread in <project>"), so this slots into the existing Actions group without any new UI surface. The direct shortcut makes the same toggle available without opening the palette.

UI Changes

Palette on the current thread, searching "pin" — before, the only hit is "Project settings" (substring of its grouping search term); after, the action is first:

BeforeAfter
before: no pin action in paletteafter: Pin current thread action in palette

After Enter, the thread lands in the sidebar's pinned block (server round-trip, not local state), and the palette then offers the inverse:

Pinned resultToggled action
thread in pinned block after actionUnpin current thread action on a pinned thread

Full interaction (⌘K → "pin" → Enter → pinned block → ⌘K → "unpin" → Enter), keyboard only:

pin/unpin from the command palette

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Add pin/unpin current thread to the command palette and keyboard shortcut

  • Adds a thread.togglePin action to the command palette that shows when the active thread is non-draft and the environment supports pinning; toggles between "Pin current thread" and "Unpin current thread".
  • Binds mod+alt+shift+p as the default keyboard shortcut for thread.togglePin (outside terminal focus), handled in both the global shortcuts component and the command palette.
  • Surfaces error toasts on pin/unpin failures, excluding user interruptions.

Macroscope summarized e407e8a.

@coderabbitai

coderabbitaiBot commented Aug 9, 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: c3bf98f4-7daf-43b4-b0b1-3ae7da6d50f9

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

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:M 30-99 changed lines (additions + deletions). labels Aug 9, 2026
@macroscopeapp

macroscopeappBot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a new command palette action and keyboard shortcut (mod+alt+shift+p) for pinning/unpinning threads. While the underlying logic exists, adding new user-facing entry points for this functionality warrants human review.

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

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 9, 2026
@maria-rcks

Copy link
Copy Markdown
Collaborator

keybind?

@Bhanu1776

Copy link
Copy Markdown
Author

@maria-rcks this is intentionally palette-only for now, so it works from the keyboard without reserving another global shortcut. Do you have a preferred keybind in mind, or should I add it to the keybinding system?

@Bhanu1776

Copy link
Copy Markdown
Author

@maria-rcks ??

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 14, 2026 05:44

Dismissing prior approval to re-evaluate e407e8a

@Bhanu1776

Copy link
Copy Markdown
Author

@t3dotgg Bro, please review

@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together.

Theo decided to close this PR after reviewing the command palette proposal and the discussion after the review request. The pin and unpin shortcut landed in #8440, but the command palette entry proposed here did not land and is not being taken forward.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed.

@t3dotggt3dotgg closed this Aug 28, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 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.

3 participants

@Bhanu1776@maria-rcks@t3dotgg
, '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

feat(web): pin the current thread from the command palette - #5809

Closed
Bhanu1776 wants to merge 2 commits into
pingdotgg:mainfrom
Bhanu1776:feat/palette-pin-current-thread
Closed

feat(web): pin the current thread from the command palette#5809
Bhanu1776 wants to merge 2 commits into
pingdotgg:mainfrom
Bhanu1776:feat/palette-pin-current-thread

Conversation

@Bhanu1776

@Bhanu1776Bhanu1776 commented Aug 9, 2026

Copy link
Copy Markdown

What Changed

Adds a contextual action and configurable shortcut for the active thread: Pin current thread (Unpin current thread when the thread is already pinned).

  • Appears only while a real thread is open — hidden on drafts (activeThread is null for them) and on servers that predate thread.pin/thread.unpin, using the same threadPinning capability gate (version-skew contract) as the sidebar and chat-header menus.
  • Dispatches through the existing useThreadActions().pinThread/unpinThread mutations, so top-of-pinned-run placement, orderKey handling, and capability guards are the existing code paths — no new pin logic.
  • Failures surface through the palette's existing stackedThreadToast pattern, ignoring interrupted commands like the other menus do.
  • The item reads pinnedAt reactively, so title/icon flip between Pin/Unpin and the palette never offers a stale action.
  • Adds thread.togglePin, defaulting to mod+alt+shift+p (⌥⇧⌘P on macOS), inactive while a terminal has focus and shown beside the palette action for discoverability.

No new dependencies or server behavior changes.

Why

Pinning today is mouse-only: hover a sidebar row for its context menu, or open the chat-header menu. But pinning is exactly the kind of mid-flow action you want without leaving the keyboard — you're reading a thread you know you'll come back to: ⌘K, "pin", Enter, done. The palette already models thread-contextual actions ("New thread in <project>"), so this slots into the existing Actions group without any new UI surface. The direct shortcut makes the same toggle available without opening the palette.

UI Changes

Palette on the current thread, searching "pin" — before, the only hit is "Project settings" (substring of its grouping search term); after, the action is first:

BeforeAfter
before: no pin action in paletteafter: Pin current thread action in palette

After Enter, the thread lands in the sidebar's pinned block (server round-trip, not local state), and the palette then offers the inverse:

Pinned resultToggled action
thread in pinned block after actionUnpin current thread action on a pinned thread

Full interaction (⌘K → "pin" → Enter → pinned block → ⌘K → "unpin" → Enter), keyboard only:

pin/unpin from the command palette

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Add pin/unpin current thread to the command palette and keyboard shortcut

  • Adds a thread.togglePin action to the command palette that shows when the active thread is non-draft and the environment supports pinning; toggles between "Pin current thread" and "Unpin current thread".
  • Binds mod+alt+shift+p as the default keyboard shortcut for thread.togglePin (outside terminal focus), handled in both the global shortcuts component and the command palette.
  • Surfaces error toasts on pin/unpin failures, excluding user interruptions.

Macroscope summarized e407e8a.

@coderabbitai

coderabbitaiBot commented Aug 9, 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: c3bf98f4-7daf-43b4-b0b1-3ae7da6d50f9

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

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:M 30-99 changed lines (additions + deletions). labels Aug 9, 2026
@macroscopeapp

macroscopeappBot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a new command palette action and keyboard shortcut (mod+alt+shift+p) for pinning/unpinning threads. While the underlying logic exists, adding new user-facing entry points for this functionality warrants human review.

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

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 9, 2026
@maria-rcks

Copy link
Copy Markdown
Collaborator

keybind?

@Bhanu1776

Copy link
Copy Markdown
Author

@maria-rcks this is intentionally palette-only for now, so it works from the keyboard without reserving another global shortcut. Do you have a preferred keybind in mind, or should I add it to the keybinding system?

@Bhanu1776

Copy link
Copy Markdown
Author

@maria-rcks ??

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 14, 2026 05:44

Dismissing prior approval to re-evaluate e407e8a

@Bhanu1776

Copy link
Copy Markdown
Author

@t3dotgg Bro, please review

@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together.

Theo decided to close this PR after reviewing the command palette proposal and the discussion after the review request. The pin and unpin shortcut landed in #8440, but the command palette entry proposed here did not land and is not being taken forward.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed.

@t3dotggt3dotgg closed this Aug 28, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 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.

3 participants

@Bhanu1776@maria-rcks@t3dotgg
, '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

feat(web): pin the current thread from the command palette - #5809

Closed
Bhanu1776 wants to merge 2 commits into
pingdotgg:mainfrom
Bhanu1776:feat/palette-pin-current-thread
Closed

feat(web): pin the current thread from the command palette#5809
Bhanu1776 wants to merge 2 commits into
pingdotgg:mainfrom
Bhanu1776:feat/palette-pin-current-thread

Conversation

@Bhanu1776

@Bhanu1776Bhanu1776 commented Aug 9, 2026

Copy link
Copy Markdown

What Changed

Adds a contextual action and configurable shortcut for the active thread: Pin current thread (Unpin current thread when the thread is already pinned).

  • Appears only while a real thread is open — hidden on drafts (activeThread is null for them) and on servers that predate thread.pin/thread.unpin, using the same threadPinning capability gate (version-skew contract) as the sidebar and chat-header menus.
  • Dispatches through the existing useThreadActions().pinThread/unpinThread mutations, so top-of-pinned-run placement, orderKey handling, and capability guards are the existing code paths — no new pin logic.
  • Failures surface through the palette's existing stackedThreadToast pattern, ignoring interrupted commands like the other menus do.
  • The item reads pinnedAt reactively, so title/icon flip between Pin/Unpin and the palette never offers a stale action.
  • Adds thread.togglePin, defaulting to mod+alt+shift+p (⌥⇧⌘P on macOS), inactive while a terminal has focus and shown beside the palette action for discoverability.

No new dependencies or server behavior changes.

Why

Pinning today is mouse-only: hover a sidebar row for its context menu, or open the chat-header menu. But pinning is exactly the kind of mid-flow action you want without leaving the keyboard — you're reading a thread you know you'll come back to: ⌘K, "pin", Enter, done. The palette already models thread-contextual actions ("New thread in <project>"), so this slots into the existing Actions group without any new UI surface. The direct shortcut makes the same toggle available without opening the palette.

UI Changes

Palette on the current thread, searching "pin" — before, the only hit is "Project settings" (substring of its grouping search term); after, the action is first:

BeforeAfter
before: no pin action in paletteafter: Pin current thread action in palette

After Enter, the thread lands in the sidebar's pinned block (server round-trip, not local state), and the palette then offers the inverse:

Pinned resultToggled action
thread in pinned block after actionUnpin current thread action on a pinned thread

Full interaction (⌘K → "pin" → Enter → pinned block → ⌘K → "unpin" → Enter), keyboard only:

pin/unpin from the command palette

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Add pin/unpin current thread to the command palette and keyboard shortcut

  • Adds a thread.togglePin action to the command palette that shows when the active thread is non-draft and the environment supports pinning; toggles between "Pin current thread" and "Unpin current thread".
  • Binds mod+alt+shift+p as the default keyboard shortcut for thread.togglePin (outside terminal focus), handled in both the global shortcuts component and the command palette.
  • Surfaces error toasts on pin/unpin failures, excluding user interruptions.

Macroscope summarized e407e8a.

@coderabbitai

coderabbitaiBot commented Aug 9, 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: c3bf98f4-7daf-43b4-b0b1-3ae7da6d50f9

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

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:M 30-99 changed lines (additions + deletions). labels Aug 9, 2026
@macroscopeapp

macroscopeappBot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a new command palette action and keyboard shortcut (mod+alt+shift+p) for pinning/unpinning threads. While the underlying logic exists, adding new user-facing entry points for this functionality warrants human review.

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

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 9, 2026
@maria-rcks

Copy link
Copy Markdown
Collaborator

keybind?

@Bhanu1776

Copy link
Copy Markdown
Author

@maria-rcks this is intentionally palette-only for now, so it works from the keyboard without reserving another global shortcut. Do you have a preferred keybind in mind, or should I add it to the keybinding system?

@Bhanu1776

Copy link
Copy Markdown
Author

@maria-rcks ??

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 14, 2026 05:44

Dismissing prior approval to re-evaluate e407e8a

@Bhanu1776

Copy link
Copy Markdown
Author

@t3dotgg Bro, please review

@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together.

Theo decided to close this PR after reviewing the command palette proposal and the discussion after the review request. The pin and unpin shortcut landed in #8440, but the command palette entry proposed here did not land and is not being taken forward.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed.

@t3dotggt3dotgg closed this Aug 28, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 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.

3 participants

@Bhanu1776@maria-rcks@t3dotgg
, '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

feat(web): pin the current thread from the command palette - #5809

Closed
Bhanu1776 wants to merge 2 commits into
pingdotgg:mainfrom
Bhanu1776:feat/palette-pin-current-thread
Closed

feat(web): pin the current thread from the command palette#5809
Bhanu1776 wants to merge 2 commits into
pingdotgg:mainfrom
Bhanu1776:feat/palette-pin-current-thread

Conversation

@Bhanu1776

@Bhanu1776Bhanu1776 commented Aug 9, 2026

Copy link
Copy Markdown

What Changed

Adds a contextual action and configurable shortcut for the active thread: Pin current thread (Unpin current thread when the thread is already pinned).

  • Appears only while a real thread is open — hidden on drafts (activeThread is null for them) and on servers that predate thread.pin/thread.unpin, using the same threadPinning capability gate (version-skew contract) as the sidebar and chat-header menus.
  • Dispatches through the existing useThreadActions().pinThread/unpinThread mutations, so top-of-pinned-run placement, orderKey handling, and capability guards are the existing code paths — no new pin logic.
  • Failures surface through the palette's existing stackedThreadToast pattern, ignoring interrupted commands like the other menus do.
  • The item reads pinnedAt reactively, so title/icon flip between Pin/Unpin and the palette never offers a stale action.
  • Adds thread.togglePin, defaulting to mod+alt+shift+p (⌥⇧⌘P on macOS), inactive while a terminal has focus and shown beside the palette action for discoverability.

No new dependencies or server behavior changes.

Why

Pinning today is mouse-only: hover a sidebar row for its context menu, or open the chat-header menu. But pinning is exactly the kind of mid-flow action you want without leaving the keyboard — you're reading a thread you know you'll come back to: ⌘K, "pin", Enter, done. The palette already models thread-contextual actions ("New thread in <project>"), so this slots into the existing Actions group without any new UI surface. The direct shortcut makes the same toggle available without opening the palette.

UI Changes

Palette on the current thread, searching "pin" — before, the only hit is "Project settings" (substring of its grouping search term); after, the action is first:

BeforeAfter
before: no pin action in paletteafter: Pin current thread action in palette

After Enter, the thread lands in the sidebar's pinned block (server round-trip, not local state), and the palette then offers the inverse:

Pinned resultToggled action
thread in pinned block after actionUnpin current thread action on a pinned thread

Full interaction (⌘K → "pin" → Enter → pinned block → ⌘K → "unpin" → Enter), keyboard only:

pin/unpin from the command palette

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Add pin/unpin current thread to the command palette and keyboard shortcut

  • Adds a thread.togglePin action to the command palette that shows when the active thread is non-draft and the environment supports pinning; toggles between "Pin current thread" and "Unpin current thread".
  • Binds mod+alt+shift+p as the default keyboard shortcut for thread.togglePin (outside terminal focus), handled in both the global shortcuts component and the command palette.
  • Surfaces error toasts on pin/unpin failures, excluding user interruptions.

Macroscope summarized e407e8a.

@coderabbitai

coderabbitaiBot commented Aug 9, 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: c3bf98f4-7daf-43b4-b0b1-3ae7da6d50f9

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

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:M 30-99 changed lines (additions + deletions). labels Aug 9, 2026
@macroscopeapp

macroscopeappBot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a new command palette action and keyboard shortcut (mod+alt+shift+p) for pinning/unpinning threads. While the underlying logic exists, adding new user-facing entry points for this functionality warrants human review.

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

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 9, 2026
@maria-rcks

Copy link
Copy Markdown
Collaborator

keybind?

@Bhanu1776

Copy link
Copy Markdown
Author

@maria-rcks this is intentionally palette-only for now, so it works from the keyboard without reserving another global shortcut. Do you have a preferred keybind in mind, or should I add it to the keybinding system?

@Bhanu1776

Copy link
Copy Markdown
Author

@maria-rcks ??

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 14, 2026 05:44

Dismissing prior approval to re-evaluate e407e8a

@Bhanu1776

Copy link
Copy Markdown
Author

@t3dotgg Bro, please review

@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together.

Theo decided to close this PR after reviewing the command palette proposal and the discussion after the review request. The pin and unpin shortcut landed in #8440, but the command palette entry proposed here did not land and is not being taken forward.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed.

@t3dotggt3dotgg closed this Aug 28, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 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.

3 participants

@Bhanu1776@maria-rcks@t3dotgg
, '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

feat(web): pin the current thread from the command palette - #5809

Closed
Bhanu1776 wants to merge 2 commits into
pingdotgg:mainfrom
Bhanu1776:feat/palette-pin-current-thread
Closed

feat(web): pin the current thread from the command palette#5809
Bhanu1776 wants to merge 2 commits into
pingdotgg:mainfrom
Bhanu1776:feat/palette-pin-current-thread

Conversation

@Bhanu1776

@Bhanu1776Bhanu1776 commented Aug 9, 2026

Copy link
Copy Markdown

What Changed

Adds a contextual action and configurable shortcut for the active thread: Pin current thread (Unpin current thread when the thread is already pinned).

  • Appears only while a real thread is open — hidden on drafts (activeThread is null for them) and on servers that predate thread.pin/thread.unpin, using the same threadPinning capability gate (version-skew contract) as the sidebar and chat-header menus.
  • Dispatches through the existing useThreadActions().pinThread/unpinThread mutations, so top-of-pinned-run placement, orderKey handling, and capability guards are the existing code paths — no new pin logic.
  • Failures surface through the palette's existing stackedThreadToast pattern, ignoring interrupted commands like the other menus do.
  • The item reads pinnedAt reactively, so title/icon flip between Pin/Unpin and the palette never offers a stale action.
  • Adds thread.togglePin, defaulting to mod+alt+shift+p (⌥⇧⌘P on macOS), inactive while a terminal has focus and shown beside the palette action for discoverability.

No new dependencies or server behavior changes.

Why

Pinning today is mouse-only: hover a sidebar row for its context menu, or open the chat-header menu. But pinning is exactly the kind of mid-flow action you want without leaving the keyboard — you're reading a thread you know you'll come back to: ⌘K, "pin", Enter, done. The palette already models thread-contextual actions ("New thread in <project>"), so this slots into the existing Actions group without any new UI surface. The direct shortcut makes the same toggle available without opening the palette.

UI Changes

Palette on the current thread, searching "pin" — before, the only hit is "Project settings" (substring of its grouping search term); after, the action is first:

BeforeAfter
before: no pin action in paletteafter: Pin current thread action in palette

After Enter, the thread lands in the sidebar's pinned block (server round-trip, not local state), and the palette then offers the inverse:

Pinned resultToggled action
thread in pinned block after actionUnpin current thread action on a pinned thread

Full interaction (⌘K → "pin" → Enter → pinned block → ⌘K → "unpin" → Enter), keyboard only:

pin/unpin from the command palette

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Add pin/unpin current thread to the command palette and keyboard shortcut

  • Adds a thread.togglePin action to the command palette that shows when the active thread is non-draft and the environment supports pinning; toggles between "Pin current thread" and "Unpin current thread".
  • Binds mod+alt+shift+p as the default keyboard shortcut for thread.togglePin (outside terminal focus), handled in both the global shortcuts component and the command palette.
  • Surfaces error toasts on pin/unpin failures, excluding user interruptions.

Macroscope summarized e407e8a.

@coderabbitai

coderabbitaiBot commented Aug 9, 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: c3bf98f4-7daf-43b4-b0b1-3ae7da6d50f9

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

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:M 30-99 changed lines (additions + deletions). labels Aug 9, 2026
@macroscopeapp

macroscopeappBot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a new command palette action and keyboard shortcut (mod+alt+shift+p) for pinning/unpinning threads. While the underlying logic exists, adding new user-facing entry points for this functionality warrants human review.

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

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 9, 2026
@maria-rcks

Copy link
Copy Markdown
Collaborator

keybind?

@Bhanu1776

Copy link
Copy Markdown
Author

@maria-rcks this is intentionally palette-only for now, so it works from the keyboard without reserving another global shortcut. Do you have a preferred keybind in mind, or should I add it to the keybinding system?

@Bhanu1776

Copy link
Copy Markdown
Author

@maria-rcks ??

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 14, 2026 05:44

Dismissing prior approval to re-evaluate e407e8a

@Bhanu1776

Copy link
Copy Markdown
Author

@t3dotgg Bro, please review

@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together.

Theo decided to close this PR after reviewing the command palette proposal and the discussion after the review request. The pin and unpin shortcut landed in #8440, but the command palette entry proposed here did not land and is not being taken forward.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed.

@t3dotggt3dotgg closed this Aug 28, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 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.

3 participants

@Bhanu1776@maria-rcks@t3dotgg