b9716a7cd6
Snapshot de WIP acumulado de sesiones previas antes de merge wave 1 del flow 0008 (kanban_cpp + agent_runner_api + DoD schema). Incluye: - dev/flows/0008-kanban-cpp-and-agent-workflows.md - dev/issues/0112-0119*.md (7 sub-issues) - WIP previo en cmd/fn/doctor.go, registry/*, modules/, cpp/, etc. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.1 KiB
4.1 KiB
name, version, lang, description, members, tags, dir_path
| name | version | lang | description | members | tags | dir_path | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| framework | 1.2.1 | cpp | Core C++ ImGui app shell: fn::run_app, AppConfig, GLFW + OpenGL + ImGui + ImPlot bootstrap, theming (Mantine dark + indigo), settings/about/menubar/layouts UI, Tabler icons, logging, multi-viewport & AltSnap-safe sizemove, local_files dir, embedded layout storage, dark titlebar (DWM) en Windows, header badge por-app con el icono del .exe en panels arrastrados fuera del main. |
|
|
cpp/framework |
Documentation
Foundational C++ ImGui app shell shared by every desktop app in the registry. Apps opt-in transparently — every C++ app already links fn_framework via the add_imgui_app macro. The framework provides:
fn::run_app(cfg, render_fn): GLFW + OpenGL3 + ImGui + ImPlot setup, multi-viewport, docking, AltSnap-safe sizemove, icon attach, layouts persistence, log window, settings window, about window, menubar.fn::local_path(name): scoped writable path under<exe_dir>/local_files/.- Design tokens (Mantine dark + indigo accent).
- Tabler icons (TI_* macros).
fn::framework_version()/fn::framework_description()(post 1.0.0).
Apps NEVER list these members in their own uses_functions — they come transitively via fn_framework. Audited via cpp_apps rule.
Version policy
Semver. Major = breaking ABI/API of public fn::run_app or AppConfig. Minor = additive (new optional config field, new helper). Patch = bugfix.
Boundaries
Framework does NOT include modules like data_table. Apps that want tables opt-in via uses_modules: [data_table_cpp] and target_link_libraries(<app> PRIVATE fn_module_data_table). The framework is intentionally small.
Capability growth log
- v1.2.1 (2026-05-18) — fix:
io.ConfigDockingTransparentPayload = trueenfn::run_app. Multi-viewport docking pinta dock preview overlays en el target viewport mientras el payload viewport vive en su propio swap-chain; ambos viewports presentaban frames a destiempo y los rects de dock vibraban 1px contra el payload arrastrado. TransparentPayload hace invisible al payload durante el drag → solo el target dibuja overlays → ningun desync visible. Knob upstream recomendado para "rendering of multiple viewport cannot be synced". - v1.2.0 (2026-05-17) — Header badge en panels arrastrados fuera del main: icono GL extraido del HICON embebido (resource 101, mismo bitmap que el taskbar) y dibujado en el title bar de cada window con
Viewport != mainvia iteracion deg.Windowsconimgui_internal.h+AddImageRoundedsobrewindow->DrawList(noForegroundDrawList— no se renderia en viewports secundarios). Fallback Linux/sin .ico: cuadrado accent redondeado + inicial blanca. Color accent auto-cableado viacodegen_app_modules.pydesdeapp.md::icon.accent(externapp_header_accent_hex) con precedenciacfg.header_badge.accent_hex> codegen > hash-derived. Permite distinguir de un vistazo de que app viene cada panel flotante con varias apps abiertas. - v1.1.0 (2026-05-17) — Windows dark titlebar.
attach_dark_titlebar_to_hwnd(HWND)aplicaDWMWA_USE_IMMERSIVE_DARK_MODE = TRUEviaDwmSetWindowAttributesobre el HWND principal + per-frame scan depio.Viewportspara cubrir viewports secundarios (paneles dragged-out). Idempotente (set-once por HWND,g_dark_titlebar_applied). Sin efecto en Linux/macOS. Cero opt-in: cualquier app que usefn::run_applo hereda. - v1.0.0 (2026-05-16) — Initial framing as a versioned module. Members above are the bundled units of
fn_frameworkstatic lib. Pre-1.0.0 history lives in git.
Notes
- Static lib target:
fn_framework(defined incpp/CMakeLists.txt). - Generated header
cpp/framework/version_generated.h(gitignored) exposesFN_FRAMEWORK_VERSIONconstant. - About panel of every app reads
fn::framework_version()at runtime.