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.
117 lines
4.3 KiB
Markdown
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
|