Skip to content

Latest commit

 

History

History
198 lines (136 loc) · 10.7 KB

CHANGELOG.md

File metadata and controls

198 lines (136 loc) · 10.7 KB

0.4.0 - The Too Late for Genuary Release

Released 2024-01-21

Highlights

Parameter persistence and sketch breaking changes

Sketch parameters are now persisted across sketch launches, which dramatically improves the QoL when iterating on sketch code. A new "Reset" button sets all parameters to the sketch defaults. This also lays the groundwork for a future configuration management feature.

Two breaking changes were introduced to accommodate for this.

  1. Use MySketch::runner().run() instead of Runner::new(MySketch::default()).run() in your main() function.
  2. Use the #[sketch_app], resp. #[sketch_widget] attributes instead of the Sketch, resp. Widget derive macros. These new attributes take care of deriving the now-required serde::Serialize and serde::Deserialize using the correct, whiskers-exported version of the serde crate.

Example:

use whiskers::prelude::*;

#[sketch_app]
#[derive(Default)]
struct HelloWorldSketch {
    width: f64,
    height: f64,
}

impl App for HelloWorldSketch {
    fn update(&mut self, sketch: &mut Sketch, _ctx: &mut Context) -> anyhow::Result<()> {
        /* sketch code here */
        Ok(())
    }
}

fn main() -> Result {
    HelloWorldSketch::runner()
        .with_page_size_options(PageSize::A5H)
        .run()
}

Other highlights

  • It's now possible to override pen width and opacity in the viewer.
  • The viewer now persists the antialiasing setting (note: persistence happens on a per-binary basis, so the AA setting must be set e.g. for each different sketch).
  • You can use custom enum types as sketch parameter (use the new #[sketch_widget] attribute as noted above).
  • vsvg introduces a new Length type which combines a float and a Unit. whiskers supports them, and, when used as sketch parameter, provides a nice UI where both the value and the unit can be changed.
  • msvg now sorts files "correctly" when they are numbered, and has a much nicer CLI experience.
  • It's now possible to directly "draw" into a vsvg::Layer using the APIs from the vsvg::Draw trait.
  • Both vsvg and vsvg-viewer now cleanly re-export key dependencies.

whiskers crates

  • BREAKING: Persist sketch parameters across app relaunches #94
  • BREAKING: Add a button to reset the sketch parameters to their defaults #91
  • Add support for custom enum as sketch parameter #107
  • Add support for vsvg::Unit and vsvg::Length as sketch parameters #95
  • Add Context::rng_weighted_choice() helper function #102 (thanks @afternoon2!)
  • Split whiskers widgets in their own whiskers-widgets crate #108
  • Add particle example based on geos #105
  • Make Runner::new() private and update docs accordingly #96
  • Fix README.md code example to use SketchApp::runner() instead of now private Runner::new() #103 (thanks @reidab!)

msvg CLI

  • Sort files in natural order rather than in lexicographical order #104 (thanks @danieledapo!)
  • Use clap for msvg for a nicer CLI experience #83

vsvg crate

  • BREAKING: Improve Unit and introduce Length #88
  • Implement the Draw trait for Layer #111
  • Re-export core vsvg dependencies #113
  • Fix unescaped <dc:source> content in SVG output #116

vsvg-viewer crate

  • Add options to override pen width and opacity #89
  • Persist antialias setting across app relaunches #90
  • Add on_exit() hook to the ViewerApp trait #106 (thanks @danieledapo!)
  • Re-export core vsvg-viewer dependencies #115 (thanks @danieledapo!)

Common

  • Run documentation tests in CI #92
  • Update rust toolchain to 1.75.0 #82
  • Update egui to 0.25.0 #118
  • Update cargo dist to 0.8.0 #117
  • Fix web demo publishing action 5f42b4a
  • changelog.py: highlight breaking changes and generate a list of contributors #93

Contributors

afternoon2 danieledapo reidab

Full Changelog: https://github.com/abey79/vsvg/compare/v0.3.0...v0.4.0

0.3.0 - New msvg CLI, better whiskers, and more

Released 2023-12-28

Highlights

  • Inspect SVG collections with the new, blazing fast msvg CLI (early alpha stage).
  • whiskers improvements:
    • New hexagonal grid helper.
    • Support for nested struct in sketch param.

whiskers crates

  • Add support for custom struct as sketch parameter #66
  • Add hexagonal grid helper #60 (thanks @afternoon2!)
  • Change HexGrid::spacing() to accept a single scalar and maintain hexagonal grid #72 (thanks @karliss!)
  • Implement step UI parameter for numeric value in normal mode #58

msvg CLI

  • First prototype of msvg #68
  • Improve msvg's file list side panel and add file name overlay #76
  • Fix blank window on first start #81

vsvg CLI

  • Add "merge layers" operation to vsvg and vsvg-cli #61
  • Add --strokewidth <W> command to override the stroke width of all paths #62
  • Add --flatten <TOL> command to flatten all curves with the provided tolerance #63

vsvg-viewer crate

  • Improve ViewerApp hooks to give implementers more flexibility #71
  • Add input handle hook to the ViewerApp trait #74
  • Add ListItem UI widget #75

Common

  • Fit to view on double click #73
  • Add binary publishing support with cargo-dist #78
  • Update CHANGELOG.md for compatibility with cargo-dist and add automation script #79
  • Add plausible.io traffic monitoring to https://whisk.rs 1228521
  • Update to egui 0.24 and wgpu 0.18 #64

Contributors

afternoon2 karliss

Full Changelog: https://github.com/abey79/vsvg/compare/v0.2.0...v0.3.0

0.2.0

Released 2023-10-22

New features

  • Add support for Catmull-Rom splines by @abey79 in #36
  • Add some rng_XXX convenience functions to whiskers::Context and make rng_range generic over type by @afternoon2 in #35
  • Add Grid helper for grid-based layout by @afternoon2 in #43
  • Add logarithmic slider support to numerical sketch parameter by @abey79 in #39
  • Add support for vsvg::Color sketch parameters by @abey79 in #41
  • Add an example to demo the use of the noise-rs crate by @abey79 in #42
  • Add in-process profiling with puffin and parallelize some layer-level operations by @abey79 in #44
  • Bump egui to 0.23 and wgpu to 0.17 by @abey79 in #54

Performance

  • Improve performance of noise example by @abey79 in #45
  • Refactor vsvg-viewer to defer all unneeded render data generation by @abey79 in #49
  • Fix frame profiling order by @abey79 in #51
  • Add tolerance control and vertex count display to vsvg-viewer by @abey79 in #50
  • Parallelize native CI jobs by @abey79 in #37

Fixes

  • Fix README paths linked from main README by @reidab in #34
  • Rename whiskers::Runner::with_layout_options for consistency by @abey79 in #38
  • Fix spurious colon in bool UI widget label by @abey79 in #40

Contributors

afternoon2 reidab

Full Changelog: https://github.com/abey79/vsvg/compare/v0.1.0...v0.2.0

0.1.0

Released 2023-10-01

  • Initial release, including:

    • vsvg
    • vsvg-viewer
    • vsvg-cli
    • whiskers
    • whiskers-derive

    Note: msvg is still WIP and not included in this release.