Conversation
- Built initial prompt and plan
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Ports parseYaml, loadConfig, and CONFIG_DEFAULTS from the JS compiler to TypeScript. Adds @types/node and types: ["node"] to tsconfig for node: imports. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Port compiler.js to TypeScript: parseFrontmatter, parseTestCases, parseSpecFile, resolveToolPermissions, resolveSkillPath, resolveFixturePath, buildManifest, formatTimestamp with full type coverage. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Port logger.js to TypeScript with full type annotations, testable stream injection, and MdStream for streaming markdown rendering. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Ports transcript-formatter.js to TypeScript with full type safety. Includes tool-specific formatters (Bash, Agent, Read, Write, Edit, Glob, Grep, Skill), a generic fallback, and public formatters for tool calls, results, turn usage, session init, and usage summaries. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Port runner.js to TypeScript as src/core/runner.ts. Exports buildSystemPrompt, scopeToolsToWorkspace, parseTimeout, copyDirSync, installSkillPlugin, TOOL_PROFILES, and runTest. runTest spawns isolated CLI processes, parses stream-json events, writes transcripts, and emits output/tool-use/progress/complete events for TUI integration. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Ports report.js to TypeScript as src/core/reporter.ts with parseResultsFile, generateReport, and generateSummary. Adds full test coverage in reporter.spec.ts. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements ls, compile, test, and report subcommands using citty's defineCommand. The entry point detects TTY for future TUI wiring (Task 14) and prints help in non-interactive contexts. The test command requires an explicit --all or filter flag, and all commands wire into the existing core modules (loadConfig, discoverSpecPaths, parseSpecFile, filterSpecs, buildManifest, generateReport). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements Task 14: creates App component with keyboard-driven screen switching, BottomBar with active-screen highlighting, wires TUI into the CLI entry point, and configures vitest (vmForks pool + jsx aliases) to support ink/yoga-wasm in tests. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements the Dashboard landing screen with a searchable, filterable test list, cursor navigation, space-to-toggle selection, select-all, and Enter-to-run. Wires Dashboard into App with spec loading via loadConfig/discoverSpecPaths/parseSpecFile. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…panel Implements the Phase 1 TUI runner view: ProgressTree sidebar, Ticker tab strip, SessionPanel transcript area, useTestRun hook for state management, and wires Runner into App with startRun on dashboard onRunTests. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements RunManager component with scrollable run list, cursor navigation, delete/cleanup actions, and empty state. Wires it into App with loadIndex on mount and cleanupRuns/delete callbacks. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements the Statistics screen (Task 18) with aggregate stats panel, sortable per-test table ([s] key cycles sort field), and wires it into app.tsx. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds SplitPanes component with grid layout (single column for 1-2 sessions, 2x2 for 3-4, 3-col for 5+), focused/maximized pane support, and [v] key toggle in the Runner screen between primary and split view modes. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Connect runner, grader, reporter, and stats modules into the full execution pipeline. The CLI test command now runs tests with semaphore- based concurrency, grades results, generates reports, records stats, and exits with the correct code. The TUI hook gains an executeRun action that drives the same pipeline with event-driven state updates and transcript throttling. App.tsx passes config and manifests through to the runner. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Wraps marked + marked-terminal (v7.3.0) into an Ink Text component, using the named markedTerminal() extension API. Adds a local type declaration for the untyped package to satisfy strict TypeScript checks. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Persist selected test keys and view mode to .skill-unit/selection.json so the Dashboard restores the user's selection on next open. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Tweaked TUI layout and keybindings - Made TUI render fullscreen using terminal alternative buffer - Fixed issues with stdout/stderr bleeding into TUI - Added architecture doc on TUI design - Tweaked CLAUDE.md to guide agents to less approvals by using whitelisted settings.json rules
…urrency Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
27e5cd0 to
fc68bb7
Compare
- Added auto-create of `.skill-unit.yml` the first time you save - Fixed layout jankiness on live/historical run screens - Fixed dashboard behavior when no tests selected - Added context-sensitive keyboard shortcuts view - Added cancelable runs - Fixed layout moving on scroll
c4aaf26 to
f09614e
Compare
- Updated CLI to be more CI friendly - Added junit xml reporter - Added auto-populating GHA summary file with test results
f09614e to
aaa9506
Compare
- Removed old helper scripts from when cli was part of skill - Rewrote skill to act as proxy to CLI invocation with helper script to discover and run CLI
- Fixed using `process.exit(0)` which caused ink to not send terminal escape sequences to undo some of its handlers - Fixed a few dashboard layout issues and made elements more visually distinct
- Made dashboard search more visually distinct - Fixed keybindings for nav applying while trying to search - Removed backspace as keybinding for deleting a run to avoid accidentally deleting all runs when typing into search and accidentally switching to runs screen
c2f87fc to
4c00d7e
Compare
- Added src/tui/keyboard/ with KeyboardRegistry, provider, useKeyboardShortcuts hook, useKeyboardHints selector, and three scope modes (normal, modal, textInput) - Migrated App global nav, five screens, and both dialogs from useInput to useKeyboardShortcuts; dialogs and the Options field editor use modal scopes, and Dashboard uses a textInput scope to absorb typed characters into the search box - Rewrote BottomBar to derive hints from the registry via useKeyboardHints() and deleted ContextBar; removed onContextHintsChange, onEditingChange, and onViewModeChange callback plumbing along with their backing state in app.tsx - Fixed the typed-letter-navigates bug: lowercase D/R/S/O nav bindings are restored since Dashboard's textInput scope now absorbs printable characters before they reach App - Added registry, provider, match-key, and App integration tests covering scope dispatch, modal shadowing, textInput absorption (including the topmost-only rule), and the typed-character fix end-to-end - Added docs/specs/2026-04-19-keyboard-shortcut-abstraction-design.md and docs/plans/2026-04-19-keyboard-shortcut-abstraction.md; updated docs/architecture/tui-design.md for the registry-driven BottomBar
4c00d7e to
ee72087
Compare
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.
Moved to TUI/CLI as the primary mechanism for running tests