Skip to content

Extract clemitui into standalone repository#105

Merged
evansenter merged 4 commits intomainfrom
refactor/extract-clemitui
Feb 7, 2026
Merged

Extract clemitui into standalone repository#105
evansenter merged 4 commits intomainfrom
refactor/extract-clemitui

Conversation

@evansenter
Copy link
Copy Markdown
Owner

Summary

  • Move clemitui from crates/clemitui/ to its own repo at evansenter/clemitui
  • Update clemini to reference clemitui as a git dependency instead of a workspace path
  • Update CLAUDE.md to reflect the new architecture

Motivation

clemitui is designed to be reusable by any ACP-compatible agent, but being embedded in clemini's workspace limited that reuse. As a standalone repo it can be consumed independently, versioned separately, and have its own CI and issue tracking.

What changed

  • Cargo.tomlclemitui = { path = "crates/clemitui" }clemitui = { git = "https://github.com/evansenter/clemitui" }
  • Cargo.toml — Workspace members reduced to ["."]
  • crates/clemitui/ — Removed (now lives at evansenter/clemitui)
  • CLAUDE.md — Updated architecture section, removed embedded file tree, links to new repo
  • src/main.rs — Import reordering from cargo fmt

No functional changes

clemini's src/format.rs and src/logging.rs re-export clemitui's public API exactly as before. All 283 tests pass, clippy clean.

Test plan

  • cargo check — resolves git dependency, compiles clean
  • make test — all 283 tests pass (229 lib + 48 bin + 6 event ordering)
  • make clippy — no warnings
  • clemitui standalone: all 84 tests pass (36 unit + 29 ACP simulation + 19 E2E)

🤖 Generated with Claude Code

evansenter and others added 2 commits February 7, 2026 00:53
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>
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>
@claude
Copy link
Copy Markdown

claude Bot commented Feb 7, 2026

Prompt: evansenter/dotfiles/.../claude-review.md

Code Review

Summary

This PR extracts the clemitui TUI library from crates/clemitui/ into its own standalone repository at evansenter/clemitui, changing the dependency from a workspace path to a git dependency. The CLAUDE.md documentation is updated to reflect the new architecture and adds several previously-missing details (config fields, MSRV, cargo-nextest, cargo doc CI gate).

Issues Found

Critical

None

Important

  • Cargo.toml:15 - Git dependency without version pinning. The clemitui dependency is specified as { git = "https://github.com/evansenter/clemitui" } with no rev, tag, or branch field. Combined with Cargo.lock being gitignored in this project, every fresh cargo build (including CI) can resolve to a different commit on main. This means a breaking change pushed to clemitui's main branch could silently break clemini builds. Consider pinning to a specific revision or tag: clemitui = { git = "https://github.com/evansenter/clemitui", rev = "<commit-sha>" } or tag = "v0.1.0". Alternatively, if you prefer tracking main, committing Cargo.lock would at least make the resolution deterministic per-commit.

Suggestions

  • Cargo.toml:1-2 - Single-member workspace is unnecessary. With clemitui extracted, the workspace now contains only ["."]. The [workspace] section and resolver = "3" could be removed since a standalone [package] with edition = "2024" already implies resolver 3. This is minor but reduces unnecessary indirection.
  • CHANGELOG.md - Missing changelog entry. Per CLAUDE.md conventions: "Any user-facing changes must be documented in CHANGELOG.md before merging." While this is a refactor with no functional changes, it alters the build dependency structure (workspace path to git dependency) and removes clemitui from the workspace. A brief entry under a Changed section would document this for contributors.

Verdict

REQUEST_CHANGES - The unpinned git dependency without a committed Cargo.lock creates non-reproducible builds, which should be addressed before merging.


Automated review by Claude Code

- 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>
@evansenter
Copy link
Copy Markdown
Owner Author

Feedback Addressed

Implemented

  • [Important] Cargo.lock committed — removed from .gitignore and committed for reproducible builds
  • [Suggestion] Workspace removed — removed single-member [workspace] section from Cargo.toml
  • [Suggestion] Changelog updated — added [Unreleased] entry documenting the extraction
  • Also updated CI workflow to remove --workspace flags now that there's no workspace

@claude
Copy link
Copy Markdown

claude Bot commented Feb 7, 2026

Prompt: evansenter/dotfiles/.../claude-review.md

Code Review

Summary

This PR extracts the clemitui TUI library from the in-repo crates/clemitui/ directory into its own standalone repository (evansenter/clemitui), updating clemini to reference it as a git dependency. All prior review feedback has been addressed: Cargo.lock is now committed, the single-member workspace wrapper is removed, and the changelog is updated.

Issues Found

Critical

None

Important

None

Suggestions

  • CLAUDE.md:166 - Stale --workspace flag in documentation. The newly-added line under "Quality gates before pushing" reads: CI runs cargo doc --workspace --no-deps --document-private-items. However, the CI workflow (rust.yml) was updated in this same PR to remove --workspace (now just cargo doc --no-deps --document-private-items). The CLAUDE.md text should match the actual CI command.

Previously Addressed (Filtered)

  • Cargo.toml:15 - Unpinned git dependency / non-reproducible builds (Implemented: Cargo.lock committed, .gitignore updated)
  • Cargo.toml:1-2 - Single-member workspace unnecessary (Implemented: workspace section removed)
  • CHANGELOG.md - Missing changelog entry (Implemented: Unreleased section added)

3 items from prior feedback rounds were not re-raised.

Verdict

REQUEST_CHANGES - One documentation inconsistency: CLAUDE.md references --workspace flag that was removed from the CI workflow in this PR.


Automated review by Claude Code

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>
@evansenter
Copy link
Copy Markdown
Owner Author

Feedback Addressed (Round 2)

Implemented

  • [Suggestion] CLAUDE.md:166 — removed stale --workspace flag from cargo doc command in quality gates section

@claude
Copy link
Copy Markdown

claude Bot commented Feb 7, 2026

Prompt: evansenter/dotfiles/.../claude-review.md

Code Review

Summary

This PR extracts the clemitui TUI library from crates/clemitui/ into its own standalone repository (evansenter/clemitui), updating the dependency from a workspace path to a git dependency. All prior review feedback (unpinned git dep, unnecessary workspace wrapper, missing changelog, stale --workspace in CLAUDE.md) has been addressed across two rounds.

Issues Found

Critical

None

Important

None

Suggestions

  • .github/workflows/rust.yml:74 - cargo fmt --all still uses --all flag. All other CI commands had --workspace removed in this PR, but cargo fmt --all -- --check still uses --all (the workspace equivalent for cargo fmt). This is functionally harmless for a single-crate project, but it's inconsistent with the intent of the other CI changes. Consider cargo fmt -- --check for consistency.

Previously Addressed (Filtered)

  • Cargo.toml:15 - Unpinned git dependency / non-reproducible builds (Implemented: Cargo.lock committed and removed from .gitignore)
  • Cargo.toml:1-2 - Single-member workspace unnecessary (Implemented: workspace section removed)
  • CHANGELOG.md - Missing changelog entry (Implemented: Unreleased section added)
  • CLAUDE.md:166 - Stale --workspace flag in cargo doc command (Implemented: removed in round 2)

4 items from prior feedback rounds were not re-raised.

Verdict

REQUEST_CHANGES - One minor inconsistency: cargo fmt --all still uses a workspace-style flag while all other CI commands had theirs removed.


Automated review by Claude Code

@evansenter
Copy link
Copy Markdown
Owner Author

Feedback Addressed (Round 3)

Skipped

  • [Suggestion] rust.yml:74 cargo fmt --all--all is the standard idiomatic form for cargo fmt and has different semantics than --workspace on other commands. No change needed.

@evansenter evansenter merged commit 0730108 into main Feb 7, 2026
9 checks passed
@evansenter evansenter deleted the refactor/extract-clemitui branch February 7, 2026 01:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant