Skip to content

feat: beginner-friendly file explorer with live git status#15

Merged
opariffazman merged 16 commits into
mainfrom
feat/beginner-file-explorer
Jul 11, 2026
Merged

feat: beginner-friendly file explorer with live git status#15
opariffazman merged 16 commits into
mainfrom
feat/beginner-file-explorer

Conversation

@opariffazman

Copy link
Copy Markdown
Owner

Summary

Makes Gitverse approachable for git beginners with an IDE-style file explorer:

  • Live file explorer sidebar (VS Code style) — every file shows a colored git-status badge that updates after each command: green U untracked, yellow M modified, blue staged, red struck-through D deleted. Clicking a file prefills cat <file> in the terminal; a one-line legend teaches the three-area model.
  • + Example files button — seeds README.md, index.html, src/app.js by running real mkdir/touch commands through the terminal, so beginners watch the commands happen and can repeat them. Idempotent.
  • ✎ Simulate changes button — appends a line to tracked files via echo "…" >> file so there is always something to git add/commit (implements the "Simulate Changes" item from the original design spec). Disabled with a hint until something is tracked.
  • New mkdir builtin (flat + 1-level VFS rules, real-shell error text), added to help + tab-completion.
  • Desktop collapse rail + mobile overlay drawer with a 📁 toggle next to Reset.

Zero engine changes — the sidebar derives everything from existing engine queries, so the tree can never disagree with git status.

Spec: docs/specs/2026-07-11-beginner-file-explorer-design.md · Plan: docs/plans/2026-07-11-beginner-file-explorer.md

Test plan

  • 454 unit tests (29 new: mkdir builtin, buildFileTree status model, command planners), all passing
  • Playwright e2e: full beginner flow (seed → badges Ugit add . → commit → clean → simulate → M → click-to-cat) + collapse/expand; pre-existing axe WCAG AA scan passes with the new sidebar (one real contrast violation found and fixed during development)
  • typecheck, lint, production build clean

Release: RC bumped to v0.9.0-rc.0; merge auto-deploys v0.9.0 per deploy.yml.

🤖 Generated with Claude Code

opariffazman and others added 15 commits July 11, 2026 07:21
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…mands

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Buttons in FileTree.svelte had no explicit background, so the
browser's default ButtonFace (light gray) showed through against the
light terminal-fg/dim text, failing WCAG AA contrast (axe flagged the
"+ Example files" button at 1.34:1, well under the 4.5:1 minimum).
Every other button in the app already sets an explicit bg-terminal-bg
variant; the explorer's buttons now follow the same pattern with
bg-transparent so the dark sidebar background shows through instead.

Found via tests/e2e/a11y.spec.ts, whose axe scan now covers the
sidebar.
Remove deleted files from the hasTracked predicate so the Simulate Changes
button disables when the only tracked files are deleted. Previously, the
button would enable but silently no-op because simulateChangeCommands
filters out missing-from-VFS files.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…i listing

Scope the spec promise about staged-and-remodified files showing M to
committed files only, since the engine's getModifiedFiles compares against
the committed tree. Staged-but-never-committed files keep the ● badge after
edits — documented as a possible fast-follow engine change.

Also update CLAUDE.md Project Structure ui/ section: remove non-existent
MobileToolbar.svelte and add actual components GithubLink.svelte and
ResetButton.svelte.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-07-11 14:36 UTC

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@opariffazman
opariffazman merged commit 4ef5f70 into main Jul 11, 2026
4 checks passed
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