9c63557e62
SamiOS CI / lint-and-test (push) Failing after 10s
- .gitignore: exclude __pycache__, *.pyc, build artifacts, .iso files - tests/test_installer.sh: 17 assertions (syntax, VERSION walk-up, heredoc check, structural checks for partition/format/pacstrap/boot logic, desktop overlay presence) - tests/test_voice_bridge.sh: 19 assertions (AST parse, --version, VERSION match, no hardcoded literal, class/method/import checks) - README.md: SSOT docs, Makefile targets, test suite table, repo layout - docs/roadmap.md: CI/tests/SSOT marked done, Phase 3 app status - packages.x86_64.desktop: Plasma + apps overlay for desktop ISO - CI workflow: Python AST check, VERSION SSOT gate, make check - test_helper.sh: clean single export of path variables - test_version.sh: skip __pycache__ in detector scan All 8 test suites pass (90+ assertions). Codex noted: grep-based structural assertions are not behavior tests; desktop overlay packages need repo validation. These are Phase 3 followups.
4.3 KiB
4.3 KiB
SamiOS
A custom Arch Linux distribution designed as a Windows replacement, built around voice-first interaction.
Quick Start
# Clone
git clone https://git.sami/sami7777/samios.git
cd samios
# Run the full test suite (lint + tests)
make check
# Build the ISO (requires Arch Linux + archiso)
cd packaging/archiso && sudo bash build.sh
Version Management
SamiOS uses a single-source-of-truth VERSION system. One file at the repo root controls the version everywhere:
# Change the version across all 7 components (CLI, installer, PKGBUILD, etc.)
make version-set NEW=X.Y.Z
# Sync the canonical VERSION to the airootfs mirror
make version-sync
# Print the current version
make version
No component hardcodes a version literal — they all derive from ./VERSION via a walk-up lookup pattern.
Makefile Targets
| Target | Description |
|---|---|
make check |
Run shellcheck + full test suite |
make test |
Run test suite only |
make lint |
Run shellcheck on all shell scripts |
make version |
Print the current SamiOS version |
make version-set NEW=X |
Set VERSION to X (e.g. X.Y.Z or X.Y.Z-prerelease) |
make version-sync |
Mirror VERSION to packaging/archiso/airootfs/etc/samios-version |
Test Suite
8 test suites with 85+ assertions covering:
| Suite | Coverage |
|---|---|
test_version.sh |
SSOT invariant: one VERSION file, no hardcoded literals, all components agree |
test_installer.sh |
Installer syntax, VERSION resolution, partition/format/pacstrap/bootloader logic |
test_voice_bridge.sh |
Python AST, version resolution, class/method structure, imports |
test_samios_cli.sh |
CLI commands, version output, help text |
test_profiledef.sh |
Arch ISO profile structure and metadata |
test_packages.sh |
Package list completeness |
test_pacman_conf.sh |
Pacman configuration sections |
test_font_policy.sh |
Font exclusion policy (no "7777" fonts) |
Repository Layout
.
├── VERSION # Canonical version (single source of truth)
├── Makefile # Build, test, version management targets
├── .gitea/workflows/ci.yml # CI pipeline (shellcheck + tests)
├── branding/ # Logos, icons, GRUB theme, SDDM theme, wallpapers
├── docs/ # Installation, roadmap, voice architecture docs
├── packaging/
│ ├── archiso/ # Arch ISO profile (profiledef, packages, airootfs)
│ │ ├── airootfs/ # Root filesystem overlay
│ │ │ ├── etc/ # System config (hostname, hosts, locale, fonts)
│ │ │ └── usr/local/bin/ # samios CLI
│ │ ├── grub/ # GRUB boot config
│ │ └── profiledef.sh # Arch ISO metadata
│ ├── packages/
│ │ └── samios-branding/ # PKGBUILD for branding package
│ └── scripts/
│ ├── samios-installer.sh # Automated disk installer
│ ├── samios-desktop-setup.sh # WSL desktop environment setup
│ ├── voice-bridge.py # Voice command bridge (prototype)
│ └── samios-voice.service # systemd unit for voice bridge
├── tests/ # Bash test suite (test_helper.sh + test_*.sh)
└── .gitignore
Voice Integration (Phase 4)
SamiOS is being developed with voice-first interaction as the north star:
voice-bridge.py— Prototype bridge connecting SamiType STT to system commands- Supports command mode ("Computer, open Firefox") and dictation mode
- Routes to Hermes for complex queries
- See
docs/voice-integration-architecture.mdfor the full design
CI/CD
Gitea Actions pipeline runs on every push to master:
- Shellcheck on all shell scripts
- Python AST validation (voice-bridge.py)
- VERSION SSOT consistency check (canonical = mirror = PKGBUILD pkgver)
- Arch ISO profile structure validation
- Full test suite (
make check)
Branding
- Logo: Cobalt blue pyramid (#1424CE) with face
- Fonts: Sami Grotesk (primary), Sami Sans (secondary) — excludes "7777" branding fonts
- Boot: Custom GRUB theme with SamiOS colors
- Login: SDDM theme with cobalt blue pyramid wallpaper
License
GPL3