264 lines
14 KiB
Markdown
Executable File
264 lines
14 KiB
Markdown
Executable File
# Changelog
|
|
|
|
All notable changes to OreBolt OS are documented in this file.
|
|
Format roughly follows Keep-a-Changelog; dates are YYYY-MM-DD.
|
|
|
|
## [v1.7] -- 2026-07-15
|
|
|
|
### System Tools Module Rewrite
|
|
|
|
The reset module is now a multi-function System Tools menu inspired
|
|
by Rockbox's tools menu on the Aigo Eros Q platform. The module
|
|
label in the launcher menu changes from "reset" to "system".
|
|
|
|
### Changed
|
|
|
|
- **reset.c rewritten as System Tools.** Four-option scrollable
|
|
menu: PURGE (operational cleanup), HIBY PLAYER (restore stock
|
|
firmware from /data/stock_backup/ and reboot), ROCKBOX (reboot
|
|
if .rockbox/ detected), REBOOT. Confirmation overlays for all
|
|
destructive actions. Status overlays with error/success states.
|
|
Rockbox detection is passive only -- OreBolt OS does not ship or
|
|
install Rockbox.
|
|
- **build.sh gains --backup-stock flag.** Phase 8a snapshots the
|
|
stock firmware files (usr/bin/, usr/lib/, etc/, res/, setting/)
|
|
into /data/stock_backup/ before any OreBolt files are written.
|
|
This enables the "Restore Hiby Player" option in System Tools.
|
|
- **SD-card-only firmware model.** All documentation now reflects
|
|
that OreBolt OS and Hiby Player coexist through SD card file
|
|
management alone. The SPI flash bootloader is never modified.
|
|
SD card is FAT32 single-partition only.
|
|
- **Device family identifier set to Aigo Eros Q.** ARCHITECTURE.md
|
|
and README.md now lead with "Aigo Eros Q family" as the canonical
|
|
hardware platform name.
|
|
- **ARCHITECTURE.md adds Section 7: Firmware coexistence.** Table
|
|
showing which SD card files correspond to which firmware
|
|
environment, and how switching works.
|
|
- **ARCHITECTURE.md filesystem layout updated.** Now includes
|
|
/data/stock_backup/, /data/roms/ paths.
|
|
- **main.c module table: "reset" label changed to "system".** The
|
|
.mod binary filename remains reset.mod for build compatibility.
|
|
- **Source comments cleaned across all .c/.h files.** Version-
|
|
prefixed comment lines replaced with intentional, self-describing
|
|
headers. No functional code changed (except reset.c).
|
|
- **All documentation version bumped to v1.7.** README, QUICKSTART,
|
|
ARCHITECTURE, BUILD_MANIFEST, LICENSE, PREREQUISITES, HEADERS,
|
|
build.sh, Makefile, Makefile.h2-core-v6.2 (v6.5), S99broker.
|
|
- **retro.mod** (retro game launcher) is properly listed across all
|
|
documentation with its full feature description.
|
|
- **S99broker: OREBOLT_VERSION exports 1.7**, module count 17.
|
|
|
|
## [v1.6] -- 2026-07-15
|
|
|
|
### The "Unified Radar" Release
|
|
|
|
v1.6 consolidates the standalone `radar.mod` (BLE hex grid scanner) and the
|
|
`wifi.mod` adapter stub into the unified `proxalarm.mod` binary. This
|
|
eliminates ~30 KB of duplicate .text on 64 MB RAM devices, removes a
|
|
redundant HCI connection, and provides a single source-agnostic RF
|
|
scanning API with a WiFi integration stub.
|
|
|
|
### Removed
|
|
|
|
- **radar.mod (orebolt-radar/noise_radar.c).** Superseded by
|
|
proxalarm's radar_ui canvas renderer (rotating sweep, range rings,
|
|
velocity vectors, alarm overlay). The `modules/orebolt-radar/`
|
|
directory is removed.
|
|
- **wifi.mod (orebolt-wifi/wifi.c).** The v1.4 stub had no `main()`
|
|
function and could not be fork+exec'd by the launcher. Its purpose
|
|
(WiFi adapter control) is now served by bledsp's source-agnostic
|
|
device table and the `bledsp_poll_wifi()` stub. The
|
|
`modules/orebolt-wifi/` directory is removed.
|
|
|
|
### Changed
|
|
|
|
- **Module count: 17 .mod binaries + 1 standalone daemon** (was 19 + 1).
|
|
- **bledsp upgraded to unified RF scanning layer.** New API:
|
|
- `bledsp_source_t` enum gains `BLE_SRC_SIM` (explicit sim mode).
|
|
- `bledsp_get_source()` / `bledsp_cycle_source()` for runtime source
|
|
selection.
|
|
- `bledsp_source_label()` returns "BLE", "WIFI", or "SIM".
|
|
- `bledsp_poll_wifi()` stub with implementation roadmap (nl80211).
|
|
- `bledsp_poll()` now centralizes the "mark all inactive" step before
|
|
dispatching to `ble_poll()`, `sim_poll()`, or `bledsp_poll_wifi()`.
|
|
- **proxalarm main gains NEXT key handler.** NEXT cycles the active
|
|
RF source between BLE and WIFI at runtime, with live label update.
|
|
- **H2_MOD_RADAR and H2_MOD_WIFI removed from h2_ui.h enum.**
|
|
Enum renumbered: PROXALARM is now ID 15, BITCHAT is ID 16.
|
|
- **main.c module table: radar and wifi entries removed, all versions
|
|
bumped to 1.6.**
|
|
- **Makefile.h2-core-v6.2 -> v6.3.** BLUETOOTH_MODULES reduced to
|
|
just `proxalarm` (was `radar proxalarm`). radar and wifi build
|
|
targets removed.
|
|
- **All documentation updated** (ARCHITECTURE.md, README.md, this file).
|
|
Stale references to radar.mod, wifi.mod, "19 modules" purged.
|
|
Memory spec corrected to 64 MB (was incorrectly 128 MB).
|
|
|
|
### Added (from earlier v1.6 work, preserved)
|
|
|
|
- **proxalarm -- BLE Proximity Alarm (tripwire detector).** Three-layer
|
|
architecture: bledsp (BLE scanning + RSSI DSP smoothing), proxvec
|
|
(kinematics engine with per-target state machine and velocity tracking),
|
|
radar_ui (LVGL canvas radar display). Now unified with WiFi stub.
|
|
- **Documentation hardening** (BitChat nominative fair use analysis,
|
|
module descriptions aligned to actual implementations).
|
|
|
|
## [v1.5] -- 2026-07-14
|
|
|
|
### The "Implementations" Release
|
|
|
|
v1.4 shipped 18 module slots with zero functional code -- every module was
|
|
a build-linkable stub that displayed a label and logged init/deinit. v1.5
|
|
provides full implementations for 13 of those 18 modules, adapted to the
|
|
v1.4 build infrastructure and header API.
|
|
|
|
### Fixed
|
|
|
|
- **emulator_input_mapper build target no longer links against LVGL.**
|
|
v1.4's `Makefile.h2-core-v6.1` compiled the mapper stub with
|
|
`-llvgl`, which would break the real standalone uinput daemon.
|
|
v1.5's `Makefile.h2-core-v6.2` builds the mapper with zero LVGL
|
|
flags or libraries -- it is a pure uinput daemon.
|
|
- **main.c uses the fork/exec launcher model.** v1.4's main.c
|
|
ran a single monolithic LVGL event loop with all modules as stub
|
|
callbacks. v1.5 uses the fork/exec broker: the launcher shows the
|
|
module menu, fork+execs the selected .mod binary, and waitpid()
|
|
blocks until the child exits. Each module binary
|
|
initializes its own LVGL instance and runs its own event loop.
|
|
- **h2_ui.h provides both module APIs.** Provides both the
|
|
`init_h2_graphics_runtime()` inline bootstrap (for standalone
|
|
.mod binaries) and the `h2_module_t` registration API (for
|
|
the launcher menu). Also defines H2 input event code constants
|
|
(H2_KEY_PLAY, H2_KEY_BACK, etc.) used uniformly across all modules.
|
|
- **log_manager.h provides both logging APIs.** Provides both the
|
|
v1.4 structured log level interface (LOG_INF/DBG/ERR macros,
|
|
log_init/log_write/log_close) and the v1.3 flash-safe timed
|
|
coalescer (timed_log_init/timed_log_write/timed_log_flush_to_media)
|
|
with 64KB RAM buffer and configurable windowed disk flush.
|
|
- **S99broker OREBOLT_VERSION set to 1.5** (was still "1.4").
|
|
|
|
### Changed
|
|
|
|
- **Module count in Makefile: 18 .mod binaries + 1 standalone daemon.**
|
|
v1.4's Makefile listed 18 entries including emulator_input_mapper
|
|
as an LVGL module. v1.5 lists 18 .mod entries (rfid/wifi/glitch/
|
|
pwdb/bitchat remain stubs) plus a separate `mapper` target that
|
|
builds the standalone daemon without LVGL.
|
|
- **Sub-Makefile bumped: Makefile.h2-core-v6.1 -> Makefile.h2-core-v6.2,
|
|
Makefile.orebolt-v1.4 -> Makefile.orebolt-v1.5.**
|
|
- **Master Makefile updated** to reference v6.2 and v1.5 sub-makefiles.
|
|
- **radar module now links against -lbluetooth** for BlueZ HCI calls.
|
|
- **All restored modules use H2_KEY_BACK/H2_KEY_PLAY constants** instead
|
|
of hardcoded key codes (158/164), and include LOG_INF/LOG_ERR calls.
|
|
- **vault upgraded to full PIN auth module.** The original v1.3/v1.5
|
|
entropy-only display has been replaced with the complete Master
|
|
Manifest vault implementation: 4-digit PIN entry with rotary
|
|
encoder, non-volatile failure tracking, 300s lockout penalty,
|
|
and dual wired/wireless identity modes with automatic USB/BLE
|
|
state enforcement based on cable detection.
|
|
- **studio upgraded to UAC2 Mixer Console.** The original v1.3/v1.5
|
|
frequency analyzer has been replaced with the complete Master
|
|
Manifest studio implementation: 4-channel mixer (GAME/DISCORD/
|
|
MIC/MUSIC) with per-channel volume bars, USB Consumer Control
|
|
HID commands via /dev/hidg1 (vol up/down/mute), NEXT/PREV key
|
|
channel switching, and hardware mute toggle with visual feedback.
|
|
- **S99broker now sets system volumes to maximum on boot** via
|
|
`amixer sset 'Master' 100% unmute` and `amixer sset 'Headphone'
|
|
100% unmute`, matching the Master Manifest boot sequence.
|
|
|
|
### Added
|
|
|
|
- **13 fully functional module implementations:**
|
|
- **vault** -- Crypto Security Token Vault Gateway. Full PIN
|
|
authentication system (default 4-2-9-1) with rotary digit entry,
|
|
non-volatile failure tracking via /data/vault/failures.dat,
|
|
3-attempt lockout with 300s penalty countdown. Dual identity
|
|
modes: WIRED (USB composite gadget via enable_vault_usb.sh) and
|
|
WIRELESS BLE (via enable_vault_ble.sh) with automatic switching
|
|
based on USB cable detection. RAM key purge on BACK exit.
|
|
- **nettaps** -- USB Virtual Network Tap. Selectable time-window
|
|
coalescer (30s/1m/2m/5m/10m), raw AF_PACKET capture on usb0,
|
|
IP packet parsing, live LVGL console, flash-safe timed disk flush.
|
|
- **scalpel** -- Acoustic Scalpel Live Sound Synthesizer. NEW
|
|
module from Master Manifest (Asset V). POSIX-threaded audio
|
|
synthesis writing to /dev/dsp at 44.1kHz. SINE and SQUARE
|
|
waveforms with real-time frequency tuning (20 Hz - 20 kHz)
|
|
via rotary encoder in 10 Hz steps. PLAY toggles waveform.
|
|
- **deploy** -- Flash Storage Manager. statvfs("/") display of
|
|
total/used/free MB with percentage, manual sync() via PLAY button.
|
|
- **studio** -- Studio Audio Class 2.0 Streaming Control Console.
|
|
4-channel mixer (GAME/DISCORD/MIC/MUSIC) with per-channel
|
|
volume bars, NEXT/PREV key channel switching, PLAY toggles
|
|
hardware mute. Sends USB Consumer Control HID commands
|
|
(volume up/down/mute) to host via /dev/hidg1. DAC link
|
|
status display (PCM 24-bit / 192 kHz).
|
|
- **probe** -- I2C Bus Hardware Scanner. Probes /dev/i2c-0 address
|
|
space 0x03-0x77, displays responding devices with green highlighting.
|
|
- **vterm** -- FreeDOS Emulation Bridge. fork+exec dosbox with custom
|
|
config, SIGTERM cleanup on BACK key, waitpid(WNOHANG) monitoring.
|
|
- **radar** -- BLE Device Radar Scanner. BlueZ HCI inquiry with RSSI
|
|
(primary) or standard inquiry (fallback), 19-cell hexagonal heatmap
|
|
grid, 3-tier RSSI color coding, auto-repeating scan loop.
|
|
- **pauto** -- Payload Automation (HID Keystroke Injector). Full
|
|
OreBolt macro command language parser (DELAY, STRING, REM,
|
|
modifier+key combos), USB HID keycode table (a-z, A-Z, 0-9,
|
|
punctuation, F1-F12), rotary-scrollable payload picker, 8-byte
|
|
report via /dev/hidg0.
|
|
- **extract** -- Mass Storage Extractor. Recursive copy from
|
|
/mnt/target_media to /data/loot_drop/extracted/, skips symlinks,
|
|
4KB chunk copy, displays file/dir/byte counts.
|
|
- **noise** -- USB Hardware TRNG Stream. Generates 32-byte true
|
|
entropy blocks via getrandom(GRND_RANDOM), pipes to host over
|
|
CDC ACM serial (/dev/ttyGS0) at 100Hz.
|
|
- **reset** -- System Stack Purge/Reset. 3-state machine
|
|
(CONFIRM->RUNNING->DONE), kills dosbox, brings usb0 down,
|
|
deletes /data/loot_drop contents, calls sync().
|
|
- **emulate** -- Universal Retro Game Launcher. 17-type ROM
|
|
database (NES/FDS/SNES/GB/GBC/GBA/Genesis/SMS/GameGear/PCE/
|
|
Atari2600/NeoGeoP), recursive /data/roms/ scan, 13-system filter
|
|
with rapid-rotate cycling, fork+exec emulator launch, BACK kills
|
|
child with SIGTERM.
|
|
- **emulator_input_mapper standalone daemon** -- fully integrated
|
|
Full 456-line uinput gamepad translator: rotary encoder to d-pad
|
|
(V-mode/H-mode toggle, 3s auto-revert), PLAY/BACK to A/B (short)
|
|
and START/SELECT (long 1.5s), PREV/NEXT to L/R shoulders, combo
|
|
buttons for X/Y. Creates "H2 Virtual Gamepad" via /dev/uinput.
|
|
Now built with -fstack-protector-strong -D_FORTIFY_SOURCE=2.
|
|
- **S98retro-input init script** -- Full PID tracking,
|
|
daemon existence checks, graceful TERM to KILL escalation (2s timeout),
|
|
stale pidfile detection, and `status` command.
|
|
- **ROM directory structure** created in overlay/data/roms/ for 11
|
|
systems: nes, snes, gb, gbc, gba, genesis, sms, gg, pce, atari2600,
|
|
ngp. Directories are created both at build time (makefile rom-dirs
|
|
target) and shipped in the overlay tree.
|
|
- **overlay/data/bt_config/paired_macs.txt** -- Trusted accessory MAC
|
|
allow-list for bt_input_daemon.sh autoconnect.
|
|
- **overlay/data/chat_config/macros.txt** -- 10 pre-defined BitChat
|
|
mesh command templates (STATUS/ALERT/CMD/TEST/PANIC types).
|
|
|
|
### Still Stubs (5 modules)
|
|
|
|
The following modules added in v1.4 remain as stubs pending real
|
|
hardware implementations:
|
|
|
|
- **rfid** -- RFID reader (no hardware spec yet)
|
|
- **wifi** -- WiFi management (no driver support yet)
|
|
- **glitch** -- Glitch/fault injection (hardware-dependent)
|
|
- **pwdb** -- Password database (design phase)
|
|
- **bitchat** -- Mesh frontend (liborebolt.a has mod_bitchat_mesh.c
|
|
with bloom filter, but the .mod UI stub needs real BLE mesh code)
|
|
|
|
## [v1.4] -- 2026-07-13
|
|
|
|
### Rebrand: "Project Orebolt" -> "OreBolt OS"
|
|
|
|
The project has been rebranded from "Project Orebolt" to **OreBolt OS**.
|
|
The v1.4 release is a build-and-licensing cleanup pass. All 18 module
|
|
.c files are build-linkable stubs. See the full v1.4 changelog for
|
|
details on the SoC correction, SHA256SUMS fix, and AGPL licensing.
|
|
|
|
## [v1.3] -- 2026-07-13 (pre-cleanup)
|
|
|
|
Initial public drop. Shipped the overlay tree and all 12 module
|
|
implementations as standalone fork/exec binaries. Targeted the wrong
|
|
SoC (T31 instead of X1000E). See v1.4 changelog for cleanup details. |