Releases: Helaas/Apostrophe
Release list
v1.1.0
[v1.1.0] - 2026-03-30
Added
- Desktop NextUI preview cache (
Makefile,README.md,docs/GETTING_STARTED.md): addedmake setup-nextui-preview-cacheandmake clean-nextui-preview-cacheto populate a local.cache/nextui-preview/via sparse checkout fromhttps://github.com/LoveRetro/NextUI.gitpinned to7d201cf293f3a253e09749b8bb002e0b9f66d652. The cache generates localnextval.jsonandminuisettings.txtfixtures for desktop preview use without bundling upstream GPL sprite assets.
Changed
- Footer overflow chord disabled by default (
apostrophe.h): the L1+R1 shoulder button chord no longer opens the hidden-actions overlay, and there is no default Menu→overflow binding in core. Apps and widgets that draw footers may wire the Menu button toap_show_footer_overflow()(and/or a custom chord viaap_set_footer_overflow_opts()), but this is opt-in per screen. - Desktop demo NextUI parity (
Makefile,examples/demo/main.c,examples/download/main.c):run-mac-demoandrun-mac-downloadnow auto-wireAP_STATUS_ASSETS_DIR,AP_NEXTVAL_PATH,AP_MINUI_SETTINGS_PATH, and preview battery/wifi defaults from.cache/nextui-preview/when no overrides are provided. The demo and download examples now opt into NextUI styling on desktop as well as on device. - Queue Viewer filter labels (
apostrophe_widgets.h):ap_queue_optsnow accepts an optionalfilter_labels[4]override so downstream apps can rename the built-in queue filters without forking the widget. Unset entries still fall back toALL,IN PROGRESS,DONE, andFAILED. - Queue viewer navigation parity (
apostrophe_widgets.h,docs/API.md,docs/WIDGETS.md):ap_queue_viewer()now matchesap_list()navigation semantics. D-Pad Left/Right still page by visible rows, whileL1/R1jump between first-letter groups inside the active filter. - Single-icon status bar pills (
apostrophe.h,examples/download/main.c,docs/API.md): status bars now keep width calculation and drawing aligned when only one battery/wifi icon is visible with the clock hidden. Sprite-backed status bars render that case as a centered square pill, and the download demo includes a wifi-only repro screen. - Download manager scrollbar sizing and alignment (
apostrophe_widgets.h):ap_download_manager()now feeds row counts intoap_draw_scrollbar(), clamps scroll after row-height changes, and limits the scrollbar track to the rendered row stack so the thumb size and track height match the visible-item model instead of inflating on completion and speed-toggle screens.
v1.0.0
Changelog
[v1.0.0] - 2026-03-28
Added
-
Queue Viewer widget (
apostrophe_widgets.h): newap_queue_viewerwidget for displaying live-updating background job queues. Features: animated pill selection (same interpolation asap_list), horizontal text scroll on long titles, inline per-item progress bars, filter cycling (All / In Progress / Done / Failed, Y button), summary bar showing "X/Y complete, Z failed" above the footer, detail callback for terminal items (A button), cancel callback while jobs are active plus clear-done callback when idle (X button), Menu/footer-overflow support, and idle-aware frame requests — CPU goes idle automatically when all jobs are terminal. Caller supplies a thread-safe snapshot callback; all threading stays in the caller. Demo entry added. -
Smooth detail screen scrolling (
apostrophe_widgets.h):ap_detail_screennow animates scroll position changes using linear interpolation over 80ms (AP__SCROLL_ANIM_MS), replacing the previous instant-jump behavior. Scroll target and display position are tracked separately, with each input press starting a new animation from the current position. -
Expanded options demo (
examples/demo/main.c): Options List demo now has 15 items (was 5) including Brightness, Language, Screen Timeout, WiFi, Bluetooth, Notifications, Font Size, Auto-Save, Storage, and Reset All — enough to exercise scrolling on any screen size. -
Optional list scrollbar hiding (
apostrophe_widgets.h,examples/demo/main.c):ap_list_optsnow includeshide_scrollbarso lists can keep the same scrolling behavior while omitting the scrollbar gutter and thumb. The demo app includes a dedicatedList (No Scrollbar)example. -
URL keyboard number/symbol toggle (
apostrophe_widgets.h):ap_url_keyboard()now exposes a bottom-row123/abctoggle that swaps the URL key rows between URL-friendly characters/QWERTY input and a number/symbol grid, making it possible to enter digits and additional punctuation without leaving URL mode. -
List trailing hints (
apostrophe_widgets.h):ap_list_itemnow supports optional right-alignedtrailing_textwithout changingmetadatasemantics, keeping existing list consumers source-compatible while enabling downstream-style row hints. -
Keyboard input field scrolling (
apostrophe_widgets.h): Text in the keyboard input field now scrolls horizontally to keep the caret always visible when text exceeds the field width. Works for all keyboard types (general, URL, numeric). Demo entry for long text scrolling. -
Idle rendering (
apostrophe.h,apostrophe_widgets.h):ap_present()now sleeps the thread viaSDL_WaitEventTimeoutwhen no frame is requested, dropping idle CPU usage to near zero. New public API:ap_request_frame()for continuous 60fps rendering (animations),ap_request_frame_in(ms)for scheduling future redraws (caret blink, spinners). All widget loops instrumented:ap_list(pill animation, text scroll), keyboards (caret blink every 500ms),ap_process_message(spinner/progress),ap_download_manager(active downloads). Static widgets (options, confirmation, detail, etc.) idle automatically. -
Confirmation message layout improvements (#20): vertical centering for confirmation messages, support for long wrapped text, and clamping for narrow/overflowing dialogs.
-
macOS resolution handling (#19): improved resolution detection and device metrics for macOS development builds.
-
Custom footer button text (#17, #18):
button_textfield onap_footer_itemfor custom pill labels. Bundled font license file. OFL end marker fix, codepoint function rename, uppercase footer labels. -
Honor A-confirm in options list (#16): pressing A now confirms the current selection for keyboard and color picker option items.
-
Ellipsized text rendering (#15):
ap_draw_text_ellipsized()for drawing text truncated with an ellipsis. Fixes for buffer allocation and non-negative label width in options list. -
WiFi signal strength caching (#14): RSSI reads are now cached with a 5-second TTL to stabilize the status bar display and reduce subprocess overhead.
-
Font override options (#13):
title_font/item_fontoverrides for list and detail widgets. -
Font bump (#12): automatic font size bump based on logical screen resolution.
ap_get_font_bump()accessor anddisable_font_bumpconfig option. -
Detail screen styling options (#11):
center_title,show_section_separator,key_coloronap_detail_opts.ap_draw_screen_title_centered()core drawing function. Demo entry for styled detail screen. -
AP_LIST_ITEM/AP_LIST_ITEM_BGhelper macros (#9): convenience macros and designated-initializer guidance forap_list_item. -
Background reload and list background previews:
ap_reload_background()support and background preview in list widget demo (#10). -
List page & letter skip navigation: D-Pad Left/Right skip by one page in
ap_list. L1/R1 jump between alphabetical letter groups. Help overlay moved from L1 to Menu button; when bothhelp_textand hidden footer items exist, Menu shows help first then footer overflow sequentially. Demo entry for navigation features. -
ap_show_footer_overflow(): Public API to programmatically open the hidden-actions overlay. Useful for screens with custom input loops that handle Menu independently ofap_list.
Changed
ap_draw_text_wrappedreturn type (apostrophe.h): now returnsint(rendered height in pixels) instead ofvoid, enabling callers to measure wrapped text layout.
Fixed
- Keyboard demo flow and coverage (
examples/demo/main.c): exiting the on-screen keyboard now returns to theKeyboard Modepicker instead of the top-level demo menu, the built-in URL demo now usesap_url_keyboard()rather than the generic keyboard, the custom URL demo is wired to the correct menu entry, and the UTF-8 / long-text cases were merged into a single demo entry. - MY355 analog stick sensitivity (
apostrophe.h):AP_AXIS_DEADZONEis now platform-specific, using20000on Miyoo Flip (my355) builds to reduce accidental left/right activation when moving vertically while keeping the previous deadzone on other targets. - Demo background preview (#10): use selected item metadata and guard on reload return value.
- Keyboard UTF-8 editing: backspace, caret movement, and input-field measurement now operate on UTF-8 codepoint boundaries, fixing broken deletion/rendering for multibyte characters such as
€. - Bundled font glyph coverage: added
✓and€tores/font.ttf, fixing the multi-select checkmark glyph and adding Euro symbol support. On a device, the font that is configured in NextUI will still be used, so this only affects desktop development builds that use the bundled font. - NextUI background color compatibility:
ap_theme_load_nextui()now accepts both currentcolor7and legacybgcolorfor the fallback solid background color. - Documentation terminology and controls: standardized
my355platform naming toMiyoo Flipand corrected stale help-overlay docs to use the Menu button instead of L1.
v0.0.1
Changelog
All notable changes to Apostrophe will be documented in this file.
The format is based on Keep a Changelog.
[v0.0.1] - 2026-03-10
Added
- Core library (
apostrophe.h): init/quit lifecycle, SDL2 window/renderer management, input abstraction (virtual buttons, combos), drawing primitives (text, shapes, pills, images), theming (NextUI integration), font system (6 tiers matching NextUI), status bar, footer, scrollbar, progress bar, screen fade, texture cache, text scrolling, CPU/fan control, power button handling, logging - Widget library (
apostrophe_widgets.h): list (single/multi-select, reorder, images), options list (cycle/keyboard/clickable/color picker), keyboard (general/URL/numeric), confirmation dialog, selection dialog, process message (async worker with progress), download manager (multi-threaded, requires libcurl), detail screen (info/description/image/table sections), color picker, help overlay - Platform support: TrimUI Smart Pro (
tg5040), TrimUI Smart Brick (tg5040/tg3040), TrimUI Smart Pro S (tg5050), Miyoo Flip (my355), macOS (development) - Build system: GNU Make with Docker-based cross-compilation for all device platforms
- Examples: hello (minimal), demo (comprehensive widget showcase), download (status bar + download manager), combo (chord/sequence input), perf (CPU/fan control)
- Documentation: Getting Started guide, API reference, Widget catalog, Porting from Gabagool guide, Gabagool parity matrix