From dc6875ce18a48d314f0576528ebd7dc9e5e2a1b8 Mon Sep 17 00:00:00 2001 From: alyx Date: Fri, 12 Jan 2024 13:05:25 -0500 Subject: Move the contents of TODO.md to . --- TODO.md | 110 ---------------------------------------------------------------- 1 file changed, 110 deletions(-) delete mode 100644 TODO.md 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 `