snac2/TODO.md
2022-11-04 08:11:52 +01:00

171 lines
7.2 KiB
Markdown

# TODO
## Open
Add a 'Hide' button, to stop showing a post and its children.
Implement hashtags.
Implement bulleted lists.
## Wishlist
Implement HTTP caches (If-None-Match / ETag).
The 'history' pages are now just monthly snapshots of the local timeline. This is ok and cheap and easy, but is problematic if you e.g. delete a post because it will be there in the history forever.
Create the `mastodon2snac` helper program (reading directly from the boxes, not using any exported data).
Add an RSS to the local timeline.
Idea for a new disk layout: timelines stored like in git (2 character directories and then the md5.json inside); one append-only index with entry ids, read backwards (easy because md5 binary ids measure the same); children lists as append-only files stored inside the timeline directories with almost the same names as the parent entry; liked-by and announced-by lists as append-only files of actor ids. No _snac metadata inside the message. (But, what about the referrer? With this layout, do I need it?).
## Closed
Start a TODO file (2022-08-25T10:07:44+0200).
Change the layout to be multi-user (2022-08-25T16:23:17+0200).
Read address:port from server.json (2022-08-26T09:14:08+0200).
Added an installation setup (2022-08-26T09:39:46+0200).
Purge timeline entries older than a configurable value (2022-08-26T13:15:21+0200).
Move all the interactive code (like initdb()) to a special source file that is only imported on demand (2022-08-26T18:08:05+0200).
Add Basic Authentication for /admin* (2022-08-28T18:55:05+0200).
Add unfollow (2022-08-28T19:59:29+0200).
Generate the /outbox, unpaged, of the 20 latest entries, like what honk does (2022-08-29T14:29:48+0200).
If a user serves a static style.css file, it's embedded in the HTML (2022-08-29T14:52:57+0200).
Filter note texts through a Markdown-like filter (2022-08-29T21:06:47+0200).
If a `Like` or `Announce` is received from the exterior but the object is of a different user in the same instance, when the object is resolved a loop happens SNAC/activitypub.py:506: (2022-08-30T10:03:03+0200).
Ensure that likes and boosts are applied to the object instead of the container. More on this: for Mastodon, we're showing the '.../activity' link instead of the proper Note (2022-08-30T11:57:31+0200).
Fix signature checks (2022-08-30T18:32:22+0200).
Add @user@host citation in notes (2022-08-31T10:42:46+0200).
Add a snac.L() localisation function.
Add an `adduser` command-line option (2022-08-31T19:02:22+0200).
`Accept` + `Follow` types should not be trusted (anyone can be followed by sending them) (2022-09-01T08:49:57+0200).
It happened twice that a reply-to Note is lost (from the web) (2022-09-02T12:31:49+0200).
Implement the like button (2022-09-02T19:28:04+0200).
Implement the boost button (2022-09-02T19:28:04+0200).
Implement the follow button (2022-09-02T19:28:04+0200).
Implement the unfollow button (2022-09-02T19:28:04+0200).
Implement the mute button (2022-09-02T19:28:04+0200).
Don't write messages in the timeline if they are already there (2022-09-03T19:14:58+0200).
Implement the Emoji tags in Notes (2022-09-03T22:14:56+0200).
Implement the 'one page' timeline (2022-09-04T05:41:07+0200).
Re-implement the renaming of updated messages in the local time (2022-09-04T05:58:51+0200).
Add support for a server `greeting.html` that will be returned when the server URL is queried, with a special mark to insert the user list (2022-09-05T10:05:21+0200).
Implement HTML caches for both timelines (2022-09-05T13:45:27+0200).
Implement a history for the local timeline (2022-09-05T14:20:15+0200).
Disable the Boost button for private messages (2022-09-05T19:32:15+0200).
Implement a user config page, where they can change their name, avatar, bio and password (2022-09-05T22:29:26+0200).
Also replace Emoji tags in people's names (2022-09-05T23:00:29+0200).
Implement `Delete` + `Tombstone` on input (2022-09-07T09:20:20+0200).
Implement `Delete` + `Tombstone` on output (2022-09-07T09:42:09+0200).
Entries in the local timeline appear again after being shown in a thread. Try implementing an 'already shown entries' set (2022-09-07T11:21:52+0200).
The Delete button doesn't work for Likes and Announces (it points to the wrong message id) (2022-09-07T15:46:29+0200).
Document `server.json` in the admin manual (2022-09-08T11:01:43+0200).
Document the command-line interface in the user manual (2022-09-08T11:26:11+0200).
Document the web interface in the user manual (2022-09-08T14:00:11+0200).
Enable back the caches (2022-09-08T19:12:51+0200).
Do not show `Like` or `Boost` buttons if that was already done (2022-09-12T19:29:04+0200).
Parents of a parent should also move up the timeline (2022-09-13T22:41:23+0200).
Started the **real** version (developed in C instead of Python) (2022-09-19T20:40:42 2022 +0200).
When a new note has an in-reply-to, also download it (2022-09-24T07:20:16+0200).
After 'Unfollow' or 'MUTE', the timeline should be rebuilt (regardless of the cached version) (2022-10-01T20:27:00+0200).
Should this user's notes with in_reply_to be resolved inside the object? (2022-10-01T20:27:52+0200).
Should admirations download the admired object into the timeline instead of resolving? (2022-10-01T20:27:52+0200).
Add a user configuration flag to hide likes from the timeline (2022-10-01T20:27:52+0200).
Implement an input queue (2022-10-01T20:27:52+0200).
Refactor HTML rendering because it's a mess and write build_timeline(), that generates a big structure with everything to show in a timeline, to be passed to the HTML renderer (2022-10-01T20:27:52+0200).
Implement the helper thread (2022-10-01T20:56:46+0200).
Implement the user-setup web interface (2022-10-02T17:45:03+0200).
Implement the local timeline cache (2022-10-02T18:17:27+0200).
Implement the h/ (history) path (2022-10-02T18:23:24+0200).
Import the man pages (2022-10-03T21:38:23+0200).
Implement the 'init' command-line option (2022-10-04T09:55:56+0200).
Implement the 'adduser' command-line option (2022-10-04T09:55:56+0200).
Implement the purge (2022-10-04T18:52:00+0200).
Implement the citations as @user@host in the reply textareas (2022-10-06T19:08:39+0200).
Show dates in local time and not UTC (2022-10-06T19:45:53+0200).
Embed videos (2022-10-10T08:25:39+0200).
Implement image attachments (2022-10-10T09:04:22+0200).
build_mentions() should not query the webfinger (and it's disabled by now); process_message() should 'complete' the tag Mentions that don't include a host (2022-10-10T09:45:57+0200).
Process the timeline html from a dedicated thread (2022-10-10T20:08:35+0200).
Implement the s/ (static) path (2022-10-11T08:52:09+0200).
Implement image upload (2022-10-16T20:08:16+0200).
Implement the :emojis: in actor names and messages (2022-10-17T12:12:58+0200).
Implement notification by email of private messages (2022-10-28T21:17:27+0200).
Make local likes / announces more visible (2022-10-28T21:18:41+0200).
Implement sensitive messages: they have a non-empty `summary` field and a `sensitive` field set to *true* (2022-10-30T06:19:13+0100).
Add web interface for sending private messages (they can already be answered like normal replies) (2022-11-02T11:07:40+0100).
Add web interface for the list of people being followed and who follows us (2022-11-02T11:07:40+0100).