TODO: This file is not 100% up to date. Sorry.
## In Progress
## TODO
### post v0.2
- [ ] Combine RGB565 and RGBA8888 mode for fbdev backend
- [ ] Put profiling behind feature flag
- [ ] Put profiling behind command line flag
- [ ] Fix mutability of self in Cheval::render()
- [ ] Extract http handling from cheval.rs
- [ ] Remove actix, and use axum instead
### post v0.3
- [ ] Extract shared rendering functions -> RenderBuffer package
- [ ] Replace :HACK: text effects with better version
- [ ] Improve reporting of broken config files
- [ ] Refactor FileCache::run
- [ ] Remove unneeded copying from FileCache aka buffer bloat
- [ ] Double check why outer FileCache needs to be Arc< Mutex< ... > >
- [ ] Add sound effect support
- [ ] Fix time expire sound to be more precise
- [ ] Add event system
- [ ] Soundbank element should own it's soundbank, and react to events
- [ ] Extract ElementConfig parameters
- [ ] Make FileCache watcher async
- [ ] Optimise pathes to watch for FileCache notify
- [ ] Use BakedExpression where sensible
- [x] Use BakedExpression for text position, and bounding box config
- [x] Use BakedExpression for text
- [ ] Verify we use BakedExpressions everywhere
- [ ] Fix missing initialization of active page for multi page configs
- [ ] Cleanup config file selection, and error reporting
- [ ] Make Windows work
- [ ] Persist variables in regular intervals
- [ ] Enable debug frames via command line
- [ ] Merge goto next&prev page into turn page with direction
- [ ] Decide on http response for page changes
- [ ] Fix default for bounding boxes
- [ ] Change config format
- [ ] Add general config section
- [x] Add support for multiple "pages"
- [x] Add support for default values for variables
- [ ] Add more position modes, e.g negative values for "from bottom/right"
- [ ] Add clipping at buffer edges
- [x] Add clipping for text
- [ ] Auto reloading on config change
- [ ] Make config loading more robust
- [ ] Improve Debug and/or Display traits for elements
- [ ] Allow parameters for windows
- [ ] Add animations
- [ ] Use spline/bezier based files for values
- [ ] Add audio support -> is started
- [ ] Allow elements to register for http (or just sign them up all)
- [ ] Handle strings with whitespace in expressions
- [ ] Make filename for png renderer configurable
## Obsolete
~ - [#] Refactor Variable to allow baking of value ~
## DONE
### Released in v0.2.0
- [x] Build packages automatically after push to github.
- [x] Use tracing for all debugging
- [x] Remember previous window positions for windows that are not currently used
- [x] Allow writing of png sequences for window mode png
- [x] Alpha handling _should_ be correct now
- [x] Enable profiling via feature
- [x] Update packages
- [x] Merge, and kill `multi-window` branch for good.
- [x] Fix crash when moving right without pages
- [x] Upgrade edition to 2021
- [x] Allow window title prefix to be passed on command line
- [x] Add file watcher to FileCache to allow automatic updates
- [x] Poll files for changes
- [x] or: Use operating system to get notified about changes
- [x] Use file cache for image element, including hot reload
- [x] Replace/refactor LoadTextElement -> delete?
- [x] Removed ~Check~ file watcher (seems to be broken sometimes) (merge with FileCache?!)
- [x] Add multi line support to TextElement
- [x] Add text_lines_from_file to expressions to allow loading specific lines from file
- [x] Add text_from_file to expressions to allow loading text from file
- [x] Rename `master` branch to `main`
- [x] Merge `multi-window` branch
- [x] Add text effects (shadow, glow?) to text element
- [x] Add text shadow
- [x] Add text glow (:HACK:)
- [x] Send actual resulting value back when changing variables via http
- [x] Allow selecting of variable, and inc/dec of that selected variable
- [x] Fix set/inc/dec variable api to respond with resulting value (and name)
- [x] Allow incrementing & decrementing variable via http api
- [x] Fix alpha blending for blocks
- [x] Allow using css names for colors
- [x] Default to current directory for configuration
- [x] Use \*config.yaml if exactly one matches
- [x] Check for config.yaml if config parameter is a directory
- [x] Make filepath in config file relative to config file
- [x] Allow keyboard input from console
- [x] Add support for animated images
- [x] Add visual countdown example
- [x] Fix http interface to allow setting of f32
- [x] Add support for default variable values from
- [x] Add BakedExpression
- [x] Add bounding box support for text rendering
- [x] Add timer element
- [x] Add http API (setVariable)
- [x] Implement font cache
- [x] Text rendering
- [x] Add clean error handling
- [x] Render to png