You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Extract clemitui into standalone repository (#105)
* docs: add missing details to CLAUDE.md
Document config.toml fields, clemitui demo binary, MSRV 1.88,
cargo-nextest usage, and cargo doc CI gate.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: extract clemitui into standalone repo
Move clemitui from crates/clemitui/ to evansenter/clemitui as an
independent GitHub repository. clemini now references it as a git
dependency instead of a workspace path dependency.
No functional changes - all 283 tests pass, clippy clean.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Address PR feedback: commit Cargo.lock, remove workspace, add changelog
- Commit Cargo.lock for reproducible builds (removed from .gitignore)
- Remove single-member workspace wrapper from Cargo.toml
- Add changelog entry for clemitui extraction
- Update CI workflow to remove --workspace flags
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: fix stale --workspace flag in CLAUDE.md
Remove --workspace from cargo doc command in quality gates section
to match actual CI workflow after workspace removal.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
└── e2e_tests.rs # 19 PTY-based tests for actual terminal output
88
-
```
89
-
90
-
**Design**: clemitui takes primitive types (strings, durations, token counts), not genai-rs types. This allows it to work with any ACP agent. clemini's format.rs re-exports these and adds genai-rs-specific wrappers.
60
+
### clemitui (External TUI Library)
91
61
92
-
Run clemitui tests: `cargo test -p clemitui`
62
+
Terminal UI is provided by [clemitui](https://github.com/evansenter/clemitui), a standalone crate referenced as a git dependency. It takes primitive types (strings, durations, token counts), not genai-rs types, so it can work with any ACP agent. clemini's `format.rs` and `logging.rs` re-export clemitui's API and add genai-rs-specific wrappers.
93
63
94
64
### Event-Driven Architecture
95
65
@@ -158,6 +128,9 @@ Debugging: `LOUD_WIRE=1` logs all HTTP requests/responses.
158
128
-`GEMINI_API_KEY` - Required
159
129
- Model: `gemini-3-flash-preview`
160
130
- Config: `~/.clemini/config.toml` (optional)
131
+
-`model` - Gemini model to use (default: `gemini-3-flash-preview`)
132
+
-`bash_timeout` - Timeout in seconds for bash commands (default: 120)
- Tools return JSON: success data or `{"error": "..."}`
174
147
- Tool errors return as JSON (not propagated) so Gemini can see them and retry
148
+
- CI uses `cargo-nextest` for test execution (`make test-all` uses it locally too)
175
149
176
150
## Development Process
177
151
@@ -189,6 +163,7 @@ Debugging: `LOUD_WIRE=1` logs all HTTP requests/responses.
189
163
-`make clippy` (no warnings)
190
164
-`make fmt` (run formatter, then commit any changes it makes)
191
165
-`make test` (tests pass)
166
+
- Documentation must compile without warnings (CI runs `cargo doc --no-deps --document-private-items` with `-D warnings`)
192
167
193
168
Don't skip tests. If a test is flaky or legitimately broken by your change, fix the test as part of the PR.
194
169
@@ -216,7 +191,7 @@ Run locally with: `cargo test --test <name> -- --include-ignored --nocapture`
216
191
These use `validate_response_semantically()` from `tests/common/mod.rs` - a second Gemini call with structured output that judges whether responses are appropriate. This provides a middle ground between brittle string assertions and purely structural checks.
217
192
218
193
**Shared test helpers** - Common patterns for test utilities:
219
-
- Put shared helpers in `tests/common/mod.rs` (for clemini) or `crates/clemitui/tests/common/mod.rs` (for clemitui)
194
+
- Put shared helpers in `tests/common/mod.rs`
220
195
- Use `#![allow(dead_code)]` in shared test modules since not all test files use all helpers
221
196
- RAII guards for cleanup: `DisableColors` (reset color override on drop), `LoggingGuard` (disable logging on drop)
222
197
- Pattern: `let _guard = DisableColors::new();` at test start ensures cleanup even on panic
0 commit comments