Skip to content

Post-merge follow-ups: canonical application shape, wasm glfw cards, docs TOC, manifest cleanup - #3593

Merged
borisbat merged 5 commits into
masterfrom
bbatkin/dasimgui-followups
Jul 30, 2026
Merged

Post-merge follow-ups: canonical application shape, wasm glfw cards, docs TOC, manifest cleanup#3593
borisbat merged 5 commits into
masterfrom
bbatkin/dasimgui-followups

Conversation

@borisbat

Copy link
Copy Markdown
Collaborator

Post-merge follow-ups: canonical application shape, wasm glfw cards, docs TOC, manifest cleanup

The follow-up batch to the dasImgui merge (#3592), plus two standalone site/wasm fixes. One PR by design — the lanes run once.

The canonical application shape (/examples/application + repo-wide GC sweep)

  • New examples/application/main.das — the template every long-running program copies: [export] init/update/shutdown + a standalone main = init → loop(update + maybe_collect_gc()) → shutdown. No UI; runs standalone (--frames, --tick-ms) and under daslang-live (the host drives the trio; @live state survives reloads). Registered with ADD_EXAMPLE_RUN, so CI runs it per-PR.
  • maybe_collect_gc hoisted to a UI-neutral home: new live/live_gc module (dasLiveHost) — windowless programs (servers, bots, tools) get the standalone GC boundary without a GLFW dependency. live/glfw_live re-exports it; zero call-site changes.
  • Language fact, probe-verified and now in CLAUDE.md: options gc does not cascade from a required module — the entry program must declare it (persistent_heap does cascade). This shaped the sweep: one options gc + one collect call per entry program.
  • GC-boundary sweep, 216 files: all 192 dasImgui example/tutorial apps + jobque-timeline (Boris's flagged case), the 11 daslive showcases, graphics labs, vulkan/gltf viewers, daStrudel apps. Three dual-shape drifters (strudel_live, strudel_sf2_live, daStrudel_16) now have standalone mains that call their own trio — no more unreachable shutdown.
  • Full conversions where the shape was absent: examples/hv/ws_chat_server.das (the flagged dasHV case — monolithic while(true) with dead gc options → canonical server trio, live-smoke-tested: /ping, /status, clean stop) and both long-poll bots (telegram/echo-bot, claude/daslang_helper_bot — per-poll allocation with no collect point; the helper bot also had a pre-existing compile break, fixed with require daslib/ast_boost).
  • Deliberately deferred (report available): tutorials/opengl ×12 (their while (update()) web contract needs a decision), examples/opengl ×10 + pathTracer viewers + node-editor (monolith rewrites), dasHV tutorials 01-08 (their threaded test-fixture shape is content, not an app skeleton — needs a reframing pass, not a mechanical fix).

Broken wasm cards (furier / path_tracer_lab / physarum_lab)

Root cause was not a stale archive: the glfw binder skip-guarded 11 functions on emscripten, making the das-visible glfw module diverge between the desktop cross-compiler and the wasm runtime. glfw_live started calling glfwGetWindowTitle (3.4 API) → the wasm-side mangled-name lookup fatals at module init → every glfw card dies. Fix: the guards are gone (module surface identical everywhere) and a new glfw_emscripten_stubs.c implements the 11 gaps honestly (title cached via a native glfwSetWindowTitle interposer over emscripten_set_window_title; gamepad trio reports absent; etc.). Verified with the exact pinned emsdk 5.0.7: stub TU compiles -Wall -Wextra -Werror, the three regenerated binding TUs compile with the web build's real flags, and a probe link with -sUSE_GLFW=3 proves the interposer shadows the JS symbol cleanly. wasmboy compiles the web arm per-PR; the cards themselves are proven by a pages.yml dispatch after merge.

dasImgui tutorials in the sidebar

The 56 tutorial pages now sit directly in tutorials.rst's section toctree (the opengl pattern) instead of hiding behind an intermediate index page — the sidebar expands them like every other section (verified in the built HTML: sibling links present, parity with opengl pages). sphinx -W clean.

.das_package cleanup (manifests that existed for dasImgui)

daspkg release discovers modules from the compiled require chain (--list-shared-modules), not manifest dependencies() — so every require_package("dasImgui") line was dead weight. Deleted outright: utils/jobque-timeline/.das_package and examples/graphics/.das_package (deps-only). The eight load-bearing manifests (release_main / still-external deps) lose the dasImgui line. Consequence handled: pages.yml's das_install && gates had to go too (cmd_install_all errors on a dep-less manifest); the wasm flow needs no install at all now. Run-proofs on all touched examples.

dasllama.html: bars mode = tables mode

Bars rows now carry the same click-to-expand run receipt and the ✱ note tooltip the table rows have (one shared receipt renderer). Verified live: 65 expandable rows, receipts toggle, noted row shows its tooltip.

Not in this PR

  • www.daslang.io needs a registrar DNS change (www CNAME gaijinentertainment.github.io.) — currently CNAMEd to the apex, so GitHub can't provision its cert; likely the substance behind the GSC "page with redirect" report.

🤖 Generated with Claude Code

https://claude.ai/code/session_01NcrnLGE9AEh8EAND3xYCRC

borisbat and others added 5 commits July 30, 2026 01:55
… of skip-guards

The binder skip-guarded 11 GLFW functions on emscripten (3.4 additions +
3.3-era gaps in emscripten's libglfw.js), so the das-visible glfw module
DIVERGED between the desktop cross-compiler and the wasm runtime. The
moment glfw_live called glfwGetWindowTitle, every glfw wasm card died at
module init: the compiled card resolves externs by mangled name via
jit_init_extern_function, and the guarded-out registration is absent
("Failed to find @glfw::glfwGetWindowTitle ... in module glfw").

Registrations are now unconditional and a new src/glfw_emscripten_stubs.c
implements the 11 gaps honestly: glfwGetWindowTitle returns a title
cached by a native glfwSetWindowTitle interposer over
emscripten_set_window_title (native defs shadow JS library symbols);
gamepad trio reports absent (raw joystick APIs still work); GetError ->
NO_ERROR; platform reports the emscripten-glfw contrib value; monitor
user pointer gets the single-monitor slot. The binder's
glfw_emscripten_skip list is gone -- skip-on-web is not fail-closed.

Verified with the pages-pinned emsdk 5.0.7: stub TU compiles
-Wall -Wextra -Werror; the three regenerated binding TUs compile with
the web build's real flags; a probe link with -sUSE_GLFW=3 proves the
interposer shadows cleanly. wasmboy compiles this arm per-PR; the cards
themselves get proven by a pages.yml dispatch post-merge.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NcrnLGE9AEh8EAND3xYCRC
The 56 pages sit directly in tutorials.rst's section toctree like the opengl set; the intermediate imgui/index.rst is gone (intro folded into the section header) and its two inbound refs repoint at the tutorials_imgui label. Built-HTML verified: sibling links present on tutorial pages, parity with opengl; sphinx -W clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01NcrnLGE9AEh8EAND3xYCRC
daspkg release discovers modules from the compiled require chain (--list-shared-modules), not manifest dependencies() -- so every require_package(dasImgui) line was dead weight. Deps-only manifests deleted outright (utils/jobque-timeline, the examples/graphics parent); the eight load-bearing ones (release_main / still-external deps) lose the line. Consequence: pages.yml's das_install && gates are gone too (cmd_install_all errors on a dep-less manifest) -- the wasm flow needs no install at all now. Per-example gitignores that existed only for the removed dep deleted; run-proofs green on every touched example.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01NcrnLGE9AEh8EAND3xYCRC
…oltip

Bars rows now share the table rows' interaction: click toggles the run's full receipt (same pairReceipt renderer), noted rows show the same instant CSS tooltip on the label plus the star mark. Verified live: 65 expandable rows, receipts toggle both ways, noted label tooltips.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01NcrnLGE9AEh8EAND3xYCRC
…_gc, repo-wide GC sweep

New examples/application/main.das -- the copyable template for any
long-running program: [export] init/update/shutdown + a standalone main
that loops update + maybe_collect_gc(). No UI; runs standalone
(--frames/--tick-ms) and under daslang-live (@LiVe state survives
reloads). Registered with ADD_EXAMPLE_RUN so CI runs it per-PR.

maybe_collect_gc moves to a UI-neutral home: new live/live_gc module in
dasLiveHost (is_live_mode lives there natively); live/glfw_live
re-exports it so every existing caller is unchanged, and windowless
programs (servers, bots, tools) get the boundary without GLFW.

Language fact, probe-verified and corrected in CLAUDE.md: `options gc`
does NOT cascade from a required module -- the entry program must
declare it itself; `persistent_heap` does cascade. imgui_harness carries
the note beside its options.

The sweep (~216 entry programs): every dasImgui example/tutorial app +
jobque-timeline get `options gc` + the collect call (harness apps via
harness_maybe_collect_gc, legacy imgui_app-shape files via the direct
helper); daslive showcases, graphics labs, vulkan/gltf viewers,
daStrudel apps likewise. Dual-shape drifters (strudel_live,
strudel_sf2_live, daStrudel_16) now have standalone mains that call
their own trio -- shutdown is reachable. Full conversions where the
shape was absent: examples/hv/ws_chat_server.das (canonical server trio,
live-smoke-tested: /ping, /status, clean stop) and both long-poll bots
(echo_bot, daslang_helper_bot -- the latter also had a pre-existing
compile break, fixed with require daslib/ast_boost).

Verified: playwright spot tests pass against the changed harness
(test_active_widget, test_app_dockspace, test_snapshot); headless runs
of representative swept apps; ws_chat_server live smoke; lint 219
changed files clean; format clean; sphinx -W clean.

Deferred (audit in hand): tutorials/opengl x12 (while(update()) web
contract decision), examples/opengl x10 + pathTracer viewers +
node-editor (monolith rewrites), dasHV tutorials 01-08 (threaded
test-fixture shape is content -- needs reframing, not mechanics).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NcrnLGE9AEh8EAND3xYCRC
Copilot AI review requested due to automatic review settings July 30, 2026 08:56

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR is a broad “post-merge follow-up” batch that (1) standardizes long-running daslang apps around an exported init/update/shutdown lifecycle with a standalone main driver and an explicit per-iteration GC boundary, (2) fixes WebAssembly GLFW cards by making the das-visible GLFW surface consistent on desktop and web (via Emscripten stubs instead of skipping bindings), (3) improves Sphinx tutorial navigation for dasImgui by flattening the sidebar TOC, and (4) removes now-dead require_package("dasImgui") manifest dependencies since dasImgui is in-tree and daspkg release discovers module archives from the compiled require chain.

Changes:

  • Added live/live_gc (dasLiveHost) and updated many examples/tutorials to declare options gc and call maybe_collect_gc() (or harness_maybe_collect_gc()) once per main-loop iteration.
  • Fixed Emscripten GLFW divergence by removing __EMSCRIPTEN__ skip-guards from generated bindings and providing web-only C stubs for missing GLFW entry points.
  • Flattened dasImgui tutorial TOC into tutorials.rst, updated refs, and removed the intermediate tutorials/imgui/index.rst; cleaned up .das_package manifests that only existed to declare dasImgui as an external dependency.

Reviewed changes

Copilot reviewed 253 out of 253 changed files in this pull request and generated no comments.

Show a summary per file
File Description
utils/jobque-timeline/README.md Updates instructions to reflect in-tree dasImgui (no install step).
utils/jobque-timeline/main.das Enables options gc and adds per-frame GC boundary in the standalone loop.
utils/jobque-timeline/.das_package Removes a manifest that only declared now-dead dasImgui dependency.
tutorials/daStrudel/daStrudel_16_live_reloading.das Adds canonical standalone loop and GC boundary for the tutorial app.
site/dasllama.html Aligns “bars” UI behavior with table mode (expand receipts + note tooltip targeting).
modules/dasLiveHost/live/live_gc.das Introduces UI-neutral maybe_collect_gc() for standalone loops; self-disables under live host.
modules/dasLiveHost/CMakeLists.txt Registers live_gc for module build packaging.
modules/dasLiveHost/.das_module Exposes live_gc under the live/ require path.
modules/dasImgui/widgets/imgui_harness.das Documents non-cascading options gc and wires harness GC boundary accordingly.
modules/dasImgui/examples/tutorial/wrap_tab_bar.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/with_tab_stop.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/with_style.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/with_id.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/with_disabled.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/window_size_constraints.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/widgets_tour.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/visual_aids_tour.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/tree_node.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/tree_image_misc.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/toggles.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/texture_ref.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/tab_bar.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/state_telemetry.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/slider.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/selectable_hover.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/recording.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/popups.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/popup_window.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/popup_modal.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/plot.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/narrative_widgets.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/narrative_layout_tour.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/main_menu_bar.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/log_capture.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/live_reload.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/layout.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/layout_primitives.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/item_flags.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/input_text.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/input_numeric.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/icons.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/group.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/flat_tooltips.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/file_dialog.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/editing_external.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/edit_tab_item.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/dynamic_fonts.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/dropdown_select.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/driving_outside.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/drawlist.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/drag.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/docking.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/display_widgets.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/data_table.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/custom_widgets.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/containers.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/color.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/color_button_hover.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/collapsing_header.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/child.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/buttons.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/tutorial/boost_basics.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/save_demo/main.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/main.das Declares options gc and adds maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/harness_widgets.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/harness_tables.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/harness_style_editor.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/harness_layout.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/harness_inputs.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/harness_app_small_window_titles.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/harness_app_small_simple_overlay.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/harness_app_small_property_editor.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/harness_app_small_long_text.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/harness_app_small_layout.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/harness_app_small_fullscreen.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/harness_app_small_constrained_resize.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/harness_app_small_auto_resize.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/harness_app_main_menu.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/harness_app_documents.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/harness_app_dockspace.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/harness_app_custom_rendering.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/imgui_demo/harness_about.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/with_text_wrap_pos.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/with_tab_stop.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/with_item_width.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/with_indent.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/widget_no_ident.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/widget_init_defaults.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/visual_aids_dashboard.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/unindent.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/unicode_fonts.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/triggers.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/tree_node_open_manual.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/tree_node_ex.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/transport_demo.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/tooltip_flat.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/text_filter.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/table_set_bg_color.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/table_custom_headers.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/tab_item_button.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/style_override.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/sort_specs.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/snapshot_unrendered.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/snapshot_transform.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/set_window_size_runtime.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/selectable_hover.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/scroll_state.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/scroll_here_y.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/popup_window.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/popup_context_window.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/popup_context_item.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/plot_widgets.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/plot_getter.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/output_text.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/open_popup_on_item_click.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/narrative_text.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/narrative_separator.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/narrative_bullet.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/narrate_placement.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/menu_main.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/menu_label_static.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/markdown_uri.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/log_to_text.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/list_clipper.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/list_box.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/layout_primitives.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/layout_helpers.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/io_synth_text.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/io_synth_drag.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/io_mirror.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/internal_tree_node_behavior.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/internal_splitter_scrollbar.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/internal_shade_verts.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/internal_separator_text.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/internal_render.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/internal_render_text.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/internal_render_rects.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/internal_popup_menu_ex.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/internal_log_capture.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/internal_layout_calc.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/internal_item_hittest.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/internal_item_flag.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/internal_item_add_button_behavior.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/internal_id_seed.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/internal_focus_scope.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/internal_combo.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/internal_button_ex.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/inputs_text.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/inputs_slider.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/inputs_numeric.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/inputs_indexed.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/inputs_drag.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/inputs_color.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/inputs_choice.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/input_text_callback.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/indexed_dynamic.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/imgui_synth_mouse.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/imgui_synth_keys.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/id_override.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/hex_id_click.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/glfw_synth_mouse.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/glfw_synth_keys.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/foundation.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/font_stack.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/focus_widget.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/focus_control.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/edit_vsliders.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/edit_tab_item.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/edit_menu_item.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/edit_external_vectors.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/edit_external_toggles.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/edit_external_special.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/edit_external_scalars.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/edit_external_scalars_custom.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/edit_external_combo.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/edit_external_color.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/edit_collapsing_header.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/dynamic_font_scale.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/drawlist.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/drawlist_path.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/drawlist_channels.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/drag_drop.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/dockspace_in_window.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/dock_basic.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/display_progress.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/display_image.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/disabled_block.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/data_table.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/containers_window.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/containers_overlay.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/containers_layout.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/columns_demo.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/color_button_hover.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/collapsing_header_closable.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/clip_rect.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/child_scroll_reenter.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/button_repeat.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/await_quiescent.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/align_text_to_frame_padding.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/examples/features/active_widget.das Declares options gc and adds harness_maybe_collect_gc() to the loop.
modules/dasImgui/CLAUDE.md Updates module documentation about in-tree dasImgui and manifest dependency behavior.
modules/dasGlfw/src/dasGLFW.main.cpp Clarifies web-only skip rationale for Vulkan loader binding.
modules/dasGlfw/src/dasGLFW.func_5.cpp Removes Emscripten skip-guards for gamepad-related bindings.
modules/dasGlfw/src/dasGLFW.func_2.cpp Removes Emscripten skip-guards for glfwGetWindowTitle binding.
modules/dasGlfw/src/dasGLFW.func_1.cpp Removes Emscripten skip-guards for several GLFW init/platform/monitor functions.
modules/dasGlfw/dasglfw/glfw_live.das Moves maybe_collect_gc to live/live_gc and re-exports it; adds lint suppressions.
modules/dasGlfw/CMakeLists.txt Links Emscripten stub TU into the web GLFW module build.
modules/dasGlfw/bind/bind_glfw.das Removes binder-side Emscripten skip list now that stubs backfill missing APIs.
examples/vulkan/one_source_path_tracer/main.das Adds persistent heap + GC boundary via live/live_gc in standalone main loop.
examples/vulkan/one_source_path_tracer/.das_package Removes now-dead dasImgui dependency declaration.
examples/vulkan_imgui_cube/main.das Adds persistent heap + GC boundary via live/live_gc in standalone main loop.
examples/vulkan_imgui_cube/.das_package Removes now-dead dasImgui dependency declaration.
examples/telegram/echo-bot/echo_bot.das Refactors into lifecycle trio + loop with GC boundary; adds clean exit on missing token/errors.
examples/hv/ws_chat_server.das Converts to canonical server lifecycle + loop with GC boundary; ensures teardown reachable.
examples/graphics/physarum_lab/.gitignore Removes ignore rule for modules/ now that dasImgui is in-tree.
examples/graphics/physarum_lab/.das_package Removes manifest dependencies() and updates release notes accordingly.
examples/graphics/physarum_lab_opengl_imgui_example.das Adds options gc and per-iteration GC boundary.
examples/graphics/path_tracer_lab/.gitignore Removes ignore rule for modules/ now that dasImgui is in-tree.
examples/graphics/path_tracer_lab/.das_package Removes manifest dependencies() and updates release notes accordingly.
examples/graphics/path_tracer_lab_opengl_imgui_example.das Adds options gc and per-iteration GC boundary.
examples/graphics/furier/.gitignore Removes ignore rule for modules/ now that dasImgui is in-tree.
examples/graphics/furier/.das_package Removes manifest dependencies() and updates release notes accordingly.
examples/graphics/furier_opengl_imgui_example.das Adds options gc, per-iteration GC boundary, and reserves for vertex buffers.
examples/graphics/.das_package Removes a manifest that only existed to declare dasImgui dependency.
examples/gltf/mesh_viewer_vulkan/main.das Adds options gc, live/live_gc require, and per-iteration GC boundary.
examples/gltf/mesh_viewer_vulkan/.das_package Removes now-dead dasImgui dependency declaration.
examples/gltf/mesh_viewer_opengl/main.das Adds options gc and per-iteration GC boundary.
examples/gltf/mesh_viewer_opengl/.das_package Removes manifest dependencies() now that dasImgui is in-tree.
examples/daStrudel/strudel_visualizer/main.das Adds options gc and per-iteration GC boundary; adds STYLE030 suppressions where needed.
examples/daStrudel/strudel_sf2_live/main.das Adds options gc + live/live_gc and canonical bounded standalone loop.
examples/daStrudel/strudel_live/main.das Adds options gc + live/live_gc and canonical standalone loop; adjusts Strudel import.
examples/daStrudel/sfx_lab/main.das Adds options gc + GC boundary call; clarifies non-cascading gc.
examples/daStrudel/sfx_lab/.das_package Removes now-dead dasImgui dependency declaration.
examples/daStrudel/drum_compare/main.das Adds options gc and per-iteration GC boundary; adds lint suppression for long update.
examples/daslive/triangle/main.das Adds persistent heap + options gc and per-iteration GC boundary; adds STYLE030 suppressions.
examples/daslive/test_watch/main.das Adds persistent heap + options gc, requires live/live_gc, and per-iteration GC boundary.
examples/daslive/test_api_http/main.das Requires live/live_gc, adds per-iteration GC boundary, and suppresses unused live-command arg.
examples/daslive/reload_test/main.das Adds persistent heap + options gc, requires live/live_gc, and per-iteration GC boundary.
examples/daslive/live_vars_demo/main.das Adds persistent heap + options gc, requires live/live_gc, and per-iteration GC boundary.
examples/daslive/hello/main.das Adds persistent heap + options gc and per-iteration GC boundary.
examples/daslive/hello_stdio/main.das Adds persistent heap + options gc and per-iteration GC boundary; adds STYLE030 suppression.
examples/claude/daslang_helper_bot.das Refactors into lifecycle trio + loop with GC boundary; adds missing ast_boost require.
examples/application/main.das Adds canonical non-UI application template with exported trio + standalone loop + GC boundary.
doc/source/stdlib/imgui_internal_families.rst Updates tutorial cross-reference to new tutorials_imgui anchor.
doc/source/reference/tutorials/imgui/recording.rst Updates “Curriculum top” ref to tutorials_imgui.
doc/source/reference/tutorials/imgui/index.rst Removes intermediate imgui tutorial index page (TOC flattened into tutorials.rst).
doc/source/reference/tutorials.rst Flattens dasImgui tutorial pages into the section toctree and adjusts maxdepth.
CMakeLists.txt Adds CI example-run for the canonical application template; adjusts graphics install patterns.
CLAUDE.md Documents non-cascading behavior of options gc (entry module must declare it).
.github/workflows/pages.yml Removes daspkg-install gating and builds wasm examples without install step.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@borisbat
borisbat merged commit f847aee into master Jul 30, 2026
41 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants