Commit graph

463 commits

Author SHA1 Message Date
3330d0d779 Add implementation plan for v0.9.0
Detailed breakdown:
- Phase 1: 5 shell modules (env, pkg, gpu, system, clawdie)
- Phase 2: firstboot.sh wizard rewrite
- Phase 3: clawdie-admin.sh bsddialog UI
- Phase 4: Build system updates
- Phase 5: Testing + hardware validation

Timeline: 23–31 hours estimated
Success criteria: All modules + testing passing

Work happens in parallel with main branch review.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
a7ea1e350c v0.9.0-rc2: Integrate feedback — recovery, POSIX, security, audio
Addressed community feedback with FreeBSD-first approach:

 Recovery & Resilience:
  - clawdie-firstboot --resume (continue from checkpoint)
  - clawdie-firstboot --reset (start over)
  - Progress logging to /var/log/clawdie-firstboot.progress
  - All errors captured with line numbers + recovery instructions

 POSIX Compliance (FreeBSD-First):
  - All shell modules use POSIX sh (no bash-isms)
  - set -eu + trap ERR for reliable error handling
  - No Linux-specific tools (no systemd, apt, /dev/sda paths)
  - Maximum portability on FreeBSD

 API Key Security:
  - .env created with chmod 600 (user-only readable)
  - API keys never logged or echoed
  - Encrypted vault option planned for v1.0

 Audio (OSS Native):
  - FreeBSD OSS (not PulseAudio) — kernel-native
  - Audio card detection in admin panel (post-firstboot)
  - WiFi firmware detection + install guidance
  - Bluetooth support deferred to v1.0

 Post-Install Hardware:
  - Hardware detection submenu in admin panel
  - WiFi firmware suggestions
  - Audio troubleshooting guidance
  - Static IP via bsdinstall (not wizard)

 Upgrade Path:
  - Manual upgrade documented
  - clawdie-upgrade skill planned for v1.0
  - Admin panel upgrade button planned for v1.0

 v1.0 Roadmap:
  - New roadmap section in CLAWDIE-SHELL.md
  - Lists planned features: encryption, Bluetooth, network wizard, etc.

All changes maintain FreeBSD-native philosophy.
No Linux-isms welcome. OSS over PulseAudio.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
ecd522b4cd Clawdie Shell specification v0.9.0-rc1
Core documentation:
- CLAWDIE-SHELL.md: Main specification (overview, features, philosophy)
- SHELL-ARCHITECTURE.md: Modular shell design (5 libraries, patterns)
- LUMINA-INTEGRATION.md: Desktop configuration (luminarc, openbox)
- ADMIN-PANEL.md: bsddialog UI specification (system management)
- REFACTOR-SUMMARY.md: Transition from multi-DE to Lumina-only

Philosophy: Standing on giants' shoulders
- FreeBSD (ZFS, jails, rc.d, stability)
- PC-BSD (Lumina desktop, installer wisdom)
- POSIX shell (portability, simplicity, no VM overhead)

Updated .gitignore to exclude build artifacts.
Updated README.md with Clawdie Shell branding.

All dates in 23.mar.2026 format (user preference).

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
a94d0c3108 docs(runner): add edk2-bhyve to build automation prerequisites
Document that bhyve UEFI firmware (edk2-bhyve) is required for testing
ISO installations before deployment via cron or Forgejo Actions.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
fa2391727d fix(build): use EU date format for user-facing ISO filename
Change IMAGE_NAME from YYYYMMDD to DD.mmm.YYYY per AGENTS.md convention.
No numeric-only months — ambiguous for humans and LLMs.

Output: clawdie-iso-17.mar.2026.img (instead of clawdie-iso-20260317.img)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
7a9c051526 feat(build): unblock ISO payload injection
1. Determine memstick partition layout: /dev/\${MD}s2a (UFS)
2. Implement payload injection in build.sh steps 5-6
3. Create scripts/publish.sh to copy ISO to CMS nginx /downloads/
4. Fix --fetch-only to not require root (use temp pkg config)

All 4 quickstart tasks now unblocked. Next: test in bhyve VM.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
799f5a0701 docs(runner): cron as primary, Forgejo Actions as future option
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
9cf8eab9ff chore: remove Forgejo Actions workflow — cron is primary for now
Forgejo runner adds complexity before build.sh is working.
Workflow file (runner/README.md) kept for when CI/CD is needed.
Cron job documented in runner/README.md as the active automation path.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
2f65567c85 fix(poudriere): correct subnet, bridge, diagram and CI alignment
- Subnet: .5 → .10 (was colliding with CMS jail at .5)
- Bridge: lagg0 → warden0 (correct Bastille bridge name)
- Hostname: poudriere.local → poudriere.clawdie.home.arpa (consistent with
  internal naming convention used by other jails)
- Architecture diagram: git (.1→.4), cms (.4→.5), add full subnet legend
- rsync paths: use jail filesystem path directly instead of rsync-over-SSH
  to the jail IP (jails share the host filesystem, no SSH hop needed)
- Phase 5.2 build.sh: align with actual --fetch-only/--skip-fetch flags
  and explain Poudriere as a pre-fetch step in the existing pipeline
- Phase 6.2: cron is fallback only — Forgejo Actions handles scheduling
- Alternatives table: CI/CD marked as implemented, not rejected

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
3d21e5fa36 feat: CI/CD pipeline, package lists, offline pkg-cache seeding
.forgejo/workflows/build.yml:
- Forgejo Actions pipeline: push to main + weekly cron + manual dispatch
- Two-stage: fetch-only (no root) → assemble ISO (root via sudo)
- Publishes ISO to CMS nginx downloads; Codeberg release entry (metadata only)
- Uploads packages/ as workflow artifact for pkg-cache seeding

packages/:
- pkg-list-host.txt     — host baseline (mirrors clawdie-ai infra/packages/)
- pkg-list-jails.txt    — union of all jail package lists
- pkg-list-desktop-base.txt — Xorg + drm base for all DEs
- pkg-list-xfce.txt / kde.txt / mate.txt / nvidia.txt — per-DE packages

build.sh:
- --fetch-only flag: downloads packages + memstick, no root, CI step 1
- Real pkg fetch loop: reads all pkg-list-*.txt, deduplicates, runs pkg fetch
- pkg repo step: generates offline repo metadata after fetch
- Resolves "latest" Clawdie version via Codeberg API

firstboot/firstboot.sh:
- Seeds zroot/pkg-cache from USB packages/ after desktop install
- npm run install-all runs fully offline — no internet needed for jails
- Creates ZFS dataset if not present, falls back to plain directory

runner/README.md:
- forgejo-runner install + register on FreeBSD
- Scoped sudoers entry (build.sh + publish.sh only)
- rc.d service setup

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
601372b0a3 docs: add Poudriere hybrid package system implementation plan
Option 3 from brainstorming session — two-tier package system:
- Base layer: stock FreeBSD packages from official latest repo
- Clawdie layer: custom-built packages from Poudriere (priority 100)

Covers:
- Phase 1-7 implementation steps
- Jail setup and configuration
- Package list and make.conf
- ISO integration and automation
- Resource requirements and update flow

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
912c1db726 feat(skills): add build-iso skill v0.0.1
Moved from clawdie-ai for development alongside build.sh.
Will be merged back to clawdie-ai once the ISO build is working.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00
61b00accb4 feat: initial clawdie-iso skeleton
USB installer for Clawdie-AI. Combines FreeBSD base install,
desktop-installer GPU/DE setup, and Clawdie-AI deployment into
a single rc.firstboot wizard flow.

Skeleton includes:
- build.cfg: FreeBSD 15.0-RELEASE-p4, amd64, XFCE default
- build.sh: 7-step build outline (fetch → inject → repack), stubs
- installerconfig: bsdinstall post-install hook, copies firstboot/ to HDD
- firstboot/rc.d/clawdie-firstboot: runs once on first HDD boot
- firstboot/firstboot.sh: tiered bsddialog wizard (identity, desktop,
  pi profile, auto-generated secrets, AGENTS.md seeding, npm prefix setup)
- firstboot/gpu-detect.sh: pciconf PCI ID → kld/xorg driver mapping
- CLAWDIE-ISO.md: full design doc (copied from clawdie-ai)

VirtualBox excluded. pkg latest default. LLM keys deferred to pi first-run.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00