Auto-sync Chriss-MacBook-Pro 2026-06-25 21:24
This commit is contained in:
@@ -1 +1,2 @@
|
||||
- [PlateRunner deployment](reference_deployment.md) — Deploy via SSH to prox2docker, git pull, docker compose rebuild on VM 103
|
||||
- [Claude Code sync setup](reference_claude_sync.md) — Cross-machine sync via Gitea repo, LaunchAgents, memory symlinks between MacBook Pro and claude-code.local
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
---
|
||||
name: Claude Code sync setup
|
||||
description: Cross-machine Claude Code sync via Gitea repo, LaunchAgents, and memory symlinks between MacBook Pro and claude-code.local
|
||||
type: reference
|
||||
---
|
||||
|
||||
Claude Code config is synced between two Macs via a private Gitea repo.
|
||||
|
||||
**Repo**: https://git.chrissader.com/claudecode/claude-sync.git
|
||||
**Location**: `~/.claude/` on both machines (the repo IS the .claude directory)
|
||||
|
||||
**Machines**:
|
||||
- Chriss-MacBook-Pro (csader) — primary Mac
|
||||
- claude-code.local (chrissader) — secondary Mac
|
||||
|
||||
**What syncs** (every 15 min via LaunchAgent `com.csader.claude-sync`):
|
||||
- `agents/` — custom agent definitions (homelab-ops)
|
||||
- `commands/` — custom slash commands
|
||||
- `agent-memory/` — agent-specific memory
|
||||
- `projects/*/memory/` — per-project memory files
|
||||
- `sync.sh` — the sync script itself
|
||||
|
||||
**What stays local** (gitignored):
|
||||
- `settings.json` / `settings.local.json` (contain API keys)
|
||||
- Session history, tool results, workflows, cache, debug, plugins
|
||||
|
||||
**Path mismatch**: Project memory dirs encode absolute paths. Symlinks on claude-code.local map `-Users-chrissader-*` → `-Users-csader-*/memory` so both machines share memory.
|
||||
|
||||
**SSH access**: `ssh -i ~/.ssh/claude-sync chrissader@claude-code.local`
|
||||
|
||||
**MCP on claude-code.local**: obsidian-local (vault at /Users/chrissader/Documents/Sader) + home-assistant
|
||||
|
||||
**Manual sync**: Run `~/.claude/sync.sh` on either machine, or wait for the 15-min LaunchAgent cycle.
|
||||
@@ -0,0 +1,3 @@
|
||||
- [Program Data Source](program-data-source.md) — Wildfan 2H club program sourced from spreadsheet + PDF in ~/Downloads
|
||||
- [Deployment Setup](deployment-setup.md) — VM 101 on Proxmox3, Docker, scp-based deploys, no git on remote
|
||||
- [Programs Design Decisions](programs-design-decisions.md) — Instruction-first player, YouTube as toggleable how-to reference
|
||||
@@ -0,0 +1,18 @@
|
||||
---
|
||||
name: deployment-setup
|
||||
description: "How the workout-player is deployed — remote VM, Docker, scp-based deploys"
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: reference
|
||||
originSessionId: 4c5b9e06-c81b-4be9-9182-f1c816180860
|
||||
---
|
||||
|
||||
## Deployment
|
||||
|
||||
- Runs on Proxmox3 → VM 101 (192.168.86.172) via Docker on port 8091
|
||||
- Reverse proxy: workouts.chrissader.com → :8091 via Caddy on proxmox1 with Authelia
|
||||
- No git on the remote — deploy by tarring the project (excluding node_modules/.next/data/.git), scp to remote, extract in place, `docker compose up -d --build`
|
||||
- Data lives in `/home/csader/workout-player/data/` (SQLite DB + thumbnails), mounted as Docker volume
|
||||
- Media path: `/mnt/unraid/media/tv/Exercise` (read-only mount)
|
||||
- `.env` on remote has `MEDIA_PATH=/mnt/unraid/media/tv/Exercise`
|
||||
- Gitea repo: https://git.chrissader.com/csader/workout-player (basic auth via git credential store)
|
||||
@@ -0,0 +1,16 @@
|
||||
---
|
||||
name: program-data-source
|
||||
description: The Wildfan 2H club program was sourced from a spreadsheet with YouTube links and a companion intro PDF
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: project
|
||||
originSessionId: 4c5b9e06-c81b-4be9-9182-f1c816180860
|
||||
---
|
||||
|
||||
The first program loaded into the system is the "Wildfan 2H Heavy Club" program by Smally and Fulks. Source files in ~/Downloads/:
|
||||
- `Intro to free Wildfan 2 Hand Heavy Club prog XX.pdf` — program philosophy, protocol description, troubleshooting
|
||||
- `Wildfan 2H Heavy Club - Full body Program by Fulks and Smally FINAL.xlsx` — actual exercises with YouTube hyperlinks, 3 sheets (warm up/cool down, auto-calc version, printable)
|
||||
|
||||
**Why:** This is the reference implementation for how programs get structured. 7 levels × (7 warmup + 8 main + 6 cooldown) exercises, TUT protocol (30s work / 30s rest / 4 rounds).
|
||||
|
||||
**How to apply:** When adding new programs, follow the same pattern — extract exercise names and video links from source material, include warmup/cooldown in each level's exercise list.
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: programs-design-decisions
|
||||
description: "Key design decisions for the programs feature — instruction-first player, YouTube as reference"
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: feedback
|
||||
originSessionId: 4c5b9e06-c81b-4be9-9182-f1c816180860
|
||||
---
|
||||
|
||||
YouTube videos in programs are instructional/how-to references, NOT follow-along content. The player should show the timed instruction card as the primary UI with YouTube toggleable as a reference panel.
|
||||
|
||||
**Why:** The source programs (e.g., Wildfan 2H Heavy Club) provide YouTube links to learn form, but the actual workout is timed sets you do yourself. The video is prep, not the workout itself.
|
||||
|
||||
**How to apply:** When adding YouTube exercises to programs, the timer/instruction card is always primary. "Show How-To" opens the video. Auto-start toggle lets users skip manual timer start once they know the movements. Don't treat YouTube type as a "watch the whole video" segment.
|
||||
@@ -13,3 +13,4 @@
|
||||
- [HA Blue SSH access](reference_ha_blue_ssh.md) — Port 2222, user csader (not root), id_ed25519 key
|
||||
- [HACS and Mushroom on HA Blue](reference_hacs_mushroom.md) — HACS, Mushroom, weatheralerts install details
|
||||
- [Never use "new" as automation ID](feedback_automation_ids.md) — Use unique numeric IDs when creating automations via REST API
|
||||
- [Claude Code sync setup](reference_claude_sync.md) — Cross-machine sync via Gitea repo, LaunchAgents, memory symlinks between MacBook Pro and claude-code.local
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
---
|
||||
name: Claude Code sync setup
|
||||
description: Cross-machine Claude Code sync via Gitea repo, LaunchAgents, and memory symlinks between MacBook Pro and claude-code.local
|
||||
type: reference
|
||||
---
|
||||
|
||||
Claude Code config is synced between two Macs via a private Gitea repo.
|
||||
|
||||
**Repo**: https://git.chrissader.com/claudecode/claude-sync.git
|
||||
**Location**: `~/.claude/` on both machines (the repo IS the .claude directory)
|
||||
|
||||
**Machines**:
|
||||
- Chriss-MacBook-Pro (csader) — primary Mac
|
||||
- claude-code.local (chrissader) — secondary Mac
|
||||
|
||||
**What syncs** (every 15 min via LaunchAgent `com.csader.claude-sync`):
|
||||
- `agents/` — custom agent definitions (homelab-ops)
|
||||
- `commands/` — custom slash commands
|
||||
- `agent-memory/` — agent-specific memory
|
||||
- `projects/*/memory/` — per-project memory files
|
||||
- `sync.sh` — the sync script itself
|
||||
|
||||
**What stays local** (gitignored):
|
||||
- `settings.json` / `settings.local.json` (contain API keys)
|
||||
- Session history, tool results, workflows, cache, debug, plugins
|
||||
|
||||
**Path mismatch**: Project memory dirs encode absolute paths. Symlinks on claude-code.local map `-Users-chrissader-*` → `-Users-csader-*/memory` so both machines share memory.
|
||||
|
||||
**SSH access**: `ssh -i ~/.ssh/claude-sync chrissader@claude-code.local`
|
||||
|
||||
**MCP on claude-code.local**: obsidian-local (vault at /Users/chrissader/Documents/Sader) + home-assistant
|
||||
|
||||
**Manual sync**: Run `~/.claude/sync.sh` on either machine, or wait for the 15-min LaunchAgent cycle.
|
||||
Reference in New Issue
Block a user