Files
samios/README.md
T
Sami Ahmed 9c63557e62
SamiOS CI / lint-and-test (push) Failing after 10s
[grade=D] Sprint 1: .gitignore, test_installer.sh, test_voice_bridge.sh, README, roadmap, desktop packages, CI improvements
- .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.
2026-08-12 02:35:07 -07:00

117 lines
4.3 KiB
Markdown

# SamiOS
A custom Arch Linux distribution designed as a Windows replacement, built around voice-first interaction.
## Quick Start
```bash
# 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:
```bash
# 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.md` for the full design
## CI/CD
Gitea Actions pipeline runs on every push to master:
1. Shellcheck on all shell scripts
2. Python AST validation (voice-bridge.py)
3. VERSION SSOT consistency check (canonical = mirror = PKGBUILD pkgver)
4. Arch ISO profile structure validation
5. 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