Beautification pass on the text UI (all pure ASCII so it renders identically on
the UEFI Unicode console and the VGA CP437 console, which truncates chars to
bytes):
- Os::text_columns(): new trait method to query the real console width.
BIOS returns the VGA width; UEFI queries SimpleTextOutput QueryMode for the
current mode's columns (both fall back to 80). Enables true centering.
- draw_header now draws a full-width frame around a centered figlet "RedBear
OS" wordmark, with a centered version/platform subtitle, in brand red/cyan.
Falls back to a plain centered name on consoles narrower than the wordmark.
- Loading progress lines (live / kernel / initfs) gain a fixed-width ASCII
progress bar next to the MiB counters, and turn green on completion.
- A centered green "Booting RedBear OS..." closes the loading screen.
Verified: cargo check passes for x86_64-unknown-uefi (--bin) and
x86-unknown-none (--lib).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Comprehensive fix for overlapping bootloader text. The loader ran three phases
(filesystem, resolution menu, loading) that all wrote to one never-fully-cleared
screen at absolute cursor positions, so they overprinted each other. Most
visibly, the loading phase began printing "live: .../..." exactly where the menu
had left the cursor (the "Autobooting" row), so "live" landed on top of the
countdown. clear_text() also only ran for the 2nd+ video output, so on a single
display the menu was drawn under the header.
Introduce draw_header(os): clear the screen and draw a consistent, branded
"Red Bear OS" title + version/platform + separator. Call it at the start of each
phase so every screen is clean and no phase overprints another:
- Phase 1 (filesystem / password prompt)
- Phase 2 (resolution menu, per video output)
- Phase 3 (kernel/initfs load + optional live preload)
Also:
- Rebrand user-facing strings: "Redox OS Bootloader" -> "Red Bear OS", and
the env editor title -> "Red Bear OS Boot Environment Editor". (RedoxFS /
the RedoxFtw initfs magic are left as-is: those are real format names.)
- Drop the raw "Hardware descriptor: {:x?}" Debug dump from the UI.
- Indent all loading-phase progress lines (RedoxFS/live/kernel/initfs) to
match the header for a consistent layout.
Verified: cargo check passes for x86_64-unknown-uefi (--bin) and
x86-unknown-none (--lib).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The countdown row was derived as list_y - 4, which landed one row too low
(on the "Use Up/Down" line) instead of on the header line printed before the
loop. The in-loop countdown therefore rendered a second "Autobooting in X
seconds" copy directly below the static header, showing the phrase twice.
Capture the header's row with get_text_position() right before printing it, so
the loop updates that exact line in place — one countdown line, no stale copy.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Ports two pieces of menu work that were stranded on the abandoned
`bootloader-detached-pending` lineage (a divergent full-history upstream-1.0.0
rebase that was never merged into this build branch and never pushed):
- 3d41cf7 "categorized resolution menu": replaces the flat area-sorted grid
selector with a categorized list (4K / 2.5K / FullHD / HD / 1024x768) plus
a "More resolutions" sub-menu (select_obscure) for uncommon modes.
- 9a12ee2 "fix garbled text — pad all console lines to consistent width":
the UEFI text console does not clear old characters when a shorter line
overwrites a longer one at the same position, so menu/countdown/live-mode
lines are padded to fixed widths ({:<50}/{:<70}/{:<40}) and fully
overwritten each frame.
Adapted to this branch's select_mode signature and merged with this branch's
best_resolution() fallback: the initial highlight prefers 1280x720, then the
display's EDID-preferred mode, then the largest available — so hardware native
resolution is not lost by the categorized default.
Verified: cargo check passes for both x86_64-unknown-uefi (--bin) and
x86-unknown-none (--lib). Supersedes the menu work on
bootloader-detached-pending, which is being removed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Re-adds the TextColor enum + Os::set_text_color (no-op default, VGA fg
override for BIOS, EFI SetAttribute for UEFI) and colors the default-resolution
message green + the autoboot countdown yellow. The countdown + default
1280x720 were already present; only the color mechanism was lost when the
bootloader was rebased to upstream 1.0.0 (the color commits stayed on
bootloader-detached-pending).
Apply the full Red Bear bootloader patch set:
- P0-gpt-partition-offset
- fix-uefi-alloc-panic
- redox.patch (Makefile/mk and misc fixes)
- P1-bootloader-timeout-and-default-resolution
- P2-live-preload-guard
- P3-uefi-live-image-safe-read
- P4-live-large-iso-boot
- P5-live-preload-cap-1gib
Also switch redoxfs dependency to the local fork path.