diff --git a/.beads/.gitignore b/.beads/.gitignore new file mode 100644 index 0000000..4a7a77d --- /dev/null +++ b/.beads/.gitignore @@ -0,0 +1,39 @@ +# SQLite databases +*.db +*.db?* +*.db-journal +*.db-wal +*.db-shm + +# Daemon runtime files +daemon.lock +daemon.log +daemon.pid +bd.sock +sync-state.json +last-touched + +# Local version tracking (prevents upgrade notification spam after git ops) +.local_version + +# Legacy database files +db.sqlite +bd.db + +# Worktree redirect file (contains relative path to main repo's .beads/) +# Must not be committed as paths would be wrong in other clones +redirect + +# Merge artifacts (temporary files from 3-way merge) +beads.base.jsonl +beads.base.meta.json +beads.left.jsonl +beads.left.meta.json +beads.right.jsonl +beads.right.meta.json + +# NOTE: Do NOT add negation patterns (e.g., !issues.jsonl) here. +# They would override fork protection in .git/info/exclude, allowing +# contributors to accidentally commit upstream issue databases. +# The JSONL files (issues.jsonl, interactions.jsonl) and config files +# are tracked by git by default since no pattern above ignores them. diff --git a/.beads/README.md b/.beads/README.md new file mode 100644 index 0000000..50f281f --- /dev/null +++ b/.beads/README.md @@ -0,0 +1,81 @@ +# Beads - AI-Native Issue Tracking + +Welcome to Beads! This repository uses **Beads** for issue tracking - a modern, AI-native tool designed to live directly in your codebase alongside your code. + +## What is Beads? + +Beads is issue tracking that lives in your repo, making it perfect for AI coding agents and developers who want their issues close to their code. No web UI required - everything works through the CLI and integrates seamlessly with git. + +**Learn more:** [github.com/steveyegge/beads](https://github.com/steveyegge/beads) + +## Quick Start + +### Essential Commands + +```bash +# Create new issues +bd create "Add user authentication" + +# View all issues +bd list + +# View issue details +bd show + +# Update issue status +bd update --status in_progress +bd update --status done + +# Sync with git remote +bd sync +``` + +### Working with Issues + +Issues in Beads are: +- **Git-native**: Stored in `.beads/issues.jsonl` and synced like code +- **AI-friendly**: CLI-first design works perfectly with AI coding agents +- **Branch-aware**: Issues can follow your branch workflow +- **Always in sync**: Auto-syncs with your commits + +## Why Beads? + +✨ **AI-Native Design** +- Built specifically for AI-assisted development workflows +- CLI-first interface works seamlessly with AI coding agents +- No context switching to web UIs + +🚀 **Developer Focused** +- Issues live in your repo, right next to your code +- Works offline, syncs when you push +- Fast, lightweight, and stays out of your way + +🔧 **Git Integration** +- Automatic sync with git commits +- Branch-aware issue tracking +- Intelligent JSONL merge resolution + +## Get Started with Beads + +Try Beads in your own projects: + +```bash +# Install Beads +curl -sSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash + +# Initialize in your repo +bd init + +# Create your first issue +bd create "Try out Beads" +``` + +## Learn More + +- **Documentation**: [github.com/steveyegge/beads/docs](https://github.com/steveyegge/beads/tree/main/docs) +- **Quick Start Guide**: Run `bd quickstart` +- **Examples**: [github.com/steveyegge/beads/examples](https://github.com/steveyegge/beads/tree/main/examples) + +--- + +*Beads: Issue tracking that moves at the speed of thought* âš¡ diff --git a/.beads/config.yaml b/.beads/config.yaml new file mode 100644 index 0000000..f242785 --- /dev/null +++ b/.beads/config.yaml @@ -0,0 +1,62 @@ +# Beads Configuration File +# This file configures default behavior for all bd commands in this repository +# All settings can also be set via environment variables (BD_* prefix) +# or overridden with command-line flags + +# Issue prefix for this repository (used by bd init) +# If not set, bd init will auto-detect from directory name +# Example: issue-prefix: "myproject" creates issues like "myproject-1", "myproject-2", etc. +# issue-prefix: "" + +# Use no-db mode: load from JSONL, no SQLite, write back after each command +# When true, bd will use .beads/issues.jsonl as the source of truth +# instead of SQLite database +# no-db: false + +# Disable daemon for RPC communication (forces direct database access) +# no-daemon: false + +# Disable auto-flush of database to JSONL after mutations +# no-auto-flush: false + +# Disable auto-import from JSONL when it's newer than database +# no-auto-import: false + +# Enable JSON output by default +# json: false + +# Default actor for audit trails (overridden by BD_ACTOR or --actor) +# actor: "" + +# Path to database (overridden by BEADS_DB or --db) +# db: "" + +# Auto-start daemon if not running (can also use BEADS_AUTO_START_DAEMON) +# auto-start-daemon: true + +# Debounce interval for auto-flush (can also use BEADS_FLUSH_DEBOUNCE) +# flush-debounce: "5s" + +# Git branch for beads commits (bd sync will commit to this branch) +# IMPORTANT: Set this for team projects so all clones use the same sync branch. +# This setting persists across clones (unlike database config which is gitignored). +# Can also use BEADS_SYNC_BRANCH env var for local override. +# If not set, bd sync will require you to run 'bd config set sync.branch '. +# sync-branch: "beads-sync" + +# Multi-repo configuration (experimental - bd-307) +# Allows hydrating from multiple repositories and routing writes to the correct JSONL +# repos: +# primary: "." # Primary repo (where this database lives) +# additional: # Additional repos to hydrate from (read-only) +# - ~/beads-planning # Personal planning repo +# - ~/work-planning # Work planning repo + +# Integration settings (access with 'bd config get/set') +# These are stored in the database, not in this file: +# - jira.url +# - jira.project +# - linear.url +# - linear.api-key +# - github.org +# - github.repo diff --git a/.beads/interactions.jsonl b/.beads/interactions.jsonl new file mode 100644 index 0000000..e69de29 diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl new file mode 100644 index 0000000..e69de29 diff --git a/.beads/metadata.json b/.beads/metadata.json new file mode 100644 index 0000000..c787975 --- /dev/null +++ b/.beads/metadata.json @@ -0,0 +1,4 @@ +{ + "database": "beads.db", + "jsonl_export": "issues.jsonl" +} \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..807d598 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ + +# Use bd merge for beads JSONL files +.beads/issues.jsonl merge=beads diff --git a/flake.lock b/flake.lock index 76de1dd..de98c63 100644 --- a/flake.lock +++ b/flake.lock @@ -24,14 +24,17 @@ "agents": { "flake": false, "locked": { - "lastModified": 1767685523, - "narHash": "sha256-shTEa+ekFgzB7G+V8ijvQx1N4OKXIEMjlCgtQxL+jqs=", - "path": "/home/m3tam3re/p/MISC/AGENTS", - "type": "path" + "lastModified": 1767685920, + "narHash": "sha256-8tKEfJU4bxlgPJwUTUDQkVJMbwWQMiYt+moLjMIFeVY=", + "ref": "refs/heads/master", + "rev": "ed8d624e6962f49b811e01ea304d5123ccf6805e", + "revCount": 5, + "type": "git", + "url": "https://code.m3ta.dev/m3tam3re/AGENTS" }, "original": { - "path": "/home/m3tam3re/p/MISC/AGENTS", - "type": "path" + "type": "git", + "url": "https://code.m3ta.dev/m3tam3re/AGENTS" } }, "base16-schemes": { @@ -240,14 +243,17 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1767671770, - "narHash": "sha256-CN2ACRvBlQ1SxQshEv4EJWTaiwRXo+m4dSYQQOaZzdc=", - "path": "/home/m3tam3re/p/NIX/nixpkgs", - "type": "path" + "lastModified": 1767675279, + "narHash": "sha256-MQshFDlG9P8aLybimC9ojdAx8/UxlkjgyQT4J1FGBWk=", + "ref": "refs/heads/master", + "rev": "6e6e81915045dfe0d0af3eceb0d836db6dc2c781", + "revCount": 24, + "type": "git", + "url": "https://code.m3ta.dev/m3tam3re/nixpkgs" }, "original": { - "path": "/home/m3tam3re/p/NIX/nixpkgs", - "type": "path" + "type": "git", + "url": "https://code.m3ta.dev/m3tam3re/nixpkgs" } }, "nix-colors": { diff --git a/hosts/m3-ares/secrets.nix b/hosts/m3-ares/secrets.nix index 4f3b30e..8d9e028 100644 --- a/hosts/m3-ares/secrets.nix +++ b/hosts/m3-ares/secrets.nix @@ -1,6 +1,10 @@ { age = { secrets = { + anytype-key = { + file = ../../secrets/anytype-key-ares.age; + owner = "m3tam3re"; + }; wg-DE = { file = ../../secrets/wg-DE.age; path = "/etc/wireguard/DE.conf"; diff --git a/secrets.nix b/secrets.nix index e1c2761..5cb3f2d 100644 --- a/secrets.nix +++ b/secrets.nix @@ -19,6 +19,7 @@ let ]; in { "secrets/anytype-key.age".publicKeys = systems ++ users; + "secrets/anytype-key-ares.age".publicKeys = systems ++ users; "secrets/baserow-env.age".publicKeys = systems ++ users; "secrets/ghost-env.age".publicKeys = systems ++ users; "secrets/littlelink-m3tam3re.age".publicKeys = systems ++ users; diff --git a/secrets/anytype-key-ares.age b/secrets/anytype-key-ares.age new file mode 100644 index 0000000..3a54e3e --- /dev/null +++ b/secrets/anytype-key-ares.age @@ -0,0 +1,21 @@ +age-encryption.org/v1 +-> ssh-ed25519 4NLKrw UwHRzK6xqXtREva/ZUL8oiVJGO50qmUWnSRGCRQa2kY +raUbEbUVpw3t8LebBSk/qU3AwAimJen4Uiwz4Dg9Z/c +-> ssh-ed25519 5kwcsA D8l5cfW7CxAPx8TQCPLvLFJbnB2kGXGJC6iKV6y3YnE +sekRT0aeXbT/7JWXuQ4rsSjI0VPkAg0NUJB3/j8q/YY +-> ssh-ed25519 9d4YIQ zGf1li6D6SQHuVjJvuzwi77SU65NKuwHvJcq6x0FaC4 +7fOYzwJJYLBQqssNk6LME7e9DKZGgMqKQv/kDggcm1Y +-> ssh-ed25519 3Bcr1w 8jvgDSqlwBgEqeSCfhIwTdcgJlwYZbT5rZ1Pi7vQgRk +02nPbiEwfLSrKkDWEHnvgSmSIUv4lo/eOcrDnTwmNUc +-> ssh-rsa DQlE7w +J07c6gKCwfgPZWm+r828p7Bf1UEKwKSMep0loE9eCH88DOgGnAMPpZ7pxurIrtjk +8OcHKk6XPnff6CsHRG0GAHAFWtwgBQjhxCsOLKC31baWpKv/aqJnn5yhbDGJ9My+ +VNVErVXjlwSgju6VxzX9zwXeorpvsLTxGYEYgXazFctM0XzqIrPG69nBc5SkO7hg +EcgUey/5ilDbPDvPCIsR7JbAcHrfiegvsFZmFAHMyerA+5SLRQypFlF370J1CVg4 +CZRCDuLtOt9Ax180SPLw8/RyuZ2eG1IGiD+UPbtf8Rz6fwPebAp928XXuDk4gg9w +MYQeYkf0VS4rKsHpGxgmKDtYec5vk8Kbc1OWXgR9LqXXd1mXuWGSgqAGwXEClNd4 +nugygPiaU9/fvv1yH5QCjVtxoyaNVl/p0qyU9l0hlblZJqxXU1FIuwbD0l2QXRsC +l3tSgtuo5aPwUC5iBb75hZ4q4sWhjaW1HLFUr8mvUpiTkNvqVde48C5eFAvDoBPg + +--- 3rrxJuc9rxzjZNOzuuNn7B1IYltWQ8Rfrpl5qq4nydc +g'Kä ¬<5Ø‹âÓ#ðÕÐÉ^z@õ›ÎÏ;Þš"YM]çÒtl*9ºÙ ¸p»rôLà­Ö'ížCøM;¿:gá„”k}u\‰-Zÿã\Q \ No newline at end of file