Commit Graph

  • 1401af3d82 feat(pointer): virtio tablet as 2nd input dev (driver per-instance VAs, abs/btn decode), input server serves 2 devices on one notif; display software cursor, bar click switches window, presses/releases to front window in its px; k-ui hit-tests (press focuses, release on same presses, field only focuses) kernel-hardening Gabriel Kaszewski 2026-10-28 16:50:20 +01:00
  • 0de13f124d fix: pm running apps grow (death-bit bound 60); spawntest stress: 30 files open, apps until BUSY then room comes back; docs: limits and why Gabriel Kaszewski 2026-10-28 16:22:19 +01:00
  • 1f2134fcec fix: storage tables grow (handles, open files, encrypted opens, grants: Slots/Vec, no 8/16 caps; release follows all narrowed grants); storage says FULL, init spawn STORAGE_BUSY (was NOT_FOUND), pm BUSY; cap slots per process 64 -> 255 Gabriel Kaszewski 2026-10-28 16:17:36 +01:00
  • 3b71f29f4c fix: capacities single-sourced in types (display MAX_WINDOWS/BUFFER_PAGES, storage MAX_CLIENTS), display + storage budgets derived from them, const asserts on VA layouts; kernel regions 64 -> 256 Gabriel Kaszewski 2026-10-28 16:06:55 +01:00
  • 495bf03484 fix: stacks at top of user VA in own 1 MiB band (guard, heap kept below), 8/16 pages default; kernel fault msg names pid, kind, flags stack overflow; flaky OVERFLOW + spawntest/test-qemu check it Gabriel Kaszewski 2026-10-28 16:03:06 +01:00
  • 18e8b3ecb8 feat(desktop): home app (system-only launch cap, LAUNCH_BADGE: apps+launch only), pm starts it with session (relaunch <=5); display keys F1/Alt+Tab next, F2 home, F4 close app (ROLE from launcher, terminal exempt), close returns to previous window; closed window -> app exits; shell 'name &'; launch by id; pm stack 8, storage 16 clients Gabriel Kaszewski 2026-10-28 15:50:05 +01:00
  • c3eb70191b feat: room for many apps: qemu 512M, pool sized from RAM (448M, 114688 frames), user VA 32M -> 1G, display 8 windows (buffers at 0x1000_0000, stack 14 pages), pm app budget 24 MiB, init 16 children (notif bits moved) Gabriel Kaszewski 2026-10-28 15:31:30 +01:00
  • 8c518b84aa refactor(k-ui): retire glass look (wallpaper, blur, shadow, gloss): flat surfaces; theme drops [wallpaper]/[glass] tokens + orb contrast checks; light accent back to #0b6bcb; settings/tally 3 MiB Gabriel Kaszewski 2026-10-28 15:09:38 +01:00
  • 7804934008 perf(k-ui): own pixel loops (pixels.rs): float only in corners, SWAR blends, banded shadow; screen fade only over content toward wallpaper (was full-window tiny-skia fill, ~600ms); blur at quarter res, row/column-sum passes, SWAR 2x upscale; ring frame ~75 -> ~20ms Gabriel Kaszewski 2026-10-28 15:03:19 +01:00
  • 815a2f9fe2 perf(display): present copies window rows as-is (scanout R8G8B8X8 = window byte order, Host hands out row bytes, Framebuffer::write_rgba_row); Window copy_from/copy_to one fenced memcpy; full present ~65ms -> ~3ms Gabriel Kaszewski 2026-10-28 14:47:06 +01:00
  • d26b265d38 feat(k-ui): glass look: orb wallpaper + blurred, tinted glass panels (half-res backdrop per theme+size, integer code, frames only copy), soft analytic shadow, top gloss; contrast checked over wallpaper/glass per orb (light accent -> #0a5cb0); partial frames drawn in place; Rect geometry, tree lookups split out; settings/tally 6 MiB Gabriel Kaszewski 2026-10-28 14:19:54 +01:00
  • 3b71243dea feat(k-ui): motion: ring springs to focus, toggle knob slides, screens slide+fade in (theme motion tokens, 0 = off); 16ms frame timer only while moving; motion-only frames drawn+presented in part (whole elements, pixel-snapped rects, == full draw); virtio fb flushes only damage; TICKS_PER_MS in types Gabriel Kaszewski 2026-10-28 13:58:38 +01:00
  • e952a149ec feat(k-ui): text_input (label above, app owns text via on_change, caret, erase, submit, secret, placeholder); keys Left/Right/Space/Char/Erase; settings app filter; apps 8-page stack (k-ui overflowed 16K), args page -> 0x1000 Gabriel Kaszewski 2026-10-28 13:48:08 +01:00
  • 2b82f052ae feat(theme): per-app accent: pm gives window manifest accent before app runs (display ACCENT, refused after BUFFER); theme::with_accent keeps hue, shifts lightness until contrast passes, else theme accent; tally pink Gabriel Kaszewski 2026-10-28 13:40:38 +01:00
  • 6827e1455d feat(theme): themes as files (theme crate: toml subset + ints, contrast check, wire); whimsy dark + light; display reads themes/, serves THEME/THEME_NAME, init SET_THEME -> THEME_CHANGED to all windows, bar themed; k-ui follows; settings appearance; init keeps choice in sealed users/<id>/settings/, reapplies at sign-in + display restart Gabriel Kaszewski 2026-10-28 13:36:57 +01:00
  • 29becf297c feat(settings): settings app: apps list + per-capability allow/revoke, about (who/role), sign out; system-only caps permissions/session (install refused); pm MANAGE_BADGE copy (list/apps/allow/revoke only), APPS op; init WHO + session pass-on; factory decisions seeded for new system apps; k-ui list_item/toggle, screens/back/scroll Gabriel Kaszewski 2026-10-28 13:14:35 +01:00
  • a2d4a7d085 perf(kernel): kernel static all-zero -> .bss (image 812K -> 173K): domain::Slot (repr(u8) Empty=0) for tables, zero generation counters, core ids by position, pool/platform installed at boot; Option-backed Slot under kani (cbmc speed); build fails if .data > 16K Gabriel Kaszewski 2026-10-28 13:01:52 +01:00
  • 419b715a1f fix(libkos): heap leaked padding/remainders + never coalesced (UI churn OOM'd tally); address-ordered free list, merge on free, split align padding; Heap<Pages> host-tested Gabriel Kaszewski 2026-10-28 13:01:52 +01:00
  • fe73b89525 feat(k-ui): first slice: App trait + run loop, builders (column/row/text/button), flex layout, theme tokens (Whimsy Dark), tiny-skia + fontdue render (Noto Sans Latin subset), keyboard focus ring; tally demo; manifest memory key (pm spawns with it) Gabriel Kaszewski 2026-10-28 03:20:41 +01:00
  • c256f4ecf3 feat(kernel): lazy user FPU: off until first FP insn (illegal-insn trap -> zeroed regs, retry), save on dirty trap, restore on switch, off for threads without + kernel; spawntest per-thread FP check Gabriel Kaszewski 2026-10-28 03:20:41 +01:00
  • 34a44b5928 fix(libkos): as_chunks for canvas pixels (clippy) Gabriel Kaszewski 2026-10-28 02:57:21 +01:00
  • 07a0575908 feat(init,display): loader streams ELF segments (any size, kills half-built proc); window pixels RGBA8 premul (tiny-skia native), canvas mapped plain memory + pixels_mut/touch Gabriel Kaszewski 2026-10-28 02:57:05 +01:00
  • 864f039bc7 feat(display): windows: full-screen, F1 cycles, OS bar (names, front, user); canvas-only (display-owned buffers, 4 max, reused); launchers OPEN (pm per app, terminal own), window caps minted by display; FORGET on launcher death via init courier; raster crate (font, chunked text); F-keys in input; terminal+snake on canvas; REDRAW gone Gabriel Kaszewski 2026-10-28 02:48:39 +01:00
  • d04dcfffa1 feat(ipc): saved replies: SaveReply/ReplySaved (8 per thread, released on thread death, unforgeable); terminal READ saved until Enter (line.rs editor, reader queue), now pinged Gabriel Kaszewski 2026-10-28 02:09:34 +01:00
  • 3d69c10079 feat(init): watchdog: pinger thread PINGs servers (framework answers, no server code), main kills after 5s unanswered -> crash path; not pinged: terminal, pm (handlers wait for user); give-up drains queued ping; spawntest hang check Gabriel Kaszewski 2026-10-28 01:51:39 +01:00
  • 28f1ace00a feat(init): supervise servers+session progs: restart on death, same endpoint, backoff 0/1/5/30s then give up, restarts_clients cascade; release grants/spawn at stop (stale-slot safe); storage death fatal; init output via printer thread (never blocks on log); terminal Ctrl+C via CONTROL-badged copy, latest wins; flaky test server + spawntest restart/backoff check Gabriel Kaszewski 2026-10-28 01:44:24 +01:00
  • c4871320a0 fix(clippy): make clippy = host libs + riscv programs (shared PROGRAMS); libkos alloc spinlock (was unlocked across threads); keystore Account; gpu Rect; factory Entry; Default impls, let-chains, div_ceil, iter loops Gabriel Kaszewski 2026-10-28 01:17:21 +01:00
  • 91f7d28834 feat(users): per-user sealed folders users/<id>/{home,apps,data,permissions}; storage SET_USER/LOCK/PURGE; init sign-in/sign-out loop (purge fresh/removed/guest, seed from factory, session start/stop); shell logout; pm user+system app shelves; terminal SIGNED_OUT; per-program stack (gatekeeper 12p); 128K load scratch Gabriel Kaszewski 2026-10-28 01:08:50 +01:00
  • 29a25bd8c2 feat(users): keystore v2 (8 slots, per-user salt+name tag, owner admin key opens sealed user dir, per-user duress); gatekeeper login by name+passcode, owner menu (add/remove/guests), passcode change, guest sessions Gabriel Kaszewski 2026-10-28 00:29:07 +01:00
  • 9dc751c466 feat(storage): per-app/owner/system encryption live: gatekeeper hands seed + fresh flag, storage unlocks layer, init seeds areas from factory/ (empties on new key); rmdir op; test-qemu checks sealed home + reboot persistence Gabriel Kaszewski 2026-10-28 00:07:41 +01:00
  • e8191be160 feat(storage): encrypted areas layer (home, system, data/<id>) over any FS; locked until key; plaintext refused; tamper/truncation detected; tests on memory + real ext4 Gabriel Kaszewski 2026-10-27 23:55:35 +01:00
  • eb9e3efaac feat(ext4): seek, rmdir (e2fsck-clean) Gabriel Kaszewski 2026-10-27 23:53:13 +01:00
  • 24b0734c73 feat(filecrypt): per-area keys (BLAKE2s), per-file salt, XChaCha20-Poly1305 chunks bound to index+last, seed DRBG w/ fast key erasure Gabriel Kaszewski 2026-10-27 23:51:29 +01:00
  • 3b7d004285 feat(boot): gatekeeper gates boot (init→UI→gatekeeper→data); keystore disk + virtio-rng discovery; terminal READ_SECRET; storage SET_KEY; PageCount ≤8192, alloc cap gone; device window 0x01D0_0000; test-qemu types passcode over 2 boots Gabriel Kaszewski 2026-10-27 23:43:47 +01:00
  • b7ef67ffd8 feat(gatekeeper): auth flow (setup, count-before-check, threshold/duress wipe, torn-write-safe resume) over Keystore/Random/Prompt ports; host tests Gabriel Kaszewski 2026-10-27 23:17:18 +01:00
  • 600140d518 feat(keystore): sealed real/duress slots (argon2id 16MiB/3, ChaCha20-Poly1305), torn-write-safe 2-copy record, wipe state; virtio-rng driver + Entropy port; RustCrypto deps Gabriel Kaszewski 2026-10-27 23:06:25 +01:00
  • 6b13bf8bbf feat(kernel): 64 MiB user pool (frame table 16384) Gabriel Kaszewski 2026-10-27 23:03:19 +01:00
  • 90e11eb2e8 feat(apps): permission manager equips apps (manifest+consent+decisions in /system), launches via init w/ file grant; shell unprivileged (/home); install/apps/allow/revoke; revoke stops running app; app-image tool; counter app Gabriel Kaszewski 2026-10-27 22:56:44 +01:00
  • 9bc31a9bbe feat(manifest): app manifest + decision crate (strict TOML subset, checked newtypes, capability catalog); docs/apps.md spec Gabriel Kaszewski 2026-10-27 22:32:40 +01:00
  • ec3bc0d2a1 feat(snake): 8 steps/s on fixed-period clock (draw time no longer adds to step) Gabriel Kaszewski 2026-10-27 22:14:35 +01:00
  • c8056ddac6 perf: fast display (row runs, bulk fills, pixel scroll), terminal draws changed cells only + scrolls pixels, print! batched (was IPC per fmt fragment), snake sleeps on timer Gabriel Kaszewski 2026-10-27 22:09:33 +01:00
  • 7b8258b231 refactor: ByteOffset newtype for window/register/ring offsets; named virtio-gpu cmd fields Gabriel Kaszewski 2026-10-27 21:52:33 +01:00
  • 842d14987c refactor: unsafe only in adapter + libkos; forbid(unsafe_code) everywhere else; libkos Window (volatile, bounds-checked MMIO/DMA/shared mem), entry!, thread::spawn; MapRegion returns pages; kernel const-built (with_cores/install_platform); newtype addrs Gabriel Kaszewski 2026-10-27 21:43:24 +01:00
  • 83809bbe94 feat(userspace): programs in /bin w/o .elf; bin manifests (needs = display) so shell runs snake; Ctrl+C kills foreground via terminal interrupt notification; ctrl keys; sleep Gabriel Kaszewski 2026-10-27 21:16:00 +01:00
  • 1fc5a54f06 feat(storage): scoped grants (subtree, ro/rw), narrow-only, release revokes all holders; IPC KEEP_DELEGATE opt-in; shell cd/pwd, programs get ro cwd Gabriel Kaszewski 2026-10-27 20:20:34 +01:00
  • c603a578c0 feat(userspace): shell runs programs (ls, cat) via spawn w/ terminal+storage+args page; ext4 holes read as zeros; storage re-attach same buffer Gabriel Kaszewski 2026-10-27 17:22:08 +01:00
  • 0fd568cdad feat(storage): ext4-only disk via mkfs.ext4 -d; drop FAT16; feature-gated mount (ro on unknown ro_compat); ext4 read spans blocks, delete clears inode, mkdir counts dir; virtio-blk writes; test-qemu e2fsck gate Gabriel Kaszewski 2026-10-27 17:09:35 +01:00
  • 4030dd4315 feat(adapter): init+storage packed into kernel image; drop adapter FAT16 reader + virtio-blk Gabriel Kaszewski 2026-10-27 16:58:11 +01:00
  • b80303f553 feat(userspace): terminal server + shell desktop; US keymap w/ shift; libkos allocator multi-page fix; panics print Gabriel Kaszewski 2026-10-27 16:50:35 +01:00
  • 2845d190f0 feat(display): input routed via display server to focused app; input Subscribe; uses caps badged + Delegate Gabriel Kaszewski 2026-10-27 16:38:16 +01:00
  • 64ec5df379 feat(display): DrawText with built-in Spleen 8x16 font (BSD-2) Gabriel Kaszewski 2026-10-27 16:33:26 +01:00
  • 8587661684 feat(init): spawn service over IPC with per-client allowance refunded on child death; up to 4 death watchers; spawntest on test image Gabriel Kaszewski 2026-10-27 16:21:08 +01:00
  • 817a38993b feat(kernel): WatchDeath + SetTimer events as notification signals; adapter wakes at earliest deadline Gabriel Kaszewski 2026-10-27 16:06:04 +01:00
  • a4f467f45d feat(userspace): log server sole console holder; init boots from manifest; adapter loads only init+storage Gabriel Kaszewski 2026-10-27 15:40:19 +01:00
  • 4049ba5007 feat(kernel): per-process budgets (pages, endpoints, notifs, regions) carved from creator, returned on death; init owns pool Gabriel Kaszewski 2026-10-27 15:08:58 +01:00
  • 7415bab7f5 feat(kernel): console cap gates DebugPutchar, no uart fast path; spawn start arg in a0; delegate returns slot Gabriel Kaszewski 2026-10-27 14:54:36 +01:00
  • 33e1c849d1 feat(kernel): ipc cap transfer drops Delegate; one owner per irq line, freed when owner dies Gabriel Kaszewski 2026-10-27 14:42:28 +01:00
  • 37c482c36c chore: fix build warnings (unused vars/imports, dead ext4 param/field/fn) Gabriel Kaszewski 2026-10-27 14:12:50 +01:00
  • b4390b7b6d refactor(userspace): split syscall/fat16/ext4 by concern; trim comments Gabriel Kaszewski 2026-10-27 13:21:53 +01:00
  • 99273db6d3 refactor(adapter): split trap/page_table/smp/entry by concern; trim comments Gabriel Kaszewski 2026-10-27 13:21:53 +01:00
  • 95dbe7b9d5 refactor(kernel): split ipc/memory/lib/thread by concern; trim comments Gabriel Kaszewski 2026-10-27 13:21:53 +01:00
  • b814bd9570 test: on-hardware SMP self-test (revoke/kill must stop every hart) + make test-qemu Gabriel Kaszewski 2026-10-27 12:54:42 +01:00
  • 909b3f0503 feat(storage): full file protocol over per-client shared region (badged clients, owned handles, clamped lengths, ReadOnly on unwritable disk); init loads via libkos::fs; drop boot shared buffer Gabriel Kaszewski 2026-10-27 12:42:37 +01:00
  • 694c675a40 feat: devices via caps (BootInfo, init assigns devices, drivers map MMIO/DMA themselves, IRQ-driven input); drop boot device wiring and info pages; headless display fallback Gabriel Kaszewski 2026-10-27 12:28:39 +01:00
  • 8bc5402a29 fix(userspace): clip display rects, bounds-check session app ids and fat16 handles, reject bad fat16 geometry, session kills via process cap Gabriel Kaszewski 2026-10-27 12:11:13 +01:00
  • e8a2963b24 feat(userspace): Call/ReplyRecv IPC, malformed-request replies, servers exit on dead endpoint; drop send/receive compat, select!, async_syscall Gabriel Kaszewski 2026-10-27 12:06:10 +01:00
  • 2a8a5b0c27 perf(kernel): linked cap tree, translate-based page lookup, next-fit frames/heap, targeted dequeue; host benches Gabriel Kaszewski 2026-10-27 01:33:26 +01:00
  • 19aeabd86d feat: SMP stage 2, lock-free fast paths (GetTime, GetProcessId, DebugPutchar, no-op Yield), storm checks yield equivalence Gabriel Kaszewski 2026-10-27 01:07:57 +01:00
  • 2e665fd66e feat: SMP stage 1 (4 harts, per-hart guarded stacks, home-core affinity, IPIs, TLB shootdown, one temporary kernel lock), 4-core storm Gabriel Kaszewski 2026-10-27 00:56:15 +01:00
  • b87a62475f feat(adapter): higher-half kernel (linked at PHYS_OFFSET, boot trampoline, no low mappings), fix SBI ecall clobbers Gabriel Kaszewski 2026-10-27 00:25:20 +01:00
  • 55758ae5b2 feat: kernel W^X (per-section perms, firmware unmapped, stack guard, boot check), halt on kernel faults, region W^X across processes Gabriel Kaszewski 2026-10-27 00:13:00 +01:00
  • bafc18a5f8 feat(kernel): SystemControl cap for halt, board device table + boot caps to init, RegionAddress syscall, idle loop services irqs Gabriel Kaszewski 2026-10-26 23:59:57 +01:00
  • 130a82f50d feat(kernel): shared ABI decoder+proofs, no-panic gate, syscall storm, kani on shrunk kernel Gabriel Kaszewski 2026-10-26 23:44:09 +01:00
  • 154599e3af feat(kernel): derivation-tree revocation, region caps Gabriel Kaszewski 2026-10-26 20:41:03 +01:00
  • 76f10ff1f1 feat(kernel): seL4-style IPC, notifications, status ABI Gabriel Kaszewski 2026-10-26 20:27:38 +01:00
  • d43421e33e feat(kernel): object lifetimes via slot generations Gabriel Kaszewski 2026-10-26 19:54:23 +01:00
  • 8d2c40cb1e feat(kernel): kernel-owned memory model Gabriel Kaszewski 2026-10-26 19:40:50 +01:00
  • e931485ca7 fix: sched round-robin, cap slot OOB panic, clippy, make ci Gabriel Kaszewski 2026-10-26 19:08:30 +01:00
  • 1c04ddf909 style: cargo fmt kernel crates Gabriel Kaszewski 2026-10-26 19:07:54 +01:00
  • 818eaecadd refactor: replace manual debug_putchar with libkos::println! master Gabriel Kaszewski 2026-10-19 01:00:33 +02:00
  • 052d7c4a64 refactor: remove old userspace and userspace-rt crates Gabriel Kaszewski 2026-10-19 00:58:14 +02:00
  • 9dd400656c refactor: migrate all servers, apps, binaries to libkos Gabriel Kaszewski 2026-10-19 00:57:27 +02:00
  • a4315d7665 refactor: migrate server-framework to depend on libkos Gabriel Kaszewski 2026-10-19 00:55:54 +02:00
  • edc55d6f2e feat(libkos): add fs, display, input service client modules with newtypes Gabriel Kaszewski 2026-10-19 00:55:15 +02:00
  • 25a4c9415b feat(libkos): add print!/println! macros via debug_putchar Gabriel Kaszewski 2026-10-19 00:53:52 +02:00
  • dbec3842fa feat: create libkos crate with core modules (syscall, alloc, rt) Gabriel Kaszewski 2026-10-19 00:53:31 +02:00
  • 2792387348 fix: VirtIO keyboard input latency and direction accuracy Gabriel Kaszewski 2026-10-19 00:34:13 +02:00
  • 0a47b5489a feat: VirtIO keyboard input for QEMU GUI Gabriel Kaszewski 2026-10-19 00:30:20 +02:00
  • 68849f698b fix: GPU display at correct resolution, clean up diagnostics Gabriel Kaszewski 2026-10-19 00:24:37 +02:00
  • f5ac7189a9 fix: VirtIO GPU driver and snake rendering through display server Gabriel Kaszewski 2026-10-19 00:01:29 +02:00
  • 194024bc08 fix(ext4): remove old monolithic ext4.rs superseded by ext4/ directory Gabriel Kaszewski 2026-10-18 23:30:56 +02:00
  • 9be67e403b fix(ext4): review fixes — bounds checks, delete safety, blocks_count, multi-extent dirs Gabriel Kaszewski 2026-10-18 23:28:34 +02:00
  • 73661e925d test(ext4): comprehensive edge case and integration tests Gabriel Kaszewski 2026-10-18 23:17:15 +02:00
  • bc4659eabd feat(ext4): mkdir and nested directory support Gabriel Kaszewski 2026-10-18 23:16:35 +02:00
  • 2ede01bdd2 feat(ext4): file create, write, and delete with extent management Gabriel Kaszewski 2026-10-18 23:15:38 +02:00
  • bff18df349 feat(ext4): directory entry find/add/remove operations Gabriel Kaszewski 2026-10-18 23:14:02 +02:00
  • fe0693b969 feat(ext4): block and inode bitmap allocation/deallocation Gabriel Kaszewski 2026-10-18 23:12:33 +02:00
  • 381669d9dd feat(ext4): inode read/write, init_empty_inode, multi-extent read Gabriel Kaszewski 2026-10-18 23:09:57 +02:00
  • 5d5714914f refactor(ext4): split into submodules, add io/superblock/bgd with write-back Gabriel Kaszewski 2026-10-18 23:08:07 +02:00
  • d85cb5b55d feat(storage): add mkdir to FileSystem trait with stubs Gabriel Kaszewski 2026-10-18 23:06:26 +02:00