Terminal
Not a text dump. A command center.
THE PROBLEM
Terminals show walls of text.
Run a build. Something fails. Scroll through 200 lines of stack trace to find the one line that actually matters. Parse cryptic error codes. Google the message.
Ask an AI for help. It dumps code blocks into the chat. You copy. You paste. You switch windows. You lose context. The rhythm breaks.
The terminal hasn't evolved. It's still a 1970s text pipe pretending to be a development tool.
THE SOLUTION
Intelligence built in.
StateSpine's terminal understands what's happening. Errors are parsed and explained. AI suggestions go straight to your editor. Action buttons replace copy-paste.
Three Modes
Shell
Traditional command line. Run npm, git, anything.
AI
Chat with Marshal. Code goes to editor, not chat.
Quick Commands
Common tasks. One click. build, test, deploy.
Action Buttons
No more copy-paste workflow. When AI suggests code, you see it in context with buttons:
Smart Error Parsing
Errors are parsed, categorized, and explained. "Missing module: lodash" not 200 lines of stack trace. Click to see details if you need them.
SEE IT IN ACTION
Built for how you actually work.
Traditional Terminal
$ npm run build
Error: Cannot find module 'lodash'
at Function.Module._resolveFilename...
at Function.Module._load (node:int...
at Module.require (node:internal/...
at require (node:internal/modules...
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! project@1.0.0 build...
npm ERR! Exit status 1
npm ERR! Failed at the project...
npm ERR! This is probably not...
Wall of text. What do I actually do?
StateSpine Terminal
Build Failed
Missing dependency: lodash
MARSHAL
"lodash is imported but not installed. Run npm install lodash to fix."
TECHNICAL DETAILS
Code goes to the editor.
When you ask Marshal for code in the terminal, it doesn't dump code blocks in the chat. It shows you a preview, then offers to insert it directly into your editor at the right location.
Example flow:
You: "Add a loading spinner to the login button"
Marshal: "I'll add a loading state to LoginButton.tsx. Here's the change:" [Preview diff]
[Accept → Change applied to editor] [Deny] [Modify first]
Explanations stay in the terminal. Code goes to the editor. Context stays intact. The rhythm never breaks.