Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
fee226b
feat: auto-unblock internet during update check (#308)
ng Apr 2, 2026
866b06c
feat: auto-off when no bed presence detected (#301)
ng Apr 2, 2026
1f1cc02
chore(deps): Update trpc-to-openapi dependency trpc-to-openapi to v3.…
renovate[bot] Apr 2, 2026
45b6567
chore(deps): Update conventional-changelog-conventionalcommits depend…
renovate[bot] Apr 2, 2026
2fe3c5f
chore(deps): Update better-sqlite3 dependency better-sqlite3 to v12.8…
renovate[bot] Apr 2, 2026
dfc88c1
fix: remove minor from major-only automerge rule in renovate config
ng Apr 2, 2026
f0b4a5b
fix: add 3-day minimum release age to renovate config
ng Apr 2, 2026
6e2b9fb
chore(deps): Update @eslint/css dependency @eslint/css to v1.1.0 (#309)
renovate[bot] Apr 2, 2026
73a18c9
chore(deps): Update @tanstack/react-query dependency @tanstack/react-…
renovate[bot] Apr 2, 2026
7b78925
chore(deps): Update @vitejs/plugin-react dependency @vitejs/plugin-re…
renovate[bot] Apr 2, 2026
f783ca5
chore(deps): Update cbor2 dependency cbor2 to v5.9.0 (#273)
renovate[bot] Apr 2, 2026
d4fc8e6
chore(deps): Update @trpc/client trpc monorepo to v11.16.0 (#281)
renovate[bot] Apr 2, 2026
d90655e
chore(deps): Update eslint-config-next nextjs monorepo to v16.2.1 (#295)
renovate[bot] Apr 2, 2026
d279d99
chore: add git hooks and fix all ESLint errors (#313)
ng Apr 2, 2026
e151778
chore(deps): Update pnpm/action-setup pnpm/action-setup action to v5 …
renovate[bot] Apr 2, 2026
676108b
chore(deps): Update typescript-eslint dependency typescript-eslint to…
renovate[bot] Apr 2, 2026
9bfe5ec
chore(deps): Update typescript-eslint dependency typescript-eslint to…
renovate[bot] Apr 2, 2026
96a9f9c
chore(deps): Update ws dependency ws to v8.20.0 (#318)
renovate[bot] Apr 3, 2026
4ad6602
fix: persist free-sleep/sleepypod switch across reboots (#337)
ng Apr 3, 2026
5beaf9d
Fix DAC socket path parsing and Avahi EROFS on device startup (#331)
ng Apr 3, 2026
67cb20c
chore(deps): Update lucide-react dependency lucide-react to v1 (#311)
renovate[bot] Apr 3, 2026
615e14f
chore(deps): Update jsdom dependency jsdom to v29 (#274)
renovate[bot] Apr 3, 2026
20fe21e
chore(deps): Update shadcn dependency shadcn to v4 (#314)
renovate[bot] Apr 3, 2026
703f745
Fix Python venv creation on Pod 3/4 Yocto images (#336)
ng Apr 3, 2026
28ed5df
chore(deps): Update eslint-config-next nextjs monorepo to v16.2.2 (#340)
renovate[bot] Apr 4, 2026
34c619d
refactor: extract pod modules and CLI tools from install script (#341)
ng Apr 4, 2026
ba7240e
Fix install script branch mismatch after #341 refactor (#346)
ng Apr 4, 2026
bdf4231
Fix Python venv creation: patch Yocto stdlib on Pod 3/4 (#348)
ng Apr 4, 2026
3e920e5
Fix status page showing wrong pod model name (#351)
ng Apr 4, 2026
b984417
fix: resolve iptables path for Yocto (Pod 4) #350 (#352)
ng Apr 4, 2026
58ad062
perf: batch schedule mutations to eliminate N+1 API calls (#354)
ng Apr 4, 2026
8ae5fc4
feat: add per-pod capabilities manifest (#355)
ng Apr 4, 2026
321635f
Add hardware info section with serial to status page (#357)
ng Apr 4, 2026
f4dff91
Redesign schedule page: read-only dashboard + per-day detail route (#…
ng Apr 4, 2026
4bd2463
chore(deps): Update dotenv dependency dotenv to v17.4.0 (#360)
renovate[bot] Apr 4, 2026
a72555c
Fix build: inline generateStaticParams for schedule day route (#361)
ng Apr 4, 2026
2b62b5f
Add schedule groups with mutually exclusive day membership (#364)
ng Apr 4, 2026
f8f2f27
Fix JSX lint error in ScheduleDayDetail (#365)
ng Apr 4, 2026
9637be1
Fix sp-update: check CI release by tag for all branches (#366)
ng Apr 4, 2026
695f1dd
fix: update channel picker and stale git-info on OTA #362 (#367)
ng Apr 4, 2026
912b2ce
Ship node_modules in CI tarball to fix arm64 deploy (#368)
ng Apr 4, 2026
1efbe11
Silence TS baseUrl deprecation for TS 5.9+ (#370)
ng Apr 4, 2026
4253c90
Skip pre-push hook on CI tag push in dev-release (#371)
ng Apr 4, 2026
28094dd
Add --no-verify to both tag pushes in dev-release (#372)
ng Apr 5, 2026
f4f7b6e
Hoist better-sqlite3 to fix cross-platform deploy (#373)
ng Apr 5, 2026
df0f9bc
Hoist better-sqlite3 + dynamic schedule routes to fix deploy (#374)
ng Apr 5, 2026
ae83f85
Add boot-time maintenance script for disk housekeeping (#375)
ng Apr 5, 2026
2d36c15
Disable Turbopack — use webpack for production builds (#376)
ng Apr 5, 2026
8834be9
Use webpack bundler to fix cross-platform better-sqlite3 (#377)
ng Apr 5, 2026
d408953
Fix Turbopack native module resolution with resolveAlias (#378)
ng Apr 5, 2026
04709ae
Auto-symlink Turbopack hashed native modules during deploy (#379)
ng Apr 5, 2026
563b409
fix: use process.cwd() for migration paths to survive cross-machine d…
ng Apr 5, 2026
e938c12
fix: extract DAYS constants from 'use client' to fix SSG build
ng Apr 5, 2026
88e647a
fix: add output standalone to fix cross-machine deploys
ng Apr 5, 2026
b7c90cb
fix: use standalone server.js for cross-machine deploys
ng Apr 5, 2026
2871d4b
fix: inline locales to avoid lingui.config import failing on cross-pl…
ng Apr 5, 2026
9b2e5fa
feat: redesign schedule overview with inline groups and curve preview…
ng Apr 4, 2026
f14cc31
Add compiled knowledge wiki from project docs (#382)
ng Apr 5, 2026
b1a5364
fix: resolve Pod 3 install failures (#380) (#383)
ng Apr 5, 2026
0fe526f
fix: replace venv+pip with uv for biometrics module setup (#384)
ng Apr 6, 2026
59899f3
chore(deps): Update python Python to >=3.14,<3.15 (#385)
renovate[bot] Apr 6, 2026
9f6cb24
fix: use system Python and pin requires-python to pod range (#386)
ng Apr 6, 2026
c9b8378
docs: compile ADR 0017 (uv) into deployment wiki topic (#390)
ng Apr 6, 2026
32d4d53
chore(deps): Update @tanstack/react-query dependency @tanstack/react-…
renovate[bot] Apr 6, 2026
998598a
fix: use absolute node path in systemd service unit (#392)
ng Apr 7, 2026
14e04e0
chore(deps): Update @types/node dependency @types/node to v25.5.2 (#393)
renovate[bot] Apr 7, 2026
ec6ac1a
chore(deps): Update dotenv dependency dotenv to v17.4.1 (#398)
renovate[bot] Apr 9, 2026
2be5b15
chore(deps): Update @lingui/babel-plugin-lingui-macro linguijs monore…
renovate[bot] Apr 9, 2026
3c628f4
chore(deps): Update jsdom dependency jsdom to v29.0.2 (#403)
renovate[bot] Apr 10, 2026
2ffed95
chore(deps): Update @vitest/coverage-v8 vitest monorepo to v4.1.3 (#404)
renovate[bot] Apr 10, 2026
4d3e083
fix: convert temperatures to user's preferred unit (#333) (#387)
ng Apr 10, 2026
2a4534f
fix: pin Node version, fix action tags, harden CI (#328) (#388)
ng Apr 10, 2026
a446e76
Replace misleading Promise.all with sequential sync calls (#400)
ng Apr 10, 2026
c2b13f9
Add missing LED fields to getAll device settings fallback (#401)
ng Apr 10, 2026
6deee72
Add Snoo pentest methodology and reconnaissance plan
ng Apr 10, 2026
ec3da41
chore(deps): Update shadcn dependency shadcn to v4.2.0 (#417)
renovate[bot] Apr 11, 2026
f0e1589
chore(deps): Update typescript-eslint dependency typescript-eslint to…
renovate[bot] Apr 11, 2026
8bc2c46
Address CodeRabbit feedback from #400 and #401 (#414)
ng Apr 11, 2026
5614552
chore(deps): Update eslint-config-next nextjs monorepo to v16.2.3 (#419)
renovate[bot] Apr 11, 2026
4258b46
chore(deps): Update react react monorepo to v19.2.5 (#421)
renovate[bot] Apr 12, 2026
615b36a
chore(deps): Update @vitest/coverage-v8 vitest monorepo to v4.1.4 (#422)
renovate[bot] Apr 12, 2026
1575b2a
chore(deps): Update @tanstack/react-query dependency @tanstack/react-…
renovate[bot] Apr 12, 2026
f7a9b37
feat: schedule overview grouping days by shared curve (#303)
ng Apr 13, 2026
f0e7586
release: set install script default branch to main for #425
ng Apr 13, 2026
384cd78
chore: template install script branch at release time (#426)
ng Apr 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions .beads/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Dolt database (managed by Dolt, not git)
dolt/

# Runtime files
bd.sock
bd.sock.startlock
sync-state.json
last-touched
.exclusive-lock

# Daemon runtime (lock, log, pid)
daemon.*

# Interactions log (runtime, not versioned)
interactions.jsonl

# Push state (runtime, per-machine)
push-state.json

# Lock files (various runtime locks)
*.lock

# Credential key (encryption key for federation peer auth — never commit)
.beads-credential-key

# Local version tracking (prevents upgrade notification spam after git ops)
.local_version

# Worktree redirect file (contains relative path to main repo's .beads/)
# Must not be committed as paths would be wrong in other clones
redirect

# Sync state (local-only, per-machine)
# These files are machine-specific and should not be shared across clones
.sync.lock
export-state/
export-state.json

# Ephemeral store (SQLite - wisps/molecules, intentionally not versioned)
ephemeral.sqlite3
ephemeral.sqlite3-journal
ephemeral.sqlite3-wal
ephemeral.sqlite3-shm

# Dolt server management (auto-started by bd)
dolt-server.pid
dolt-server.log
dolt-server.lock
dolt-server.port
dolt-server.activity

# Corrupt backup directories (created by bd doctor --fix recovery)
*.corrupt.backup/

# Backup data (auto-exported JSONL, local-only)
backup/

# Per-project environment file (Dolt connection config, GH#2520)
.env

# Legacy files (from pre-Dolt versions)
*.db
*.db?*
*.db-journal
*.db-wal
*.db-shm
db.sqlite
bd.db
# NOTE: Do NOT add negation patterns here.
# They would override fork protection in .git/info/exclude.
# Config files (metadata.json, config.yaml) are tracked by git by default
# since no pattern above ignores them.
81 changes: 81 additions & 0 deletions .beads/README.md
Original file line number Diff line number Diff line change
@@ -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 <issue-id>

# Update issue status
bd update <issue-id> --claim
bd update <issue-id> --status done

# Sync with Dolt remote
bd dolt push
```

### Working with Issues

Issues in Beads are:
- **Git-native**: Stored in Dolt database with version control and branching
- **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
- Dolt-native three-way 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* ⚡
54 changes: 54 additions & 0 deletions .beads/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# 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: JSONL-only, no Dolt database
# When true, bd will use .beads/issues.jsonl as the source of truth
# no-db: false

# Enable JSON output by default
# json: false

# Feedback title formatting for mutating commands (create/update/close/dep/edit)
# 0 = hide titles, N > 0 = truncate to N characters
# output:
# title-length: 255

# Default actor for audit trails (overridden by BEADS_ACTOR or --actor)
# actor: ""

# Export events (audit trail) to .beads/events.jsonl on each flush/sync
# When enabled, new events are appended incrementally using a high-water mark.
# Use 'bd export --events' to trigger manually regardless of this setting.
# events-export: false

# Multi-repo configuration (experimental - bd-307)
# Allows hydrating from multiple repositories and routing writes to the correct database
# 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

# JSONL backup (periodic export for off-machine recovery)
# Auto-enabled when a git remote exists. Override explicitly:
# backup:
# enabled: false # Disable auto-backup entirely
# interval: 15m # Minimum time between auto-exports
# git-push: false # Disable git push (export locally only)
# git-repo: "" # Separate git repo for backups (default: project 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
24 changes: 24 additions & 0 deletions .beads/hooks/post-checkout
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/usr/bin/env sh
# --- BEGIN BEADS INTEGRATION v1.0.0 ---
# This section is managed by beads. Do not remove these markers.
if command -v bd >/dev/null 2>&1; then
export BD_GIT_HOOK=1
_bd_timeout=${BEADS_HOOK_TIMEOUT:-300}
if command -v timeout >/dev/null 2>&1; then
timeout "$_bd_timeout" bd hooks run post-checkout "$@"
_bd_exit=$?
if [ $_bd_exit -eq 124 ]; then
echo >&2 "beads: hook 'post-checkout' timed out after ${_bd_timeout}s — continuing without beads"
_bd_exit=0
fi
else
bd hooks run post-checkout "$@"
_bd_exit=$?
fi
if [ $_bd_exit -eq 3 ]; then
echo >&2 "beads: database not initialized — skipping hook 'post-checkout'"
_bd_exit=0
fi
if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi
fi
# --- END BEADS INTEGRATION v1.0.0 ---
24 changes: 24 additions & 0 deletions .beads/hooks/post-merge
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/usr/bin/env sh
# --- BEGIN BEADS INTEGRATION v1.0.0 ---
# This section is managed by beads. Do not remove these markers.
if command -v bd >/dev/null 2>&1; then
export BD_GIT_HOOK=1
_bd_timeout=${BEADS_HOOK_TIMEOUT:-300}
if command -v timeout >/dev/null 2>&1; then
timeout "$_bd_timeout" bd hooks run post-merge "$@"
_bd_exit=$?
if [ $_bd_exit -eq 124 ]; then
echo >&2 "beads: hook 'post-merge' timed out after ${_bd_timeout}s — continuing without beads"
_bd_exit=0
fi
else
bd hooks run post-merge "$@"
_bd_exit=$?
fi
if [ $_bd_exit -eq 3 ]; then
echo >&2 "beads: database not initialized — skipping hook 'post-merge'"
_bd_exit=0
fi
if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi
fi
# --- END BEADS INTEGRATION v1.0.0 ---
29 changes: 29 additions & 0 deletions .beads/hooks/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/usr/bin/env sh
set -e

echo "→ lint-staged..."
pnpm lint-staged

# --- BEGIN BEADS INTEGRATION v1.0.0 ---
# This section is managed by beads. Do not remove these markers.
if command -v bd >/dev/null 2>&1; then
export BD_GIT_HOOK=1
_bd_timeout=${BEADS_HOOK_TIMEOUT:-300}
if command -v timeout >/dev/null 2>&1; then
timeout "$_bd_timeout" bd hooks run pre-commit "$@"
_bd_exit=$?
if [ $_bd_exit -eq 124 ]; then
echo >&2 "beads: hook 'pre-commit' timed out after ${_bd_timeout}s — continuing without beads"
_bd_exit=0
fi
else
bd hooks run pre-commit "$@"
_bd_exit=$?
fi
if [ $_bd_exit -eq 3 ]; then
echo >&2 "beads: database not initialized — skipping hook 'pre-commit'"
_bd_exit=0
fi
if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi
fi
# --- END BEADS INTEGRATION v1.0.0 ---
46 changes: 46 additions & 0 deletions .beads/hooks/pre-push
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#!/usr/bin/env sh
set -e

echo "→ TypeScript..."
pnpm tsc

echo "→ ESLint..."
pnpm lint

echo "→ Drizzle schema validation..."
pnpm drizzle-kit check
pnpm drizzle-kit check --config=drizzle.biometrics.config.ts

CHANGED=$(git diff --name-only @{push}.. -- '*.ts' '*.tsx' 2>/dev/null || git diff --name-only origin/dev...HEAD -- '*.ts' '*.tsx' 2>/dev/null || true)
if [ -n "$CHANGED" ]; then
echo "→ Tests (changed files)..."
pnpm vitest related --run $CHANGED
else
echo "→ Tests skipped (no TS/TSX changes)"
fi

echo "✓ All pre-push checks passed"

# --- BEGIN BEADS INTEGRATION v1.0.0 ---
# This section is managed by beads. Do not remove these markers.
if command -v bd >/dev/null 2>&1; then
export BD_GIT_HOOK=1
_bd_timeout=${BEADS_HOOK_TIMEOUT:-300}
if command -v timeout >/dev/null 2>&1; then
timeout "$_bd_timeout" bd hooks run pre-push "$@"
_bd_exit=$?
if [ $_bd_exit -eq 124 ]; then
echo >&2 "beads: hook 'pre-push' timed out after ${_bd_timeout}s — continuing without beads"
_bd_exit=0
fi
else
bd hooks run pre-push "$@"
_bd_exit=$?
fi
if [ $_bd_exit -eq 3 ]; then
echo >&2 "beads: database not initialized — skipping hook 'pre-push'"
_bd_exit=0
fi
if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi
fi
# --- END BEADS INTEGRATION v1.0.0 ---
24 changes: 24 additions & 0 deletions .beads/hooks/prepare-commit-msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/usr/bin/env sh
# --- BEGIN BEADS INTEGRATION v1.0.0 ---
# This section is managed by beads. Do not remove these markers.
if command -v bd >/dev/null 2>&1; then
export BD_GIT_HOOK=1
_bd_timeout=${BEADS_HOOK_TIMEOUT:-300}
if command -v timeout >/dev/null 2>&1; then
timeout "$_bd_timeout" bd hooks run prepare-commit-msg "$@"
_bd_exit=$?
if [ $_bd_exit -eq 124 ]; then
echo >&2 "beads: hook 'prepare-commit-msg' timed out after ${_bd_timeout}s — continuing without beads"
_bd_exit=0
fi
else
bd hooks run prepare-commit-msg "$@"
_bd_exit=$?
fi
if [ $_bd_exit -eq 3 ]; then
echo >&2 "beads: database not initialized — skipping hook 'prepare-commit-msg'"
_bd_exit=0
fi
if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi
fi
# --- END BEADS INTEGRATION v1.0.0 ---
7 changes: 7 additions & 0 deletions .beads/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"database": "dolt",
"backend": "dolt",
"dolt_mode": "embedded",
"dolt_database": "sleepypod_core",
"project_id": "5a4f3fbf-e881-4cce-9028-6182a505b21b"
}
26 changes: 26 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"hooks": {
"PreCompact": [
{
"hooks": [
{
"command": "bd prime",
"type": "command"
}
],
"matcher": ""
}
],
"SessionStart": [
{
"hooks": [
{
"command": "bd prime",
"type": "command"
}
],
"matcher": ""
}
]
}
}
Loading
Loading