# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

<!-- insertion marker -->
## Unreleased

<small>[Compare with latest](https://github.com/pmoscode-helm/excalidraw/compare/excalidraw-0.1.0...HEAD)</small>

### Features

- bump chart patch version ([7a41001](https://github.com/pmoscode-helm/excalidraw/commit/7a41001606b1c0f5a815f1e8f699d4d3df783e42) by Peter Motzko).
- add -f when removing .cr-release-packages/ in case, it does not exist ([acc6cfb](https://github.com/pmoscode-helm/excalidraw/commit/acc6cfbd17c605b060eb59e36c2f035e624d5c58) by Peter Motzko).

### Bug Fixes

- icon URL ([3e84f67](https://github.com/pmoscode-helm/excalidraw/commit/3e84f67f2900ab25f7edbb412a9dbf1feab4948d) by Peter Motzko).

<!-- insertion marker -->
## [excalidraw-0.1.0](https://github.com/pmoscode-helm/excalidraw/releases/tag/excalidraw-0.1.0) - 2023-08-28

<small>[Compare with first commit](https://github.com/pmoscode-helm/excalidraw/compare/c40040dc3ccb3492a3eca20aa2e8c07a63502a97...excalidraw-0.1.0)</small>

### Features

- first version (just Excalidraw, without collaboration feature) ([348f198](https://github.com/pmoscode-helm/excalidraw/commit/348f198a817e798e6b195dd690f5fdd5fa8639fa) by Peter Motzko).

