Releases: Daynlight/Graphite
v1.1.0-bin
Graphite v1.1.0 Release Notes
What's Changed
This release brings significant enhancements to the Graphite plotting engine with improved rendering capabilities, interactive controls, and major refactoring for better performance and maintainability.
🎨 New Features
- Line Rendering Support - Added full support for drawing lines with the new
Lineclass, enabling line plots alongside point plots - Interactive Camera Controls - Added pan (WASD keys) and zoom (+/- keys or mouse scroll) controls for intuitive plot navigation
- Dynamic Window Scaling - Plots now automatically scale with window size changes
⚡ Performance Improvements
- Draw Optimization - Implemented mesh caching system for points and lines, regenerating only when data changes
- Unified Rendering Pipeline - Refactored shader system for efficient rendering of both points and lines
- Update Tracking - Added state tracking to prevent unnecessary re-renders
🔧 Refactoring & Code Quality
- Plot2D Enhancement - Refactored
Plot2Dclass with improved resource management using stack allocation instead of raw pointers - Point Class Improvements - Enhanced
Pointclass with size support, update tracking, and better mutability - Organized Math Classes - Moved math classes to
Resources/Math/Functions/directory for better organization - Simplified Examples - Updated all example scripts to use the new
Plot2Dinterface and APIs
📦 Technical Details
New Classes
Graphite:: Math::Line- Full line primitive with position, size, color, and update tracking
Enhanced Classes
Graphite::Math::Point- Now includes size, update tracking, and mesh generationPlot2D- Supports both points and lines with unified rendering pipeline
Rendering Improvements
- Mesh caching with
point_celland line cells - Unified shader and uniform system
- Dynamic geometry generation
- Camera transformation support with zoom limits
Example Updates
Examples/Curve Bezier/- Updated to use new plotting APIsExamples/Lines/- New example demonstrating line plottingExamples/Plots/- Updated with newPlot2DinterfaceExamples/Sin/- Refactored to useplot. point_cell
📝 Pull Requests Merged
- Full plot by @Daynlight in #33
- Dev by @Daynlight in #34
- Draw optimization by @Daynlight in #35
- UI by @Daynlight in #36
- UI by @Daynlight in #37
🔗 Links
Full Changelog: v1.0.2...v1.1.0
Installation
Download the appropriate binary for your platform from the releases page.
Upgrading from v1.0.2
This release includes API changes. Please note:
- Update any code using
Plot2Dto use the new stack-allocated resource pattern - Point and Line classes now have update tracking - call appropriate setters to trigger re-renders
- Example scripts demonstrate the new usage patterns
Contributors
Released: 2025-12-26
v1.1.0
Graphite v1.1.0 Release Notes
What's Changed
This release brings significant enhancements to the Graphite plotting engine with improved rendering capabilities, interactive controls, and major refactoring for better performance and maintainability.
🎨 New Features
- Line Rendering Support - Added full support for drawing lines with the new
Lineclass, enabling line plots alongside point plots - Interactive Camera Controls - Added pan (WASD keys) and zoom (+/- keys or mouse scroll) controls for intuitive plot navigation
- Dynamic Window Scaling - Plots now automatically scale with window size changes
⚡ Performance Improvements
- Draw Optimization - Implemented mesh caching system for points and lines, regenerating only when data changes
- Unified Rendering Pipeline - Refactored shader system for efficient rendering of both points and lines
- Update Tracking - Added state tracking to prevent unnecessary re-renders
🔧 Refactoring & Code Quality
- Plot2D Enhancement - Refactored
Plot2Dclass with improved resource management using stack allocation instead of raw pointers - Point Class Improvements - Enhanced
Pointclass with size support, update tracking, and better mutability - Organized Math Classes - Moved math classes to
Resources/Math/Functions/directory for better organization - Simplified Examples - Updated all example scripts to use the new
Plot2Dinterface and APIs
📦 Technical Details
New Classes
Graphite:: Math::Line- Full line primitive with position, size, color, and update tracking
Enhanced Classes
Graphite::Math::Point- Now includes size, update tracking, and mesh generationPlot2D- Supports both points and lines with unified rendering pipeline
Rendering Improvements
- Mesh caching with
point_celland line cells - Unified shader and uniform system
- Dynamic geometry generation
- Camera transformation support with zoom limits
Example Updates
Examples/Curve Bezier/- Updated to use new plotting APIsExamples/Lines/- New example demonstrating line plottingExamples/Plots/- Updated with newPlot2DinterfaceExamples/Sin/- Refactored to useplot. point_cell
📝 Pull Requests Merged
- Full plot by @Daynlight in #33
- Dev by @Daynlight in #34
- Draw optimization by @Daynlight in #35
- UI by @Daynlight in #36
- UI by @Daynlight in #37
🔗 Links
Full Changelog: v1.0.2...v1.1.0
Installation
Download the appropriate binary for your platform from the releases page.
Upgrading from v1.0.2
This release includes API changes. Please note:
- Update any code using
Plot2Dto use the new stack-allocated resource pattern - Point and Line classes now have update tracking - call appropriate setters to trigger re-renders
- Example scripts demonstrate the new usage patterns
Contributors
Released: 2025-12-26
v1.0.2-bin
What's Changed
- Dev by @Daynlight in #30
- Dev by @Daynlight in #31
Full Changelog: v1.0.1...v1.0.2-bin
v1.0.2
Small patch
Graphite v1.0.1 — Patch release
Tag: v1.0.1
Base: v1.0.0
Target: main
Summary
Patch release with sandboxing, robustness fixes, renderer refactor, and documentation/assets updates.
Highlights
- Added sandbox mode to isolate script execution and hot-reload safely.
- Hardened CLI parsing and path handling (better unknown-flag messages, safer short/long flag logic).
- Script lifecycle (Init/Update/Draw/Destroy) can run in sandboxed child processes to prevent script crashes from killing the main process.
- Safer filesystem operations (create directories when needed, catch filesystem exceptions, better file existence checks and write error handling).
- Renderer refactor: AppRenderer now uses an iRenderer pointer and a templated renderFrame; implementation moved to header/impl.
- Documentation updates and new screenshots; funding metadata added.
What changed (concise)
- New/updated files: AppRenderer.hpp (new), docs screenshots, .github/FUNDING.yml, README updates.
- Removed AppRenderer.cpp (implementation moved to header/impl).
- Graphite::Graphite: flags map moved to std::string keys; path handling moved to std::filesystem::path; improved initFile behavior.
- ScriptLoader: checks and exception handling for last write time; safer dlopen/dlsym handling; removeModule() and module loading improved; added sandboxed execution around script calls.
- CLI: longFlags/shortFlags/detectPath signatures updated to (index, argc, argv) style and now emit diagnostics for unknown flags.
- CMakeLists updated to reflect source changes.
Fixes
- Avoid crashes when querying last_write_time by catching filesystem errors.
- Prevent accidental overwrites by detecting existing files and reporting write errors.
- Avoid loading modules when the compiled .so is missing; ensure modules are cleaned up on failure.
- Better diagnostics in verbose mode for sandbox failures.
Upgrade notes / possible breaking changes
- Header/API changes: function signatures (longFlags, shortFlags, detectPath, initFile) changed — recompile plugins/tools that rely on these exact signatures.
- AppRenderer interface changed (now uses iRenderer pointer and templated renderFrame) — update any code that depended on the old concrete AppRenderer.
- Sandbox mode runs script lifecycle methods in forked processes; scripts that rely on sharing process-global state or non-fork-safe resources may need adjustments. Use normal (non-sandbox) mode for maximum performance when scripts are stable.
- Regenerate build files and re-run CMake to pick up removed/added sources.
How to use sandbox
- CLI: -s or --sandbox to enable sandbox mode.
- Recommended workflow: use sandbox mode (-s) while editing scripts to prevent crashes; switch to normal mode for production/performance.
Authors
- Primary author: @Daynlight
Full changelog / compare
Release metadata suggestion
- Title: V1.0.1
- Tag: v1.0.1
- Target: main
- Prerelease: false
Notes
This note is ready to copy-paste into the GitHub release body. If you want, I can:
- create a draft GitHub release with this body, or
- include a file-level changed list (added/modified/deleted) with exact paths and commit SHAs.
V1.0.0
- Sandbox mode.
- Script sandbox last write.
- Separate CWindow renderer via AppRenderer.
What's Changed
- Dev by @Daynlight in #1
New Contributors
- @Daynlight made their first contribution in #1
Full Changelog: v0.1.0-prototype...v1.0.0