# Patch notes โ€” 0.4.1-glyphfix + about-overlay ## Patch 1: Glyphfix The GUI (`src/bin/gui.rs`) used 11 Unicode glyphs that are not present in iced 0.13's default embedded font (a subset of DejaVu Sans). Every missing glyph rendered as a tofu box (โ–ก) on screen. Affected locations (visible in the original screenshot): | Glyph | Code point | Where it appeared | |-------|------------|-------------------| | ๐Ÿ›ก | U+1F6E1 | Brand icon, before "CORBELPURGE" | | โ–ด โ–พ | U+25B4 / U+25BE | Chevrons before PATHS / OPTIONS / CONSOLE | | โ–ˆ | U+2588 | CONSOLE section label + gauge filled cells | | โ–‘ | U+2591 | Gauge empty cells (the 16-box string) | | โœจ | U+2728 | CLEANED stat | | ๐Ÿ“„ | U+1F4C4 | COPIED stat | | โš  | U+26A0 | ERRORS stat | | โป | U+23FB | START PROCESSING button | | ๐Ÿงน | U+1F9F9 | CLEAR LOG button | | โ„น | U+2139 | ABOUT / LICENSE button | | โ€ข | U+2022 | Findings bullet (only visible with findings) | ### Note on the `pdf-render` glyphs An earlier version of this patch also documented three glyphs that only appeared when the optional `pdf-render` feature was enabled (๐Ÿ“ on the IN/OUT browse buttons, โ—€ โ–ถ on PDF prev/next page buttons, ๐Ÿ–ฑ on the "view original PDF" button). The `pdf-render` feature was removed in v0.4.2 โ€” CorbelPurge scans four formats (PDF/EPUB/MD/DOCX) but only PDF had a visual renderer, which was an inconsistency that wasn't worth the pdfium dynamic-library dependency. Those three rows are kept out of the table above since the code paths no longer exist. ### Fix Swapped every problematic glyph for an ASCII equivalent that is guaranteed to render in iced's default font. No new dependencies, no embedded fonts, no binary-size regression. | Old | New | Rationale | |---------------|------|-----------| | ๐Ÿ›ก | `[+]` | "protected" badge feel | | โ–ด (open) | `-` | CLI-standard "expanded" marker | | โ–พ (closed) | `+` | CLI-standard "collapsed" marker | | โ–ˆ (filled) | `#` | block character everyone has | | โ–‘ (empty) | `-` | clean empty-track look | | โœจ | `*` | clean/done marker | | ๐Ÿ“„ | `>` | "copied out" arrow | | โš  | `!` | universal warning | | โป | `>` | "start" arrow | | ๐Ÿงน | `x` | universal clear/delete | | โ„น | `i` | universal info | | โ€ข | `*` | bullet, safe everywhere | | ๐Ÿ“ | `...` | standard "browse" indicator | ### Alternative (not applied) If you want prettier icons later, embed the `iced_fonts` crate (https://crates.io/crates/iced_fonts) which bundles Noto Sans Symbols 2 and Bootstrap/Material icon fonts. Then restore the original glyphs and apply `.font(iced_fonts::REQUIRED_FONT)` to each `text()` call. This adds ~600 KB to the binary but gives you proper iconography. --- ## Patch 2: About / License overlay ### Problem The ABOUT / LICENSE button in the footer was wired up to nothing โ€” it had no `.on_press(...)` handler, so clicking it did nothing. ### Fix Added a floating info panel overlay, modelled on the ferret about-panel screenshot. Visual style: - Dark panel background (`colors::panel()`) - Gold border (`colors::gold()`, 1.5px, 6px rounded corners) - Drop shadow (offset 4px down, 12px blur, 60% opacity) - Close (X) button in the top-right corner of the panel header - Structured content: - Title "CORBELPURGE" + version (from `CARGO_PKG_VERSION`) - Two-line description (from `Cargo.toml` description) - Metadata rows: Author / Website / License (last two from `CARGO_PKG_REPOSITORY` and `CARGO_PKG_LICENSE`) - Thin separator - Footer: tech stack + copyright ### Behavior - Clicking ABOUT / LICENSE toggles the overlay open/closed. - Clicking the X button (or pressing ABOUT / LICENSE again) closes it. - When open, the main UI is dimmed (55% opacity black backdrop). - No click-outside-to-close โ€” see Implementation notes below. ### Implementation notes iced 0.13 has no `Stack` widget (true non-modal overlays landed in 0.14). To emulate the ferret "floating panel over content" look without adding a dependency, we use a full-window dim backdrop with the panel positioned in the top-right via a `row + Space::Fill` layout. Click-outside-to-close was considered but dropped: wrapping the panel in a no-op `Button` would make every label inside the panel close the modal on click (since iced 0.13 buttons don't stop event propagation to their parent). ESC-key handling requires a keyboard subscription, which is a separate feature. ### Future enhancements 1. **Upgrade to iced 0.14+** to get the `Stack` widget, enabling true non-modal floating panels with click-outside-to-close. 2. **Add a keyboard subscription** for the Escape key to close the overlay without needing to click the X button. 3. **Embed `iced_fonts`** and restore the original emoji glyphs for a richer visual style. 4. **Make the website URL clickable** โ€” currently it's just colored text. iced 0.13 doesn't have a native hyperlink widget, but you could shell out to `xdg-open` via a button. ### Files changed - `src/bin/gui.rs`: - Added `about_open: bool` to `CorbelGui` state - Added `ToggleAbout` and `CloseAbout` Message variants + update handlers - Wired ABOUT / LICENSE button's `on_press` - Added `build_about_panel()` and `build_about_overlay()` functions - Added `about_dim_style()`, `about_panel_style()`, `about_close_btn_style()` style helpers - Modified `view()` to render the overlay when `about_open` is true - No changes to `Cargo.toml` โ€” no new dependencies added