cotask is a command-line task manager built in Rust that works like a simplified Git. Instead of tracking files, it tracks tasks with full version history. Every change creates a new snapshot (commit). You can branch, merge, rebase, tag releases, stash changes, and even export the entire repository state.
.
βββ Cargo.lock
βββ Cargo.toml
βββ README.md
βββ x.sh # Installation script
βββ src
β βββ bin
β β βββ cli.rs # CLI entry point
β βββ lib.rs # Library root
β βββ main.rs # Main binary entry
β βββ logic # Core business logic
β β βββ add_task.rs
β β βββ branch.rs
β β βββ checkout.rs
β β βββ diff.rs
β β βββ export.rs
β β βββ gc.rs
β β βββ import.rs
β β βββ init_repo.rs
β β βββ list_task.rs
β β βββ merge.rs
β β βββ mod.rs
β β βββ rand_hash.rs
β β βββ rebase.rs
β β βββ resolve.rs
β β βββ revert.rs
β β βββ show_help.rs
β β βββ show_log.rs
β β βββ stash.rs
β β βββ tag.rs
β βββ models # Data structures
β β βββ commit_model.rs
β β βββ export_model.rs
β β βββ mod.rs
β β βββ task_model.rs
β βββ storage # Persistence layer
β βββ commit.rs
β βββ head.rs
β βββ mod.rs
.cotask/
βββ commits/ # Commit snapshots (JSON)
βββ refs/ # Branch pointers
βββ tags/ # Release tags
βββ stash/ # Temporary saved states
βββ HEAD # Current branch or detached commit
- Add tasks
- Mark tasks complete
- Snapshot history automatically
- Commit log
- Checkout commit, branch, or tag
- Diff between commits
- Create/delete branches
- Merge branches
- Rebase branches
- Tags (fixed references to commits)
- Detect merge conflicts
- Manual resolution
- Garbage collection (remove unreachable commits)
- Stash system (temporary state save)
- Export/import full repository state
- Rust toolchain (rustc, cargo)
- Unix-like system (Linux, macOS) for the installation script
git clone https://github.com/BartSimpson2911/CoTask
cd CoTask
chmod +x x.sh
./x.shWhat the script does:
- Builds the project in release mode (
cargo build --release) - Installs the binary globally (
cargo install --path .) - Makes
cotaskavailable system-wide
| Command | Description |
|---|---|
cotask init |
Initialize a new task repository |
cotask export |
Backup repository state to JSON |
cotask import <file> |
Restore repository from backup |
cotask gc |
Clean unused commits |
| Command | Description |
|---|---|
cotask add "task" |
Add a new task |
cotask list |
List all current tasks |
cotask done <id> |
Mark a task as complete |
| Command | Description |
|---|---|
cotask log |
Show commit history |
cotask checkout <ref> |
Switch branch/tag/commit |
cotask diff <c1> <c2> |
Compare two commits |
cotask revert <commit> |
Revert state |
| Command | Description |
|---|---|
cotask branch <name> |
Create branch |
cotask merge <branch> |
Merge |
cotask rebase <branch> |
Rebase |
cotask branches |
List branches |
cotask branch-delete <name> |
Delete branch |
| Command | Description |
|---|---|
cotask tag <name> |
Create tag |
cotask tags |
List tags |
| Command | Description |
|---|---|
cotask stash |
Save state |
cotask stash-pop |
Restore stash |
cotask init
cotask add "Learn Rust"
cotask add "Build CLI"
cotask done 1
cotask log- Commits β Snapshot of task state
- Branches β Pointers in
.cotask/refs/ - Tags β Fixed commit references
- HEAD β Current position
- DAG β Commit graph like Git
- Rust
- Serde
- Standard Library
- Bisect
- Commit signing
- Storage compression
- Remote sync
- Interactive rebase
- Hooks
- Web UI
- Fork
- Create branch
- Make changes
- Submit PR
MIT LICENSE