feat(web): add Tab completion to path browser - #4257

Open
colonelpanic8 wants to merge 4 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/directory-path-tab-completion
Open

feat(web): add Tab completion to path browser#4257
colonelpanic8 wants to merge 4 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/directory-path-tab-completion

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • complete the highlighted directory when Tab is pressed in the path browser
  • fall back to the first matching directory when no result is highlighted
  • keep focus in the path input while matches are loading or unavailable
  • preserve Tab navigation to the highlighted parent-directory entry

Why

The add-project and clone-destination path inputs already display matching directories, but Tab moved focus out of the input instead of accepting a suggestion. This makes the picker behave like a directory autocomplete and addresses #2160.

Validation

  • pnpm exec vp test run apps/web/src/components/CommandPalette.logic.test.ts
  • pnpm --filter @t3tools/web typecheck
  • focused vp fmt --check and vp lint on the three changed files
  • isolated exact-head browser verification of Tab completion against a disposable project (see evidence below)

Closes#2160

Exact-head evidence

Revalidated at 83ce1aa790b2 on current main (9a0a071): focused tests, vp check, and vp run typecheck passed. The capture uses only disposable local projects.

Tab completes the entered folder path


Note

Low Risk
Localized keyboard handling and pure selection logic in the command palette browse flow; no auth, data, or API changes.

Overview
Tab in the command palette path browser now accepts directory suggestions instead of inserting a tab character or moving focus away.

A new resolveBrowseTabCompletion helper picks the Tab action: parent (..) when that row is highlighted, otherwise the highlighted folder, then a case-sensitive exact name match, and only when the user has typed a leaf filter—the first filtered directory. With no leaf filter, Tab does nothing so browsing an open directory does not auto-enter the first child.

CommandPalette intercepts plain Tab in browse mode (after blocking default behavior), skips completion while browse results are loading or a relative path needs an active project, then calls browseUp or browseTo from the resolver result. Unit tests cover highlight priority, exact vs. prefix matches, and stale highlights.

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

Note

Add Tab key completion to path browser in Command Palette

  • Adds resolveBrowseTabCompletion in CommandPalette.logic.ts to determine the Tab action while browsing: goes up when the parent-directory item is highlighted, enters the highlighted directory, falls back to an exact match, or enters the first filtered entry when a leaf filter is present.
  • Wires Tab key handling into CommandPalette.tsx so pressing Tab (no modifiers) in browse mode triggers path navigation instead of inserting a tab character.
  • Behavioral Change: Tab is now prevented by default in browse mode; existing keyboard behavior in non-browse modes is unaffected.

Macroscope summarized 47dac3d.

@coderabbitai

coderabbitaiBot commented Jul 22, 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: 2ba5057d-e51d-4521-8678-5b72143cee9b

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:M 30-99 changed lines (additions + deletions). labels Jul 22, 2026
Comment threadapps/web/src/components/CommandPalette.tsx
@macroscopeapp

macroscopeappBot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a new user-facing feature (Tab completion for path navigation) which introduces new interactive behavior. While the implementation is self-contained with good test coverage, new features changing user interaction patterns warrant human review.

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

@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 4 times, most recently from 493ac39 to 3accacfCompareJuly 22, 2026 16:22
Comment threadapps/web/src/components/CommandPalette.tsx
Comment threadapps/web/src/components/CommandPalette.logic.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 4 times, most recently from 9db2544 to 81d4357CompareJuly 23, 2026 16:27

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 81d43574c23fa0b9b3650c911b016e2ae6315450. Configure here.

Comment threadapps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 13 times, most recently from 62f304d to ee5da25CompareJuly 25, 2026 03:22
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from ee5da25 to 5d01957CompareJuly 27, 2026 11:15
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from 5d01957 to 8f60525CompareJuly 28, 2026 02:07
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from 8f60525 to 47dac3dCompareJuly 28, 2026 02:50
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
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request 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.

[Feature]: [KBD shortcut] Tab in add new project modal feels misaligned

1 participant

@colonelpanic8
, '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): add Tab completion to path browser - #4257

Open
colonelpanic8 wants to merge 4 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/directory-path-tab-completion
Open

feat(web): add Tab completion to path browser#4257
colonelpanic8 wants to merge 4 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/directory-path-tab-completion

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • complete the highlighted directory when Tab is pressed in the path browser
  • fall back to the first matching directory when no result is highlighted
  • keep focus in the path input while matches are loading or unavailable
  • preserve Tab navigation to the highlighted parent-directory entry

Why

The add-project and clone-destination path inputs already display matching directories, but Tab moved focus out of the input instead of accepting a suggestion. This makes the picker behave like a directory autocomplete and addresses #2160.

Validation

  • pnpm exec vp test run apps/web/src/components/CommandPalette.logic.test.ts
  • pnpm --filter @t3tools/web typecheck
  • focused vp fmt --check and vp lint on the three changed files
  • isolated exact-head browser verification of Tab completion against a disposable project (see evidence below)

Closes#2160

Exact-head evidence

Revalidated at 83ce1aa790b2 on current main (9a0a071): focused tests, vp check, and vp run typecheck passed. The capture uses only disposable local projects.

Tab completes the entered folder path


Note

Low Risk
Localized keyboard handling and pure selection logic in the command palette browse flow; no auth, data, or API changes.

Overview
Tab in the command palette path browser now accepts directory suggestions instead of inserting a tab character or moving focus away.

A new resolveBrowseTabCompletion helper picks the Tab action: parent (..) when that row is highlighted, otherwise the highlighted folder, then a case-sensitive exact name match, and only when the user has typed a leaf filter—the first filtered directory. With no leaf filter, Tab does nothing so browsing an open directory does not auto-enter the first child.

CommandPalette intercepts plain Tab in browse mode (after blocking default behavior), skips completion while browse results are loading or a relative path needs an active project, then calls browseUp or browseTo from the resolver result. Unit tests cover highlight priority, exact vs. prefix matches, and stale highlights.

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

Note

Add Tab key completion to path browser in Command Palette

  • Adds resolveBrowseTabCompletion in CommandPalette.logic.ts to determine the Tab action while browsing: goes up when the parent-directory item is highlighted, enters the highlighted directory, falls back to an exact match, or enters the first filtered entry when a leaf filter is present.
  • Wires Tab key handling into CommandPalette.tsx so pressing Tab (no modifiers) in browse mode triggers path navigation instead of inserting a tab character.
  • Behavioral Change: Tab is now prevented by default in browse mode; existing keyboard behavior in non-browse modes is unaffected.

Macroscope summarized 47dac3d.

@coderabbitai

coderabbitaiBot commented Jul 22, 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: 2ba5057d-e51d-4521-8678-5b72143cee9b

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:M 30-99 changed lines (additions + deletions). labels Jul 22, 2026
Comment threadapps/web/src/components/CommandPalette.tsx
@macroscopeapp

macroscopeappBot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a new user-facing feature (Tab completion for path navigation) which introduces new interactive behavior. While the implementation is self-contained with good test coverage, new features changing user interaction patterns warrant human review.

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

@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 4 times, most recently from 493ac39 to 3accacfCompareJuly 22, 2026 16:22
Comment threadapps/web/src/components/CommandPalette.tsx
Comment threadapps/web/src/components/CommandPalette.logic.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 4 times, most recently from 9db2544 to 81d4357CompareJuly 23, 2026 16:27

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 81d43574c23fa0b9b3650c911b016e2ae6315450. Configure here.

Comment threadapps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 13 times, most recently from 62f304d to ee5da25CompareJuly 25, 2026 03:22
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from ee5da25 to 5d01957CompareJuly 27, 2026 11:15
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from 5d01957 to 8f60525CompareJuly 28, 2026 02:07
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from 8f60525 to 47dac3dCompareJuly 28, 2026 02:50
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
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request 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.

[Feature]: [KBD shortcut] Tab in add new project modal feels misaligned

1 participant

@colonelpanic8
, '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): add Tab completion to path browser - #4257

Open
colonelpanic8 wants to merge 4 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/directory-path-tab-completion
Open

feat(web): add Tab completion to path browser#4257
colonelpanic8 wants to merge 4 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/directory-path-tab-completion

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • complete the highlighted directory when Tab is pressed in the path browser
  • fall back to the first matching directory when no result is highlighted
  • keep focus in the path input while matches are loading or unavailable
  • preserve Tab navigation to the highlighted parent-directory entry

Why

The add-project and clone-destination path inputs already display matching directories, but Tab moved focus out of the input instead of accepting a suggestion. This makes the picker behave like a directory autocomplete and addresses #2160.

Validation

  • pnpm exec vp test run apps/web/src/components/CommandPalette.logic.test.ts
  • pnpm --filter @t3tools/web typecheck
  • focused vp fmt --check and vp lint on the three changed files
  • isolated exact-head browser verification of Tab completion against a disposable project (see evidence below)

Closes#2160

Exact-head evidence

Revalidated at 83ce1aa790b2 on current main (9a0a071): focused tests, vp check, and vp run typecheck passed. The capture uses only disposable local projects.

Tab completes the entered folder path


Note

Low Risk
Localized keyboard handling and pure selection logic in the command palette browse flow; no auth, data, or API changes.

Overview
Tab in the command palette path browser now accepts directory suggestions instead of inserting a tab character or moving focus away.

A new resolveBrowseTabCompletion helper picks the Tab action: parent (..) when that row is highlighted, otherwise the highlighted folder, then a case-sensitive exact name match, and only when the user has typed a leaf filter—the first filtered directory. With no leaf filter, Tab does nothing so browsing an open directory does not auto-enter the first child.

CommandPalette intercepts plain Tab in browse mode (after blocking default behavior), skips completion while browse results are loading or a relative path needs an active project, then calls browseUp or browseTo from the resolver result. Unit tests cover highlight priority, exact vs. prefix matches, and stale highlights.

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

Note

Add Tab key completion to path browser in Command Palette

  • Adds resolveBrowseTabCompletion in CommandPalette.logic.ts to determine the Tab action while browsing: goes up when the parent-directory item is highlighted, enters the highlighted directory, falls back to an exact match, or enters the first filtered entry when a leaf filter is present.
  • Wires Tab key handling into CommandPalette.tsx so pressing Tab (no modifiers) in browse mode triggers path navigation instead of inserting a tab character.
  • Behavioral Change: Tab is now prevented by default in browse mode; existing keyboard behavior in non-browse modes is unaffected.

Macroscope summarized 47dac3d.

@coderabbitai

coderabbitaiBot commented Jul 22, 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: 2ba5057d-e51d-4521-8678-5b72143cee9b

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:M 30-99 changed lines (additions + deletions). labels Jul 22, 2026
Comment threadapps/web/src/components/CommandPalette.tsx
@macroscopeapp

macroscopeappBot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a new user-facing feature (Tab completion for path navigation) which introduces new interactive behavior. While the implementation is self-contained with good test coverage, new features changing user interaction patterns warrant human review.

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

@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 4 times, most recently from 493ac39 to 3accacfCompareJuly 22, 2026 16:22
Comment threadapps/web/src/components/CommandPalette.tsx
Comment threadapps/web/src/components/CommandPalette.logic.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 4 times, most recently from 9db2544 to 81d4357CompareJuly 23, 2026 16:27

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 81d43574c23fa0b9b3650c911b016e2ae6315450. Configure here.

Comment threadapps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 13 times, most recently from 62f304d to ee5da25CompareJuly 25, 2026 03:22
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from ee5da25 to 5d01957CompareJuly 27, 2026 11:15
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from 5d01957 to 8f60525CompareJuly 28, 2026 02:07
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from 8f60525 to 47dac3dCompareJuly 28, 2026 02:50
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
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request 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.

[Feature]: [KBD shortcut] Tab in add new project modal feels misaligned

1 participant

@colonelpanic8
, '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): add Tab completion to path browser - #4257

Open
colonelpanic8 wants to merge 4 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/directory-path-tab-completion
Open

feat(web): add Tab completion to path browser#4257
colonelpanic8 wants to merge 4 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/directory-path-tab-completion

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • complete the highlighted directory when Tab is pressed in the path browser
  • fall back to the first matching directory when no result is highlighted
  • keep focus in the path input while matches are loading or unavailable
  • preserve Tab navigation to the highlighted parent-directory entry

Why

The add-project and clone-destination path inputs already display matching directories, but Tab moved focus out of the input instead of accepting a suggestion. This makes the picker behave like a directory autocomplete and addresses #2160.

Validation

  • pnpm exec vp test run apps/web/src/components/CommandPalette.logic.test.ts
  • pnpm --filter @t3tools/web typecheck
  • focused vp fmt --check and vp lint on the three changed files
  • isolated exact-head browser verification of Tab completion against a disposable project (see evidence below)

Closes#2160

Exact-head evidence

Revalidated at 83ce1aa790b2 on current main (9a0a071): focused tests, vp check, and vp run typecheck passed. The capture uses only disposable local projects.

Tab completes the entered folder path


Note

Low Risk
Localized keyboard handling and pure selection logic in the command palette browse flow; no auth, data, or API changes.

Overview
Tab in the command palette path browser now accepts directory suggestions instead of inserting a tab character or moving focus away.

A new resolveBrowseTabCompletion helper picks the Tab action: parent (..) when that row is highlighted, otherwise the highlighted folder, then a case-sensitive exact name match, and only when the user has typed a leaf filter—the first filtered directory. With no leaf filter, Tab does nothing so browsing an open directory does not auto-enter the first child.

CommandPalette intercepts plain Tab in browse mode (after blocking default behavior), skips completion while browse results are loading or a relative path needs an active project, then calls browseUp or browseTo from the resolver result. Unit tests cover highlight priority, exact vs. prefix matches, and stale highlights.

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

Note

Add Tab key completion to path browser in Command Palette

  • Adds resolveBrowseTabCompletion in CommandPalette.logic.ts to determine the Tab action while browsing: goes up when the parent-directory item is highlighted, enters the highlighted directory, falls back to an exact match, or enters the first filtered entry when a leaf filter is present.
  • Wires Tab key handling into CommandPalette.tsx so pressing Tab (no modifiers) in browse mode triggers path navigation instead of inserting a tab character.
  • Behavioral Change: Tab is now prevented by default in browse mode; existing keyboard behavior in non-browse modes is unaffected.

Macroscope summarized 47dac3d.

@coderabbitai

coderabbitaiBot commented Jul 22, 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: 2ba5057d-e51d-4521-8678-5b72143cee9b

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:M 30-99 changed lines (additions + deletions). labels Jul 22, 2026
Comment threadapps/web/src/components/CommandPalette.tsx
@macroscopeapp

macroscopeappBot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a new user-facing feature (Tab completion for path navigation) which introduces new interactive behavior. While the implementation is self-contained with good test coverage, new features changing user interaction patterns warrant human review.

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

@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 4 times, most recently from 493ac39 to 3accacfCompareJuly 22, 2026 16:22
Comment threadapps/web/src/components/CommandPalette.tsx
Comment threadapps/web/src/components/CommandPalette.logic.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 4 times, most recently from 9db2544 to 81d4357CompareJuly 23, 2026 16:27

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 81d43574c23fa0b9b3650c911b016e2ae6315450. Configure here.

Comment threadapps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 13 times, most recently from 62f304d to ee5da25CompareJuly 25, 2026 03:22
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from ee5da25 to 5d01957CompareJuly 27, 2026 11:15
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from 5d01957 to 8f60525CompareJuly 28, 2026 02:07
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from 8f60525 to 47dac3dCompareJuly 28, 2026 02:50
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
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request 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.

[Feature]: [KBD shortcut] Tab in add new project modal feels misaligned

1 participant

@colonelpanic8
, '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): add Tab completion to path browser - #4257

Open
colonelpanic8 wants to merge 4 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/directory-path-tab-completion
Open

feat(web): add Tab completion to path browser#4257
colonelpanic8 wants to merge 4 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/directory-path-tab-completion

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • complete the highlighted directory when Tab is pressed in the path browser
  • fall back to the first matching directory when no result is highlighted
  • keep focus in the path input while matches are loading or unavailable
  • preserve Tab navigation to the highlighted parent-directory entry

Why

The add-project and clone-destination path inputs already display matching directories, but Tab moved focus out of the input instead of accepting a suggestion. This makes the picker behave like a directory autocomplete and addresses #2160.

Validation

  • pnpm exec vp test run apps/web/src/components/CommandPalette.logic.test.ts
  • pnpm --filter @t3tools/web typecheck
  • focused vp fmt --check and vp lint on the three changed files
  • isolated exact-head browser verification of Tab completion against a disposable project (see evidence below)

Closes#2160

Exact-head evidence

Revalidated at 83ce1aa790b2 on current main (9a0a071): focused tests, vp check, and vp run typecheck passed. The capture uses only disposable local projects.

Tab completes the entered folder path


Note

Low Risk
Localized keyboard handling and pure selection logic in the command palette browse flow; no auth, data, or API changes.

Overview
Tab in the command palette path browser now accepts directory suggestions instead of inserting a tab character or moving focus away.

A new resolveBrowseTabCompletion helper picks the Tab action: parent (..) when that row is highlighted, otherwise the highlighted folder, then a case-sensitive exact name match, and only when the user has typed a leaf filter—the first filtered directory. With no leaf filter, Tab does nothing so browsing an open directory does not auto-enter the first child.

CommandPalette intercepts plain Tab in browse mode (after blocking default behavior), skips completion while browse results are loading or a relative path needs an active project, then calls browseUp or browseTo from the resolver result. Unit tests cover highlight priority, exact vs. prefix matches, and stale highlights.

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

Note

Add Tab key completion to path browser in Command Palette

  • Adds resolveBrowseTabCompletion in CommandPalette.logic.ts to determine the Tab action while browsing: goes up when the parent-directory item is highlighted, enters the highlighted directory, falls back to an exact match, or enters the first filtered entry when a leaf filter is present.
  • Wires Tab key handling into CommandPalette.tsx so pressing Tab (no modifiers) in browse mode triggers path navigation instead of inserting a tab character.
  • Behavioral Change: Tab is now prevented by default in browse mode; existing keyboard behavior in non-browse modes is unaffected.

Macroscope summarized 47dac3d.

@coderabbitai

coderabbitaiBot commented Jul 22, 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: 2ba5057d-e51d-4521-8678-5b72143cee9b

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:M 30-99 changed lines (additions + deletions). labels Jul 22, 2026
Comment threadapps/web/src/components/CommandPalette.tsx
@macroscopeapp

macroscopeappBot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a new user-facing feature (Tab completion for path navigation) which introduces new interactive behavior. While the implementation is self-contained with good test coverage, new features changing user interaction patterns warrant human review.

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

@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 4 times, most recently from 493ac39 to 3accacfCompareJuly 22, 2026 16:22
Comment threadapps/web/src/components/CommandPalette.tsx
Comment threadapps/web/src/components/CommandPalette.logic.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 4 times, most recently from 9db2544 to 81d4357CompareJuly 23, 2026 16:27

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 81d43574c23fa0b9b3650c911b016e2ae6315450. Configure here.

Comment threadapps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 13 times, most recently from 62f304d to ee5da25CompareJuly 25, 2026 03:22
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from ee5da25 to 5d01957CompareJuly 27, 2026 11:15
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from 5d01957 to 8f60525CompareJuly 28, 2026 02:07
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from 8f60525 to 47dac3dCompareJuly 28, 2026 02:50
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
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request 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.

[Feature]: [KBD shortcut] Tab in add new project modal feels misaligned

1 participant

@colonelpanic8
, '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): add Tab completion to path browser - #4257

Open
colonelpanic8 wants to merge 4 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/directory-path-tab-completion
Open

feat(web): add Tab completion to path browser#4257
colonelpanic8 wants to merge 4 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/directory-path-tab-completion

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • complete the highlighted directory when Tab is pressed in the path browser
  • fall back to the first matching directory when no result is highlighted
  • keep focus in the path input while matches are loading or unavailable
  • preserve Tab navigation to the highlighted parent-directory entry

Why

The add-project and clone-destination path inputs already display matching directories, but Tab moved focus out of the input instead of accepting a suggestion. This makes the picker behave like a directory autocomplete and addresses #2160.

Validation

  • pnpm exec vp test run apps/web/src/components/CommandPalette.logic.test.ts
  • pnpm --filter @t3tools/web typecheck
  • focused vp fmt --check and vp lint on the three changed files
  • isolated exact-head browser verification of Tab completion against a disposable project (see evidence below)

Closes#2160

Exact-head evidence

Revalidated at 83ce1aa790b2 on current main (9a0a071): focused tests, vp check, and vp run typecheck passed. The capture uses only disposable local projects.

Tab completes the entered folder path


Note

Low Risk
Localized keyboard handling and pure selection logic in the command palette browse flow; no auth, data, or API changes.

Overview
Tab in the command palette path browser now accepts directory suggestions instead of inserting a tab character or moving focus away.

A new resolveBrowseTabCompletion helper picks the Tab action: parent (..) when that row is highlighted, otherwise the highlighted folder, then a case-sensitive exact name match, and only when the user has typed a leaf filter—the first filtered directory. With no leaf filter, Tab does nothing so browsing an open directory does not auto-enter the first child.

CommandPalette intercepts plain Tab in browse mode (after blocking default behavior), skips completion while browse results are loading or a relative path needs an active project, then calls browseUp or browseTo from the resolver result. Unit tests cover highlight priority, exact vs. prefix matches, and stale highlights.

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

Note

Add Tab key completion to path browser in Command Palette

  • Adds resolveBrowseTabCompletion in CommandPalette.logic.ts to determine the Tab action while browsing: goes up when the parent-directory item is highlighted, enters the highlighted directory, falls back to an exact match, or enters the first filtered entry when a leaf filter is present.
  • Wires Tab key handling into CommandPalette.tsx so pressing Tab (no modifiers) in browse mode triggers path navigation instead of inserting a tab character.
  • Behavioral Change: Tab is now prevented by default in browse mode; existing keyboard behavior in non-browse modes is unaffected.

Macroscope summarized 47dac3d.

@coderabbitai

coderabbitaiBot commented Jul 22, 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: 2ba5057d-e51d-4521-8678-5b72143cee9b

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:M 30-99 changed lines (additions + deletions). labels Jul 22, 2026
Comment threadapps/web/src/components/CommandPalette.tsx
@macroscopeapp

macroscopeappBot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a new user-facing feature (Tab completion for path navigation) which introduces new interactive behavior. While the implementation is self-contained with good test coverage, new features changing user interaction patterns warrant human review.

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

@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 4 times, most recently from 493ac39 to 3accacfCompareJuly 22, 2026 16:22
Comment threadapps/web/src/components/CommandPalette.tsx
Comment threadapps/web/src/components/CommandPalette.logic.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 4 times, most recently from 9db2544 to 81d4357CompareJuly 23, 2026 16:27

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 81d43574c23fa0b9b3650c911b016e2ae6315450. Configure here.

Comment threadapps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 13 times, most recently from 62f304d to ee5da25CompareJuly 25, 2026 03:22
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from ee5da25 to 5d01957CompareJuly 27, 2026 11:15
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from 5d01957 to 8f60525CompareJuly 28, 2026 02:07
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from 8f60525 to 47dac3dCompareJuly 28, 2026 02:50
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
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request 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.

[Feature]: [KBD shortcut] Tab in add new project modal feels misaligned

1 participant

@colonelpanic8
, '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): add Tab completion to path browser - #4257

Open
colonelpanic8 wants to merge 4 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/directory-path-tab-completion
Open

feat(web): add Tab completion to path browser#4257
colonelpanic8 wants to merge 4 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/directory-path-tab-completion

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • complete the highlighted directory when Tab is pressed in the path browser
  • fall back to the first matching directory when no result is highlighted
  • keep focus in the path input while matches are loading or unavailable
  • preserve Tab navigation to the highlighted parent-directory entry

Why

The add-project and clone-destination path inputs already display matching directories, but Tab moved focus out of the input instead of accepting a suggestion. This makes the picker behave like a directory autocomplete and addresses #2160.

Validation

  • pnpm exec vp test run apps/web/src/components/CommandPalette.logic.test.ts
  • pnpm --filter @t3tools/web typecheck
  • focused vp fmt --check and vp lint on the three changed files
  • isolated exact-head browser verification of Tab completion against a disposable project (see evidence below)

Closes#2160

Exact-head evidence

Revalidated at 83ce1aa790b2 on current main (9a0a071): focused tests, vp check, and vp run typecheck passed. The capture uses only disposable local projects.

Tab completes the entered folder path


Note

Low Risk
Localized keyboard handling and pure selection logic in the command palette browse flow; no auth, data, or API changes.

Overview
Tab in the command palette path browser now accepts directory suggestions instead of inserting a tab character or moving focus away.

A new resolveBrowseTabCompletion helper picks the Tab action: parent (..) when that row is highlighted, otherwise the highlighted folder, then a case-sensitive exact name match, and only when the user has typed a leaf filter—the first filtered directory. With no leaf filter, Tab does nothing so browsing an open directory does not auto-enter the first child.

CommandPalette intercepts plain Tab in browse mode (after blocking default behavior), skips completion while browse results are loading or a relative path needs an active project, then calls browseUp or browseTo from the resolver result. Unit tests cover highlight priority, exact vs. prefix matches, and stale highlights.

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

Note

Add Tab key completion to path browser in Command Palette

  • Adds resolveBrowseTabCompletion in CommandPalette.logic.ts to determine the Tab action while browsing: goes up when the parent-directory item is highlighted, enters the highlighted directory, falls back to an exact match, or enters the first filtered entry when a leaf filter is present.
  • Wires Tab key handling into CommandPalette.tsx so pressing Tab (no modifiers) in browse mode triggers path navigation instead of inserting a tab character.
  • Behavioral Change: Tab is now prevented by default in browse mode; existing keyboard behavior in non-browse modes is unaffected.

Macroscope summarized 47dac3d.

@coderabbitai

coderabbitaiBot commented Jul 22, 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: 2ba5057d-e51d-4521-8678-5b72143cee9b

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:M 30-99 changed lines (additions + deletions). labels Jul 22, 2026
Comment threadapps/web/src/components/CommandPalette.tsx
@macroscopeapp

macroscopeappBot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a new user-facing feature (Tab completion for path navigation) which introduces new interactive behavior. While the implementation is self-contained with good test coverage, new features changing user interaction patterns warrant human review.

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

@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 4 times, most recently from 493ac39 to 3accacfCompareJuly 22, 2026 16:22
Comment threadapps/web/src/components/CommandPalette.tsx
Comment threadapps/web/src/components/CommandPalette.logic.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 4 times, most recently from 9db2544 to 81d4357CompareJuly 23, 2026 16:27

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 81d43574c23fa0b9b3650c911b016e2ae6315450. Configure here.

Comment threadapps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 13 times, most recently from 62f304d to ee5da25CompareJuly 25, 2026 03:22
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from ee5da25 to 5d01957CompareJuly 27, 2026 11:15
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from 5d01957 to 8f60525CompareJuly 28, 2026 02:07
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from 8f60525 to 47dac3dCompareJuly 28, 2026 02:50
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
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request 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.

[Feature]: [KBD shortcut] Tab in add new project modal feels misaligned

1 participant

@colonelpanic8
, '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): add Tab completion to path browser - #4257

Open
colonelpanic8 wants to merge 4 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/directory-path-tab-completion
Open

feat(web): add Tab completion to path browser#4257
colonelpanic8 wants to merge 4 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/directory-path-tab-completion

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • complete the highlighted directory when Tab is pressed in the path browser
  • fall back to the first matching directory when no result is highlighted
  • keep focus in the path input while matches are loading or unavailable
  • preserve Tab navigation to the highlighted parent-directory entry

Why

The add-project and clone-destination path inputs already display matching directories, but Tab moved focus out of the input instead of accepting a suggestion. This makes the picker behave like a directory autocomplete and addresses #2160.

Validation

  • pnpm exec vp test run apps/web/src/components/CommandPalette.logic.test.ts
  • pnpm --filter @t3tools/web typecheck
  • focused vp fmt --check and vp lint on the three changed files
  • isolated exact-head browser verification of Tab completion against a disposable project (see evidence below)

Closes#2160

Exact-head evidence

Revalidated at 83ce1aa790b2 on current main (9a0a071): focused tests, vp check, and vp run typecheck passed. The capture uses only disposable local projects.

Tab completes the entered folder path


Note

Low Risk
Localized keyboard handling and pure selection logic in the command palette browse flow; no auth, data, or API changes.

Overview
Tab in the command palette path browser now accepts directory suggestions instead of inserting a tab character or moving focus away.

A new resolveBrowseTabCompletion helper picks the Tab action: parent (..) when that row is highlighted, otherwise the highlighted folder, then a case-sensitive exact name match, and only when the user has typed a leaf filter—the first filtered directory. With no leaf filter, Tab does nothing so browsing an open directory does not auto-enter the first child.

CommandPalette intercepts plain Tab in browse mode (after blocking default behavior), skips completion while browse results are loading or a relative path needs an active project, then calls browseUp or browseTo from the resolver result. Unit tests cover highlight priority, exact vs. prefix matches, and stale highlights.

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

Note

Add Tab key completion to path browser in Command Palette

  • Adds resolveBrowseTabCompletion in CommandPalette.logic.ts to determine the Tab action while browsing: goes up when the parent-directory item is highlighted, enters the highlighted directory, falls back to an exact match, or enters the first filtered entry when a leaf filter is present.
  • Wires Tab key handling into CommandPalette.tsx so pressing Tab (no modifiers) in browse mode triggers path navigation instead of inserting a tab character.
  • Behavioral Change: Tab is now prevented by default in browse mode; existing keyboard behavior in non-browse modes is unaffected.

Macroscope summarized 47dac3d.

@coderabbitai

coderabbitaiBot commented Jul 22, 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: 2ba5057d-e51d-4521-8678-5b72143cee9b

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:M 30-99 changed lines (additions + deletions). labels Jul 22, 2026
Comment threadapps/web/src/components/CommandPalette.tsx
@macroscopeapp

macroscopeappBot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a new user-facing feature (Tab completion for path navigation) which introduces new interactive behavior. While the implementation is self-contained with good test coverage, new features changing user interaction patterns warrant human review.

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

@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 4 times, most recently from 493ac39 to 3accacfCompareJuly 22, 2026 16:22
Comment threadapps/web/src/components/CommandPalette.tsx
Comment threadapps/web/src/components/CommandPalette.logic.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 4 times, most recently from 9db2544 to 81d4357CompareJuly 23, 2026 16:27

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 81d43574c23fa0b9b3650c911b016e2ae6315450. Configure here.

Comment threadapps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch 13 times, most recently from 62f304d to ee5da25CompareJuly 25, 2026 03:22
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from ee5da25 to 5d01957CompareJuly 27, 2026 11:15
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
# Conflicts:
#	apps/web/src/components/CommandPalette.logic.test.ts
#	apps/web/src/components/CommandPalette.tsx
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from 5d01957 to 8f60525CompareJuly 28, 2026 02:07
@colonelpanic8
colonelpanic8force-pushed the t3code/directory-path-tab-completion branch from 8f60525 to 47dac3dCompareJuly 28, 2026 02:50
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
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request 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.

[Feature]: [KBD shortcut] Tab in add new project modal feels misaligned

1 participant

@colonelpanic8