Adds the brainstormed design and TDD implementation plan for adding the
CMSD-1.0 SPDX header to all first-party source files. Spec covers scope,
header rendering per language, placement rules, tool architecture, CI
integration via enrollment allowlist, and verification. Plan breaks
Phase A into 17 TDD tasks producing scripts/license-headers.py,
tests/test_license_headers.py, and .github/workflows/license-check.yml.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Detailed prompt for GPT/Gemini/DALL-E to generate
v2.2.1 product status infographic with hardware,
software, features, and connectivity checklists.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Detailed prompt for GPT/Gemini/DALL-E to generate
colored cyberpunk-style roadmap infographic with:
- SecuBox color palette
- Version timeline (v2.2.1 → v3.0.0)
- Feature breakdown per version
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Prompt for GPT/Gemini/Claude to create well-formatted
Eye Remote GitHub issues with proper context.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Pi Zero W + HyperPixel 2.1 Round display
- USB OTG connection to SecuBox
- 3D cube + rainbow ring metrics visualization
- Quick start with download link to v2.2.1 release
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add secubox-fallback-display.service (3D cube + rainbow rings)
- Enable fallback-display instead of broken eye-agent
- Add libopenjp2-7, libtiff6 PIL dependencies
- Bump version to 2.2.1
The fallback_manager.py provides a stable working dashboard with:
- Connection states: OFFLINE/CONNECTING/ONLINE/COMMUNICATING
- Real metrics from MOCHAbin via direct API calls
- 3D rotating cube and rainbow ring visualizations
The eye-agent has import errors (relative imports, missing classes)
and needs further work to be functional.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Deployed fallback_manager.py as main dashboard (3D cube + rainbow rings)
- Created secubox-fallback-display.service
- Documented root causes and fixes
- NAT routing through MOCHAbin for Pi internet
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Problem:
- hyperpixel2r-init.service had Restart=on-failure which caused
repeated restart attempts during boot
- This triggered a kernel panic in bcm2835_handle_irq due to
GPIO/DPI timing conflicts
Solution:
- Remove Restart=on-failure from hyperpixel2r-init.service
- LCD init is a one-shot operation that should not retry
- Add Before= ordering to ensure init completes before dashboard
- Configure pigpiod with -l flag (local socket only)
The fix allows the HyperPixel 2.1 Round display to initialize
correctly on Pi Zero W with Bookworm.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Move direct dependencies (cobra, promptui, viper, yaml.v3) out of
indirect section. Verify all tests pass and binary builds successfully.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add TestAptCmdHelp to verify apt help output mentions setup and publish
- Add TestAptSetupRequiresRoot to verify root privilege check
- Add TestCloneCmdHelp to verify clone help output mentions tier and minimal flags
- Add TestCloneRequiresRoot to verify root privilege check
All tests pass successfully.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implement all six APT server subcommands for repository management:
- init: Initialize local APT repository at /srv/apt
- publish: Publish .deb packages with optional lintian validation
- sync: Sync repository to apt.secubox.in
- list: List packages in repository
- remove: Remove package from repository
- check: Verify repository integrity
All commands support global flags (--codename, --component, --dry-run, --verbose)
and delegate to corresponding methods on the apt.Server struct.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements Server struct with methods for managing APT repository:
- Init: Initialize repository with reprepro
- Publish: Publish .deb packages via apt-publish.sh script
- Sync: Sync repository to remote via apt-sync.sh script
- List: List packages in repository
- Remove: Remove package from repository
- Check: Verify repository integrity
Wraps existing shell scripts (apt-publish.sh, apt-sync.sh) and provides
direct reprepro commands for APT repository server operations.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Tier struct with Name, Description, Packages fields
- Define Tiers map: lite, standard, pro, minimal
- Add AvailablePackages list with 14 SecuBox modules
- Implement TierPackages() to resolve tier to package list
- Implement ValidateTier() for tier validation
- Implement TierNames() for wizard display
- Add comprehensive test coverage for all functions
All tests pass: TestTierPackages, TestValidateTier, TestTierNames, TestAvailablePackages.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Hybrid approach:
- Client operations (apt setup, clone) in pure Go
- Server operations (apt init/publish/sync) wrap existing shell scripts
Features:
- secubox apt: full repo management + client setup
- secubox clone: interactive bootstrap wizard for new systems
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Download pre-built images from releases
- Support --board, --version, --list, --output flags
- Verify SHA256 checksums after download
- Show download progress with ETA
- List available releases and images
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Implement Builder with Run() and RunStage() methods
- Add rootfs stage: debootstrap with ARM64 cross-compilation support
- Add partition stage: GPT partitions with ESP, root, data
- Add boot stage: U-Boot/GRUB/extlinux bootloader installation
- Add compress stage: gzip/xz/zstd compression with parallel jobs
- Add checksums stage: SHA256/SHA512 checksum generation
- Support --dry-run to preview commands without execution
- Support -j flag for parallel compression jobs
- Support --stage flag to run individual stages
- Add 12 comprehensive tests for all functionality
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Detect arch, CPU, RAM from /proc and runtime
- Detect board from device tree (/proc/device-tree/model)
- Detect VM from DMI or hypervisor flag
- Suggest tier based on RAM size
- Update gen command to use hardware.Detect
- Add --json flag for scripted output
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create wizard package with Run() and discoverBoards() functions
- Discover available boards from board/ directory with fallback defaults
- Prompt for board, tier, optional packages, and output formats
- Use promptui for terminal-based interactive selection UI
- Update gen.go runWizard() to integrate wizard package
- Support loading board metadata from board.yaml when available
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Generate Makefile with image, rootfs, partition, boot stages
- Support configurable output formats (gz, xz)
- Support configurable checksums (sha256, sha512)
- Add vdi, qcow2, iso extra targets
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Define Manifest struct with kernel, partitions, boot, output
- Implement Generate() from Profile and Board
- Add ToYAML() for serialization with header comments
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Define Component struct with requirements, tags, modes
- Implement Scanner to find all secubox-* packages
- Add SupportsArch() helper method
- Create secubox-core/debian/secubox.yaml example
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Define Board struct with hardware, boot, interfaces
- Define Tweaks struct for board-specific overrides
- Add LoadBoard and LoadTweaks functions
- Add MOCHAbin board.yaml and tweaks.yaml
- Support missing tweaks.yaml (optional)
- Add tests for TestLoadBoard and TestLoadTweaks
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Define Profile struct with packages, kernel, services, features
- Implement Load() function for YAML files
- Add base.yaml with common SecuBox foundation
- Add unit tests for profile loading
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add go.mod with cobra, viper, yaml dependencies
- Create main.go entry point
- Create root command with version and config flags
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
17 tasks with TDD approach:
- Go CLI with cobra/viper (gen, build, fetch, ota, info)
- Profile loader with inheritance merger
- Board configuration and tweaks
- Package scanner for debian/secubox.yaml
- Manifest and Makefile generation
- Interactive wizard with promptui
- Hardware detection
- APT repository with lintian compliance
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>