Auto-name projects + declutter the file list#2
Merged
Conversation
Headless `claude -p` never writes Claude Code's own `ai-title` lines, so `project_list`'s self-heal reader never fired and every project stayed "New project". Generate a title ourselves: on the plan phase, a quick isolated `claude -p` call (no session/tools, default model so a future proxy can route it) turns the first message into a short title, written to project.json just before TurnEnd where the frontend already refreshes. - project.rs: needs_autoname + set_name_if_placeholder helpers (re-check guards against clobbering a real name / double-writes). - claude_driver.rs: sanitize_title (pure) + generate_project_title (20s cap, best-effort), kicked off concurrently and landed before TurnEnd. Adds an ignored live end-to-end test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
A single part surfaced ~9 files (helper scripts, QA render PNGs, JSON sidecars) in the file list. Two fixes: - catalog.rs: scan_workspace now skips auxiliary files (.json sidecars, .png renders, underscore-prefixed .py helpers) so the list shows only the main deliverables (source .py + .step/.stl/.glb). path_index still covers every file, so .step->.py sibling detection and sidecar artifact URLs resolve from disk. Adds a test. - Root cause of the temps: the vendored cadpy ships empty (nothing ran build-skill-runtimes.sh), so the cadcode generator can't run and the model hand-writes _export.py/_render.py + QA PNGs. Wire the vendor step into dev.sh and build-app.sh (with an empty-cadpy guard), and fix the vendor script's rsync --delete nuking the tracked .gitignore. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.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.
Two related project-UX fixes, one commit each.
1. Auto-name projects from the first plan turn
Projects stayed "New project" forever:
project_listwaits for Claude Code'sai-titlelines, which headlessclaude -pnever writes. Now Panda generates the title itself — on the plan phase, a quick isolatedclaude -pcall turns the first message into a short title and writes it toproject.jsonjust beforeTurnEnd(where the frontend already refreshes). Default model (no--model) so a future proxy can route it. Verified live: "New project" → "Macbook Riser With Airflow Holes".2. Declutter the file list + fix empty vendored cadpy
A single part surfaced ~9 files. Now
scan_workspacehides auxiliary files (.jsonsidecars,.pngrenders, underscore.pyhelpers) so the list shows only the mains: source.py+.step/.stl/.glb. Sibling/sidecar resolution still works (reads disk).Root cause of the temps: the vendored cadpy ships empty (nothing ran
build-skill-runtimes.sh), so the cadcode generator falls back to hand-written_export.py/_render.py+ QA PNGs. Wired the vendor step intodev.sh+build-app.sh(with an empty-cadpy guard), and fixed the vendor script'srsync --deletedeleting the tracked.gitignore.Tests
cargo test→ 94 passed, 0 failed (incl. newhides_helper_scripts_renders_and_sidecars,sanitize_title,needs_autoname,set_name_if_placeholder).🤖 Generated with Claude Code