Add dictation mode design (LibreOffice + any-app voice typing), developer guide
SamiOS CI / lint-and-test (push) Successful in 6s
SamiOS CI / lint-and-test (push) Successful in 6s
- Dictation mode: separate from command mode, types directly into focused app - Punctuation/formatting voice commands (new paragraph, comma, scratch that) - Floating correction bar with low-confidence highlighting - Technical implementation sketch (xdotool/ydotool integration) - Developer guide with project structure, build commands, font policy
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
# SamiOS Developer Guide
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Prerequisites
|
||||
- Arch Linux (or WSL Arch) with `base-devel`, `git`, `archiso`
|
||||
- Gitea account on `git.sami`
|
||||
|
||||
### Clone
|
||||
```bash
|
||||
git clone https://git.sami/sami7777/samios.git
|
||||
cd samios
|
||||
```
|
||||
|
||||
### Project Structure
|
||||
```
|
||||
samios/
|
||||
├── branding/ # Visual identity assets
|
||||
│ ├── icons/ # Square + launcher icons (PNG + SVG)
|
||||
│ ├── logos/ # Full lockups (face + pyramid)
|
||||
│ ├── wallpapers/ # Desktop wallpapers
|
||||
│ ├── themes/ # SDDM theme
|
||||
│ ├── grub-theme/ # GRUB boot theme
|
||||
│ └── README.md # Brand guidelines
|
||||
├── docs/ # Documentation
|
||||
│ ├── installation.md # User install guide
|
||||
│ ├── roadmap.md # Development roadmap
|
||||
│ ├── voice-integration-architecture.md
|
||||
│ └── voice-hermes-pipeline.md
|
||||
├── packaging/
|
||||
│ ├── archiso/ # ISO build profile
|
||||
│ │ ├── airootfs/ # Root filesystem overlay
|
||||
│ │ ├── packages.x86_64 # Package list
|
||||
│ │ ├── profiledef.sh # ISO profile
|
||||
│ │ └── build.sh # Build script
|
||||
│ ├── packages/ # Custom PKGBUILDs
|
||||
│ │ └── samios-branding/
|
||||
│ └── scripts/ # Setup and installer scripts
|
||||
│ ├── samios-installer.sh
|
||||
│ ├── samios-desktop-setup.sh
|
||||
│ └── kdeglobals-samios
|
||||
├── tests/ # Test suite
|
||||
│ ├── run_tests.sh
|
||||
│ ├── test_profiledef.sh
|
||||
│ ├── test_packages.sh
|
||||
│ └── ...
|
||||
├── Makefile # Build/test/lint targets
|
||||
└── .gitea/workflows/ # CI pipeline
|
||||
```
|
||||
|
||||
## Development Commands
|
||||
|
||||
```bash
|
||||
make test # Run test suite
|
||||
make lint # Shellcheck on all scripts
|
||||
make check # Full CI (lint + test)
|
||||
make build # Build ISO (requires archiso)
|
||||
make clean # Clean build artifacts
|
||||
```
|
||||
|
||||
## Building the ISO
|
||||
|
||||
```bash
|
||||
# Install archiso
|
||||
sudo pacman -S archiso
|
||||
|
||||
# Build
|
||||
cd packaging/archiso
|
||||
sudo ./build.sh
|
||||
|
||||
# Output
|
||||
ls out/samios-*.iso
|
||||
```
|
||||
|
||||
## Font Policy
|
||||
|
||||
- **Default UI font:** Sami Grotesk (Helvetica-like sans-serif)
|
||||
- **Secondary font:** Sami Sans
|
||||
- **Excluded:** Any fonts with "7777" in the filename (personal branding)
|
||||
- Font config: `packaging/archiso/airootfs/etc/fonts/conf.d/10-samios-fonts.conf`
|
||||
|
||||
## Adding Packages
|
||||
|
||||
Edit `packaging/archiso/packages.x86_64` and add the package name. Test with:
|
||||
```bash
|
||||
make check
|
||||
```
|
||||
|
||||
## Modifying Branding
|
||||
|
||||
1. Place new assets in `branding/` (follow existing structure)
|
||||
2. Update `branding/README.md` with new entries
|
||||
3. If changing icons, generate all sizes from the SVG source
|
||||
4. Test the ISO build
|
||||
|
||||
## Voice Integration
|
||||
|
||||
See `docs/voice-hermes-pipeline.md` for the SamiType voice command architecture.
|
||||
|
||||
## CI/CD
|
||||
|
||||
Gitea Actions workflow at `.gitea/workflows/ci.yml` runs on every push:
|
||||
- Shellcheck on all `.sh` files
|
||||
- Profile structure validation
|
||||
- Test suite execution
|
||||
|
||||
## Release Process
|
||||
|
||||
1. Update version in `profiledef.sh`, `samios` CLI, and `README.md`
|
||||
2. Update `docs/roadmap.md` with completed items
|
||||
3. Commit: `git commit -m "vX.Y.Z: Description"`
|
||||
4. Tag: `git tag vX.Y.Z`
|
||||
5. Push: `git push origin master --tags`
|
||||
Reference in New Issue
Block a user