Thanks to visit codestin.com
Credit goes to github.com

Skip to content

fix: use stable port per worktree to prevent full Rust rebuilds on just dev#79

Merged
wesbillman merged 1 commit intomainfrom
fix-just-file-and-rebuild
Feb 12, 2026
Merged

fix: use stable port per worktree to prevent full Rust rebuilds on just dev#79
wesbillman merged 1 commit intomainfrom
fix-just-file-and-rebuild

Conversation

@wesbillman
Copy link
Collaborator

@wesbillman wesbillman commented Feb 12, 2026

Summary

  • Derive a stable Vite dev-server port from the working directory (via SHA-256 hash) instead of picking a random free port each time. This prevents TAURI_CONFIG from changing between runs, which was invalidating Cargo's build cache and triggering full Rust rebuilds.
  • Auto-install npm dependencies on just dev if node_modules is missing, removing the need for a separate just install step.
  • Remove the now-unnecessary install recipe from staged/justfile and rename the root install to install-summarize for clarity.
  • Clean up related CI comments and README references.

Test plan

  • Run just dev in a worktree twice — verify the same port is used both times and no Rust rebuild occurs on the second run
  • Run just dev in two different worktrees simultaneously — verify they get different ports
  • Delete node_modules and run just dev — verify deps are auto-installed

🤖 Generated with Claude Code

…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]>
@wesbillman wesbillman merged commit c6e1a78 into main Feb 12, 2026
3 checks passed
@wesbillman wesbillman deleted the fix-just-file-and-rebuild branch February 12, 2026 21:04
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]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant