Open
Description
Currently, the client is heavily DOM-dependent and written in ES5-compatible syntax.
Testing - although some great improvements with Jest
and puppeteer
have been made - is still hard to do.
We cannot currently make use of real Promise
or await
functionality and other ES6 goodies. The justification for sticking with older source code syntax has been laid out in #834, but this is not official policy but rather the opinion of 1 maintainer, subject to change.
Things to think about:
- Compatibility with older browsers
- Increasing complexity of developer setup (installing too many packages, handling too many configs)
- Notoriously unreliable and insecure JS/npm ecosystem
- Bundle size
- Performance with many comments, memory leaks when leaving page open (
setTimeout
) - Single-Page-Applications (SPA) and carrying state
New or improved features
- Editing buttons to insert Markdown elements like
**
around the cursor (like GitHub, remark42, ...) (idea: cursor) - Editing help (inline, as a little popover or modal that slides out)
- Editing name/website (and possibly email), tracked in Make name/URL/e-mail editable #111
- Re-using more front-end functionality in the admin interface
- Cleaning up CSS (tracked in [client] Clean up and standardize client CSS #859)
- Auto-sizing
<textarea>
- Better feedback on errors (e.g. Isso doesn't show or display errors #673)
- Wishlist: Javascript-free client, Python API #331
See also
- An experimental rewrite of the client, with some new ideas for extensibility
- Ground-up rewrite using React and TypeScript https://github.com/BBaoVanC/isso-frontend
- Discussion in js, templates: Replace
contenteditable
div
withtextarea
#887 (comment)