Exported Firmware
ForgeUI Fi Runtime
Turn any Standard Fi Icon into a generated runtime object through the canonical Icon pipeline and the 90, 95 and 96 ownership boundary.
Every Standard Fi Icon can become a runtime object
A Standard Fi Icon remains display-only by default, can expose generated visibility, opacity and colour controls, and can optionally become clickable. Application code uses generated FG_Set_* functions and FG_On_* hooks; normal use requires no raw LVGL.
90 / 95 / 96 responsibilities
| File | Responsibility |
|---|---|
| 90_Studio_Export.c / .h | Generated LVGL object creation and ownership, serialized geometry, runtime binding and optional event attachment. |
| 95_UserEvents.c / .h | Developer input behavior, optional Icon click hooks and Live preservation merge. |
| 96_FiRuntime.c / .h | Generated retained visibility, opacity and colour state, object binding and image/symbol abstraction. |
One canonical Icon pipeline
Icon Browser
↓
Canonical Renderer
↓
Persisted Asset
↓
Canvas
↓
Browser Preview
↓
Native Export
↓
96 Runtime- —One renderer and normalized Icon model
- —One 92% automatic-fit rule with exact explicit-size override
- —One source-dimension and transparent-padding model
- —One source-aware scaling and centring calculation
- —One generated export used by Live Studio and Standalone Export
- —Only used icons emit assets and runtime code
Component-name generated APIs
void FG_Set_<Name>_Visible(bool visible);
void FG_Set_<Name>_Opacity(uint8_t opacity);
void FG_Set_<Name>_Color(uint32_t rgb);
/* Optional when click is enabled */
void FG_On_<Name>_Clicked(void);Duplicate and sanitization-colliding component names receive deterministic _2, _3 and later suffixes. The selected Fi asset name controls only what is drawn.
Retained and silent runtime behavior
- —Setters are silent and never invoke 95_UserEvents
- —Pre-initialization calls update retained state and apply on object binding
- —Null object pointers are guarded
- —Repeated effective values are suppressed
- —Image-backed icons use LVGL image recolour with cover opacity
- —Supported LVGL-symbol-backed icons use label text colour
- —Multiple instances keep independent state and collision-safe names
- —A deliberate click produces exactly one hook and startup produces none
Inspector configuration
| Control | Default and behavior |
|---|---|
| Generate runtime API | On; older projects hydrate safely to enabled. |
| Enable tap/click | Off; normal icons remain display-only. |
| Pressed colour and opacity | Available only when click is enabled. |
| Icon presentation | Selected icon, colour, opacity, visibility, geometry and automatic or explicit size remain canonical. |
Plant WiFi, Living Room AirPlay and Settings Shortcut
FG_Set_Plant_WiFi_Visible(true);
FG_Set_Plant_WiFi_Opacity(220);
FG_Set_Plant_WiFi_Color(0x42C9D7);
FG_Set_Living_Room_AirPlay_Color(0xF2A900);
void FG_On_Living_Room_AirPlay_Clicked(void)
{
/* Developer behavior in 95_UserEvents.c */
}
void FG_On_Settings_Shortcut_Clicked(void)
{
/* Runtime API may remain disabled for this click-only Icon. */
}Plant WiFi is runtime-enabled and display-only. Living Room AirPlay uses runtime presentation plus click. Settings Shortcut demonstrates click-only generation: 90 and 95 are used, but no presentation setters are emitted for that instance.
Future semantic runtime direction
FG_Set_Plant_WiFi_State(...);
FG_Set_Battery_Level(...);
FG_Set_Cloud_State(...);
FG_Set_Bluetooth_Connected(...);Live and Standalone ownership
Live Studio regeneration replaces 90 and 96 while preservation-merging matching 95 hook bodies. Standalone Export receives the same generated blocks and source registration; after export, the standalone project becomes developer-owned. Normal developer use requires no raw LVGL.
Fi Runtime proof status
SOFTWARE COMPLETE · CLICK PATH PROVEN · PRESENTATION PROOF PENDING
FG_On_Comp_MS9QE1N7GA5O3_Clicked
FG_On_Comp_MS9Q2MXPEJP7D_Clicked
FG_On_Comp_MS9Q42SGCB4EB_Clicked