Skip to content

Conversation

@tmikov
Copy link
Owner

@tmikov tmikov commented Nov 14, 2025

No description provided.

Add CI workflow that builds on Ubuntu and macOS in both Debug and Release
configurations (2x2 matrix = 4 jobs).

Key features:
- Hermes build caching per OS (saves 5-10 min on cache hit)
- Cache optimization: removes .git directory to save ~100MB
- Platform-specific dependency installation
- Explicit Clang compiler selection on Ubuntu
- Uploads all example executables as artifacts
- Runs on push to master, PRs, and manual dispatch

Hermes is always built in Release mode and shared between Debug/Release
project builds on the same OS.
Add HERMES_BUILD_TYPE CMake option to allow building Hermes in modes
other than Release. This is useful for debugging shermes crashes or
optimizer issues.

Usage:
  cmake -B build -DHERMES_BUILD_TYPE=Debug
  cmake -B build -DHERMES_BUILD_TYPE=RelWithDebInfo

Defaults to Release to maintain existing behavior and build performance.
Enable line directives in shermes output to improve source mapping
in stack traces and error messages. This makes debugging JavaScript
code compiled with shermes significantly easier.

Applied to all build configurations (not just Debug) as the overhead
is negligible and the benefit applies to all scenarios.
Implement an interactive radial menu widget to demonstrate creating
custom ImGui widgets using the draw list API. The widget features:

- Circular pie menu with dynamic sector count
- Mouse hover detection with visual feedback
- Click handling with React callbacks
- Path-based drawing for smooth filled sectors
- Text rendering with automatic centering
- Efficient rendering with proper draw order

Implementation:
- lib/imgui-unit/renderer.js: renderRadialMenu() function
- examples/custom-widget/: New example application
- README.md: Documentation on creating custom widgets

The example shows how to use ImGui's immediate-mode drawing API
(_ImDrawList_*), handle mouse interaction, and integrate with React's
component model. Custom widgets use _igDummy() to reserve layout space
and are integrated via the switch statement in renderNode().
@tmikov tmikov marked this pull request as ready for review November 14, 2025 05:17
@tmikov tmikov merged commit 93dc8bc into master Nov 14, 2025
4 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