Skip to content

infra: add CI, release pipeline, and project scaffolding#6

Merged
njbrake merged 3 commits intomainfrom
docs
Apr 2, 2026
Merged

infra: add CI, release pipeline, and project scaffolding#6
njbrake merged 3 commits intomainfrom
docs

Conversation

@njbrake
Copy link
Copy Markdown
Contributor

@njbrake njbrake commented Apr 1, 2026

Summary

  • CI workflow: test (ubuntu + macOS), fmt, clippy (-D warnings), cargo-deny on push/PR to main
  • Release pipeline: multi-platform binary builds (x86_64/aarch64 x linux/macOS), GitHub Releases with checksums, prepare-release workflow for version bumps
  • Supply chain security: deny.toml with CVE auditing, license policy, source provenance checks
  • Project scaffolding: MIT LICENSE, CODEOWNERS, Dependabot (cargo + actions), PR template with AI disclosure, expanded .gitignore, cargo-husky pre-commit hooks, release build profiles (LTO/strip), install script

Ported and adapted from agent-of-empires infrastructure.

Setup required

  • Add a RELEASE_TOKEN secret (PAT with contents: write) for the prepare-release workflow to push tags that trigger the release workflow

Test plan

  • CI workflow runs on this PR (test, fmt, clippy, deny)
  • cargo deny check passes locally (verified)
  • cargo check passes with updated Cargo.toml (verified)
  • Pre-commit hooks install on next cargo test

🤖 Generated with Claude Code

njbrake and others added 3 commits April 1, 2026 21:41
…ffolding

Port infrastructure from agent-of-empires adapted for settl:
- CI workflow (test, fmt, clippy, cargo-deny) on push/PR to main
- Multi-platform release workflow (4 targets) triggered by version tags
- Prepare-release workflow for automated version bumps
- cargo-deny config for supply chain security (CVE, license, source checks)
- Dependabot for cargo and github-actions
- CODEOWNERS, PR template with AI disclosure
- MIT LICENSE
- Cargo.toml: release profiles (LTO/strip), MSRV, metadata, cargo-husky pre-commit hooks
- Expanded .gitignore (IDE, OS, secrets, binaries, Claude artifacts)
- Install script for binary distribution

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove empty else branch and identical if/else blocks (orchestrator)
- Replace .into_iter() in IntoIterator position (board)
- Use .contains() instead of .iter().any() (rules)
- Replace manual Iterator::find loop (rules)
- Use std::io::Error::other() shorthand (event, save)
- Iterate map values directly instead of (_, v) destructure (board_view)
- Add Default impl for MainMenuState (screens)
- Replace useless format!() with .to_string() (screens)
- Box large Screen variant in Action enum to reduce size difference (mod)
- Use if-let instead of single-arm match (mod)
- Remove unnecessary u8 cast (mod)
- Allow dead_code on HumanPrompt (field reserved for TUI use)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Merge main's board_view rewrite, typed TUI prompts, and layout
refactor. Re-apply clippy fixes on the merged code:
- Collapse identical if/else branches (game_log)
- Allow large_enum_variant on Screen and Action (boxing impractical after rewrite)
- Use if-let instead of single-arm match (cycle_new_game_value)
- Remove unnecessary u8 cast (build_post_game)
- Keep .contains() and Error::other() fixes from prior commit

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@njbrake njbrake merged commit 6f0483c into main Apr 2, 2026
5 checks passed
njbrake added a commit that referenced this pull request Apr 6, 2026
* feat: status checker only looks at last 30 lines, not entire window

* lint
njbrake added a commit that referenced this pull request Apr 6, 2026
* Bump version from 0.0.8 to 0.0.9

* feat: add debug logging to preview rendering and remove unused window resizing functionality

* setup to be able to add more captures if issues with state are found

* symlink a CLAUDE.md

* better styling for session selector

* enhance styling in NewSessionDialog for improved focus indication and tool selection display

* Bump version from 0.0.10 to 0.0.11 in Cargo.toml

* update tui.png asset with new design

* feat: status checker only looks at last 30 lines, not entire window (#6)

* feat: status checker only looks at last 30 lines, not entire window

* lint

* feat: implement session renaming functionality with a dedicated dialog (#9)

* feat: implement session renaming functionality with a dedicated dialog

* bad merge

* refactor: optimize status detection by using last lines instead of entire content

* Bugs (#11)

* feat: implement session renaming functionality with a dedicated dialog

* bad merge

* refactor: optimize status detection by using last lines instead of entire content

* feat: add periodic disk refresh to sync home state across instances

* test race condition (#12)

* Update Cargo.toml

* Update README.md

* opt to move faster (#13)

* feat: git worktrees for parallel agents in same git project (#14)

- Add `git2` dependency to `Cargo.toml` for Git operations.
- Introduce worktree management commands in the CLI, including listing, info retrieval, and cleanup of orphaned worktrees.
- Enhance session management to support creation and deletion of worktrees, with appropriate prompts and error handling.
- Update the TUI to display worktree information and manage worktree-related actions.
- Add configuration options for worktree management in the session config.
- Implement tests for worktree functionality to ensure proper integration and error handling.

* fix flicker

* Bump version to 0.1.0

* Update dependencies and bump version to 0.1.1

- Increment version to 0.1.1 in Cargo.toml.
- Modify git2 dependency to use vendored-openssl feature.
- Update macOS target in release workflow to macos-13.

* patch

* docs site (#19)

* docs

* lint

* feat: evaluate worktree path when displaying (#20)

* Implement asynchronous update check and enhance UI for update notifications (#21)

- Introduce asynchronous update checking in the App struct, utilizing a oneshot channel for non-blocking communication.
- Update HomeView to render update information in the status bar when an update is available.
- Modify the update notice message format for clarity in the update module.

* badge (#22)

* badge

* Update documentation badge link in README

* Bump version to 0.2.1

* clean canonical path (#24)

* Update README with demo GIF and add script for GIF generation; introduce development documentation

* help
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