fix: support precheck dependency detection in worktrees#252
Merged
mattleaverton merged 2 commits intomainfrom Mar 30, 2026
Merged
fix: support precheck dependency detection in worktrees#252mattleaverton merged 2 commits intomainfrom
mattleaverton merged 2 commits intomainfrom
Conversation
Use createRequire instead of existsSync for dependency checking, so worktrees can resolve deps from the parent checkout's node_modules. Separated from #247 (browser pane screenshots). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
mattleaverton
added a commit
that referenced
this pull request
Mar 30, 2026
…flow (#248) * fix(mcp): validate params and reject unknown parameters with helpful hints When called with unrecognized params (e.g. new-tab with url), the MCP tool now returns an error listing valid parameters. A specific hint suggests open-browser when url is passed to new-tab. Help text updated to clarify the distinction between new-tab and open-browser, with a new playbook for opening URLs. * docs: add trycycle title search plan * docs: tighten title-search implementation plan * docs: fix title search subdir implementation plan * docs: tighten title search implementation plan * docs: add title search subdir test plan * feat: extend title search with subdirectory matches * refactor: track applied sidebar search state * feat: finalize applied sidebar search behavior * fix: honor applied sidebar search state * test: remove remaining skipped coverage * fix: sync sidebar search controls with requested state * fix: restore sidebar request state contract * fix: hide sidebar search chrome during browse refresh * fix: preserve visible sidebar refresh state * docs: revise title search implementation plan * docs: fix trycycle title-search plan * docs: refocus title-search implementation plan * docs: revise title-search subdir test plan * refactor: split sidebar replacement and refresh commits * fix: refresh sidebar results by visible identity * test: lock refresh drift regressions * test: lock direct refresh regressions * fix: preserve sidebar search debounce on stale commits * docs: add plan for fixing tool strip showTools toggle * fix: make tool strip toggle session-only, controlled by showTools prop - Remove localStorage persistence for tool strip expanded state - ToolStrip now uses local useState initialized from showTools prop - ToolBlocks inherit initial expanded state from showTools - Remove autoExpandAbove/completedToolOffset props (no longer needed) - All toggle state is session-only, resets on page refresh * fix: remove dead code from AgentChatView and browserPreferencesPersistence * fix: always show tool strip chevron, showTools only controls default state * plan: clickable terminal URLs with context menu integration Add implementation plan for making terminal URLs clickable (opening in browser panes) with right-click context menu support for open in pane, open in tab, open in browser, and copy URL. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * plan: improve clickable-terminal-urls plan with verified code references Reviewed all source files referenced by the plan against the actual codebase and corrected several issues: - Fix ILinkHandler hover/leave signatures (need range param for OSC 8) - Add explicit wrapperRef JSX attachment instructions for outer div - Fix test file reference to canonical path (components/context-menu/) - Add useMemo dependency array update note for ContextMenuProvider - Clarify link provider registration order for priority - Note cleanup needs for both hoveredUrl map and data attribute - Add context-menu-utils.test.ts to new files list - Document picker vs direct browser pane design decision Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * plan: refine clickable-terminal-urls plan after code verification - Remove unnecessary empty hover/leave stubs on file path links - Note pre-existing mock staleness in menu-defs.test.ts (6 missing actions) - Add docs/index.html update step per repo rules - Add timing safety note for wrapperRef in hover callbacks - Clarify ContextMenuProvider action wiring locations and imports - Add balanced parenthesis edge case for URL detection tests Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * plan: fix xterm link provider priority order and test file references Corrects three factual errors in the implementation plan: 1. xterm.js link provider priority is first-registered=highest (not last) 2. menu-defs.test.ts does not exist yet (was incorrectly labeled "update existing") 3. Removes context-menu-constants.ts from modified files list (no changes needed) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test-plan: concrete enumerated test plan for clickable terminal URLs 58 new tests across 8 files plus updates to 2 existing test files, aligned to the implementation plan's TDD phases. Covers hover state tracking, URL detection, left-click behavior, context menu integration, multi-pane integration, and browser-use E2E smoke testing. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: add terminal-hovered-url and url-utils utility modules with tests Phase 1 of clickable terminal URLs: module-level map for tracking hovered URLs per pane, and findUrls utility for detecting http/https URLs in terminal output text. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: URL click opens browser pane, add hover/leave tracking and URL link provider - Left-click on OSC 8 links and detected URLs now opens a browser pane (split right) instead of window.open - Warning modal confirm also opens browser pane instead of window.open - Add hover/leave callbacks to OSC 8 linkHandler for tracking hovered URL - Register URL link provider (after file path provider) to detect plain http/https URLs in terminal output - Track hovered URL in module-level map and data-hovered-url DOM attribute - Clear hover state on terminal dispose and tab hide - Update existing link warning and keyboard tests for new behavior Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: add URL context menu items for terminal panes - Add hoveredUrl optional field to terminal ContextTarget - Parse hoveredUrl from dataset in parseContextTarget - Add URL-specific menu items (Open in pane/tab/browser, Copy URL) to terminal context menu when hovering a URL - Add openUrlInPane, openUrlInTab, openUrlInBrowser, copyUrl actions to ContextMenuProvider - Add tests for context-menu-utils and menu-defs URL behavior Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: add integration tests for URL click and context menu - terminal-url-link-click: verifies URL click in nested pane opens browser pane on the correct branch (both plain URL and OSC 8 paths) - terminal-url-context-menu: verifies URL context menu items appear when hovering a URL, are absent without hover, and "Open URL in pane" creates a browser pane split Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: add hidden state cleanup test for hovered URL Verifies that when a terminal tab becomes hidden, the hovered URL module state and DOM attribute are cleared. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: update file link test to capture first provider, not last With the new URL link provider registered after the file path provider, the existing test mock was capturing the URL provider instead of the file path provider. Fixed by only storing the first registered provider. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor: fix lint issues in url-utils and TerminalView cleanup - Remove unnecessary escape in url-utils regex character class - Capture wrapperRef.current in local variable before cleanup to satisfy react-hooks/exhaustive-deps rule Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: balanced parens in URL detection, scheme validation on OSC 8 links, docs update - URL detection now preserves balanced parentheses (e.g. Wikipedia URLs) while still stripping unbalanced trailing parens - OSC 8 linkHandler.activate validates http/https scheme before opening browser panes; non-http schemes fall back to window.open - Added clickable URLs feature to docs/index.html feature list Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: add button guard to prevent right/middle-click link activation Prevents non-left-click from triggering link activation on OSC 8 links, file path links, and URL links. Adds tests for right-click and middle-click. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: gitignore opencode MCP state and ephemeral files Align .opencode/.gitignore with upstream best practices: add plans/, package-lock.json, and .freshell-mcp-state.json. Remove the transient MCP state file from tracking. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: defer terminal link pane splits * refactor: tighten terminal link split deferral * fix: support precheck in worktrees * fix: type queued terminal pane splits as pane inputs * ci: add client typecheck workflow * feat: redesign TabsView with device-centric card grid layout Replace flat list layout with a compact card grid organized by device. Key changes: - Device-centric grouping: local tabs first, then remote by device - Compact card grid (auto-fill 220px min) with colored left borders - Right-click context menus with Jump/Pull/Open pane/Copy actions - Segmented controls for status and scope filters - Hover-to-reveal action labels on cards - Collapsible "Recently closed" section - Pane type icons with distinct colors for visual scanning - Click-to-act: click card to jump (local) or pull (remote/closed) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: update TabsView tests for redesigned component Update all 4 test files to match the new device-centric card grid layout: - Tests now click tab cards directly instead of finding "Open copy" buttons - Section headings updated for device-centric grouping - New tests for: device grouping, context menus, segmented filters, pane kind icons, multi-pane context menu items - Explicit cleanup between tests to prevent DOM leakage Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * revert: remove unrelated changes from TabsView redesign PR Remove ToolStrip simplification (in #251), test rewrites (in #249), precheck worktree fix (in #252), and .opencode config. This PR now contains only the TabsView device-centric card grid redesign. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Dan Shapiro <dan@example.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Matt Leaverton <mattleaverton@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
createRequireinstead ofexistsSyncfor dependency checking inscripts/precheck.tsnode_modulesSeparated from #247 (browser pane screenshots).
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com