Expand description
Ball: git-native task tracker for parallel agent workflows.
Tasks are JSON files committed to your repo. Worktrees provide isolation. Git provides sync, history, and collaboration. There is no database, no daemon, no external service.
§Library usage
use balls::{Store, Task};
use std::env;
let store = Store::discover(&env::current_dir().unwrap()).unwrap();
let tasks = store.all_tasks().unwrap();
for t in balls::ready::ready_queue(&tasks) {
println!("[P{}] {} {}", t.priority, t.id, t.title);
}Re-exports§
pub use config::Config;pub use error::BallError;pub use error::Result;pub use store::Store;pub use task::validate_id;pub use task::ArchivedChild;pub use task::Link;pub use task::LinkType;pub use task::NewTaskOpts;pub use task::Note;pub use task::Status;pub use task::Task;pub use task::TaskType;
Modules§
- commit_
msg - Format a review-time commit message in the standard git 50/72
shape: a single title line with the delivery tag appended, a blank
line, then the optional body. Keeps
git log --onelinereadable. - config
- delivery
- Delivery-link resolution (SPEC §6).
- display
- CLI display primitives: colors, glyphs, badges, tree prefixes.
- error
- git
- git_
state - Git plumbing for the state branch topology: orphan branch creation,
remote-tracking setup, and worktree attachment for an existing branch.
Separate from
git.rsso that module stays under the 300-line cap. - link
- Typed relationships between tasks:
LinkandLinkType. - plugin
- progress
- Epic completion bar: 10-cell block with closed/total and percent.
- ready
- render_
list - Grouped/nested/glyphed rendering for
bl list. - render_
ready - Single-status (always open) ready-queue rendering.
- render_
show - Rich rendering for
bl show. - render_
show_ text - Text helpers for
render_show: relative timestamps and paragraph word-wrap. Split out sorender_show.rsstays under the 300-line cap while keeping the helpers testable in isolation. - resolve
- review
- Review, close, and archive — the submit side of the task lifecycle.
Lives alongside
worktree.rs(claim/drop/orphans) but kept separate so neither file hits the 300-line cap. - store
- task
- task_io
- Task file I/O. Separated from
task.rsto keep that file under the 300-line cap and to localize the on-disk format in one place. - task_
type TaskTypeenum. Split fromtask.rsto keep that file under the 300-line cap, mirroring thelink.rssplit pattern.- tree
- Parent-edge tree rendering for
bl dep tree. - worktree
- Worktree scaffolding: claim, drop, and orphan cleanup. The submit
side (review, close, archive) lives in
review.rsto keep both files under the 300-line cap.