Commit Graph
23 Commits
Author SHA1 Message Date
ancsemi fb3666e27c Server mute with an except @mentions option, and Mute for me 2026-10-14 01:12:43 -04:00
Amnibroandancsemi f0202c4373 Settings: an Accessibility section for text size, spacing, fonts, contrast and motion (#5775)
Zoom moves into a new Accessibility section (the section keeps its
section-zoom id, which layout plugins anchor to) next to:

- Message text size, 80 to 200 %, separate from Zoom: messages, threads,
  forum posts, code blocks and the message boxes.
- Line spacing (normal, relaxed, loose) and letter spacing (normal, wide).
- Font: the theme's, the system's, Atkinson Hyperlegible or OpenDyslexic,
  self-hosted under SIL OFL 1.1 with their licenses in /fonts.
- High contrast: secondary text and borders pulled toward each theme's own
  text color, and a thick focus ring.
- Reduce motion: follow system, on or off. One html.reduce-motion class now
  covers every animation, the theme effects, the shimmering role colors,
  smooth scrolling, and GIFs, animated emoji and profile pictures, which
  wait for hover or tap. The old prefers-reduced-motion rules use it too.
- Underline links, and larger click targets.

Everything is per device and applied by theme-init.js before first paint,
which hands the same read/apply functions to the settings page.

Also: keyboard focus rings, keyboard-reachable settings nav rows,
aria-labels on the icon buttons in the channel header and message box, and
aria-pressed on the picker buttons.

Co-authored-by: ancsemi <ancsemi@gmail.com>
2026-10-13 17:06:23 -04:00
ancsemi fec2a188b9 Add a Chat Text Size slider that works separately from Zoom 2026-10-12 21:39:47 -04:00
ancsemi 6db4e2fb1d Add Japanese and Korean 2026-10-12 12:09:15 -04:00
ancsemi b3945e50eb Add Persian, and right-to-left text reads in its own direction 2026-10-12 11:46:38 -04:00
ancsemi cb5771f71b Give every settings number box the same themed size and padding 2026-10-11 19:11:05 -04:00
ancsemi d0099f476c Move the layout picker into Settings, Layout 2026-10-11 14:35:04 -04:00
ancsemi fc9bafa47f Auto-Mod: blocked links are strikes only for accounts under a week old 2026-10-10 21:40:27 -04:00
ancsemi 0b8c04e708 Replace em dashes in the English UI text and messages 2026-10-10 16:08:54 -04:00
Amnibro 936e89cb84 Default Theme and the shared new-member theme are one setting (#5747) (#5748)
Default Theme in Appearance & Welcome and the theme in Defaults for New
Members were stored separately, so a new member saw one on the sign-in page
and the other once the shared defaults applied. Sharing a theme now also sets
the Default Theme (when it is a built-in or a published custom theme),
changing the Default Theme updates the shared theme, choosing None removes it
from the shared set, and unpublishing a custom default drops it from both.
The shared version is untouched, so nobody is re-sent defaults.
2026-10-09 23:24:08 -04:00
ancsemi 5d9abee326 Settings, Desktop App: X11 mode switch for Linux (#5721) 2026-10-05 17:30:00 -04:00
ancsemi 7ab902f144 Self-destruct follow-ups (#5731): files shared earlier stay, forum topics still open, shorter hint 2026-10-05 17:19:48 -04:00
Mattandbo0sted fa251413fe Admins can choose whether self-destructed attachments are kept (#5731)
When a self-destructing message expires, its files have always been moved
to deleted-attachments for the retention window, so a moderator can
recover something abusive that was posted on a short timer. That is the
right default for community servers, but small servers where everyone
trusts each other may want those files gone for good when the timer
runs out.

A new "Keep self-destructed attachments" toggle sits under "Keep deleted
files for (days)" in Admin settings, Cleanup. It is on by default, so
nothing changes for existing servers. When it is on, the files are held
for the same retention period as other deleted attachments. When it is
off, the sweep deletes them directly instead of holding them.

Only an explicit off deletes for good. If the setting can't be read (for
example, a busy database), the files are still held, so a read failure
never destroys evidence. The server only accepts true or false for the
setting.

This commit also fixes a loophole that let anyone stop a self-destructing
message's attachments from being removed, just by quoting the message or
linking its attachments before the timer ran out. The message went away,
but its attachments stayed in uploads for good.

Self-destructing messages can no longer be replied to or quoted by
anyone, mods included, so the sender can't accidentally undo their own
self-destruct either. The server also drops a reply to one. Mods can
still keep a message by pinning or protecting it, which removes the
timer as before and allows replies and quotes again. When the timer
runs out, a link to the attachments posted in any other message no
longer keeps them. The link text stays, but it stops working.

Co-authored-by: bo0sted <mc526+github@proton.me>
2026-10-05 17:16:39 -04:00
ancsemi 6d3e16898f Right panel Join Voice shows one mic, like the header button
The label already starts with the mic in every language, and the button
added a second one in front of it.
2026-10-04 18:01:32 -04:00
ancsemi a12da8d447 Theme menu: one Layout picker for Original and every layout plugin
The Braid and Compact switches become a single picker: Original (Haven's
own layout) and every <Name>Layout.plugin.js on the server, one at a time.
A new layout plugin shows up without any change to Haven, so alternative
sidebars can ship as layouts while Original stays the default. The picker
shows the chosen layout even while it waits (Compact needs a wide window,
Braid waits for Mod Mode), and follows Braid's own shortcut and menu.
theme-authoring.md says what a plugin needs to appear there.
2026-10-04 11:38:43 -04:00
ancsemi 1a63af68e6 Light mode for Custom and RGB: readable colors, no dark flash, dark unchanged (#5726)
On the light base the accent, link and status colors kept their dark-mode
brightness, so yellow, green and cyan mentions, links and warnings all but
vanished (about 1.2:1). They are now darkened until they reach about 3:1
(4.5:1 for links). The automatic black or white button text applies only
in light mode, so dark Custom and RGB look exactly as before. The first
frame is painted from the last palette shown, so light mode no longer
flashes dark on every load. Also: the switch sits below the color picker
instead of over it, borders match Daylight's, the color base is read once
instead of on every RGB tick, the preview page has the switch, and the
cache busters are bumped.
2026-10-03 23:26:22 -04:00
ancsemi 60156f39bd Sign-ups: the whitelist switch is labelled Whitelist instead of Enabled 2026-10-03 17:33:17 -04:00
ancsemi 5102039787 Settings, Desktop App: a switch for hardware video encoding on Linux (VA-API)
Haven Desktop's next release can skip Chromium's VA-API driver blocklist for
screen sharing (Desktop #57), off by default. This puts that setting in
Settings so nobody has to edit config.json. It shows only in Haven Desktop on
Linux, and only when the Desktop build has the setting, and says a restart is
needed after a change.
2026-10-02 12:22:48 -04:00
Bernardo Costa c3ade67336 Screen sharing: drop the native GStreamer path, add a bitrate setting, fix black tiles on GPU encoders (#5672)
The native GStreamer screen share path is gone: in a peer-to-peer mesh every
hardware and OS combination behaved differently, and keeping them in step cost
more than it saved. Screen sharing uses Chromium's own capture everywhere.

- Screen share bitrate is a setting: a stepper from 300 to 10,000 Kbps or
  unlimited, with press-and-hold repeat and typed entry. Changes apply live,
  including to a share going through the voice relay (debounced, so a hold
  becomes one update). The default stays 1080p at 30 fps with an 8,000 Kbps cap.
- Black screen share tiles on GPU encoders: the sharer asks for a fresh
  keyframe after negotiation, and the watchdog only re-adopts tracks a tile is
  not already showing.
- Relay screen publishing is serialized and tied to the share it was started
  for, so a stop, a new share or a relay restart can never publish a stale
  producer, and a failed first publish retries on its own.
2026-10-02 12:12:31 -04:00
ancsemi eb1fc04aa4 Settings: the Whitelist page is now Sign-ups (Who can sign up), since it holds the whitelist, sign-up token, captcha and sign-up limit 2026-10-01 20:23:34 -04:00
ancsemi 7936e09097 Auto-Cleanup can cap the uploads folder: past a size you set, the oldest messages with files are removed until it is back under, and their files go to deleted-attachments. Pinned, archived and exempt messages stay, and avatars, emoji and stickers are never removed (Discussion 59) 2026-09-30 17:06:15 -04:00
ancsemi 6e385e0257 Point in-app download links to haven-app.com 2026-09-28 20:17:08 -04:00
ancsemi 52ca2f4ad2 A static theme preview page with sample content for theme authors, plus the script that regenerates it (#5631) 2026-09-15 18:53:34 -04:00