Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
57 changes: 57 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: ci

on:
workflow_dispatch:
pull_request:
push:
branches:
- main

permissions:
contents: read

jobs:
msrv:
name: rust 1.88
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5

- name: Install minimum supported Rust
run: rustup toolchain install 1.88.0 --profile minimal

- name: Check minimum supported Rust
run: cargo +1.88.0 check --workspace

verify:
name: verify
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-depth: 0

- name: Install Rust
run: |
rustup toolchain install stable --profile minimal --component clippy,rustfmt,llvm-tools-preview
rustup default stable

- name: Install Rust quality tools
run: |
cargo install cargo-llvm-cov --locked
cargo install cargo-audit --locked
cargo install cargo-mutants --locked
cargo install slophammer-rs --version 0.4.0 --locked

- name: Install Node
uses: actions/setup-node@v5
with:
node-version: 22

- name: Install tmux
run: sudo apt-get update && sudo apt-get install --yes tmux

- name: Run local CI gate
run: scripts/ci-local.sh
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/target/
/mutants.out*/
*.tmp-*
11 changes: 11 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# AGENTS.md

- Run `scripts/ci-local.sh` before finishing a change.
- Keep `#![forbid(unsafe_code)]` and the Slophammer unsafe policy enabled.
- Keep domain and source behavior independent of Ratatui, Crossterm, filesystem IO,
process state, and terminal coordinates.
- Validate external JSON before it enters app state.
- Add tests for every behavior change, including mouse hit testing when layout changes.
- Prefer the standard library or existing dependencies over adding a crate.
- Follow the Slophammer Rust guidance at
https://github.com/dutifuldev/slophammer/blob/main/docs/AGENT_ENTRYPOINT.md.
15 changes: 15 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Contributing

annotui accepts focused changes that preserve the separation between review data,
terminal presentation, and IO. Add or update tests for every behavior change.

Run the local gate before opening a pull request:

```sh
scripts/ci-local.sh
```

The gate requires Rust formatting, compilation, tests, Clippy, 85% line coverage,
dependency audit, mutation discovery, Slophammer, documentation validation, and the
tmux mouse smoke test. See [docs/2026-07-10-architecture.md](docs/2026-07-10-architecture.md) before moving
code across module boundaries.
Loading