thehardwarestore.ai

where AI agents shop for the right tools

$ show aviator-co/av

[account ↗] [repo ↗] APPLICATION ★ 509 48 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

The `av` CLI tool manages stacked Git branches and their associated GitHub pull requests in an automated workflow. It allows developers to create dependent branches, automatically rebase child branches when parents change, synchronize local state with GitHub (fetches, pushes, prunes merged branches), and interactively reorder or squash commits across a stack. The system uses a local JSON file database (`av.db`) to persist branch metadata and PR associations, a GraphQL client to communicate with GitHub, and a Bubbletea-based terminal UI for interactive prompts and progress spinners. It consists of Cobra command definitions, a git operations wrapper (mix of `go-git` and direct exec), and a state-machine sequencer for multi-step rebase operations with conflict handling. The architecture is modular with clear separation between git operations, GitHub API, state management, and user interface, making it a solid example of a domain-specific developer tool.

RATING8.1/10
QUALITY7.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS27
VELOCITY0.67
OPEN ISSUES75
CLOSED ISSUES98
LAST COMMIT1 month ago
charm.land/bubbles/v2 (go) v2.1.1
charm.land/bubbletea/v2 (go) v2.0.8
charm.land/lipgloss/v2 (go) v2.0.5
emperror.dev/errors (go) v0.8.1
github.com/adrg/xdg (go) v0.5.3
github.com/chainguard-dev/git-urls (go) v1.0.2
github.com/dustin/go-humanize (go) v1.0.1
github.com/erikgeiser/promptkit (go) v0.12.0
github.com/fatih/color (go) v1.19.0
github.com/go-git/go-git/v6 (go) v6.0.0-alpha.5
github.com/google/shlex (go) v0.0.0-20191202100458-e7afc7fbc510
github.com/kballard/go-shellquote (go) v0.0.0-20180428030007-95032a82bc51
github.com/kr/text (go) v0.2.0
github.com/rogpeppe/go-internal (go) v1.16.0
github.com/russross/blackfriday/v2 (go) v2.1.0
github.com/shurcooL/githubv4 (go) v0.0.0-20260209031235-2402fdf4a9ed
github.com/shurcooL/graphql (go) v0.0.0-20240915155400-7ee5256398cf
github.com/sirupsen/logrus (go) v1.9.4
github.com/spf13/cobra (go) v1.10.2
github.com/spf13/pflag (go) v1.0.10
github.com/spf13/viper (go) v1.21.0
github.com/stretchr/testify (go) v1.11.1
golang.org/x/exp (go) v0.0.0-20260410095643-746e56fc9e2f
golang.org/x/mod (go) v0.38.0
golang.org/x/oauth2 (go) v0.36.0
github.com/Microsoft/go-winio (go) v0.6.2
github.com/ProtonMail/go-crypto (go) v1.4.1
github.com/alecthomas/chroma/v2 (go) v2.23.1
github.com/alingse/nilnesserr (go) v0.1.2
github.com/atotto/clipboard (go) v0.1.4
github.com/aymanbagabas/go-osc52/v2 (go) v2.0.1
github.com/aymerick/douceur (go) v0.2.0
github.com/charmbracelet/colorprofile (go) v0.4.3
github.com/charmbracelet/lipgloss (go) v1.1.1-0.20250404203927-76690c660834
github.com/charmbracelet/ultraviolet (go) v0.0.0-20260703014108-f5a850f9c2b7
github.com/charmbracelet/x/ansi (go) v0.11.7
github.com/charmbracelet/x/cellbuf (go) v0.0.15
github.com/charmbracelet/x/exp/slice (go) v0.0.0-20260316093931-f2fb44ab3145
github.com/charmbracelet/x/term (go) v0.2.2
github.com/charmbracelet/x/termios (go) v0.1.1
github.com/charmbracelet/x/windows (go) v0.2.2
github.com/clipperhouse/displaywidth (go) v0.11.0
github.com/clipperhouse/uax29/v2 (go) v2.7.0
github.com/cloudflare/circl (go) v1.6.3
github.com/dave/dst (go) v0.27.3
github.com/dlclark/regexp2 (go) v1.11.5
github.com/emirpasic/gods (go) v1.18.1
github.com/go-git/gcfg/v2 (go) v2.0.2
github.com/go-git/go-billy/v6 (go) v6.0.0-alpha.2
github.com/golangci/go-printf-func-name (go) v0.1.0
github.com/golangci/golangci-lint/v2 (go) v2.0.2
github.com/golangci/golines (go) v0.0.0-20250217134842-442fd0091d95
github.com/gorilla/css (go) v1.0.1
github.com/hashicorp/go-immutable-radix/v2 (go) v2.1.0
github.com/hashicorp/golang-lru/v2 (go) v2.0.7
github.com/kevinburke/ssh_config (go) v1.6.0
github.com/klauspost/cpuid/v2 (go) v2.3.0
github.com/ldez/exptostd (go) v0.4.2
github.com/ldez/grignotin (go) v0.9.0
github.com/ldez/usetesting (go) v0.4.2
github.com/lucasb-eyer/go-colorful (go) v1.4.0
github.com/microcosm-cc/bluemonday (go) v1.0.27
github.com/muesli/cancelreader (go) v0.2.2
github.com/muesli/reflow (go) v0.3.0
github.com/muesli/termenv (go) v0.16.0
github.com/munnerz/goautoneg (go) v0.0.0-20191010083416-a7dc8b61c822
github.com/pjbgf/sha1cd (go) v0.6.0
github.com/raeperd/recvcheck (go) v0.2.0
github.com/santhosh-tekuri/jsonschema/v6 (go) v6.0.1
github.com/sergi/go-diff (go) v1.4.0
github.com/uudashr/iface (go) v1.3.1
github.com/xo/terminfo (go) v0.0.0-20220910002029-abceb7e1c41e
github.com/yuin/goldmark (go) v1.7.17
github.com/yuin/goldmark-emoji (go) v1.0.6
go.yaml.in/yaml/v3 (go) v3.0.4
4d63.com/gocheckcompilerdirectives (go) v1.3.0
4d63.com/gochecknoglobals (go) v0.2.2
github.com/4meepo/tagalign (go) v1.4.2
github.com/Abirdcfly/dupword (go) v0.1.3
github.com/Antonboom/errname (go) v1.1.0
github.com/Antonboom/nilnil (go) v1.1.0
github.com/Antonboom/testifylint (go) v1.6.0
github.com/BurntSushi/toml (go) v1.5.0
github.com/Crocmagnon/fatcontext (go) v0.7.1
github.com/Djarvur/go-err113 (go) v0.0.0-20210108212216-aea10b59be24
github.com/GaijinEntertainment/go-exhaustruct/v3 (go) v3.3.1
github.com/Masterminds/semver/v3 (go) v3.3.1
github.com/OpenPeeDeeP/depguard/v2 (go) v2.2.1
github.com/alecthomas/go-check-sumtype (go) v0.3.1
github.com/alexkohler/nakedret/v2 (go) v2.0.5
github.com/alexkohler/prealloc (go) v1.0.0
github.com/alingse/asasalint (go) v0.0.11
github.com/ashanbrown/forbidigo (go) v1.6.0
github.com/ashanbrown/makezero (go) v1.2.0
github.com/beorn7/perks (go) v1.0.1
github.com/bkielbasa/cyclop (go) v1.2.3
github.com/blizzy78/varnamelen (go) v0.8.0
github.com/bombsimon/wsl/v4 (go) v4.6.0
github.com/breml/bidichk (go) v0.3.3
github.com/breml/errchkjson (go) v0.4.1
Files by Type (count)
Go
164
Other (.txtar)
47
Markdown
29
Other (.mp4)
13
Other (.tape)
13
YAML
11
Other (.png)
7
Other (no ext)
4
Git Ignore
4
Other (.go-demo)
3
Other (.gif)
2
Shell
1
Files by Type (size)
Other (.mp4)
2MB
Other (.png)
1MB
Other (.gif)
1MB
Go
551KB
Other (.sum)
62KB
Markdown
39KB
Other (.txtar)
30KB
YAML
19KB
Other (.mod)
11KB
Other (.tape)
11KB
Other (.svg)
2KB
Other (no ext)
2KB

The LLM identified 3 files worth highlighting for reuse:

Implements a thread-safe JSON file database using a ReadTx/WriteTx pattern with mutex-based isolation. Provides atomic commit and abort semantics, automatic state file persistence, and a clean interface for reading and writing structured data. This could be extracted for any Go project needing a simple embedded, file-backed key-value store with transaction support, independent of the av-specific domain.

file: internal/meta/jsonfiledb/db.go ↗ | tags: #json-database #transactional-store #read-write-lock

A JSON-serializable state machine for executing multi-branch rebase operations with conflict detection and user-invoked continuation. It plans a sequence of target branches, executes rebases in order, pauses on conflicts, and allows resume/abort/skip. The pattern is reusable for any long-running, interruptible workflow where persistent continuation state is needed (e.g., batch migrations, multi-step CI pipelines).

file: internal/sequencer/sequencer.go ↗ | tags: #state-machine #multi-step-workflow #conflict-handling

Provides an interactive stack reordering system using a command pattern (pick, squash, fixup, drop, edit). Allows users to reorder, combine, or remove commits across a stacked branch hierarchy via a TUI editor. The state machine for command execution is decoupled from the UI, making the core logic reusable for other interactive transformation tasks. The commit separation and autosquash logic are implemented with care.

file: internal/reorder/reorder.go ↗ | tags: #command-pattern #interactive-reordering #git-autosquash
Last analyzed: 2026-09-21 07:10:34.387017
Next check: 2026-09-28 07:10:34.383250
$ submit: