diff options
author | alyx <alyx@aleteoryx.me> | 2024-01-12 13:05:25 -0500 |
---|---|---|
committer | alyx <alyx@aleteoryx.me> | 2024-01-12 13:05:25 -0500 |
commit | dc6875ce18a48d314f0576528ebd7dc9e5e2a1b8 (patch) | |
tree | 807ad2ca1002c54a6f0c14237236afcddaec0695 | |
parent | 2feec01f58ce903d07d53bb1b79dc6b448b1a146 (diff) | |
download | lfm_embed-dc6875ce18a48d314f0576528ebd7dc9e5e2a1b8.tar.gz lfm_embed-dc6875ce18a48d314f0576528ebd7dc9e5e2a1b8.tar.bz2 lfm_embed-dc6875ce18a48d314f0576528ebd7dc9e5e2a1b8.zip |
Move the contents of TODO.md to <https://redmine.aleteoryx.me/projects/lfm_embed/issues>.
-rw-r--r-- | TODO.md | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/TODO.md b/TODO.md deleted file mode 100644 index d55c742..0000000 --- a/TODO.md +++ /dev/null @@ -1,110 +0,0 @@ -# Future plans for this project: - - -## Move more things internal - -Untouched. - -Of the crates currently relied on, the following appear too feature-packed should be replaced with simpler internal code, to reduce binary size. - -- duration-str -- urlencoding - - -## Watermarking - -Untouched. - -Support for a limited form of (optional) watermaking. It would be up to the themes to include it. - -### Query Parameters - -- `?watermark` specifies opting-in to the watermark. - -### Config Entries - -- `LFME_WATERMARK_MANDATORY: 0|1` forces a watermark if `1`. The main instance will not use this, but alternate instances may. -- `LFME_WATERMARK_TEXT: string` should contain the name of the specific instance, or a tagline. -- `LFME_WATERMARK_IMG: string` should contain a link to an image. The rendered size of this image is at the discretion of a given theme, but it should be around 32x32, and have an aspect ratio no greater than 1:2. -- `LFME_WATERMARK_URL: string` should contain a link to the host, or whoever else the watermarker wishes. - -### Context Members - -- `watermark: object` null, unless `(LFME_WATERMARK_TEXT || LFME_WATERMARK_IMG || LFME_WATERMARK_URL) && (?watermark || LFME_WATERMARK_MANDATORY)`. Should be interpreted as whether to render a watermark. -- `watermark.text` = `LFME_WATERMARK_TEXT`. Defaults to `lfm_embed`. -- `watermark.img` = `LFME_WATERMARK_IMG`. Defaults to null. -- `watermark.url` = `LFME_WATERMARK_URL`. Defaults to null. - -All that is guaranteed is the presence of `watermark.text`, so all themes should be able to fallback to text. -Image support should be considered optional. Linking should be considered optional. - -It is not an error to specify a mandatory watermark with no possible contents, as the watermark object will simply not be present. -A warning should be output on startup. - - -## Additional Helpers - -Untouched. - -- `(range Number start: Number = 0): Number` Generates values from start to the main argument, exclusive. -- `(random): Number` Generates a random float. - - -## Additional Services to Support - -Untouched. - -This should be as transparent as possible to the theme and end-user. - -### Services - -- libre.fm -- listenbrainz -- hacienda if/when it gets off the ground. - -### Config Entries - -- `LFME_BACKEND_DEFAULT: string` specifies a default backend for /user/ requests.. -- `LFME_BACKEND_ADDITIONAL_GNUKEBOX: string,*` specifies a set of additional domains supporting the libre.fm API. -- `LFME_BACKEND_ADDITIONAL_LISTENBRAINZ: string,*` specifies a set of additional domains supporting the listenbrainz API. -- `LFME_BACKEND_ADDITIONAL_AUDIOSCROBBLER: string,*` specifies a set of additional domains supporting the last.fm API. - -### Query Parameters - -- `?backend=(last.fm|libre.fm|listenbrainz|LFME_BACKEND_ADDITIONAL_*)` - -### Context Members - -- `user.service` never not null -- `user.service.type` `(audioscrobbler|listenbrainz|gnukebox)` -- `user.service.domain` the string for the service's domain. - - -## Error Cache - -Untouched. - -Add support to `lfm_embed::cache::AsyncCache` for caching `Err` values with a different lifetime from `Ok` values. - - -# Completed Features - - -## Custom Fonts - -Implemented! - -### Query Parameters - -Each of these are mutually exclusive, and take priority over eachother in the order listed below. -The highest one detected will be handled and others, if present, will be silently ignored. - -- `?google_font=` the name of a google font to try loading. If it exists, the `fonts.googleapis.com` stylesheet will end up in `font.css`. The font name will end up in `font.name`. -- `?include_font=` the URL to a font to include. `font.css` will be a generated `@font-family` declaration. A provided name will be in `font.name`. -- `?font=` the name of a browser-native or system font. This will only set `font.name`. - -### Context Members - -- `font: object` null if no font overrides are present. -- `font.name: string` All text elements should have their font set to this. -- `font.css` If present, it should be placed inside a `<style>` tag somewhere. For legibility of generated HTML, preferably its own tag. |