Skip to content

Releases: Daynlight/Graphite

v1.1.0-bin

Choose a tag to compare

@Daynlight Daynlight released this 26 Dec 00:20

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

Choose a tag to compare

@Daynlight Daynlight released this 26 Dec 00:14

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

Choose a tag to compare

@Daynlight Daynlight released this 08 Dec 21:00

What's Changed

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

v1.0.2

Choose a tag to compare

@Daynlight Daynlight released this 08 Dec 20:59
bb21300

What's Changed

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

Small patch

Choose a tag to compare

@Daynlight Daynlight released this 07 Dec 21:06
ed21eb6

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

Choose a tag to compare

@Daynlight Daynlight released this 05 Dec 20:42
a7ad619
  • 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

Choose a tag to compare

@Daynlight Daynlight released this 01 Dec 21:36