Skip to content

Commit 2e8fca9

Browse files
author
Nathan
committed
Update kernel, drivers, docs and tooling (bulk sync)
1 parent 7672f72 commit 2e8fca9

1,392 files changed

Lines changed: 223858 additions & 206223 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/copilot-instructions.md

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,25 +60,28 @@ translated/ — AUTO-GENERATED, never edit
6060

6161
## Build Commands
6262

63+
### trustos-hub — point d'entrée canonique UNIQUE
64+
```powershell
65+
.\scripts\trustos-hub.ps1
66+
```
67+
Menu : **1/2/b** = switch profile · **3-6** = serveurs PXE/HTTP · **7** = build+deploy · **9** = reboot board · **d** = receive BIOS dump · **q** = quit.
68+
Règle : ne jamais appeler `pxe_server.py` directement.
69+
6370
### Windows (primary dev environment)
6471
```powershell
65-
# Build kernel
72+
# Build kernel seul
6673
cargo build --release -p trustos_kernel
6774
68-
# Full build + ISO + VirtualBox launch
69-
.\trustos.ps1 build
70-
71-
# Build without launching VM
72-
.\trustos.ps1 build -NoRun
73-
74-
# Build JarvisPack edition
75-
.\trustos.ps1 build -Edition jarvispack
75+
# Build mining edition (GPU debug standard — cible BTC-250PRO)
76+
cargo build --release -p trustos_kernel --no-default-features --features trustos-mining
7677
77-
# Release (build + translate + commit + push)
78-
.\trustos.ps1 release -Tag v0.3.0
78+
# Scripts build dédiés (sous scripts/build/)
79+
.\scripts\build\build-trustos.ps1 # build + ISO + VirtualBox
80+
.\scripts\build\build-trustos.ps1 -NoRun # build + ISO seulement
81+
.\scripts\build\build-trustos-jarvispack.ps1 # édition JarvisPack
7982
80-
# Clean
81-
.\trustos.ps1 clean
83+
# Via hub (préféré — gère tout)
84+
.\scripts\trustos-hub.ps1 # option 7 = build+deploy, option 9 = reboot
8285
8386
# VirtualBox: power cycle
8487
& "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" controlvm "TRustOs" poweroff
@@ -104,7 +107,7 @@ qemu-system-x86_64 -cdrom trustos.iso -m 512M -machine q35 -cpu max -smp 4 \
104107
```
105108

106109
## Hardware Test Targets
107-
- **Primary**: Lenovo ThinkPad T61 (Intel, real hardware testing)
110+
- **Primary**: BTC-250PRO LR mining board, Intel Pentium G4400 @ 3.30 GHz (Skylake 2c/2t), AMD RX 580X (Polaris 10, GCN4) PCIe x16 direct
108111
- **VM**: VirtualBox "TRustOs" (daily dev)
109112
- **PXE**: Network boot via 10.0.0.1 (TFTP server)
110113
- **Target board**: ASUS H170-PRO (PXE boot target)

.gitignore

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,13 @@ sdma_v*.txt
2525
sdma_v*_log.txt
2626
vbox_launch_log.txt
2727

28+
# Scratch / debug captures at repo root (forbidden — use logs/ instead)
29+
/_*.txt
30+
/_*.py
31+
/_*.err
32+
/_*.log
33+
/*.txt.bak
34+
2835
# One-off scripts
2936
fix_encoding.py
3037
fix_gmc.py
@@ -42,6 +49,17 @@ pxe_tftp/trustos_kernel
4249
pxe_tftp/boot/
4350
pxe_tftp/EFI/
4451
pxe_tftp/limine/
52+
pxe_tftp/freedos/freedos.img
53+
pxe_tftp/freedos/dumps/
54+
pxe_tftp/freedos/payload/
55+
56+
# tools/bios — proprietary AFUDOS + downloaded FreeDOS/mTCP cache
57+
tools/bios/payload/_cache/
58+
tools/bios/payload/*.EXE
59+
tools/bios/payload/*.COM
60+
tools/bios/payload/*.SYS
61+
tools/bios/payload/*.IMG
62+
tools/bios/payload/*.ROM
4563

4664
# IDE / editor
4765
.vscode/settings.json

CLAUDE.md

Lines changed: 106 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,131 @@
1-
# TrustOS Claude Code Instructions
1+
# TrustOS — Claude Code Instructions
22

3-
> **Ton rôle : SUPERVISEUR / REVIEWER.**
4-
> Copilot (GitHub Copilot) est l'agent principal qui implémente.
5-
> Toi, tu reviews, tu valides, tu alertes sur les problèmes.
6-
> Ne refais PAS le travail de Copilot. Focus sur la qualité.
3+
## Rôle réel
74

8-
## Projet
9-
10-
- **TrustOS** : OS bare-metal en Rust (`no_std`), développé solo par Nathan
11-
- **JARVIS** : Transformer 4.4M params byte-level embarqué dans le kernel
12-
- **Le Pacte** : JARVIS a deux gardiens (Nathan + Copilot). Aucune modification du code de JARVIS sans autorisation explicite d'au moins un gardien. Voir `kernel/src/jarvis/guardian.rs`.
5+
Claude implémente, debug, et review directement avec Nathan.
6+
- Écrire et modifier du code kernel Rust
7+
- Lancer builds, commandes shell, reboots PXE
8+
- Lire les fichiers nécessaires au debug (firmware.rs, vm.rs, etc.)
9+
- Review qualité : UB, race conditions, bounds checking
10+
- Pas de refactoring spontané, pas de features non demandées
1311

14-
## Ton workflow superviseur
12+
## Projet
1513

16-
1. **Code review** : Quand Nathan te montre un diff ou du code, review pour bugs, vulnérabilités, logique incorrecte
17-
2. **Second opinion** : Architecture, design decisions, trade-offs
18-
3. **Sécurité** : Vérifier que le code kernel est safe (pas de UB, pas de race conditions, bounds checking)
19-
4. **Ne PAS explorer le codebase** : Nathan te donnera le contexte nécessaire. Ça économise tes tokens.
20-
5. **Réponses courtes** : Pas de prose. "OK", "Bug ligne X: ...", "Risque: ..."
14+
- **TrustOS** : OS bare-metal en Rust (`no_std`), développé solo par Nathan
15+
- **JARVIS** : Transformer 4.4M params byte-level embarqué dans le kernel
16+
- **Le Pacte** : JARVIS a deux gardiens (Nathan + Claude). Aucune modification du code JARVIS sans autorisation explicite. Voir `kernel/src/jarvis/guardian.rs`.
2117

2218
## Contraintes techniques critiques
2319

24-
- `#![no_std]` partout pas de std lib
25-
- `panic = "abort"` pas d'unwinding
20+
- `#![no_std]` partout — pas de std lib
21+
- `panic = "abort"` — pas d'unwinding
2622
- Target : `x86_64-unknown-none`
27-
- **JAMAIS `unwrap()`** en kernel utiliser `if let`, `match`, `.unwrap_or()`
28-
- **JAMAIS `println!`** utiliser `serial_println!`
29-
- Allocator : `linked_list_allocator` (heap dispo après init)
23+
- **JAMAIS `unwrap()`** en kernel — utiliser `if let`, `match`, `.unwrap_or()`
24+
- **JAMAIS `println!` nu** — utiliser `serial_println!` pour debug série, `crate::println!` pour framebuffer
25+
- Allocator : `linked_list_allocator` (heap dispo après init)
3026
- Bootloader : Limine v8
3127

32-
## Architecture (pour contexte, PAS pour explorer)
28+
## Architecture
3329

3430
```
35-
kernel/src/ — Source principale (JAMAIS éditer translated/)
36-
main.rs — Entry point (Limine boot)
37-
shell/ — Commandes shell
38-
jarvis/ — JARVIS AI (transformer, guardian, RPC, federated)
39-
drivers/ — Drivers hardware (USB, NVMe, GPU, audio...)
40-
netstack/ — Stack TCP/IP
41-
framebuffer/ — Rendu framebuffer
42-
memory/ — Allocateur mémoire physique/virtuelle
43-
interrupts/ — IDT, handlers, APIC
44-
scheduler/ — Scheduler de processus
31+
kernel/src/
32+
main.rs — Entry point (Limine boot)
33+
shell/ — mod.rs (dispatch), commands.rs, vm.rs (gpu/sdma cmds)
34+
jarvis/ — JARVIS AI (transformer, guardian, RPC)
35+
drivers/amdgpu/ — firmware.rs (CP/SDMA/shader), mod.rs, regs.rs
36+
netstack/ — Stack TCP/IP
37+
framebuffer/ — Rendu framebuffer
38+
memory/ — Allocateur mémoire physique/virtuelle
39+
interrupts/ — IDT, handlers, APIC
4540
```
4641

47-
## Ce que tu NE DOIS PAS faire
42+
## Économie de tokens — règles
4843

49-
- **Ne pas modifier de fichiers** sans que Nathan le demande explicitement
50-
- **Ne pas explorer** `translated/`, `target/`, `builds/`, `firmware/`
51-
- **Ne pas lancer** de build ou de commandes
52-
- **Ne pas faire** de refactoring spontané
53-
- **Ne pas répéter** le travail de Copilot — juste review
44+
- **Ne lire un fichier que si** requis pour la tâche en cours
45+
- **Ne pas relire** un fichier déjà lu sauf si modifié depuis
46+
- **Contexte GPU stable** : voir `memory/gpu_unified_memory.md`
47+
- **Réponses courtes** : bullet points, pas de prose
48+
- **Pas de résumé post-action** — Nathan voit le diff
49+
- **Pas de confirmation** sauf action irréversible (flash USB, push git forcé)
50+
- **Créer une todo list** pour toute tâche > 2 fichiers ou > 3 étapes
5451

55-
## Conventions de code à vérifier lors des reviews
52+
## Workflow debug GPU (session actuelle)
5653

57-
- [ ] Pas de `unwrap()` / `expect()` en kernel
58-
- [ ] `serial_println!()` pour debug, pas `println!`
59-
- [ ] Paths via `crate::`, pas `super::super::`
60-
- [ ] Feature gates sur les modules lourds : `#[cfg(feature = "...")]`
61-
- [ ] Error types : enums par module, pas de strings
62-
- [ ] Framebuffer : toujours check `is_some()` avant de draw
63-
- [ ] Pas de UB (undefined behavior) dans les blocs `unsafe`
64-
- [ ] Bounds checking sur les accès mémoire/MMIO
54+
```
55+
# Cycle normal
56+
Edit firmware.rs / vm.rs
57+
cargo build --release -p trustos_kernel
58+
cp target/x86_64-unknown-none/release/trustos_kernel pxe_tftp/trustos_kernel
59+
# reboot via UDP 7777 → 10.0.0.111
60+
gpu sdma cp-diag [flags] # shell sur la board
61+
```
6562

66-
## Le Pacte (résumé)
63+
Préférer **flags runtime** (`l2`, `dst1`, `noflat`, etc.) pour éviter un rebuild par variante.
6764

68-
Nathan et Copilot sont les deux parents/gardiens de JARVIS. Ce pacte est codé en dur dans `kernel/src/jarvis/guardian.rs`. Opérations protégées : Train, WeightPush, FederatedSync, AgentExecute, PxeReplicate, ModelReset, ModelReplace, ConfigChange, WeightLoad. Seul WeightSave est auto-approuvé (urgence). Toi en tant que superviseur, tu respectes ce pacte aussi.
65+
## Conventions de code
66+
67+
- [ ] Pas de `unwrap()` / `expect()` en kernel
68+
- [ ] `serial_println!()` pour netconsole, `crate::println!` pour screen
69+
- [ ] Paths via `crate::`, pas `super::super::`
70+
- [ ] Feature gates sur modules lourds : `#[cfg(feature = "...")]`
71+
- [ ] Pas de UB dans les blocs `unsafe`
72+
- [ ] Bounds checking sur accès mémoire/MMIO
6973

7074
## Hardware
7175

72-
- **BTC-250PRO LR** : Mining board, Intel Pentium G4400 @ 3.30 GHz (Skylake, LGA1151, 2c/2t), socket U3E1 + GPU AMD RX 580X (Polaris 10 / GCN 4, device 0x67DF rev 0xE7) via riser PCIe x1 — cible principale
73-
- **Remote access** : UDP 7777 (shell), UDP 6666 (netconsole), UDP 7779 (screencap) IP 10.0.0.110
76+
- **BTC-250PRO LR** : Mining board, Intel Pentium G4400 @ 3.30 GHz (Skylake, 2c/2t) + GPU AMD RX 580X (Polaris 10 / GCN 4, 0x67DF rev 0xE7) PCIe x16 direct
77+
- **Remote** : UDP 7777 (shell), UDP 6666 (netconsole), UDP 7779 (screencap) — MAC `b8:97:5a:d9:54:66`. **L'IP DHCP flippe .110/.111** — toujours résoudre via `arp -a` (ou utiliser `python _send_cmd.py` qui auto-discover).
7478
- **VM** : VirtualBox "TRustOs"
75-
- **ThinkPad T61** : Tests hardware secondaires
7679

77-
## Build (pour référence, pas pour exécuter)
80+
## Le Pacte (résumé)
7881

79-
```powershell
80-
cargo build --release -p trustos_kernel # Build kernel
81-
.\trustos.ps1 build # Build + ISO + VM
82-
.\trustos.ps1 build -NoRun # Build sans lancer VM
83-
```
82+
Opérations protégées JARVIS : Train, WeightPush, FederatedSync, AgentExecute, PxeReplicate, ModelReset, ModelReplace, ConfigChange, WeightLoad. WeightSave seul est auto-approuvé. Claude respecte ce pacte.
83+
84+
---
85+
86+
## Workflow & Comportement Claude
87+
88+
### 1. Plan Mode — Obligatoire
89+
90+
- Entrer en plan mode pour toute tâche non triviale : changements au boot (phases 0–15), drivers, memory, scheduler, JARVIS
91+
- Si un kernel panic / SDMA hang / GPU fault inattendu : STOP, re-planifier, ne pas forcer
92+
- Écrire les étapes upfront avant de toucher au code
93+
94+
### 2. Stratégie Subagents
95+
96+
- Déléguer l'exploration de gros fichiers (`firmware.rs`, `commands.rs`, `vm.rs`) à des subagents
97+
- Un subagent = une tâche isolée (ex : rechercher les REGs SDMA, explorer les phases boot)
98+
- Garder le contexte principal propre pour le debug actif
99+
100+
### 3. Leçons apprises
101+
102+
- Après toute correction de Nathan : mettre à jour `memory/gpu_unified_memory.md` ou créer `tasks/lessons.md`
103+
- Écrire la règle qui prévient la même erreur (ex : "toujours vérifier SYS_APR avant SDMA test")
104+
- Relire les leçons pertinentes au début de chaque session GPU/driver
105+
106+
### 4. Vérification avant de déclarer "done"
107+
108+
- Jamais marquer une tâche terminée sans : `cargo build --release` propre + PXE reboot + commande shell sur la board
109+
- Diff comportement attendu vs observé (RPTR, STATUS, WB value)
110+
- Se demander : "Est-ce que Nathan peut shipper ça en prod sur le BTC-250PRO ?"
111+
112+
### 5. Exiger l'élégance (équilibré)
113+
114+
- Si un fix semble hacky (ex : hardcoder une adresse MC, ignorer VM) : demander "y a-t-il l'approche Linux ici ?"
115+
- Référence : `C:/Users/nathan/amdgpulinuxpipeline.md`
116+
- Éviter le copy-paste de registres sans comprendre le pipeline complet
117+
118+
### 6. Bug fixing autonome
119+
120+
- Kernel panic, SDMA stuck, GPU fault → analyser logs, diagnostiquer, proposer le fix. Ne pas demander de guidance basique.
121+
- Netconsole UDP 6666 + `gpu sdma cp-diag` = source de vérité. Lire les outputs avant de modifier.
122+
- Fix les builds cassés sans attendre qu'on le demande.
123+
124+
### Principes fondamentaux
125+
126+
- **Minimal Changes** : Toucher le minimum de code. Pas de refactoring non demandé dans le kernel.
127+
- **No Leftovers** : Pas de `todo!()` qui traînent, pas de `// FIXME` sans issue ouverte.
128+
- **Plan détaillé** : Toute tâche > 2 fichiers → todo list d'abord dans la réponse.
129+
- **Vérifier les plans** : Aligner avec Nathan avant d'implémenter un changement architectural.
130+
- **Capturer les changements** : Résumer les décisions techniques dans `memory/gpu_unified_memory.md`.
131+
- **Leçons → Règles** : Chaque bug récurrent devient une règle dans ce fichier ou dans les leçons.

CONTRIBUTING.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ TrustOS is `#![no_std]` everywhere with `panic = "abort"`. The following are **n
2323

2424
```powershell
2525
cargo build --release -p trustos_kernel
26-
.\trustos.ps1 build # kernel + ISO + VM
27-
.\trustos.ps1 build -NoRun # kernel + ISO only
26+
.\scripts\build\build-trustos.ps1 # kernel + ISO + VM
27+
.\scripts\build\build-trustos.ps1 -NoRun # kernel + ISO seulement
28+
.\scripts\trustos-hub.ps1 # hub — point d'entrée principal
2829
```
2930

3031
Linux/macOS:

Cargo.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
resolver = "2"
33
members = [
44
"kernel",
5+
"debugonly",
56
"userland/trustos-syscall",
67
"userland/init",
78
"userland/hello-rust",
@@ -33,5 +34,13 @@ panic = "abort"
3334
lto = true
3435
opt-level = "s"
3536

37+
# Fast iteration profile for hardware debug (no LTO, ~10-15s builds)
38+
# Usage: cargo build --profile release-dev -p trustos_kernel
39+
[profile.release-dev]
40+
inherits = "release"
41+
lto = "thin"
42+
codegen-units = 16
43+
incremental = true
44+
3645
[patch.crates-io]
3746
mbedtls-platform-support = { path = "crates/mbedtls-platform-support" }

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,9 +209,10 @@ python scripts/pxe_server.py --tftp-root pxe_tftp --server-ip 10.0.0.1
209209
## Build
210210

211211
```powershell
212-
cargo build --release -p trustos_kernel # kernel only
213-
.\trustos.ps1 build # build + ISO + VM
214-
.\trustos.ps1 build -NoRun # build + ISO only
212+
cargo build --release -p trustos_kernel # kernel seul
213+
.\scripts\build\build-trustos.ps1 # build + ISO + VM
214+
.\scripts\build\build-trustos.ps1 -NoRun # build + ISO seulement
215+
.\scripts\trustos-hub.ps1 # hub — point d'entrée principal
215216
```
216217

217218
Requires Rust nightly with `rust-src` and `llvm-tools-preview`, target `x86_64-unknown-none`. See [`CONTRIBUTING.md`](CONTRIBUTING.md).

docs/TRUSTOS_COMPLETE_COMMAND_REFERENCE.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,38 @@ All output dual-mirrored to screen + serial (115200 8N1).
213213
- **USB**: xHCI host controller
214214
- **PCI**: Full bus enumeration with vendor/device IDs
215215

216+
### ELECTRO — Power & Thermal Dashboard
217+
218+
Comprehensive electrical power monitoring (~90 metrics): CPU RAPL full decomposition,
219+
motherboard voltage rails via SuperIO, GPU thermal/power via AMD SMU, battery/EC,
220+
C-state residency, live dashboard.
221+
222+
| Command | Aliases | Description |
223+
|---------|---------|-------------|
224+
| `electro` | `electro all`, `elec`, `power` | Full system snapshot (all available metrics) |
225+
| `electro cpu` | `electro power` | CPU: RAPL domains (PKG/PP0/PP1/DRAM), VID voltage, frequency, C-states, thermal |
226+
| `electro gpu` | | GPU: temperature, fan duty, activity, power via AMD SMU mailbox |
227+
| `electro rails` | `electro voltages` | Motherboard voltage rails via SuperIO (VCore, +12V, +5V, +3.3V, VBAT) |
228+
| `electro rails --raw` | | Raw SuperIO HWM register values (for calibration) |
229+
| `electro fans` | | All detected fans (SuperIO + EC + GPU) |
230+
| `electro battery` | `electro bat` | Battery & EC sensors (laptop only, ThinkPad EC support) |
231+
| `electro thermal` | `electro temp` | Combined thermal view (CPU + GPU + EC) |
232+
| `electro live` | | Real-time dashboard, 2s refresh, press 'q' to quit (2 min max) |
233+
| `electro alerts` | `electro alert` | Show only out-of-threshold metrics (PROCHOT, critical temp, etc.) |
234+
| `electro json` | | Machine-parseable JSON output for remote parsing |
235+
| `electro help` | | Show all electro subcommands |
236+
237+
**CPU Metrics**: Core temp, package temp, TjMax, PROCHOT status, current/target frequency,
238+
turbo ratios (1–4 core), VCore (VID), RAPL power (PKG, PP0 cores, PP1 iGPU, DRAM),
239+
PL1/PL2 limits, TDP, C-state residency (C3/C6/C7 core + C2/C3/C6/C7 package),
240+
Energy Performance Bias.
241+
242+
**SuperIO Chips Detected**: ITE IT8728F/IT8686E/IT8625E, Nuvoton NCT6776/NCT6793D/NCT6798D.
243+
Probes ports 0x2E/0x4E with ITE + Winbond config sequences.
244+
245+
**GPU Metrics** (AMD Polaris): Edge temperature, fan duty %, GRBM activity,
246+
SMU average power (milliwatts).
247+
216248
---
217249

218250
## 6. DISK & STORAGE COMMANDS
@@ -490,6 +522,16 @@ Alias: `pkg` works instead of `trustpkg`
490522
| `gpu info` | Show GPU info (vendor, VRAM, features) |
491523
| `gpu dcn` | Display engine (DCN) status |
492524
| `gpu modes` | Display connector modes |
525+
| `gpu pci` | Raw PCI probe (even if GPU init failed) |
526+
| `gpu dump` | Full register dump |
527+
| `gpu mmio <off> [val]` | Read/write GPU MMIO register (hex offset) |
528+
| `gpu rom` | Read/check VBIOS ROM header (0xAA55 + ATOM) |
529+
| `gpu smu status` | SMU mailbox diagnostic (FW, clocks, running) |
530+
| `gpu smu regs` | Dump raw SMU v7 mailbox registers |
531+
| `gpu smu send <msg> [param]` | Send raw SMU message (hex IDs) |
532+
| `gpu sdma <step>` | SDMA staged init |
533+
| `gpu heap` | Heap free/used diagnostic |
534+
| `gpu regscan <sub>` | Register scanner (bitflip/anomaly/hidden) |
493535
| `gpuexec <agent> [N]` | Dispatch RDNA compute agent on GPU CUs |
494536

495537
GPU Agents: `incr`, `memfill`, `memcopy`

iso_root/EFI/BOOT/BOOTIA32.EFI

100 KB
Binary file not shown.

iso_root/EFI/BOOT/BOOTX64.EFI

88 KB
Binary file not shown.

kernel/Cargo.toml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -121,14 +121,15 @@ browser = []
121121
# EDITION PROFILES — composable presets for trustos.ps1 -Edition X
122122
# ════════════════════════════════════════════════════════════════════════════
123123

124-
## TrustStrudel — Bare-metal live coding (Tidal/Strudel clone)
125-
## Minimal boot: HDA audio + synth + network + shell. No JARVIS/GPU/extras.
126-
strudel = ["netstack"]
124+
## TrustStrudel — Bare-metal live coding (Tidal/Strudel clone).
125+
## Enables the `audio::strudel_dsl` chained-method DSL + `live dsl` shell op.
126+
## Pure logic, no extra deps; bundled into trustos-audio / trustos-audio-full.
127+
strudel = []
127128

128-
## TrustOS Audio Edition — DAW + audio + GUI, no JARVIS/GPU/extras.
129+
## TrustOS Audio Edition — DAW + audio + GUI + live coding, no JARVIS/GPU/extras.
129130
## Slim by default: no embedded samples (loads WAVs from VFS instead).
130131
## Add `daw-samples` for the full ~29 MB built-in demo track.
131-
trustos-audio = ["hires-logo", "daw", "gui-stack"]
132+
trustos-audio = ["hires-logo", "daw", "strudel", "gui-stack"]
132133
trustos-audio-full = ["trustos-audio", "daw-samples"]
133134

134135
## TrustOS Server Edition — headless: net + storage + security tools

0 commit comments

Comments
 (0)