v2.3.0-BETA
2026-05-31
BETA
// ADDED — DESKTOP ENVIRONMENT & THEMING
- Selectable desktop background with three modes:
image (stretched wallpaper), solid (flat color), and jailbars (four brightness shades from one base), with a click-to-set RGB picker
- Original procedural wallpapers (no third-party assets): an 80s synthwave family (miami / outrun / mountains / road / vapor) and a tropical set, 1024×768
- Per-user accent theming — focused window title bars and the entire taskbar palette (bar, buttons, start-menu flyout) are derived from one accent color via
scale_color
- Per-user settings layering over the registry: each login resolves its own desktop and accent, falling back to the machine default
- Live wallpaper Preview thumbnail (decoded + downscaled) and an Apply button in the Desktop pane
- New default boot: the synthwave "miami" wallpaper with a matching magenta-purple accent (
0xC0308C); ttyv0 boots straight into /bin/views
// ADDED — SETTINGS APP
- macOS-style single-window Settings app with a category sidebar: General, Desktop, Appearance, Network
- Desktop pane: background-mode tabs, wallpaper dropdown picker (keyboard navigable), live preview
- Appearance pane: accent RGB picker that writes the per-user override and re-themes views + taskbar live
- Network pane: DHCP/Static toggle with editable IP / netmask / gateway / DNS fields
// ADDED — UBISTRY REGISTRY
- The 2004-era flat key/value ubistry rewritten as a hierarchical typed-tree registry: path-addressed string/int/bool leaves + ordered containers
- Persisted as text to
/var/db/ubistry.db (load at boot, dirty-flag coalesced flush); served over MPI with a real GET/SET/ENUM/DEL request/reply protocol
ubix_api client (ubistry_get/set/enum/del, plus per-user get_for/set_user) so any app can read/write config
ulog()/ulogf() system-log wrapper (klog_write → logd → /var/log/messages) for background-service diagnostics
- Data-driven cascading start menu loaded from
/views/startmenu (top-level categories + one submenu level, dispatched by exec path or @action)
// ADDED — NETWORKING
net_configure() syscall (slot 59) pushes a network config into the in-kernel lwIP stack on the tcpip thread
- DHCP and static configuration:
bin/netcfg reads /net/* from the registry and applies it; runs at boot and is re-run by Settings
- Kernel still auto-DHCPs at boot, so networking works even if userland config fails
// ADDED — BUSYBOX 1.36.1 USERLAND
- Replaced UbixOS stub utilities (
cat, ls, uname, stat) with busybox 1.36.1
- Text processing:
grep, find, less, more, wc, head, tail, sort, cut, tr, uniq
- File operations:
cp, mkdir, rm, mv, touch
vi — busybox vi 1.36.1 ported to uBixOS
// ADDED — GRAPHICS & TTY
- objgfx PNG support:
ogImage::Load() sniffs file magic and decodes PNG (any depth/color type) via vendored stb_image v2.30, alongside BMP
- Pseudo-terminal pool: graphical terminals run the user's interactive shell over a pty
// FIXED
- Pipe refcount + EOF handling corrected (no more
0xBEBEBEBE reads)
- Kernel now actually closes fd < 3 and allocates from the lowest free slot
- FAT
ftruncate now shrinks the cluster chain instead of leaking clusters
v2.2.0-BETA
2026-05-24
BETA
// ADDED — C++ STANDARD LIBRARY
contrib/libcxxabi/ — minimal Itanium C++ ABI: new/delete, construction guards, pure virtual, __dso_handle
contrib/libcxx/ — LLVM libc++ 18.1.8 subset: <string>, <vector>, <map>, <memory>, <algorithm>, <optional>, <variant>, charconv/ryu
ubix.musl.cxx.prog.mk BSD make snippet for C++ programs with STL: -std=c++20 -fno-rtti -fno-exceptions
- C++ RAII wrappers:
ubix::Mailbox, ubix::Shell, ubix::yield(), ubix::pid()
bin/views, bin/taskbar, bin/term — migrated to STL (std::vector, std::string)
// ADDED — SCHEDULER PHASE 3 (QoS + AGING)
- QoS classes:
SCHED_CLASS_RT, SCHED_CLASS_INTERACTIVE, SCHED_CLASS_NORMAL, SCHED_CLASS_BATCH
- I/O completion boost: tasks unblocked from I/O wait receive a transient priority increase
- CPU decay: long-running CPU-bound tasks shift down one QoS band automatically
- Starvation aging: tasks not scheduled for
AGING_THRESHOLD ticks are promoted one band
// ADDED — POSIX SIGNALS (PHASES 1–5)
sigaction, sigprocmask, sigpending, sigsuspend fully implemented
SA_SIGINFO frames with 128-byte musl-layout siginfo_t; SA_RESTART, SA_RESETHAND
- Process groups:
setpgid, tcsetpgrp, Ctrl-C targets foreground pgrp
SIGCHLD on child death; SIGSTOP/SIGCONT pause and resume
- AST delivery in timer ISR for SIG_DFL/SIG_IGN signals at user-mode preemption points
// ADDED — VMM PHASE 3 (SWAP)
- Swap partition integration — 64 MB, clock-algorithm eviction (
swap.c)
- Background pageout daemon — polls every 100 ticks, proactive reclaim (
pageout.c)
PAGE_SWAPPED PTE encoding; page fault handler restores from swap on fault
// ADDED — VMM PHASES 1–2 (RB-TREE + DEMAND-ZERO)
- Intrusive red-black tree (
rbtree.c) replaces flat VMA array — O(log n) lookup
vm_map_t embedded in kTask_t; fork copies, exec frees
- Demand-zero anonymous pages:
mmap(MAP_ANON) reserves VMA only; fault backs
MAP_FIXED and non-fixed anonymous mappings both supported
// ADDED — PROCFS & MISC
/proc/mounts — walks mounted filesystem list; bin/mount rewritten to use it
FD_TYPE_* and VFS_TYPE_* constants canonicalized across headers
- Ring-0 kernel stack enlarged from 4096 to 8192 bytes
// FIXED
- Fork now propagates pipe file descriptors with correct
fd_type; pipe reads no longer block forever after fork
- FAT
chdir deep-path stack overflow corrupting sig_pending — fixed by enlarging ring-0 stack
- Taskbar MPI wait retries on
EINTR instead of treating signal interruption as error
v2.1.0-BETA
2026-05-13
BETA
// ADDED — VIEWS COMPOSITOR (C++ REWRITE)
- Full composited window system:
Framebuffer, Window, WindowManager C++ classes
- Server-side decorations: title bar, close button, drag, Z-order, focus-follows-click
bin/taskbar — taskbar ported to C++ with flyout launcher menu and clock
bin/term — windowed VT100 terminal emulator using ogSurface and ogBitFont
include/views/display_proto.h — MPI display protocol with DISPLAY_QUERY/DISPLAY_INFO
- Doom running windowed (
vdoom) inside the compositor
- Tessera (Tetris clone) running as a windowed Views application
// REMOVED
bin/launcher/ — dead pre-2019 application, never integrated with MPI display stack
lib/objgfx40/ — older objgfx fork, superseded by lib/objgfx/
sys/sde/ — kernel-side Software Display Environment retired; replaced by userland compositor
v2.0.1-BETA
2026-05-13
BETA
// ADDED
bin/ed/ — POSIX ed line editor: full address forms, all standard commands
- Syscall 42
sys_ttyctrl — kernel TTY raw/echo mode toggle
- TTY line discipline in
atkbd.c: canonical mode, backspace, echo; raw mode for password masking
// FIXED
fgetc returned 0 at EOF instead of -1 — fgets loops never terminated on short files
- Double-echo removed: echo now owned exclusively by keyboard ISR line discipline
- Login password prompt uses
tty_setraw to mask input correctly
v2.0.0-BETA
2026-04-12
BETA
// ADDED
- musl libc 1.2.5 ported to uBixOS; replaces hand-rolled libc
- ELF dynamic linker —
libexec/ld; PT_LOAD, PLT/GOT, RELA relocations
- tcsh 6.24.16 as default login shell
- FreeBSD syscall ABI compatibility layer (slot 0–500)
- AC97 audio codec driver with DMA ring-buffer playback
- DOOM port (vdoom) — fullscreen and windowed via SDE
- USB UHCI host controller — HID keyboard + mass storage
v1.1.0-CURRENT
2025
LEGACY
// HIGHLIGHTS
- O(1) priority bitmap scheduler (Phase 1 — 32-level bitmask, constant-time dequeue)
- procfs:
/proc/<pid>/status, maps, cmdline
- FAT16/FAT32 VFS with LFN support
- IDE (ATA) driver with DMA
- Initial Views compositor (C-based, SDE-backed)
- MPI inter-process messaging system