Go to file
Jane 68884d9afa Use <details> element for sensitive text
The sensitive text feature was implemented with <label> and hidden
checkbox <input> elements. There were two issues with this
implementation:
1. The user couldn't navigate to the "show/hide more" button using
   keyboard.
2. The label indicates two actions at the same time ("show/hide more"),
   making it unclear what the function of the checkbox was and what the
   current show/collapse state was.

As it is generally preferrable to use built-in HTML elements for the
best semantic, this commit moves to use the <details> and <summary>
elements for the sensitive text feature. The browser will open/collapse
the content in <details> automatically when the user clicks on the
<summary>, and keyboard navigation support is built-in.

This commit also changes the button to display "show more" or "show
less" depending on the state for visual clarity. This button is hidden
from the accessibility tree using `aria-label="false"`, as the <details>
element already exposes its state to the tree and we want to avoid
duplicated information.

A few caveats:
* The "show/hide sensitive content" button for sensitive attachments
  hasn't been changed yet as I'd like to get more feedback about the new
  implementation.
* As the summary/content warning text itself is also part of the
  <summary> tag, the user can now also click on them to toggle the
  visibility of the sensitive text. This may not be desirable as the
  current interface does not make it clear that this could happen; the
  user may try to select some text from the summary and be surprised
  by the sensitive text being expanded. One way to improve this would
  be to add an event listener to the summary text and call
  `preventDefault`, but this would introduce JavaScript code.
2022-11-30 12:26:34 +01:00
alembic Start to merge IndieWeb and AP interactions 2022-11-17 09:18:06 +01:00
app Use <details> element for sensitive text 2022-11-30 12:26:34 +01:00
data Allow templates to be overridden in data/templates/ 2022-11-07 18:46:21 +01:00
docs Allow to disable certain notification type 2022-11-27 12:11:42 +01:00
misc Add missing autorestart for supervisord config 2022-09-01 12:35:15 +02:00
scripts Make local actor icon optional 2022-11-19 08:12:49 +01:00
tests Improved Block support 2022-10-18 21:39:09 +02:00
.build.yml Switch to Ubuntu for CI (way faster than with alpine) 2022-07-01 19:34:29 +02:00
.dockerignore Tweak .dockerignore 2022-07-30 08:48:13 +02:00
.flake8 Initial commit for new v2 2022-06-22 20:11:22 +02:00
.gitignore Generate a basic favicon dynamically 2022-07-22 08:46:14 +02:00
alembic.ini Reset DB migrations 2022-07-28 19:28:18 +02:00
AUTHORS Update AUTHORS 2022-11-27 11:33:46 +01:00
boussole.json Fix boussole config 2022-06-22 21:21:50 +02:00
docker-compose.yml Fix Docker compose config 2022-07-28 20:28:53 +02:00
Dockerfile Tweak Dockerfile 2022-09-18 21:33:50 +02:00
LICENSE Fix LICENSE 2022-08-05 19:32:22 +02:00
Makefile Fix password reset task 2022-10-23 16:40:56 +02:00
poetry.lock Revert "Update deps" 2022-11-28 20:35:53 +01:00
pyproject.toml Fix OG metadata scraping and improve workers 2022-11-13 13:00:22 +01:00
README.md Tweak README 2022-11-15 22:22:56 +01:00
tasks.py Added the ability to use a custom favicon. 2022-10-19 09:03:58 +02:00

microblog.pub

A self-hosted, single-user, ActivityPub powered microblog.

builds.sr.ht status AGPL 3.0

Instances in the wild:

There are still some rough edges, but the server is mostly functional.

Features

  • Implements the ActivityPub server to server protocol
    • Federate with all the other popular ActivityPub servers like Pleroma, PixelFed, PeerTube, Mastodon...
    • Consume most of the content types available (notes, articles, videos, pictures...)
  • Exposes your ActivityPub profile as a minimalist microblog
    • Author notes in Markdown, with code highlighting support
    • Dedicated section for articles/blog posts (enabled when the first article is posted)
  • Lightweight
    • Uses SQLite, and Python 3.10+
    • Can be deployed on small VPS
  • Privacy-aware
    • EXIF metadata (like GPS location) are stripped before storage
    • Every media is proxied through the server
    • Strict access control for your outbox enforced via HTTP signature
  • No Javascript
    • The UI is pure HTML/CSS
    • Except tiny bits of hand-written JS in the note composer to insert emoji and add alt text to images
  • IndieWeb citizen
  • Easy to backup
    • Everything is stored in the data/ directory: config, uploads, secrets and the SQLite database.

Getting started

Check out the online documentation.

Credits

Contributing

All the development takes place on sourcehut, GitHub is only used as a mirror:

Contributions are welcomed, check out the contributing section of the documentation for more details.

License

The project is licensed under the GNU AGPL v3 LICENSE (see the LICENSE file).