Skip to content

Commit 70d69ae

Browse files
committed
feat: Updating latest improvements from Upstream Repo
2 parents 4e716e0 + 9d5b6e8 commit 70d69ae

143 files changed

Lines changed: 7712 additions & 2151 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.beads/README.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,32 +14,32 @@ Beads is issue tracking that lives in your repo, making it perfect for AI coding
1414

1515
```bash
1616
# Create new issues
17-
bd create "Add user authentication"
17+
br create "Add user authentication"
1818

1919
# View all issues
20-
bd list
20+
br list
2121

2222
# View issue details
23-
bd show <issue-id>
23+
br show <issue-id>
2424

2525
# Update issue status
26-
bd update <issue-id> --status in_progress
27-
bd update <issue-id> --status done
26+
br update <issue-id> --status in_progress
27+
br update <issue-id> --status done
2828

2929
# Sync with git remote
30-
bd sync
30+
br sync
3131
```
3232

3333
## Daemon (Optional)
3434

35-
Beads has an optional background daemon (`bd daemon`) that auto-syncs issues with git.
35+
Beads has an optional background daemon (`br daemon`) that auto-syncs issues with git.
3636

3737
In this repo, the sync branch is configured as `main`. Running the daemon while you are on a different branch can cause `.beads/issues.jsonl` to be rewritten from `main`, leaving your working tree dirty and blocking `git pull --rebase`.
3838

3939
Recommended workflow:
40-
- Prefer manual sync: `bd sync` (default).
41-
- If you use the daemon, run it only while you are on `main`, or run it in local-only mode: `bd daemon --start --local`.
42-
- If `.beads/issues.jsonl` is changing unexpectedly, check/stop the daemon: `bd daemon --status` / `bd daemon --stop`.
40+
- Prefer manual sync: `br sync` (default).
41+
- If you use the daemon, run it only while you are on `main`, or run it in local-only mode: `br daemon --start --local`.
42+
- If `.beads/issues.jsonl` is changing unexpectedly, check/stop the daemon: `br daemon --status` / `br daemon --stop`.
4343

4444
### Working with Issues
4545

@@ -75,16 +75,16 @@ Try Beads in your own projects:
7575
curl -sSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash
7676

7777
# Initialize in your repo
78-
bd init
78+
br init
7979

8080
# Create your first issue
81-
bd create "Try out Beads"
81+
br create "Try out Beads"
8282
```
8383

8484
## Learn More
8585

8686
- **Documentation**: [github.com/steveyegge/beads/docs](https://github.com/steveyegge/beads/tree/main/docs)
87-
- **Quick Start Guide**: Run `bd quickstart`
87+
- **Quick Start Guide**: Run `br quickstart`
8888
- **Examples**: [github.com/steveyegge/beads/examples](https://github.com/steveyegge/beads/tree/main/examples)
8989

9090
---

.beads/issues.jsonl

Lines changed: 20 additions & 0 deletions
Large diffs are not rendered by default.

.github/workflows/installer-canary-strict.yml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,18 +31,21 @@ jobs:
3131
env:
3232
ACFS_CHECKSUMS_REF: main
3333
run: |
34-
set -o pipefail
3534
chmod +x ./tests/vm/test_install_ubuntu.sh
3635
36+
UBUNTU="${{ inputs.ubuntu || 'all' }}"
37+
MODE="${{ inputs.mode || 'vibe' }}"
38+
39+
rc=0
3740
if [[ "${{ github.event_name }}" == "schedule" ]]; then
38-
./tests/vm/test_install_ubuntu.sh --all --mode "vibe" --strict 2>&1 | tee canary.log
39-
elif [[ "${{ github.event_name }}" == "workflow_dispatch" && "${{ inputs.ubuntu }}" == "all" ]]; then
40-
./tests/vm/test_install_ubuntu.sh --all --mode "${{ inputs.mode }}" --strict 2>&1 | tee canary.log
41+
(set -o pipefail; ./tests/vm/test_install_ubuntu.sh --all --mode "vibe" --strict 2>&1 | tee canary.log) || rc=$?
42+
elif [[ "${{ github.event_name }}" == "workflow_dispatch" && "$UBUNTU" == "all" ]]; then
43+
(set -o pipefail; ./tests/vm/test_install_ubuntu.sh --all --mode "$MODE" --strict 2>&1 | tee canary.log) || rc=$?
4144
else
42-
./tests/vm/test_install_ubuntu.sh --ubuntu "${{ inputs.ubuntu }}" --mode "${{ inputs.mode }}" --strict 2>&1 | tee canary.log
45+
(set -o pipefail; ./tests/vm/test_install_ubuntu.sh --ubuntu "$UBUNTU" --mode "$MODE" --strict 2>&1 | tee canary.log) || rc=$?
4346
fi
4447
45-
echo "exit_code=${PIPESTATUS[0]}" >> "$GITHUB_OUTPUT"
48+
echo "exit_code=$rc" >> "$GITHUB_OUTPUT"
4649
4750
- name: Detect checksum mismatch
4851
id: detect

.github/workflows/installer-canary.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,11 @@ jobs:
2828
run: |
2929
chmod +x ./tests/vm/test_install_ubuntu.sh
3030
31-
if [[ "${{ github.event_name }}" == "workflow_dispatch" && "${{ inputs.ubuntu }}" == "all" ]]; then
32-
./tests/vm/test_install_ubuntu.sh --all --mode "${{ inputs.mode }}"
31+
UBUNTU="${{ inputs.ubuntu || '24.04' }}"
32+
MODE="${{ inputs.mode || 'vibe' }}"
33+
34+
if [[ "${{ github.event_name }}" == "workflow_dispatch" && "$UBUNTU" == "all" ]]; then
35+
./tests/vm/test_install_ubuntu.sh --all --mode "$MODE"
3336
else
34-
./tests/vm/test_install_ubuntu.sh --ubuntu "${{ inputs.ubuntu }}" --mode "${{ inputs.mode }}"
37+
./tests/vm/test_install_ubuntu.sh --ubuntu "$UBUNTU" --mode "$MODE"
3538
fi

.github/workflows/installer-notification-receiver.yml

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -491,21 +491,29 @@ jobs:
491491
TOOL_NAME="${{ needs.validate-dispatch.outputs.tool_name }}"
492492
SOURCE_REPO="${{ needs.validate-dispatch.outputs.source_repo }}"
493493
494-
gh pr create \
495-
--base main \
496-
--head "auto/remove-${TOOL_NAME}" \
497-
--title "chore(checksums): Remove $TOOL_NAME" \
498-
--body "## Tool Removal: $TOOL_NAME
494+
cat > /tmp/removal-pr-body.md << 'PREOF'
495+
## Tool Removal: $TOOL_NAME
496+
497+
This PR removes **$TOOL_NAME** from checksums.yaml.
498+
499+
### Reason
500+
The upstream repository ($SOURCE_REPO) has indicated the installer should be removed.
499501
500-
This PR removes **$TOOL_NAME** from checksums.yaml.
502+
### Checklist
503+
- [ ] Confirmed tool is no longer needed
504+
- [ ] Verified this is intentional, not an error
501505
502-
### Reason
503-
The upstream repository ($SOURCE_REPO) has indicated the installer should be removed.
506+
---
507+
*Generated by ACFS Installer Notification Receiver*
508+
PREOF
504509
505-
### Checklist
506-
- [ ] Confirmed tool is no longer needed
507-
- [ ] Verified this is intentional, not an error
510+
# Substitute variables in the template
511+
sed -i "s/\$TOOL_NAME/$TOOL_NAME/g" /tmp/removal-pr-body.md
512+
sed -i "s|\$SOURCE_REPO|$SOURCE_REPO|g" /tmp/removal-pr-body.md
508513
509-
---
510-
*Generated by ACFS Installer Notification Receiver*" \
514+
gh pr create \
515+
--base main \
516+
--head "auto/remove-${TOOL_NAME}" \
517+
--title "chore(checksums): Remove $TOOL_NAME" \
518+
--body-file /tmp/removal-pr-body.md \
511519
--label "automated,checksum-removal,needs-review"

.github/workflows/installer.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,18 @@ jobs:
309309
su - ubuntu -c "zsh -ic 'dcg doctor'"
310310
su - ubuntu -c "zsh -ic 'ru --version'"
311311
su - ubuntu -c "zsh -ic 'onboard --help'"
312+
# beads_rust (required) - issue tracking
313+
su - ubuntu -c "zsh -ic 'br --version'"
314+
# New stack tools (bd-1ega)
315+
su - ubuntu -c "zsh -ic 'ms --version'"
316+
su - ubuntu -c "zsh -ic 'apr --help || true'"
317+
su - ubuntu -c "zsh -ic 'jfp --version || true'"
318+
su - ubuntu -c "zsh -ic 'pt --help || true'"
319+
su - ubuntu -c "zsh -ic 'brenner --version || brenner --help || true'"
320+
su - ubuntu -c "zsh -ic 'rch --version || rch --help || true'"
321+
su - ubuntu -c "zsh -ic 'wa --version || wa --help || true'"
322+
su - ubuntu -c "zsh -ic 'sysmoni --version || sysmoni --help || true'"
323+
# Agents
312324
su - ubuntu -c "zsh -ic 'claude --version'"
313325
su - ubuntu -c "zsh -ic 'codex --version'"
314326
su - ubuntu -c "zsh -ic 'gemini --version'"

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,3 +123,6 @@ a.out
123123
.vercel
124124
.env*.local
125125
tests/artifacts/
126+
127+
# Stray bv/CLI artifacts (malformed flag creates files like --graph-format.svg)
128+
--graph-format*

.shellcheckrc

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,39 @@
33

44
# SC2015: Note that A && B || C is not if-then-else. C may run when A is true.
55
# We use this pattern intentionally for error handling (e.g., cmd || true)
6-
disable=SC2015
6+
#
7+
# SC2317: Command appears to be unreachable. Check usage (or ignore if invoked indirectly).
8+
# We use dynamic function calls via function references (e.g., "$fix_function" "fix")
9+
#
10+
# SC2016: Expressions don't expand in single quotes, use double quotes for that.
11+
# Intentional - we use single quotes to pass literal strings to subshells
12+
#
13+
# SC1091: Not following: file was not specified as input
14+
# Dynamic sourcing of related scripts is intentional
15+
#
16+
# SC2059: Don't use variables in printf format string
17+
# Intentional - we use ANSI color variables in format strings
18+
#
19+
# SC2034: Variable appears unused
20+
# Many variables are used by sourcing scripts or for documentation
21+
#
22+
# SC2155: Declare and assign separately to avoid masking return values
23+
# Acceptable risk in simple cases where the command always succeeds
24+
#
25+
# SC2030/SC2031: Variable modified in subshell
26+
# Intentional pattern in pipeline processing
27+
# SC2086: Double quote to prevent globbing and word splitting
28+
# Intentional word splitting in some cases for argument expansion
29+
#
30+
# SC2002: Useless cat
31+
# Sometimes cat is clearer for readability in pipelines
32+
#
33+
# SC2076: Remove quotes from right-hand side of =~
34+
# SC2128: Expanding an array without an index
35+
# SC2178: Variable was used as an array but is now assigned a string
36+
# SC2120/SC2119: Function references arguments, but none are ever passed
37+
# These are pre-existing patterns in newproj TUI code
38+
#
39+
# SC2001/SC2028/SC2129/SC2153/SC2181/SC2295: Style and info-level suggestions
40+
# Accepted patterns in this codebase
41+
disable=SC2015,SC2317,SC2016,SC1091,SC2059,SC2034,SC2155,SC2030,SC2031,SC2086,SC2002,SC2076,SC2128,SC2178,SC2120,SC2119,SC2001,SC2028,SC2129,SC2153,SC2181,SC2295

CHANGELOG.md

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,58 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10-
### Added
10+
### Changed
11+
12+
- **BREAKING**: `git_safety_guard` replaced by **DCG (Destructive Command Guard)**
13+
- The legacy `git_safety_guard.py` hook has been fully removed
14+
- DCG is now the only supported command safety mechanism
15+
- Automatic cleanup of legacy files during `acfs update`
16+
17+
### Migration: git_safety_guard → DCG
1118

12-
- Repository content audit and documentation cleanup
13-
- Archived historical planning documents to `docs/archive/`
19+
If you installed ACFS before January 11, 2026, your installation may have legacy `git_safety_guard` files.
1420

15-
## [0.5.0] - 2026-01-11
21+
**Symptoms of old installation:**
22+
- `acfs doctor` shows "Git safety guard" warning
23+
- Files exist at `~/.acfs/claude/hooks/git_safety_guard.py` or `~/.claude/hooks/`
24+
25+
**Migration steps:**
26+
1. Run `acfs update` - this automatically removes legacy files
27+
2. Install DCG: `dcg install`
28+
3. Verify: `acfs doctor` should show only DCG check (no git_safety_guard warnings)
29+
30+
**Why DCG?**
31+
- Built in Rust for sub-millisecond latency (vs Python startup overhead)
32+
- Modular pack system for extensibility
33+
- Dedicated repository and maintenance at [dcg](https://github.com/Dicklesworthstone/destructive_command_guard)
1634

1735
### Added
1836

37+
- **New Flywheel Tools**:
38+
- **beads_rust (br)** - Rust port of issue tracker, replaces golang beads
39+
- `bd` alias maintained for backward compatibility
40+
- Companion **bv** (beads_viewer) for graph-aware task triage
41+
- **meta_skill (ms)** - Knowledge management and skill distribution
42+
- **remote_compilation_helper (rch)** - Build acceleration for agent swarms
43+
- **wezterm_automata (wa)** - Multi-agent orchestration via WezTerm
44+
- **brenner_bot** - Research session CLI and orchestration
45+
46+
- **Utility Tools** (9 new):
47+
- **toon_rust (tru)** - Token-optimized notation format
48+
- **rust_proxy** - Transparent proxy routing
49+
- **rano** - Network observer for AI CLIs
50+
- **xf** - X (Twitter) archive search
51+
- **markdown_web_browser (mdwb)** - Website to Markdown converter
52+
- **process_triage (pt)** - Zombie process detector
53+
- **aadc** - ASCII diagram corrector
54+
- **source_to_prompt_tui (s2p)** - Code to LLM prompt generator
55+
- **coding_agent_usage_tracker (caut)** - LLM provider usage tracker
56+
57+
- **E2E Testing**: New comprehensive test suite at `tests/e2e/test_new_tools_e2e.sh`
58+
- Verifies all 16 new tools install correctly
59+
- Integration tests for acfs doctor, bd alias, flywheel.ts
60+
- JSON output for CI integration
61+
1962
- **Automatic Ubuntu Upgrade**: The installer now automatically upgrades Ubuntu to 25.10 before running the main ACFS installation
2063
- Detects current Ubuntu version and calculates sequential upgrade path
2164
- Handles reboots automatically via systemd resume service

0 commit comments

Comments
 (0)