fix: use stable port per worktree to prevent full Rust rebuilds on just dev#79
Merged
wesbillman merged 1 commit intomainfrom Feb 12, 2026
Merged
fix: use stable port per worktree to prevent full Rust rebuilds on just dev#79wesbillman merged 1 commit intomainfrom
just dev#79wesbillman merged 1 commit intomainfrom
Conversation
…ust dev` The dev command was picking a random port on every run, which changed the TAURI_CONFIG env var passed to Cargo and invalidated the build cache — causing a full Rust recompile even with no code changes. Now the port is derived from a hash of the working directory, so the same worktree always gets the same port (different worktrees still get different ports). Also folds `npm install` into `just dev` as a prerequisite check, removes the now-redundant `just install` from staged/, and renames the root `just install` to `just install-summarize` to remove the naming ambiguity between the two justfiles. Co-Authored-By: Claude Opus 4.6 <[email protected]>
loganj
added a commit
that referenced
this pull request
Feb 26, 2026
…odals, styling) (#79) feat: align React frontend with Go server (smart redirect, sidebar, modals, styling) - Smart index redirect fetches projects API and redirects to first workspace/standalone/recent - Add workspace/project modal with path input and error handling - Sidebar three-dot menus for workspace removal and project closing - Project-mode sidebar view when viewing project/file pages - TOC moved to sidebar to match Go layout - CSS updated to match Go template styling - Fix API_BASE default to use Vite proxy instead of direct Go server access Co-Authored-By: Claude Opus 4.6 <[email protected]> fix: match Go server CSS/HTML exactly (reset, heading IDs, activity colors, file rows) - Change global reset from `* { margin:0; padding:0 }` to only body (Go only resets body) - Add penpal-md- prefix to heading IDs matching Go's goldmark algorithm - Fix activity label colors to match Go values (viewed=#f0f0f0/#666, etc.) - Fix file row padding to 12px 16px and gap to 10px (was 8px/6px) - Move selection bar to top with transform animation (matching Go) - Add missing CSS rule for first-of-type strong ~ strong - Add font-weight:500 to file-name (matching Go) - Remove file-name link color override (Go uses default link color) Co-Authored-By: Claude Opus 4.6 <[email protected]> fix: additional CSS parity with Go templates - Remove project-card-name link color override (Go uses default link-color) - Add source-header dropdown overrides (min-width: 200px, font-size: 0.8em) - Add scoped .source-header .source-badge rule matching Go - Add file-name font-weight: 500 matching Go Co-Authored-By: Claude Opus 4.6 <[email protected]> fix: badge CSS custom properties, sidebar dots, selection bar parity - Source badge uses CSS custom properties (--badge-bg, --badge-color, --badge-active-bg, --badge-active-color) matching Go template approach - Add APIBadge.activeBg/activeColor fields from Go API - Fix source-badge padding to 0px 4px (was 1px 6px) - Add sidebar-item .branch-info and .branch-dirty rules - Sidebar dots stay visible when menu-open (matching Go behavior) - Selection bar: justify-content: center, button font-size: 0.9em, add transition - Add .selection-bar button.copied rule - Add .source-header .source-badge scoped rule Co-Authored-By: Claude Opus 4.6 <[email protected]> feat: add syntax highlighting to markdown code blocks (Dracula theme) Go server uses goldmark-highlighting with Dracula theme for syntax-colored code blocks. Add react-syntax-highlighter with the matching Dracula Prism theme for visual parity. - Fenced code blocks with language tags get full syntax highlighting - Mermaid blocks still handled separately - Pre wrapper unwrapped for SyntaxHighlighter to avoid double-wrapping Co-Authored-By: Claude Opus 4.6 <[email protected]> fix: restore proper markdown typography (headings, lists, paragraphs) The global reset stripped all margins/padding. Instead of removing it entirely, use targeted resets on layout elements and restore browser-default margins inside .content for proper markdown rendering: - h1-h6 get explicit font-size and margin matching browser defaults - p, ul, ol, blockquote, pre get margin: 1em 0 - Lists get list-style (disc/decimal) restored inside .content - Switch syntax highlighter to Prism with ESM Dracula theme Co-Authored-By: Claude Opus 4.6 <[email protected]> fix: match Go server markdown rendering exactly - Disable Tailwind Preflight to preserve browser defaults (Go relies on these for heading sizes, list bullets, paragraph margins) - Fix plain code blocks losing <pre> wrapper (react-markdown v10 passes component functions as type, not strings; use data-unwrap-pre signal) - Filter react-markdown's `node` prop from DOM elements (was leaking as node="[object Object]" attributes) - Align Prism Dracula string color to match Chroma Dracula (#f1fa8c yellow instead of #50fa7b green) - Fix FilePage URL resolution for multi-segment qualified names like "Development/birdseye" by matching against known projects list - Remove extra margin/list-style overrides that were only needed with the global CSS reset Co-Authored-By: Claude Opus 4.6 <[email protected]> fix: comment body markdown rendering and topbar parity with Go server - Replace regex-based renderCommentBody() with ReactMarkdown + remarkGfm for proper <ol>, <li>, <p>, <code> rendering matching Go server - Add .comment-body ul/ol/blockquote CSS rules matching Go - Change search input type to "search" matching Go - Update theme toggle aria-label to "Toggle dark mode" matching Go Co-Authored-By: Claude Opus 4.6 <[email protected]> fix: sidebar project-mode parity with Go server - Hide In Review, Recent, and Add links in project-mode (match Go behavior) - Show branch info and dirty indicator on active project - Show workspace agent dot in project-mode sidebar Co-Authored-By: Claude Opus 4.6 <[email protected]> fix: show project-mode sidebar immediately on /file/ and /project/ URLs Detect project-mode from URL path alone rather than requiring projects to be loaded from the API first. This eliminates the flash of home-mode sidebar when navigating directly to a file or project URL. Co-Authored-By: Claude Opus 4.6 <[email protected]> fix: use real slashes in qualified name URLs instead of %2F encoding Go server expects qualified names as real path segments (e.g. /file/Development/birdseye/foo.md), not percent-encoded (/file/Development%2Fbirdseye/foo.md). Remove encodeURIComponent from all qualified name URL constructions to match Go behavior. Co-Authored-By: Claude Opus 4.6 <[email protected]> fix: use wildcard routes for project/file paths with multi-segment QNs React Router's :param only captures a single path segment, so /project/Development/birdseye 404'd. Switch to wildcard routes (/project/*, /file/*) and extract the qualified name from location.pathname instead of useParams. Co-Authored-By: Claude Opus 4.6 <[email protected]> feat: add sidebar cards for workspace projects and project sources Workspace page now shows a "Projects" sidebar card listing all projects in the workspace (matching Go's sidebar_extra). Project page shows a "Sources" sidebar card with source names and badges (matching Go). Uses a new setSidebarExtra in LayoutContext, allowing pages to push content into the sidebar area. Co-Authored-By: Claude Opus 4.6 <[email protected]> fix: show In Review entry in project sidebar sources card When a project has files in review, prepend an "In Review" link with the Review badge to the Sources sidebar card, matching Go's dynamically-injected in-review-section. Co-Authored-By: Claude Opus 4.6 <[email protected]> fix: mermaid diagram borders and comments panel height - Remove dark border around mermaid diagrams caused by pre wrapper with Dracula theme background leaking through - Fix comments panel not filling full height when empty by removing unnecessary wrapper div in FilePage Co-Authored-By: Claude Opus 4.6 <[email protected]> fix: badge/label consistency matching Go server patterns - Extract shared FileTypeBadge component used by all pages - Fix sidebar "Review" tag to use --file-type-research-color/bg (matching Go) instead of solid white-on-blue - Fix In Review file rows to always show "in review" badge (not only when agent is active), matching Go's applyReviewBadges() - Replace duplicated file-type badge rendering in SearchPage, RecentPage, InReviewPage, and FilePage with shared component Co-Authored-By: Claude Opus 4.6 <[email protected]>
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
TAURI_CONFIGfrom changing between runs, which was invalidating Cargo's build cache and triggering full Rust rebuilds.just devifnode_modulesis missing, removing the need for a separatejust installstep.installrecipe fromstaged/justfileand rename the rootinstalltoinstall-summarizefor clarity.Test plan
just devin a worktree twice — verify the same port is used both times and no Rust rebuild occurs on the second runjust devin two different worktrees simultaneously — verify they get different portsnode_modulesand runjust dev— verify deps are auto-installed🤖 Generated with Claude Code