Penumbra
Penumbra is a retained-mode UI framework built from first principles for Dawn, Pharos, and future Umbra tools. It provides the window, rendering, layout, interaction, and widget foundations while leaving themes and product identity to each application.
- Technology
- C++20 / SDL3 / UI systems
- Status
- Working prototype
Developer tools should not inherit their middleware’s identity.
Immediate-mode middleware makes tools fast to prototype but imposes a recognizable visual ceiling. A first-party editor suite needs sharper text, intentional layout, deep customization, and one coherent interaction model without forcing every tool to look identical.
Own the stack, leave the aesthetic to the app.
Penumbra uses a strict downward-only stack from widgets through rendering to SDL3. Its working prototype has been expanded through real consumers, adding layout and interaction primitives, application-owned frame and lifecycle handling, backend bridges, and a Nyx application path.
What it does.
- 01
Retained widget trees with measure, arrange, interaction, and draw passes
- 02
SDL3 platform and rendering boundaries with logical-pixel DPI handling
- 03
Boxes, text, input, scrolling, split panels, and editor-focused controls
- 04
Application-owned root trees and widget lifecycle dispatch
- 05
Working bridges for Chaos, Cosmos, Nyx, and native widget composition
How decisions
get made.
Apps own their identity
Penumbra exposes styleable primitives without imposing a built-in visual theme.
Layers only call downward
Widgets, rendering, and platform code have explicit ownership and dependency boundaries.
Built against real tools
Dawn and Pharos expose missing framework capabilities more effectively than a synthetic widget catalogue.
