Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
60cab0b
feat(ui): scroll wheel, Settings UI, boot spinner, adaptive frame pump
squirelboy360 Jun 7, 2026
45bd35b
docs: native engine port plan + committed direction
squirelboy360 Jun 7, 2026
66f4d76
docs(arch): document target native architecture (post-port)
squirelboy360 Jun 7, 2026
5277040
docs(port): Phase 0 done (baseline engine builds) + Phase 1 port-surf…
squirelboy360 Jun 7, 2026
1a60a28
engine-port: reproducible engine-build flow for contributors
squirelboy360 Jun 7, 2026
a3f6ecd
engine-port: Phase 1 done — 'oscortex' GN target configures
squirelboy360 Jun 7, 2026
d327713
chore: remove remnants from the public repo (no scratch, no dead AOT)
squirelboy360 Jun 7, 2026
e363933
engine-port: Phase 2a — OSCortex FML backend compiles into the engine
squirelboy360 Jun 7, 2026
d7305af
docs(port): Phase 3 AOT de-risked (one-tree gen_snapshot) + defer Dar…
squirelboy360 Jun 7, 2026
519ba29
engine-port: Phase 2 DONE — OSCortex-backend engine links from source
squirelboy360 Jun 7, 2026
ef451ff
engine-port: artifact distribution — fetch (download) vs publish (bui…
squirelboy360 Jun 7, 2026
c1ca4d7
engine-port: one-command R2 setup (wrangler) for artifact hosting
squirelboy360 Jun 7, 2026
91cc5f3
engine-port: host artifacts on GCS (public bucket), pipeline verified
squirelboy360 Jun 7, 2026
50870d9
engine-port: host artifacts on GitHub Releases (free, zero egress)
squirelboy360 Jun 7, 2026
8fcace5
engine-port: Phase 3 — release/AOT engine built + published + fetch v…
squirelboy360 Jun 7, 2026
c7d131f
engine-port: AOT snapshot COMPILES — the old dead-end is gone
squirelboy360 Jun 7, 2026
8a67667
engine-port: Phase 3 COMPLETE — shell renders from AOT on OSCortex
squirelboy360 Jun 7, 2026
384c421
fix(ps2): disable IntelliMouse 4-byte mode — it broke pointer input
squirelboy360 Jun 7, 2026
4c24e69
engine-port: remove input diagnostics (no remnants) + app-AOT script
squirelboy360 Jun 8, 2026
bb35a0e
embedder: load each app's own AOT libapp.so on launch
squirelboy360 Jun 8, 2026
55f4957
kernel: remove COND_PENDING_SIGNALS resurrection (fix cond livelock)
squirelboy360 Jun 8, 2026
5a12775
embedder: pass dlopen paths without trailing NUL
squirelboy360 Jun 8, 2026
7eef995
kernel: default serial log level to Error (warmup fix)
squirelboy360 Jun 8, 2026
28d1d23
kernel: capture user GPRs eagerly at syscall entry (fix register leak)
squirelboy360 Jun 8, 2026
f0a67b8
embedder: schedule a frame immediately on input (snappier reaction)
squirelboy360 Jun 8, 2026
da2f1d8
compositor: cut per-frame full-screen passes ~5x (65ms->5ms blit)
squirelboy360 Jun 8, 2026
207d649
sched: gate shell baton/input shortcuts on foreground-exclusive group
squirelboy360 Jun 8, 2026
01dcba3
embedder: bind the Flutter platform-channel contract
squirelboy360 Jun 8, 2026
a0d3b69
os: provide real platform capabilities behind the Flutter contract
squirelboy360 Jun 8, 2026
9a97cc2
merge: text input + platform-channel contract + real OS capabilities
squirelboy360 Jun 8, 2026
d543484
embedder: fix hover-freeze — de-dupe cursor syscall + disable semantics
squirelboy360 Jun 9, 2026
1a37e6a
fix(shell): use activeThumbColor (analyze) + pure-black background
squirelboy360 Jun 9, 2026
62cb11e
Flesh out Cortex PID-0 syscalls and stabilize embedder vsync (#1)
squirelboy360 May 29, 2026
c1f6e58
Fix P9 cave diagnostics in engine_patch (#2)
squirelboy360 May 29, 2026
c6ff8e9
Fix P9 cave, libm syscalls, vfs_stat, and README (#3)
SudoGhostUser May 30, 2026
f61fc06
Fix p9 cave (#4)
sqrldev-404 Jun 5, 2026
c755879
Fix shell render crash: register UI task queue via merged task runner
squirelboy360 Jun 5, 2026
fc7b7e4
fix(engine_patch): write PostLoad bypasses at file offsets, not vaddrs
squirelboy360 Jun 6, 2026
9da2d16
feat(engine_patch): clamp anomalous GetInstructionsAt offset
squirelboy360 Jun 6, 2026
e687c44
feat: switch OSCortex from AOT to JIT mode (the correct configuration)
squirelboy360 Jun 6, 2026
e93b312
fix(mm): don't unmap library regions on madvise(MADV_DONTNEED)
squirelboy360 Jun 6, 2026
e788fe6
fix(mm,pthread): madvise only unmaps demand-pageable anon; derive clo…
squirelboy360 Jun 6, 2026
9d64ea3
fix(process): thread teardown must not unmap shared/main-stack regions
squirelboy360 Jun 6, 2026
ad83009
fix(pthread): pthread_join must return 0, not the joined thread's exi…
squirelboy360 Jun 6, 2026
9ffa63b
feat(embedder): render! use engine-default task runners + internal vsync
squirelboy360 Jun 6, 2026
4429b9e
chore: working state — OSCortex renders Flutter UI on bare metal
squirelboy360 Jun 6, 2026
a71b565
fix(sched,sync): fair round-robin (no hardcoded pids), cond-yield, On…
squirelboy360 Jun 6, 2026
f17c6cb
wip(embedder,vm): single-threaded Dart GC via --dart-flags; render pr…
squirelboy360 Jun 6, 2026
98e5c49
feat: OSCortex Flutter shell UI renders end-to-end (smp=1)
squirelboy360 Jun 6, 2026
40fe03d
fix(smp): gate user-thread execution to the BSP — multi-core no longe…
squirelboy360 Jun 6, 2026
7884a48
fix(ps2): resync mouse packet accumulator on ACK/resend bytes
squirelboy360 Jun 6, 2026
f281ed8
fix(embedder): pump platform task runner — platform channels now deliver
squirelboy360 Jun 6, 2026
3225d6e
chore: stop tracking build/runtime artifacts (initramfs.tar, vdisk.img)
squirelboy360 Jun 6, 2026
4322224
wip(multi-app): launched apps open + render their own UI (one crash l…
squirelboy360 Jun 6, 2026
a4e83f6
wip(multi-app): drop AOT load from launch — app engine now loads at 0…
squirelboy360 Jun 6, 2026
02df08b
feat(sched): foreground-exclusive scheduling — launched apps render f…
squirelboy360 Jun 6, 2026
a3de164
feat(ui): scroll wheel, Settings UI, boot spinner, adaptive frame pump
squirelboy360 Jun 7, 2026
46a18d7
docs: native engine port plan + committed direction
squirelboy360 Jun 7, 2026
1ecb688
docs(arch): document target native architecture (post-port)
squirelboy360 Jun 7, 2026
779e077
docs(port): Phase 0 done (baseline engine builds) + Phase 1 port-surf…
squirelboy360 Jun 7, 2026
b28c54e
engine-port: reproducible engine-build flow for contributors
squirelboy360 Jun 7, 2026
4788570
engine-port: Phase 1 done — 'oscortex' GN target configures
squirelboy360 Jun 7, 2026
24960d9
chore: remove remnants from the public repo (no scratch, no dead AOT)
squirelboy360 Jun 7, 2026
0aa99a0
engine-port: Phase 2a — OSCortex FML backend compiles into the engine
squirelboy360 Jun 7, 2026
65cc4fa
docs(port): Phase 3 AOT de-risked (one-tree gen_snapshot) + defer Dar…
squirelboy360 Jun 7, 2026
7bf219f
engine-port: Phase 2 DONE — OSCortex-backend engine links from source
squirelboy360 Jun 7, 2026
04293a1
engine-port: artifact distribution — fetch (download) vs publish (bui…
squirelboy360 Jun 7, 2026
472438b
engine-port: one-command R2 setup (wrangler) for artifact hosting
squirelboy360 Jun 7, 2026
4652974
engine-port: host artifacts on GCS (public bucket), pipeline verified
squirelboy360 Jun 7, 2026
936014a
engine-port: host artifacts on GitHub Releases (free, zero egress)
squirelboy360 Jun 7, 2026
a107ec6
engine-port: Phase 3 — release/AOT engine built + published + fetch v…
squirelboy360 Jun 7, 2026
c56299e
engine-port: AOT snapshot COMPILES — the old dead-end is gone
squirelboy360 Jun 7, 2026
45b0243
engine-port: Phase 3 COMPLETE — shell renders from AOT on OSCortex
squirelboy360 Jun 7, 2026
5aeff4c
fix(ps2): disable IntelliMouse 4-byte mode — it broke pointer input
squirelboy360 Jun 7, 2026
e79015d
engine-port: remove input diagnostics (no remnants) + app-AOT script
squirelboy360 Jun 8, 2026
293317e
embedder: load each app's own AOT libapp.so on launch
squirelboy360 Jun 8, 2026
a79aad2
kernel: remove COND_PENDING_SIGNALS resurrection (fix cond livelock)
squirelboy360 Jun 8, 2026
a521524
embedder: pass dlopen paths without trailing NUL
squirelboy360 Jun 8, 2026
4c56a19
kernel: default serial log level to Error (warmup fix)
squirelboy360 Jun 8, 2026
091575f
kernel: capture user GPRs eagerly at syscall entry (fix register leak)
squirelboy360 Jun 8, 2026
360790c
embedder: schedule a frame immediately on input (snappier reaction)
squirelboy360 Jun 8, 2026
6c09822
compositor: cut per-frame full-screen passes ~5x (65ms->5ms blit)
squirelboy360 Jun 8, 2026
71dceae
sched: gate shell baton/input shortcuts on foreground-exclusive group
squirelboy360 Jun 8, 2026
df28e0d
embedder: bind the Flutter platform-channel contract
squirelboy360 Jun 8, 2026
d668b44
os: provide real platform capabilities behind the Flutter contract
squirelboy360 Jun 8, 2026
237a3d7
embedder: fix hover-freeze — de-dupe cursor syscall + disable semantics
squirelboy360 Jun 9, 2026
f7f5ada
fix(shell): use activeThumbColor (analyze) + pure-black background
squirelboy360 Jun 9, 2026
5d0e750
aarch64: full Flutter shell (render + virtio-input) + arm64 release p…
squirelboy360 Jun 10, 2026
3191527
release: make the aarch64 kernel artifact render-capable
squirelboy360 Jun 10, 2026
a2d6750
release: arch-label both artifacts + fix .sha256 to verify standalone
squirelboy360 Jun 10, 2026
a27a61d
aarch64: Limine UEFI boot path on the render kernel (origin/main base)
squirelboy360 Jun 10, 2026
7c1d751
aarch64/limine: force EL1h (SPSel=1) at entry — UEFI ISO now renders …
squirelboy360 Jun 10, 2026
bd96e7e
aarch64: mask IRQs across the EL0-return asm — fixes the residual ~25…
squirelboy360 Jun 11, 2026
454bd63
aarch64: fix crash#2 (cond_timedwait timeout → misaligned PC) + ship …
squirelboy360 Jun 11, 2026
7e1a019
aarch64: 16-byte-align thread + process entry SP — fixes real-hardwar…
squirelboy360 Jun 11, 2026
e9fd481
aarch64: drive the scheduler/vsync tick off the VIRTUAL timer (CNTV/P…
squirelboy360 Jun 11, 2026
b4dcdb5
kernel: fix pkg syscall collision (0x390-0x393) — un-breaks sched_yie…
squirelboy360 Jun 11, 2026
463e689
embedder: wire the on-demand package pipeline to the shell channel
squirelboy360 Jun 11, 2026
30c3684
net: fix TCP connect-readiness probe — kernel HTTP fetch works for th…
squirelboy360 Jun 11, 2026
ff933f0
net: real monotonic clock for smoltcp + streaming fixes — package fet…
squirelboy360 Jun 12, 2026
62e2cd3
kernel: app crash auto-recovery — crashed apps relaunch with backoff;…
squirelboy360 Jun 12, 2026
0cf5aa8
pkg: implement Ed25519 cryptographic signing and verification for pac…
squirelboy360 Jun 12, 2026
b30e33e
Merge branch 'develop' into feat/native-engine-port
squirelboy360 Jun 12, 2026
e870f28
Harden context transitions, implement off-ISO package persistence, an…
squirelboy360 Jun 12, 2026
00d9500
pkg: drop debug catalog test-resolve from boot init
squirelboy360 Jun 12, 2026
c769520
kernel: enforce capabilities per-PCB — privileged syscalls gated by s…
squirelboy360 Jun 12, 2026
ef46be0
docs: ARM/x86 branch integration plan (recon)
squirelboy360 Jun 12, 2026
dc37ba4
Merge remote-tracking branch 'origin/main' into integrate-arm-x86
squirelboy360 Jun 12, 2026
407e97f
repo: untrack build artifacts (95MB .so.trace, iso_root_aarch64 build…
squirelboy360 Jun 12, 2026
12cb3bd
kernel: dedup try_claim_cpu_for — fixes non-compiling integration mer…
squirelboy360 Jun 12, 2026
429425c
kernel: boot splash — centered white OSCortex logo on black
squirelboy360 Jun 13, 2026
bdcfaea
build/release: full-render x86 ISO without engine Docker + correct UT…
squirelboy360 Jun 13, 2026
7724e50
build-iso.sh: force JIT on x86 — strip stray AOT snapshots before emb…
squirelboy360 Jun 13, 2026
7233c22
compositor: software cursor on aarch64 (read unified wm pointer state)
squirelboy360 Jun 13, 2026
d9f4331
kernel: per-engine vsync batons (multi-engine foundation)
squirelboy360 Jun 13, 2026
c710176
fb: honor firmware framebuffer channel order (fix x86 "no UI"/blue sc…
squirelboy360 Jun 13, 2026
c6a5488
build: x86 shell renders — use the JIT engine + JIT kernel_blob (fix …
squirelboy360 Jun 13, 2026
64f605f
usb: aarch64 USB HID mouse + keyboard (xHCI over PCIe ECAM)
squirelboy360 Jun 13, 2026
4ca00e6
boot: dot-matrix boot screen instead of raw log spam
squirelboy360 Jun 13, 2026
c3865c4
fix(aarch64): boot the arm64 ISO under UTM/QEMU+HVF
squirelboy360 Jun 14, 2026
e25b8d3
Merge remote-tracking branch 'origin/develop' into feat/native-engine…
squirelboy360 Jun 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 24 additions & 15 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -155,27 +155,36 @@ jobs:
body: |
Automated production release built from `main`.

Both architectures ship a **bootable UEFI ISO** — flash it or attach it
in UTM / a VM / bare metal. aarch64 additionally ships the raw `-kernel`
ELF for `qemu-system-aarch64 -M virt -kernel` users.
Both architectures render the full Flutter shell. For **UTM on Apple
Silicon**, boot the aarch64 **`.kernel`** via *Linux → Boot from kernel
image* (see below) — UTM's bundled UEFI firmware does not boot the Limine
ISO, so the ISO is for QEMU/other UEFI VMs and bare metal.

**Artifacts:**
- `oscortex-x86_64-<tag>.iso` — x86_64 bootable kernel ISO (Limine BIOS +
UEFI), built via `cargo xtask iso`.
- `oscortex-aarch64-<tag>.iso` — **render-capable** aarch64 UEFI ISO
(Limine → higher-half kernel), embedding the full Flutter shell runtime
(engine + AOT shell snapshot + ICU + fonts/assets). This is the image to
boot in **UTM / VMs / bare metal**. In UTM use a single CPU core
(OSCortex runs a cooperative single-core scheduler).
- `oscortex-aarch64-<tag>.kernel` — the same render-capable kernel as a raw
ELF for direct QEMU boot:
- `oscortex-x86_64-<tag>.iso` — x86_64 render-capable kernel ISO (Limine
BIOS + UEFI) embedding the Flutter shell.
- `oscortex-aarch64-<tag>.iso` — render-capable aarch64 UEFI ISO (Limine →
higher-half kernel) embedding the full Flutter shell runtime (engine +
shell snapshot + ICU + fonts/assets). Boots under QEMU with the edk2
AArch64 firmware and on UEFI ARM bare metal. **Not for UTM** (see below).
- `oscortex-aarch64-<tag>.kernel` — the render-capable kernel as a raw ELF.
**This is the UTM-bootable artifact** and also boots directly under QEMU:
```
qemu-system-aarch64 -M virt -cpu cortex-a72 -smp 1 -m 2G \
qemu-system-aarch64 -M virt,accel=hvf -cpu host -smp 1 -m 4G \
-kernel oscortex-aarch64-<tag>.kernel -device ramfb \
-device virtio-tablet-device -device virtio-keyboard-device
```
Wait ~60–90s (TCG warm-up) for the shell to paint; the virtio-tablet
gives mouse hover/click.

**Booting the `.kernel` in UTM (Apple Silicon):**
1. New VM → **Virtualize** → **Linux**; leave *Use Apple Virtualization*
unchecked (we need the QEMU backend for ramfb).
2. *Boot from kernel image* → select `oscortex-aarch64-<tag>.kernel`
(no initrd / root FS).
3. Finish, then **Edit** the VM: **System → CPU Cores = 1** (OSCortex is a
cooperative single-core scheduler); **Display → Emulated Display Card =
ram framebuffer standalone device (ramfb)**.
4. Run. Under HVF the shell paints in a few seconds (under TCG, allow
~60–90s warm-up).

Verify with the attached `.sha256` files.
files: |
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,9 @@ docs/goal-general-purpose.md
# Fetched engine tool binaries (from fetch-engine.sh)
/tools/flutter-engine/bin/
initramfs/system/lib/liboscortex_libc.so

# build artifacts / debug traces (untracked 2026-06-12)
*.so.trace
iso_root_aarch64/
oscortex-aarch64.iso
tools/flutter-engine/linux-arm64/
Loading
Loading