Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
df7f658
Initial commit
theahura Oct 31, 2025
79314ac
feat: add Rust Hello World package
theahura Nov 6, 2025
6bc9a6f
docs: add documentation for Rust Hello World package
theahura Nov 6, 2025
2a5c72c
ci: add GitHub Actions workflow for Rust CI
theahura Nov 6, 2025
b143b2b
docs: update documentation with CI/CD workflow info
theahura Nov 6, 2025
353d8d8
refactor: split CI into separate PR and main workflows
theahura Nov 6, 2025
140adb5
docs: update CI/CD documentation for separate workflows
theahura Nov 6, 2025
746e98d
Merge pull request #1 from tilework-tech/rust-hello-world
theahura Nov 6, 2025
d535557
chore: add .worktrees to .gitignore
theahura Nov 6, 2025
5ea3233
feat: integrate ratatui TUI framework (#2)
theahura Nov 10, 2025
9fdf71d
feat: implement agent router TUI for Claude Code and Codex CLI (#3)
theahura Nov 10, 2025
802bd2e
fix: eliminate race condition in event handler state tracking (#4)
theahura Nov 10, 2025
f5cb612
Fix stream rendering to display chat format instead of JSONL (#5)
theahura Nov 10, 2025
ad0bc88
feat: refactor UI to chat-style interface with agent router overlay (#6)
theahura Nov 11, 2025
2ea0d01
feat: implement extensible slash command system (#7)
theahura Nov 11, 2025
7131152
feat: add backend installation detection and user prompts (#8)
theahura Nov 11, 2025
3c30080
feat: add escape key interrupt mechanism for streaming (#9)
theahura Nov 11, 2025
b0f87fc
fix: position cursor to bottom on exit (#10)
theahura Nov 11, 2025
f7a191e
fix: enable text wrapping for streamed conversation events (#11)
theahura Nov 11, 2025
ab44431
Clear prompt textarea immediately on submission (#12)
theahura Nov 11, 2025
624511d
fix: render user messages to scrollback on submit (#13)
theahura Nov 11, 2025
ad5e3c7
feat: implement two-stage Ctrl-C keyboard interrupt (#15)
theahura Nov 11, 2025
8d6e636
fix: use absolute cursor positioning on exit (#16)
theahura Nov 11, 2025
fca8381
refactor: simplify UI by moving agent info below prompt input (#17)
theahura Nov 11, 2025
f138103
Fix modal rendering in inline viewports (#19)
theahura Nov 11, 2025
fec6099
fix: use relative cursor positioning and clear screen on exit (#21)
theahura Nov 11, 2025
b5e2c37
fix: remove duplicate imports and unused variable (#22)
theahura Nov 11, 2025
82d31e5
feat: implement slash command autocomplete (#18)
theahura Nov 11, 2025
1e6def9
feat: dynamic prompt window resizing (#24)
theahura Nov 11, 2025
c63d6e2
fix: remove underline from prompt input field (#25)
theahura Nov 11, 2025
3e5f9c4
Fix backend installation prompt to show all options (#26)
theahura Nov 11, 2025
00c6e09
feat: add /debug command to toggle debug event visibility (#27)
theahura Nov 11, 2025
8ecfd70
fix: Simplify module structure
CSRessel Nov 12, 2025
e63ef32
Add first codex component for loading
CSRessel Nov 12, 2025
58ff23c
Use codex vs og components conditionally
CSRessel Nov 12, 2025
3c7cce7
Merge branch 'main' into feature/codex-component
CSRessel Nov 12, 2025
57b3b86
Add tui components lib
CSRessel Nov 12, 2025
e384a1e
Fix component dep path
CSRessel Nov 12, 2025
2d8cb26
Add existing component list
CSRessel Nov 12, 2025
2487143
Prepare next components migration path
CSRessel Nov 12, 2025
846f4cf
Fix formatting
CSRessel Nov 12, 2025
697cf21
Fix clippy
CSRessel Nov 12, 2025
4d4c423
Migrate initial TUI components (#30)
CSRessel Nov 13, 2025
58e00ca
Add ACP (Agent Client Protocol) foundation (#31)
CSRessel Nov 13, 2025
a4176ec
Setup sane claude allow defaults
CSRessel Nov 13, 2025
20e7306
Fix: Claude stream completes immediately on ResultSummary (#28)
theahura Nov 13, 2025
16c0547
Add interactive example for key hint component (#32)
CSRessel Nov 13, 2025
9ba8906
Update tui-components snapshot testing to use Ratatui best practices …
CSRessel Nov 13, 2025
7e67845
Add shimmer component with interactive example (#34)
CSRessel Nov 13, 2025
ed342f3
Fix tests running in all packages at once
CSRessel Nov 13, 2025
da5e9e3
feat: Add further TUI components (#35)
CSRessel Nov 13, 2025
1dc2268
Add interactive example for selection component (#36)
CSRessel Nov 13, 2025
3295b8c
Add livewrap example (#37)
CSRessel Nov 13, 2025
63dce7b
docs: Cleanup component migration plans to one doc
CSRessel Nov 13, 2025
780e9c6
docs: Fix duplicate fuzzy selector component
CSRessel Nov 13, 2025
d31f575
Add footer component to tui-components library (#38)
CSRessel Nov 13, 2025
9fd1607
feat: Setup basic ACP calling (#39)
CSRessel Nov 14, 2025
806bd9a
Move shared mock ACP agent top-level
CSRessel Nov 14, 2025
d57ad1e
feat: Add Codex ACP backend with JavaScript runtime detection (#40)
CSRessel Nov 14, 2025
e161d1a
Add Claude Code ACP backend support (#41)
CSRessel Nov 14, 2025
680be63
feat: Improve debugging of ACP events
CSRessel Nov 14, 2025
dd6907e
fix: Simplify terminal setup and teardown
CSRessel Nov 14, 2025
d2c8c80
docs: Update vestigial ACP docs
CSRessel Nov 14, 2025
6525c35
refactor: Replace tui-textarea with internal tui-components implement…
CSRessel Nov 14, 2025
6711592
fix: Stop input loop stealing crossterm internal events
CSRessel Nov 14, 2025
ab1160f
feat: Add comprehensive styling to TextArea widget
CSRessel Nov 14, 2025
c4cf25d
fix: Update tests for new margin defaults
CSRessel Nov 14, 2025
32492b4
feat: Add CLI argument parsing for agent selection and initial messag…
CSRessel Nov 14, 2025
48209ad
feat: Add blackbox TUI tests with snapshot verification (#45)
CSRessel Nov 14, 2025
44f38bb
fix: Resolve issue with missing textarea
CSRessel Nov 14, 2025
51a9d14
feat: Use SelectionList for autocomplete and agent selection (#46)
CSRessel Nov 14, 2025
e3b5341
fix: Move examples to separate dir to silence warnings
CSRessel Nov 14, 2025
7a3ad7e
refactor: Adopt tui_components APIs for height and loading (#47)
CSRessel Nov 15, 2025
cc9dcd0
feat: Implement ACP inline streaming with word wrapping (#48)
CSRessel Nov 15, 2025
0c12339
Fix ACP backends whitespace preservation
CSRessel Nov 15, 2025
b81c639
feat: Add throbber component
CSRessel Nov 15, 2025
25b68e3
fix: Ensure textarea shows after any cmd
CSRessel Nov 15, 2025
07bbaab
fix: Remove no selected model scenario
CSRessel Nov 15, 2025
272a1ed
feat: Add Gemini ACP backend and refactor backend availability (#49)
CSRessel Nov 17, 2025
bba48b0
Centralize backend ordering logic (#50)
CSRessel Nov 17, 2025
a1e6125
docs: Update docs for backends refactor
CSRessel Nov 17, 2025
d8fefd0
docs: Separate individual from project claude settings
CSRessel Nov 17, 2025
0639bed
fix: Correct extra model option
CSRessel Nov 17, 2025
b45634d
fix: Implement proper cleanup of ACP agent child processes (#51)
CSRessel Nov 17, 2025
c988eb9
feat: Add structured tracing to ACP runner for debugging (#52)
CSRessel Nov 17, 2025
023d969
docs: Update minimal cli plan
CSRessel Nov 18, 2025
d5fba43
fix: Persist ACP runner across conversational turns (#53)
CSRessel Nov 18, 2025
c4fb3de
fix: Rename /switch-model command to /model for brevity
CSRessel Nov 18, 2025
e5d8606
fix(tui): Reset committed_line_count on markdown line count regression
theahura Feb 25, 2026
77e2547
Merge remote-tracking branch 'origin/main' into auto/tui-text-renderi…
theahura Feb 25, 2026
9d71f7a
fix(tests): Update blackbox_tui_test snapshots for footer trailing sp…
theahura Feb 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 8 additions & 53 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -1,67 +1,22 @@
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"hooks": {
"SessionStart": [
{
"matcher": "startup",
"hooks": [
{
"type": "command",
"command": "./scripts/cloud_agent_setup.sh"
}
]
}
]
},
"permissions": {
"allow": [
"WebFetch(domain:docs.rs)",
"WebFetch(domain:ratatui.rs)",
"WebFetch(domain:serde.rs)",
"Bash(cat:*)",
"Bash(cd:*)",
"Bash(just fmt:*)",
"Bash(just fix:*)",
"Bash(gh pr checks:*)",
"Bash(gh pr diff:*)",
"Bash(gh pr view:*)",
"Bash(gh run list:*)",
"Bash(gh run view:*)",
"Bash(git diff:*)",
"Bash(git status:*)",
"Bash(mkdir:*)",
"Bash(tree:*)",
"Bash(git worktree:*)",
"Bash(cargo build:*)",
"Bash(cargo b:*)",
"Bash(cargo check:*)",
"Bash(cargo c:*)",
"Bash(cargo clean:*)",
"Bash(cargo clippy:*)",
"Bash(cargo doc:*)",
"Bash(cargo d:*)",
"Bash(cargo fmt:*)",
"Bash(cargo run:*)",
"Bash(cargo r:*)",
"Bash(cargo insta:*)",
"Bash(cargo search:*)",
"Bash(cargo test:*)",
"Bash(cargo t:*)",
"Bash(cargo search:*)"
"Bash(cargo tree:*)",
"WebFetch(domain:docs.rs)",
"WebFetch(domain:ratatui.rs)"
],
"sandbox": {
"filesystem": {
"read": {
"allowOnly": [
"~/.cargo/bin/sccache"
]
},
"write": {
"allowOnly": [
"~/.cache/sccache"
]
}
}
},
"additionalDirectories": [
"~/.nori/profiles/"
]
"deny": [],
"ask": []
}
}
40 changes: 40 additions & 0 deletions .github/workflows/main-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Main CI

on:
push:
branches: [ main ]

env:
CARGO_TERM_COLOR: always

jobs:
format:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: Check formatting
run: cargo fmt --check

clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Run clippy
run: cargo clippy -- -D warnings

test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Run tests
run: cargo test --verbose
40 changes: 40 additions & 0 deletions .github/workflows/pr-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: PR CI

on:
pull_request:
branches: [ main ]

env:
CARGO_TERM_COLOR: always

jobs:
format:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: Check formatting
run: cargo fmt --check

clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Run clippy
run: cargo clippy -- -D warnings

test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Run tests
run: cargo test --verbose
116 changes: 3 additions & 113 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,117 +1,7 @@
# cli tools
# CLAUDE.md
# .claude/agents/
# .claude/skills/
target

.nori-config.json
.nori-installed-version

settings.local.json
.claude/commands/
.claude/profiles/
.claude/skills/*noridoc*
.claude/skills/memorize
.claude/skills/prompt-analysis
.claude/skills/recall
.claude/skills/**/.nori-version
.claude/skills/**/nori.json
.claude/**/*.js
.claude/**/*.js.map
.claude/**/*.ts
.claude/**/*.ts.map
AGENTS.override.md
AGENTS.md

# deps
# Node.js dependencies
node_modules
.pnpm-store
.pnpm-debug.log

# Keep pnpm-lock.yaml
!pnpm-lock.yaml

# build
dist/
build/
out/
storybook-static/

# ignore README for publishing
nori-cli/README.md

# ignore Nix derivation results
result

# editor
.vscode/
.idea/
.history/
.zed/
*.swp
*~

# caches
.cache/
.turbo/
.parcel-cache/
.eslintcache
.nyc_output/
.jest/
*.tsbuildinfo

# logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# env
.env*
!.env.example

# package
*.tgz

# ci
.vercel/
.netlify/

# patches
apply_patch/

# coverage
coverage/

# personal files
personal/

# os
.DS_Store
Thumbs.db
Icon?
.Spotlight-V100/

# Unwanted package managers
.yarn/
yarn.lock

# release
package.json-e
session.ts-e
CHANGELOG.ignore.md

# nix related
.direnv
.envrc

# git worktrees
.worktree/
.worktrees/
/codex-rs/tui/target/
/target

# Local code/doc references for ACP work
/other-repos
/acp-docs/

__pycache__
.claude/settings.local.json
Loading
Loading