Skip to content

Releases: Daynlight/Graphite

v1.1.0-bin

26 Dec 00:20

Choose a tag to compare

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 Line class, 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 Plot2D class with improved resource management using stack allocation instead of raw pointers
  • Point Class Improvements - Enhanced Point class 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 Plot2D interface 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 generation
  • Plot2D - Supports both points and lines with unified rendering pipeline

Rendering Improvements

  • Mesh caching with point_cell and 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 APIs
  • Examples/Lines/ - New example demonstrating line plotting
  • Examples/Plots/ - Updated with new Plot2D interface
  • Examples/Sin/ - Refactored to use plot. point_cell

📝 Pull Requests Merged

🔗 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 Plot2D to 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

26 Dec 00:14

Choose a tag to compare

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 Line class, 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 Plot2D class with improved resource management using stack allocation instead of raw pointers
  • Point Class Improvements - Enhanced Point class 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 Plot2D interface 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 generation
  • Plot2D - Supports both points and lines with unified rendering pipeline

Rendering Improvements

  • Mesh caching with point_cell and 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 APIs
  • Examples/Lines/ - New example demonstrating line plotting
  • Examples/Plots/ - Updated with new Plot2D interface
  • Examples/Sin/ - Refactored to use plot. point_cell

📝 Pull Requests Merged

🔗 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 Plot2D to 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

08 Dec 21:00

Choose a tag to compare

What's Changed

Full Changelog: v1.0.1...v1.0.2-bin

v1.0.2

08 Dec 20:59
bb21300

Choose a tag to compare

What's Changed

Full Changelog: v1.0.1...v1.0.2

Small patch

07 Dec 21:06
ed21eb6

Choose a tag to compare

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

Full changelog / compare

v1.0.0...main

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

05 Dec 20:42
a7ad619

Choose a tag to compare

  • Sandbox mode.
  • Script sandbox last write.
  • Separate CWindow renderer via AppRenderer.

What's Changed

New Contributors

Full Changelog: v0.1.0-prototype...v1.0.0

Prototype

01 Dec 21:36

Choose a tag to compare