feat: Replace fixed-width box output with status spine format#65
feat: Replace fixed-width box output with status spine format#65
Conversation
Adding CLAUDE.md with task information for AI processing. This file will be removed when the task is complete. Issue: #64
Changes the CLI output from fixed-width boxes to a "status spine" format: Before (box format): ╭────────────────────────────────────────────────────────╮ │ Session ID: abc-123 │ │ Starting at 2025-01-01 00:00:00: echo hello │ ╰────────────────────────────────────────────────────────╯ After (status spine format): │ session abc-123 │ start 2025-01-01 00:00:00 │ $ echo hello Benefits: - Width-independent: no truncation, no jagged boxes - Lossless: all data visible and copy-pasteable - Works in TTY, tmux, SSH, CI, and log files - Clear visual distinction between metadata (│), command ($), and output Key changes: - JavaScript: Updated output-blocks.js with createSpineLine, parseIsolationMetadata, and generateIsolationLines - Rust: Updated output_blocks.rs with equivalent spine format functions - Tests: Updated both JS and Rust tests for new format - Backward compatible: Legacy BOX_STYLES kept for reference Closes #64 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The tests now accept both the old box format ([Isolation] Environment: X) and the new spine format (│ isolation X) for isolation metadata checks. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This reverts commit 151c82e.
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost estimation:
Now working session is ended, feel free to review and add any feedback on the solution draft. |
|
We can install screen, tmux, docker in GitHub Actions (if not installed already) and make sure we do really test them all. It is cheap, and will make sure our CLI tool will work the same way on all platforms. Also make sure we do drop support for previous bordered fixed width blocks like at all. We should support only new output format with spine Ensure all changes are correct, consistent and fully meet the requirements in both JS and Rust versions. Also, do we really need to execute https://github.com/link-foundation/start/actions/runs/20801811382/job/59748219113?pr=65 for pull requests? Are tests not enough for rust? May be we should update our CI/CD? |
|
🤖 AI Work Session Started Starting automated work session at 2026-01-08T01:05:46.842Z The PR has been converted to draft mode while work is in progress. This comment marks the beginning of an AI work session. Please wait working session to finish, and provide your feedback. |
This commit drops support for the deprecated bordered fixed-width box output format and requires only the new status spine format with: - `│` prefix for metadata - `$` for commands - `✓` and `✗` for result markers Changes: - Remove BOX_STYLES, getBoxStyle(), and related legacy functions from both JS and Rust implementations - Update all tests to verify spine format only - Update CI/CD to install screen and tmux for integration tests - Add explicit screen, tmux, and docker isolation tests in CI - Skip Rust build job for PRs (tests already verify code builds) This simplifies the codebase and ensures consistent output format across all platforms and terminals. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost estimation:
Now working session is ended, feel free to review and add any feedback on the solution draft. |
|
All tests on all platforms should pass. Find root causes and fix them all. |
|
🤖 AI Work Session Started Starting automated work session at 2026-01-08T01:47:35.413Z The PR has been converted to draft mode while work is in progress. This comment marks the beginning of an AI work session. Please wait working session to finish, and provide your feedback. |
- Use detached mode (-d) for docker CI test to avoid TTY requirement - Update echo-integration tests to check for session name instead of reattach instructions (spine format doesn't include these) - Fix linting errors in test assertions 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost estimation:
Now working session is ended, feel free to review and add any feedback on the solution draft. |
|
Looks like we need to update our changeset check for Rust at: https://github.com/link-foundation/start/actions/runs/20802747294/job/59750799581?pr=65 At the moment it didn't check for absense of changeset and just passed it should be fixed. If https://github.com/link-foundation/rust-ai-driven-development-pipeline-template has the same issue file issue there. |
|
🤖 AI Work Session Started Starting automated work session at 2026-01-08T02:18:15.928Z The PR has been converted to draft mode while work is in progress. This comment marks the beginning of an AI work session. Please wait working session to finish, and provide your feedback. |
- Add changelog fragment 64.md for spine format changes in Rust - Fix changelog check to validate fragments added in PR diff, not just existing ones - The previous check incorrectly passed when old fragments existed even if no new fragment was added for the current PR 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Solution Draft LogSummary of changes in this session:
Verification:
Changes confirmed:
Working session complete. PR is ready for review. |
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost estimation:
Now working session is ended, feel free to review and add any feedback on the solution draft. |
Summary
This PR replaces the fixed-width box output format with a new "status spine" format that is:
Before (box format - REMOVED)
After (status spine format - ONLY FORMAT)
Key Changes
JavaScript
js/src/lib/output-blocks.jswith spine format functions only:createSpineLine()- Creates metadata lines with│prefixcreateEmptySpineLine()- Creates empty spine separatorcreateCommandLine()- Creates command line with$prefixgetResultMarker()- Returns✓or✗based on exit codeparseIsolationMetadata()- Parses isolation info from extraLinesgenerateIsolationLines()- Generates spine-formatted isolation metadataBOX_STYLES,getBoxStyle(), and related box-drawing functionscreateStartBlock()andcreateFinishBlock()to use spine formatformatDuration()to append 's' suffix (e.g., "0.500s")Rust
rust/src/lib/output_blocks.rswith equivalent spine format functionsIsolationMetadatastruct for parsed metadataBoxStyle,get_box_style(), and box-drawing functionsTests
js/test/output-blocks.test.jswith tests for spine format onlyjs/test/echo-integration.test.jsto verify spine format only (no backward compat)js/test/ssh-integration.test.jsto verify spine format onlyrust/tests/output_blocks_test.rswith equivalent Rust testsCI/CD Improvements
Test Plan
bun test- All JS tests passcargo test- All Rust tests passbun run lint- Linting passescargo clippy- No warningscargo fmt --check- Formatting passesCloses #64
🤖 Generated with Claude Code