Skip to content

feat: Add semble install#176

Merged
Pringled merged 29 commits into
mainfrom
add-semble-install
Jun 3, 2026
Merged

feat: Add semble install#176
Pringled merged 29 commits into
mainfrom
add-semble-install

Conversation

@Pringled

@Pringled Pringled commented Jun 2, 2026

Copy link
Copy Markdown
Member

This PR adds a semble install command. It detects installed coding agents and configures semble globally across three integration types (MCP, instructions, sub-agent). We use tree-sitter for json/jsonc parsing so comments in MCP/settings jsons are preserved.

Here's what the flow looks like in the terminal on runningsemble install (semble uninstall gives the same flow but the reverse (uninstalling whatever is selected)):

Screenshot 2026-06-03 at 07 45 16 Screenshot 2026-06-03 at 07 45 20 Screenshot 2026-06-03 at 07 44 40 Screenshot 2026-06-03 at 07 45 03

@codecov

codecov Bot commented Jun 2, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Files with missing lines Coverage Δ
src/semble/cli.py 100.00% <100.00%> (ø)
src/semble/installer/__init__.py 100.00% <100.00%> (ø)
src/semble/installer/agents.py 100.00% <100.00%> (ø)
src/semble/installer/config.py 100.00% <100.00%> (ø)
src/semble/installer/installer.py 100.00% <100.00%> (ø)
src/semble/version.py 100.00% <100.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@Pringled

Pringled commented Jun 2, 2026

Copy link
Copy Markdown
Member Author

@greptileai review

@greptile-apps

greptile-apps Bot commented Jun 2, 2026

Copy link
Copy Markdown

Confidence Score: 4/5

Safe to merge with one follow-up: the uninstall code path needs an end-to-end test.

The installer logic itself is sound and individual helpers are well-tested. The gap is that run("uninstall") is never called end-to-end — the full uninstall flow (remove operations, "not-found" returns through _apply, different UI text, different footer) can silently regress without the test suite catching it. The reviewer specifically asked for e2e coverage of all codepaths, so this missing test is the main concern.

tests/test_installer.py — needs a run("uninstall") end-to-end test to match the run("install") test that already exists.

Reviews (3): Last reviewed commit: "Fix toml edgecase" | Re-trigger Greptile

Comment thread src/semble/installer.py Outdated
Comment thread src/semble/installer.py Outdated
@greptile-apps

greptile-apps Bot commented Jun 2, 2026

Copy link
Copy Markdown

Confidence Score: 3/5

The install path works correctly for fresh configs; the uninstall path can corrupt pre-existing configs where semble was not the first entry.

The _delete_member function only removes an adjacent comma correctly when semble was inserted as the first member. If semble was added last by another tool (e.g. claude mcp add) and the user then runs semble uninstall, the preceding entry's trailing comma is left in place, making strict-JSON files like .claude.json invalid. The JSON5-based validation guard does not catch it.

src/semble/installer.py — specifically the _delete_member function and the missing test case in tests/test_installer.py.

Reviews (2): Last reviewed commit: "Group types/vars" | Re-trigger Greptile

Comment thread src/semble/installer.py Outdated
Comment thread src/semble/installer.py Outdated
Comment thread src/semble/installer.py Outdated
@Pringled

Pringled commented Jun 3, 2026

Copy link
Copy Markdown
Member Author

@greptileai review this branch again main. Focus on two things:

  • e2e testing, ensuring that all the codepaths and combinations resolve correctly or have a clear error message when they fail
  • architecture, ensuring that the architecture for the installer is maintainable, easy to understand, and not over-engineered

@Pringled Pringled requested a review from stephantul June 3, 2026 05:58

@stephantul stephantul left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small docs comments, but looks good!

Comment thread docs/installation.md Outdated
Comment thread src/semble/cli.py Outdated
Comment thread pyproject.toml Outdated
Comment thread src/semble/installer.py Outdated
Comment thread src/semble/installer.py Outdated
Comment thread src/semble/installer.py Outdated
Comment thread src/semble/installer.py Outdated
Comment thread src/semble/installer.py Outdated
Comment thread src/semble/installer.py Outdated
Comment thread src/semble/installer.py Outdated
@Pringled Pringled merged commit c7e52fa into main Jun 3, 2026
15 checks passed
@Pringled Pringled deleted the add-semble-install branch June 3, 2026 16:54
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.

2 participants