`destination_time` accepts one of `total`, `playtime-remaining` (scaled by the current speed), `time-remaining` (remaining length of file).
`total_time` is deprecated, but still works as expected.
* fix: only update resolution when it's > 0
* fix: only render after the resolution has been initialized
* chore: update type annotation to fix warning
- Preselecting previous folder wasn't working sometimes.
- `join_path()` didn't account for drive letters already having a separator.
Also refactors how `open_file_navigation_menu()` stores menu items value. As a side effect this is now a lot faster as we don't have to serialize each item's path into meta table, but instead we now store just a path string and handle it as needed.
closes#355
Instead of calling `utils.readdir()` twice to get directories and files, we now read the directory only once and sort it by item type. Also optimizes extension checking.
ref #344
Splits the monolith file into individual modules with as little code refactoring as possible.
Not too happy with it, mainly because of the weird language server behavior where it doesn't recognize types or variables unless the files defining them are open...
It'd also be better to refactor everything from the ground up to not depend on global variables but if I had that much time to invest I'd straight up just rewrite everything in typescript and use TS→Lua transpiler.
Puts clipping position right in the middle of the spacing between title
and hint. This gives us a little bit more leeway to prevent clipping from
inaccurate width estimation.
Also now only adds spacing where necessary.
* feat: better buffering detection
Leverage not just information from the cache, but also the player
playback state to get a better idea of when playback is stalled due to
buffering.
Use different metric for enabling the indicator then for disabling it.
This allows the indicator to be continuously on instead of switching
on/off multiple times within the same stall.
* tweak: buffering indicator draws it's own curtain