filesafe/TODO.md

58 lines
5.8 KiB
Markdown
Raw Normal View History

# Todo
Normal priority:
2019-09-12 11:37:25 +00:00
Updated Updated some dev dependencies. --- Gulp will now build CSS/JS files during development into dist-dev directory, to prevent IDE's Git from unnecessarily building diff's. Added dist-dev to ignore files. --- The entire config fille will now be passed to Nunjuck templates for ease of access of config values. Root domain for use in Nunjuck templates will now be parsed from config. Better page titles. Updated help message for "Uploads history order" option in homepage's config tab. Added "Load images for preview" option to homepage's config tab. Setting this to false will now prevent image uploads from loading themselves for previews. Uploads' original names in homepage's uploads history are now selectable. Min/max length for user/pass are now enforced in auth's front-end. Improved performance of album public pages. Their generated HTML pages will now be cached into memory. Unfortunately, No-JS version of their pages will be cached separately, so each album may take up to double the memory space. File names in thumbnails no longer have their full URLs as tooltips. I saw no point in that behavior. Added video icons. Homepage's uploads history will now display video icons for videos. "View thumbnail" button in Dashboard is now renamed to "Show preview". Their icons will also be changed depending on their file types. Added max length for albums' title & description. These will be enforced both in front-end and back-end. Existing albums that have surpassed the limits will not be enforced. A few other small improvements.
2019-09-17 04:13:41 +00:00
* [x] Improve performance of album public pages, ~~and maybe paginate them~~.
* [x] Use [native lazy-load tag](https://web.dev/native-lazy-loading) on nojs album pages.
* [x] Use incremental version numbering instead of randomized strings.
* [ ] Use versioning in /api/check. To elaborate, make it so that when a version string reported by server is higher than expected, force user to reload the page (which should be all that is needed for users to be loading latest front-end assets). Possibly also use it in /api/tokens/verify, for dashboard page.
* [x] Better `df` handling (system disk stats). To elaborate, either properly show disk usages of directories that have sub-directories, or only show disk usages of whitelisted directories (thumbs, chunks, etc).
2019-09-15 07:23:04 +00:00
* [x] Use loading spinners on dashboard's sidebar menus.
* [x] Disable all other sidebar menus when a menu is still loading.
2019-09-12 11:37:25 +00:00
* [ ] Collapsible dashboard's sidebar albums menus.
* [ ] Add "View uploads" button in "Manage your albums" page. Assuming the sidebar album menus are collapsed, users can optionally use this button as a shortcut, if they already happened to be in that page.
2019-09-15 07:23:04 +00:00
* [x] Change `title` attribute of disabled control buttons in uploads & users lists.
* [x] Use Gatsby logo for link to [blog.fiery.me](https://blog.fiery.me/) on the homepage.
* [ ] Automatically create missing columns in `database/db.js`. That way we will no longer need the migration script.
2019-09-15 07:23:04 +00:00
* [x] Better error message when server is down.
* [x] Show expiry date in thumbs view.
* [ ] Add Select all checkbox somewhere in thumbs view.
* [x] Display renders after API check.
* [x] Enforce pass min/max lengths in dashboard's change password form.
* [ ] Add a copy all links to clipboard when there are more than 2 uploads in homepage's uploads history.
* [x] Update fb_share.png.
* [x] I forsaked all `Promise.all()` in favor of `await-in-for-loop` a while back. I personally think it was fine, considering a lot of them were tasks that required serial processing (continuation be dependant on previous iterations), but maybe I should review the current codes to find any sections that would do just fine, or maybe even great, with `Promise.all()`.
* [x] Black-ish colorscheme.
* [ ] Colorschemes option. Bring back the old dark grey colorscheme, and also add lolisafe's stock light colorscheme.
2019-10-12 07:40:14 +00:00
I think it may be fair to load the colorscheming JS file before `style.css` gets loaded. Meaning the colorscheme script in particular needs to be in HEAD tag, as opposed to the standard where we put all JS files at the end of BODY tag.
Once this is implemented, default colorscheme should be the old dark grey.
* [ ] Turn `render.js` into a standalone script (don't use `page` window variable).
Due to the fact that it needs to have `page` variable defined first, it can't ever be loaded before `home.js`.
This may prevent proper async load of JS assets, which I'd like to look into, in pursuit of even more speed.
2019-10-15 11:02:32 +00:00
* [ ] Remember last pages of uploads & users lists.
Consider remembering last pages of each individual albums as well. When deleting an album, properly delete its remembered last page, if any. When listing albums sidebar and/or listing albums in Manage your albums, also delete remembered last pages of any missing albums (assume the albums were deleted from another device).
* [x] Descriptive upload progress, such as upload speed. Also tell user which chunk is currently being uploaded, to avoid confusion when progress "stops" when shifting to the next chunk.
2019-12-01 20:10:23 +00:00
* [ ] Delete own account feature. Since we already have delete user API endpoint, which also already includes the ability to delete uploads associated with the account, it should be easy to expand it a little to allow deleting own account and uploads.
Low priority:
2019-09-12 11:37:25 +00:00
* [x] Parallel URL uploads.
* [x] Delete user feature.
2019-09-12 11:37:25 +00:00
* [ ] Bulk delete user feature.
* [ ] Bulk disable user feature.
* [x] Strip EXIF from images. [#51](https://github.com/BobbyWibowo/lolisafe/issues/51)
2019-10-12 07:40:14 +00:00
* [ ] DMCA request logs (bare text file will do), and link it in FAQ.
This should also include list of files that also had to be manually deleted due to triggering Google's SafeSearch (harmful downloads, etc).
Lowest priority:
2019-09-12 11:37:25 +00:00
* [ ] Find a way to detect whether a user had disabled their browser's built-in smooth scrolling capability. We will then use that to decide whether we should use smooth scrolling when auto-scrolling during navigation (for now smooth scrolling is always enabled; and polified if applicable).
* [ ] Support [fragments](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web#Fragment) for dashboard sidebar menus.
* [ ] When registering a new account, check for existing account(s) with the same username case-insesitively (for people who forgets how exactly they wrote their username). But still forces case-sensitivity when trying to login (cause this is a considerable security layer).
**Downgraded to lowest priority:** This seems pretty annoying to implement (using either `like` operator or `upper` function seem pretty slow-ish). It seems to be a much better idea to force [nocase collation](https://www.sqlite.org/datatype3.html#collating_sequences) onto username column instead. It'll also improve performance when querying users table by username. But that requires rebuilding existing users table and sacrificing duplicates, which makes it not that good of an idea either.
* [ ] Perhaps consider switching from [Express](https://github.com/expressjs/express) to [Fastify](https://github.com/fastify/fastify)?
* [ ] Multi-level sub dirs for uploads. [#51](https://github.com/BobbyWibowo/lolisafe/issues/51)
* [ ] Mime type blacklist. [#51](https://github.com/BobbyWibowo/lolisafe/issues/51)
* [ ] Cluster mode (multi-core support). [#50](https://github.com/BobbyWibowo/lolisafe/issues/50)
* [ ] Tiered accounts. [#51](https://github.com/BobbyWibowo/lolisafe/issues/51)