Commit Graph

393 Commits

Author SHA1 Message Date
vasilito f405070d2c fix: libwayland BUILDS — proper durability patch with all stubs
121-line redox.patch replaces 229-line fragile Python heredoc.
Covers: meson.build, src/meson.build, event-loop.c, connection.c,
wayland-server.c with signalfd, timerfd, eventfd, MSG_NOSIGNAL,
open_memstream, timerfd_settime, timerfd_gettime stubs.

libwayland builds successfully. Greeter cascade through llvm21.
2026-04-28 12:28:19 +01:00
vasilito 4bcad7fd7d fix: libwayland durability patch replaces fragile Python modifications
Created proper redox.patch (105 lines) that applies to wayland-1.24.0:
- meson.build: SFD/TFD checks → signal.h/time.h
- src/meson.build: wayland-scanner detection
- src/event-loop.c: signalfd/timerfd compat + definitions
- src/connection.c: MSG_NOSIGNAL + open_memstream stub

Recipe simplified from 270-line Python heredoc to clean meson build.
Patch survives make clean, git clone, and upstream rebase.
2026-04-28 12:09:28 +01:00
vasilito 25ddb0f847 fix: libwayland SFD_CLOEXEC + glib meson, suppress cascade packages
libwayland: check signal.h SIG_BLOCK instead of sys/signalfd.h SFD_CLOEXEC
glib: add -I sysroot/include to meson c_args
redox-drm: remove amdgpu build dep (not needed for boot)
config: suppress curl, git, mc, libinput, KF6 chain (cascade rebuild)

Build succeeds: 4 GiB harddrive.img, boots with compositor.
Greeter blocked on libwayland relibc header gaps (prctl.h etc).
2026-04-28 11:05:55 +01:00
vasilito 62b99f8678 cache: git-tracked build cache — 16 packages, survives make clean + clone
Red Bear is a fork/overlay on top of Redox. The upstream build
system wasn't designed for forks — it loses all cached stages on
make clean with no recovery path.

This commit adds a git-tracked build cache:
- local/cache/pkgar/{pkg}/stage.pkgar — per-package cache files
- cache-sync.sh: sync built packages → git-tracked cache
- cache-sync.sh --restore: restore cache → recipe targets
- cache-sync.sh --commit: sync + git commit
- Auto-restore before build, auto-sync after build

Cache survives: make clean, make distclean, git clone, upstream rebase.
Recovery from clean: seconds (restore from git) vs hours (full rebuild).
2026-04-28 08:14:22 +01:00
vasilito d1c5beb50d build: Red Bear cache system — resilient to make clean
Adds comprehensive build cache snapshot and restore for overlay OS.

Problem: Upstream Redox build system is single-stream — make clean
destroys cached stage.pkgar files permanently. Build can't recover
without full from-scratch rebuild (2-4 hours).

Solution: Red Bear cache system provides:
- snapshot-cache.sh: Save all stage.pkgar to local/cache/
- restore-cache.sh: Restore from snapshot after make clean
- Auto-restore: Makefile auto-restores cache before build
- Essential cache: Pre-built caches for boot packages tracked in git
- Cookbook fixes: Missing deps trigger rebuild instead of crash

With cache restore, make clean recovery is measured in seconds,
not hours.

Gaps fixed in cookbook:
- modified_all_btree: missing dep → UNIX_EPOCH (rebuild trigger)
- sysroot install: missing dep → skip + rebuild
2026-04-28 08:07:14 +01:00
vasilito 33810ce20a fix: dhcpd type mismatch (String→&str), base builds clean
Verified in QEMU: compositor runs, no exceptions, DRM active.
Greeter reaches 'compositor ready, launching greeter UI'.
All canaries present. Boot completes to login prompt.
2026-04-28 06:50:20 +01:00
vasilito 63f711c805 test: add redox target configs for redox-drm and iommu
Both crates now compile tests for x86_64-unknown-redox target.
Tests compile successfully (cannot run — need Redox kernel).
All 8 host-testable crates: 229 tests, 0 failures.

Crates with redox-target configs:
- redox-drm: 2 warnings, 0 errors
- iommu: 0 warnings, 0 errors
2026-04-28 06:44:55 +01:00
vasilito 0a098b92fe test: verify all recipes, fix CPU compatibility, harden daemons
Test results: 229 tests pass across 8 crates.
session-launch: 11/11, greeterd: 8/8, authd: 16/16,
sessiond: 27/27, hwutils: 19/19, firmware-loader: 24/24,
redox-driver-sys: 30/30, linux-kpi: 94/94.

Known: redox-drm and iommu need Redox target to run tests
(expected for cross-compiled device crates using libredox).

Fixes applied:
- Qt6 toolchain: -march=x86-64 -fpermissive (CPU compat + headers)
- dhcpd: auto-detect interface from /scheme/netcfg/ifaces/
- i2c-gpio-expanderd: decode retry (3x with 50ms delay)
- ucsid: same I2C decode hardening
- CHANGELOG and DESKTOP-STACK-STATUS updated
2026-04-28 06:41:03 +01:00
vasilito 10caab7085 boot: real Wayland compositor, Intel DRM Gen8-Gen12, kernel 4GB fix, virtio-gpu driver
Comprehensive boot process improvement across the entire stack:

Compositor (NEW): Real Rust Wayland display server (690 lines)
- Full XDG shell protocol (15/15 protocols implemented and verified)
- wl_shm.format, xdg_wm_base, xdg_surface.get_toplevel support
- wl_buffer.release lifecycle, buffer composite to framebuffer
- Framebuffer mapping via scheme:memory (Redox) with fallback
- PID/status files for greeterd health checks
- Integration test suite (3 cases passing)
- Diagnostic tool: redbear-compositor-check

DRM/KMS Chain:
- KWIN_DRM_DEVICES=/scheme/drm/card0 wired through init→greeterd→compositor
- session-launch propagates KWIN_DRM_DEVICES (new test, 11/11 pass)
- DRM auto-detect + 5s wait loop in compositor wrapper
- Boot verified: compositor uses DRM backend in QEMU

Intel DRM:
- Gen8-Gen12 supported with firmware (SKL/KBL/CNL/ICL/GLK/RKL/DG1/TGL/ADLP/DG2/MTL/ARL/LNL/BMG)
- Gen4-Gen7 device IDs recognized, unsupported with clear error message
- Linux 7.0 i915 reference for all 200+ device IDs
- Display fixes: sticky pipe refresh, PIPE=4/PORT=6, 64-bit page flip, EDID skeleton
- 4 durability patches wired into recipe

VirtIO GPU Driver (NEW):
- 220-line DRM/KMS backend for QEMU virtio-gpu
- Full GpuDriver trait implementation (11 methods)
- PCI BAR0 framebuffer mapping, connector/mode info, GEM management

Kernel:
- 4GB RAM hang root cause: MEMORY_MAP overflow at 512 entries → fixed to 1024
- Canary chain R S 1 2 3 4 5 6 7 (9 COM1 checkpoints through boot)
- Verified: kernel boots at 4GB with all canaries present
- 3 durability patches (P0-canary, P1-memory-overflow)

Live ISO:
- Preload capped at 1 GiB with partial preload messaging
- P5 patch wired into bootloader recipe

Greeter:
- Startup progress logging (4 checkpoints)
- QML crash diagnostic (exit code 1 → specific error message)
- greeterd tests: 8/8 pass

Boot Daemons:
- dhcpd: auto-detect interface from /scheme/netcfg/ifaces/
- i2c-gpio-expanderd: I2C decode retry (3× with 50ms delay)
- ucsid: same I2C decode hardening
- Compositor: safe framebuffer fallback (prevents crash)

Qt6 Toolchain:
- -march=x86-64 for CPU compatibility (prevents invalid_opcode on core2duo)
- -fpermissive for header compatibility (unlinkat/linkat redefinition)

Documentation:
- BOOT-PROCESS-IMPROVEMENT-PLAN.md (comprehensive, 320 lines)
- PROFILE-MATRIX.md: ISO organization, RAM requirements, known issues
- BOOT-PROCESS-ASSESSMENT.md: Phase 7 kernel hang diagnosis
- Deleted 4 stale docs (BAREMETAL-LOG, ACPI-FIXES, 02-GAP-ANALYSIS, _CUB_RBPKGBUILD)
- Cross-references updated across all docs

KWin stubs replaced with real compositor delegation.
redbear-kde-session script created for post-login session launch.
30+ files, 10 patches, 3 binaries, 22 tests, 0 errors.
2026-04-28 06:18:37 +01:00
vasilito 8644e8b6d0 fix(relibc): implement getrlimit defaults + getdtablesize return; add kwin stub; kernel graphical_debug defer 2026-04-27 01:57:14 +01:00
vasilito 45e2016918 Auto-detect CI/TUI mode for non-interactive environments and improve patch application robustness
- apply-patches.sh: add signature-marker checks for build-system patches
  to handle cases where reverse-check fails but patch is already applied
- test-baremetal.sh: auto-disable TUI when stdout is not a terminal;
  pass CI=1 to make
- test-live-iso-qemu.sh: pass CI=1 via env to prevent repo cook panic
- scripts/run.sh: auto-disable TUI when stdout is not a terminal;
  pass CI=1 to qemu launch
- repo.rs: improve TUI initialization error messages (raw mode + alternate
  screen) and rustfmt cleanups
- config.rs: auto-detect TTY presence for TUI enablement; use is_terminal()
  instead of relying solely on CI env var
2026-04-26 22:51:09 +01:00
vasilito 70a84cefee Add kwin full source tree, greeter login, zsh, pcid service, and build system improvements 2026-04-26 22:31:07 +01:00
vasilito ae1cac1d64 Convert kwin to stub recipe with cmake configs
Real KWin build requires Qt6Quick/QML + Wayland compositor runtime.
Stub installs KWin/KWinEffects INTERFACE cmake targets, dummy
libkwin.a, and kwin_wayland wrapper script. Inspect CMakeLists
updated to remove Qml and Declarative from required components
for future real-build attempts.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-25 21:43:36 +01:00
vasilito 8e4b8d6107 Restore kirigami stub cmake configs approach
Qt6Quick isn't fully cross-compiled for Redox yet. Stub provides
KF6::Kirigami and KF6::Kirigami2 INTERFACE cmake targets for
downstream dependency resolution.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-25 21:43:24 +01:00
vasilito 449ffcafe2 Fix kf6-kdeclarative sed pattern for v6.10.0 source
The sed pattern was stale — source v6.10.0 has 'REQUIRED Qml Quick Gui'
but the old pattern only matched the previous format. Fixed to remove
both Qml and Quick from find_package.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-25 21:43:13 +01:00
vasilito 752bceb3e9 Enable IPv6 foundation in relibc: inet_pton/ntop, TCP socket options, DNS AAAA
Add three relibc patches (42 total) to close QtNetwork-critical socket gaps:
- P3-inet6-pton-ntop: AF_INET6 address parsing/formatting with RFC 5952
  shorthand, IPv4-mapped suffix support
- P3-tcp-sockopt-forward: forward IPPROTO_TCP getsockopt/setsockopt to
  scheme daemon instead of hitting todo_skip
- P3-dns-aaaa-getaddrinfo-ipv6: AAAA DNS record queries, lookup_host_v6,
  dual-stack getaddrinfo with sockaddr_in6 entries

Also fix P3-tcp-nodelay to use sys_call_wo + from_raw_parts (const) in the
SOL_SOCKET setsockopt fallback — setsockopt sends data to the kernel, not
reads from it.
2026-04-25 21:20:47 +01:00
vasilito 7edce33927 Code review fixes: branding consistency, exec euid check, netdb retry robustness
- Fix login prompt: 'RedBear login:' → 'Red Bear login:' (consistent branding)
- exec-root-bypass: check both ruid and euid for root bypass (Linux checks effective UID)
- netdb-retry: remove dead variables, check send() return on retry, clarify timeout comment
2026-04-25 20:27:19 +01:00
vasilito e62acb2ebb Stabilize DRM core contracts: fix latent panics, add diagnostics and tests
Production code fixes:
- scheme.rs: replace unwrap() after checked_mul with match binding,
  eliminating a latent panic if code is reordered
- main.rs: log request context_id (PID) on request handling failure
  instead of silently discarding the error
- drivers/amd/display.rs: split silent EDID read fallback into
  separate match arms with log::warn diagnostics for short reads
  and read failures, including byte count and connector index

Test coverage:
- gem.rs: add 4 basic tests for GemManager (create+verify,
  close+verify removal, double-close error, invalid handle error)
2026-04-25 19:52:21 +01:00
vasilito 4e27bee9bf Retire base monolith patch in favor of 27 individual P2 patches
The 17,046-line redox.patch monolith is no longer referenced in the base
recipe. All 27 individual P2 patches are now listed explicitly in
recipe.toml with symlinks to local/patches/base/.

Coverage gap closed: ixgbed/src/device.rs was the only file not covered
by any individual patch. Added P2-ixgbed-error-handling.patch for the
10GbE Intel driver error handling (println → log::info/warn/error).

Build verified: CI=1 make r.base completes successfully with the new
patch list. The monolith file is preserved as backup but no longer applied.
2026-04-25 19:38:23 +01:00
vasilito 220f053ad8 Complete base patch split and update rust toolchain
Base patch extraction (12 new patches, 11,017 lines from the 17k monolith):
- P2-acpid-core-refactor: acpi.rs, dmar, aml_physmem, ec, scheme (3,150 lines)
- P2-ihdad-device-refactor: CodecTopology, ControllerPolicy, InputStream (1,022 lines)
- P2-ac97d-ihdad-main: AC97 + ihdad daemon error handling (287 lines)
- P2-inputd: inputd lib + main with named producers (896 lines)
- P2-network-driver-mains: e1000/ixgbe/rtl8139/rtl8168d/virtio-net mains (607 lines)
- P2-pcid-driver-interface: BAR, cap, config, IRQ helpers, MSI, scheme (1,463 lines)
- P2-storage-driver-mains: ahcid/ided/nvmed/virtio-blk main.rs files (625 lines)
- P2-xhcid-remaining: xhcid main, device_enumerator, xhci mod+scheme (2,033 lines)
- P2-virtio-core-vbox: virtio-core arch/probe/transport + vboxd (413 lines)
- P2-init-subsystems: scheduler, service, unit management (292 lines)
- P2-logd: logd main + scheme (164 lines)
- P2-hwd-misc: hwd Cargo.toml + main.rs (64 lines)

Graphics drivers (ihdgd, vesad, virtio-gpud, fbcond scheme/text, graphics-ipc)
already fully covered by existing P2-daemon-hardening.patch — no duplicates created.

Rust toolchain: nightly-2025-10-03 → nightly-2026-04-01 (1.96.0-nightly).
Cookbook builds clean, no feature gates in codebase.
2026-04-25 19:30:53 +01:00
vasilito 65acab85bb Split base cumulative patch and add relibc AIO stubs, KDE recipes
Base patch extraction (8 topic-grouped patches from the 17k-line monolith):
- P2-ps2d-improvements: PS/2 controller flush/retry, mouse state machine, named producers
- P2-storage-error-handling: AHCI/IDE/NVMe/VirtIO unwrap/expect removal
- P2-usb-pm-and-drivers: suspend/resume, SCSI enablement, staged port fallback
- P2-network-error-handling: e1000/ixgbe/rtl8139/rtl8168d/virtio-net error propagation
- P2-pcid-cfg-access: PCI config I/O port and ECAM graceful fallbacks
- P2-ihdad-hda-stream: InputStream support, public stream types, Debug derives
- P2-init-acpid-wiring: acpid weak dependency on drivers/hwd/pcid-spawner
- P2-misc-daemon-fixes: audiod/usbhidd/zerod graceful degradation

relibc P3-aio.patch: synchronous POSIX AIO fallback (aio_read, aio_write,
aio_error, aio_return, aio_cancel, aio_suspend, aio_fsync, lio_listio)
for Qt6 QIODevice compatibility. 36 patches total in relibc recipe.

KDE recipes: breeze (widget style, decorations disabled), kde-cli-tools
(kioclient, kreadconfig, etc., kdesu disabled).
2026-04-25 19:10:00 +01:00
vasilito d6afe22f8c Split kernel cumulative patch into individual logical patches
Analysis shows existing P0/P1 patches cover ~85% of kernel/redox.patch
(2,335 lines). Extract the two uncovered sections as new patches:

P2-redbear-os-branding.patch (65 lines): Redox->RedBear OS branding in
aarch64, riscv64, x86_shared start files + device init logging milestones.

P3-eventfd-kernel.patch (368 lines): Full EventCounter implementation
in event.rs with blocking read/write, semaphore mode, wait conditions,
and EventScheme eventfd path dispatch in scheme/event.rs.

Update desktop status doc with Wave 2 changes.
2026-04-25 18:39:28 +01:00
vasilito 02ff2f554f Fix IOMMU unassign bug and add translate opcode
unassign_device: clear DTE and submit hardware INVALIDATE_DEVTAB_ENTRY
and INVALIDATE_INTERRUPT_TABLE commands with completion wait (was
previously only clearing the software HashMap).

TRANSLATE opcode (0x0012): walk IOMMU page tables for IOVA-to-physical
address resolution.

fstat: return proper MODE_DIR/MODE_FILE and sizes for all handle kinds
(Root, Control, Domain, Device).

Remove #TODO from recipe.toml.
2026-04-25 18:07:58 +01:00
vasilito 530eb841db Add relibc fenv and sched POSIX implementations
P3-fenv: x86_64 SSE/x87 inline asm for 10 FP environment functions
(feclearexcept, fegetenv, fegetexceptflag, fegetround, feholdexcept,
feraiseexcept, fesetenv, fesetexceptflag, fesetround, fetestexcept,
feupdateenv) with proper MXCSR and x87 CW register access.

P3-sched: 6 scheduler functions (sched_get_priority_max/min,
sched_getparam, sched_rr_get_interval, sched_setparam,
sched_setscheduler) with EINVAL for bad policy and no-op validation
since Redox has no real-time scheduler.
2026-04-25 18:07:46 +01:00
vasilito ae1bce5e14 Update desktop docs with improvement plan progress 2026-04-25 17:38:50 +01:00
vasilito fdb62413a6 Add login-protocol recipe and system recipe symlinks 2026-04-25 17:38:39 +01:00
vasilito 9ddf68ce7b Add 8 relibc POSIX compatibility patches for desktop stack 2026-04-25 17:37:54 +01:00
vasilito 7a36312588 Add durability policy, userutils branding patch for Red Bear OS login/issue
Enforce that every source-tree edit must be mirrored to local/patches/
and wired into recipe.toml in the same session. Apply the policy
retroactively to userutils res/issue and res/motd (Redox → Red Bear).
2026-04-25 16:34:45 +01:00
vasilito 296861f1ce Fix mc 100% CPU hang: select() non-epoll timeout and signal.h stdint include
relibc select_epoll() forced timeout=0 when any FD doesn't support epoll
(e.g. TTY on Redox), causing busy-loop. Poll with 100ms interval instead.

Also add stdint.h to signal/cbindgen.toml sys_includes so signalfd_siginfo
struct types (uint32_t, int32_t) resolve without build errors.
2026-04-25 16:31:05 +01:00
vasilito 4fe9460a33 Red Bear OS 0.2.0 Liliya branding with updated banner and MOTD
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-25 14:50:29 +01:00
vasilito bd9eabaaec Fix KIO workerinterface and KXMLGui language dialog for Redox build
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-25 14:50:17 +01:00
vasilito 5b88e515df Fix KDE CMake find_package resolution for Qt6 and Wayland dependencies
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-25 14:50:06 +01:00
vasilito 965141d67c Add kded6 source with pre-generated D-Bus XML and fix CMake prefix path
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-25 14:49:51 +01:00
vasilito da53c400b4 Add kglobalacceld recipe with D-Bus service wiring and config entry
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-25 14:49:39 +01:00
vasilito 3db1953731 Add relibc exec-root-bypass and tcp-nodelay patches
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-25 14:49:15 +01:00
vasilito 58edf0df0b Add kded6 recipe and rewrite kirigami for real Qt6Quick build
Phase 4 KDE Plasma preparation:

kded6: new recipe at local/recipes/kde/kf6-kded6/ building the KDE
daemon from source. Depends on kf6-kconfig, kf6-kcoreaddons,
kf6-kcrash, kf6-kdbusaddons, kf6-kservice — all already built.
Added to redbear-full.toml package list. D-Bus activation file
already existed; removed TODO now that recipe exists.

kirigami: rewrite from stub to real CMake build. qtdeclarative
(Qt6Quick) is now available, so the real Kirigami can be built
instead of installing dummy cmake configs and a static lib placeholder.
Added qtshadertools and qtsvg as additional dependencies.
2026-04-25 13:20:33 +01:00
vasilito 38013bbf16 Wire evdevd input devices into udev-shim and enable udev in libinput
Phase 3 input chain wiring:

udev-shim: when scheme:evdev is registered (by evdevd), probe for
event0..event7 devices and create /dev/input/eventN nodes pointing to
scheme:evdev/eventN. This bridges evdevd's evdev devices into the
/dev/input namespace that libinput and compositors expect.

libinput: remove -Dudev=false and add libudev-stub as a dependency.
The libudev-stub recipe provides libudev.so that reads from scheme:udev
(udev-shim), giving libinput a working udev enumeration path instead of
stub functions that return NULL.

Input chain is now: hardware → /scheme/input → evdevd → scheme:evdev →
udev-shim → /dev/input/eventN → libudev-stub → libinput → KWin.
2026-04-25 13:15:12 +01:00
vasilito 843f30ba42 Fix relibc netdb/lookup: use-after-move and unsafe block errors
Upstream relibc netdb DNS lookup has two bugs exposed by Rust 2024 edition
strict unsafe handling:

1. packet_data is moved into Box::via into_boxed_slice() but the retry
   loop tries to call packet_data.as_ptr() on the moved value. Use the
   already-created raw pointer packet_data_ptr instead.

2. close() is a safe function in relibc, so wrapping it in unsafe{}
   triggers unused-unsafe (promoted to error by -D unused-unsafe). Remove
   the unnecessary unsafe blocks around close() calls.

Patch carries in local/patches/relibc/P3-netdb-lookup-retry-fix.patch and
is applied via the relibc recipe patches list.
2026-04-25 12:28:37 +01:00
vasilito f665929d96 Fix redbear-sessiond Redox shutdown: remove unreachable code after tokio::select!
The #[cfg(target_os = "redox")] variant of wait_for_shutdown had dead code
after the tokio::select! block. The select already returns Result<(), _>, so
the trailing Ok(()) was unreachable and caused a type mismatch when the compiler
tried to coerce the select result into (). Remove the dead code.
2026-04-25 12:22:33 +01:00
vasilito dc69317ddf D-Bus Phase 3/4: upgrade sessiond, services, add StatusNotifierWatcher, consolidate configs
- redbear-sessiond: add Manager.Inhibit (pipe FD), CanPowerOff/CanReboot/
  CanSuspend/CanHibernate/CanHybridSleep/CanSleep (return na), PowerOff/
  Reboot/Suspend stubs, GetSessionByPID, ListUsers, ListSeats,
  ListInhibitors, ActivateSession/LockSession/UnlockSession/TerminateSession
- redbear-sessiond: add Session SetIdleHint, SetLockedHint, SetType,
  Terminate methods; wire PauseDevice/ResumeDevice/Lock/Unlock signal
  emission via SignalEmitter injection; add dynamic device enumeration
  scanning /scheme/drm/card* and /dev/input/event* at startup
- redbear-sessiond: replace infinite pending() with stoppable shutdown
  via tokio watch channel + control socket shutdown command
- redbear-upower: add Changed signal emission with 30s periodic polling
  and power state snapshot comparison
- redbear-notifications: add ActionInvoked signal, expand capabilities
  to body + body-markup + actions
- redbear-polkit, redbear-udisks: replace pending() with stoppable
  shutdown via signal handling + watch channel
- Add redbear-statusnotifierwatcher: new session bus service implementing
  org.freedesktop.StatusNotifierWatcher for KDE system tray
- Add D-Bus activation file for StatusNotifierWatcher
- KWin session.cpp: try LogindSession before NoopSession fallback
- Consolidate config profiles: remove obsolete redbear-desktop, redbear-kde,
  redbear-live-*, redbear-minimal-*, redbear-wayland configs; simplify
  to three supported targets (redbear-full, redbear-mini, redbear-grub)
- Update DBUS-INTEGRATION-PLAN.md and DESKTOP-STACK-CURRENT-STATUS.md
  with Phase 3/4 fragility assessment, KWin readiness matrix, and
  completeness gap analysis
2026-04-25 12:01:25 +01:00
vasilito e3be2135bc Add pcid-spawner PCI directory retry on ENODEV 2026-04-25 09:15:58 +01:00
vasilito d7002ac803 Update desktop plan v2.1 and status docs with Phase 1 progress and refined Phase 2-4 detail 2026-04-25 08:48:07 +01:00
vasilito 0a80946457 Desktop Phase 1: add 42 tests to redox-drm scheme/driver and redbear-hwutils 2026-04-25 01:32:35 +01:00
vasilito c829dc704b Desktop Phase 1: add 19 tests to redox-drm KMS modules 2026-04-25 01:16:30 +01:00
vasilito 3ec32b3351 Desktop Phase 1: add 77 tests to evdevd, udev-shim, firmware-loader
Phase 1 desktop substrate test coverage for the three runtime services
that must be runtime-trusted before compositor work begins:

- evdevd device.rs: 44 tests (input device constructors, capability
  bitmaps, key/led state tracking, abs_info defaults/overrides,
  bitmap_from_codes edge cases)
- udev-shim device_db.rs: 13 tests (DeviceInfo construction, subsystem
  naming, id_path formatting, input kind detection, property formatting
  for GPU/keyboard/mouse, device_info/uevent output, PCI fallback)
- firmware-loader scheme.rs: 20 tests (openat validation, read offsets,
  fstat/fsize, EROFS enforcement, mmap_prep bounds, mmap/munmap/on_close
  deferred cleanup lifecycle)

Total: 65 evdevd, 15 udev-shim, 24 firmware-loader — all passing.
2026-04-25 01:05:14 +01:00
vasilito f7ffafa0c4 Clarify build targets, add GRUB live configs, clean up docs
Consolidate compile target naming (redbear-live, redbear-grub-live-full,
etc.), add config/redbear-grub-live-full.toml, make redbear-live-full-grub
a legacy alias, update build-iso.sh to support all GRUB live targets, and
sync AGENTS.md/README.md build command documentation.
2026-04-25 00:39:15 +01:00
vasilito a1fdf9782b Bluetooth B3: GATT scheme endpoints and HciBackend real GATT workflow
Add GATT client helpers to btusb scheme (GattDiscoverServices,
GattDiscoverChars, GattReadChar, GattServices, GattCharacteristics)
with ATT-over-ACL transport. Wire HciBackend::read_char to perform
real GATT workflow through scheme filesystem (discover services →
discover characteristics → read value) instead of hardcoded stub.
209 tests passing (151 btusb + 56 btctl + 2 wifictl).
2026-04-25 00:37:33 +01:00
vasilito ec7ab293d2 B3 ATT/GATT groundwork, i2c-hidd InputProducer migration, plan doc update
Add ATT/GATT protocol types to btusb hci.rs: AttPdu with 8 builder
methods, GattService/GattCharacteristic discovery types, ATT response
parsers, ATT-over-ACL L2CAP helpers. 12 new tests (137 total btusb).

Migrate i2c-hidd from legacy ProducerHandle to InputProducer with
named producer fallback (i2c-hid), completing U3 driver migrations.

Update BLUETOOTH-IMPLEMENTATION-PLAN.md with B1/B2 completion evidence,
exit criteria assessment, and updated support language.
2026-04-24 23:25:19 +01:00
vasilito 8ff8c084f5 Bluetooth B2: HCI scheme daemon and HciBackend transport bridge
Add scheme.rs to btusb daemon serving scheme:hciN with full SchemeSync
implementation (status, info, command, events, ACL, LE scan/connect/
disconnect). Add hci_backend.rs to btctl implementing Backend trait via
scheme filesystem reads/writes instead of stub data. Backend selection
via REDBEAR_BTCTL_BACKEND=hci env var, StubBackend remains default.

Fix daemon_main to use correct redox-scheme 0.11 API (Socket::create,
next_request/handle_sync/write_response loop) instead of non-existent
SchemeBlock.

125 btusb tests, 45 btctl tests, 2 wifictl tests passing.
2026-04-24 23:14:56 +01:00
vasilito f392c7bf7d Bluetooth B1: HCI protocol types, USB transport, daemon state machine
Add complete HCI protocol module (hci.rs) with packet types, 55+ constants,
command builders (Reset, Read BD Addr, Read Local Version, LE scan/connect),
event parsers, and structured result types. Add USB transport abstraction
(usb_transport.rs) with UsbHciTransport trait and StubTransport for testing.

Wire btusb daemon with endpoint descriptor parsing, HCI init sequence
(Reset → Read BD Addr → Read Local Version), ControllerState state machine,
and enhanced status output. Replace all expect()/unwrap() calls in btctl
and wifictl with proper error handling and graceful fallback.

91 btusb tests, 27 btctl tests, 2 wifictl tests passing.
2026-04-24 22:46:35 +01:00