Commit Graph
454 Commits
Author SHA1 Message Date
ancsemi 096ad7cf8e Show invites, joins and leaves in group DMs; mark existing members in the invite list 2026-10-14 01:23:13 -04:00
ancsemi fb3666e27c Server mute with an except @mentions option, and Mute for me 2026-10-14 01:12:43 -04:00
ancsemi 7f3df332d7 Arrange your own channel order, kept on your account (#5779) 2026-10-14 00:43:14 -04:00
ancsemi cf5d122396 Bump cache busters for the presence and closed topic changes 2026-10-14 00:10:31 -04:00
ancsemi 39c80fc9a5 Closed forum topics take replies only from moderators and admins 2026-10-14 00:10:31 -04:00
ancsemi 9947bfecf0 Staff see invisible members in All Members again 2026-10-14 00:10:31 -04:00
ancsemi 43f863dace Bump cache busters for the Permissions and Auto-mod changes 2026-10-13 19:02:29 -04:00
ancsemi 9b24a3d788 Permissions: say what each tab does, mark per-person exceptions, Reset to roles 2026-10-13 19:02:28 -04:00
ancsemi 9df536a400 Bump cache busters for the permissions, read-only, blog and moderation changes 2026-10-13 17:42:19 -04:00
ancsemi f71ba50d78 Moderation history: warnings, notes and a record of every action (#5759) 2026-10-13 17:42:11 -04:00
ancsemi 63369f7d50 Blog forums: a Comments on pictures only option (#5765) 2026-10-13 17:36:16 -04:00
ancsemi b5a5c7c7cf A note above the message box when you can post in a read-only channel 2026-10-13 17:31:41 -04:00
ancsemi 8c60827c7a Text size keeps the density and DM PiP message sizes as its base (#5775) 2026-10-13 17:09:52 -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 c921170f70 Quotes lead back to the quoted message, like replies do 2026-10-13 15:59:31 -04:00
ancsemi ff07909f24 Keep the status dot whole on hexagon and diamond avatars in DM PiP 2026-10-12 21:44:00 -04:00
ancsemi fec2a188b9 Add a Chat Text Size slider that works separately from Zoom 2026-10-12 21:39:47 -04:00
ancsemi 57ee0d611c Bump cache busters for the merged PRs 2026-10-12 17:17:39 -04:00
Amnibro c8659a1cc7 Official messages: keep official mode on, and choose how they look (#5758)
All opt-in; nothing changes until someone picks a setting.

- Keep official mode on (Settings > Chat, saved on the account as
  users.official_mode, every device follows through set-official-mode /
  official-mode-changed). The megaphone then rests armed, so staff don't
  re-arm it for every message; pressing it sends just the next message
  plain. The client still sends highlight: true per message, so the wire
  format and the server's checks are unchanged.
- Official messages look (Settings > Chat, per device): Badge (the default,
  as before), Colored text (the text and a lighter wash in the role's color,
  a thinner bar, no badge; text mixed with the theme's own text color, more
  of it on light themes), or Off.
- With Colored text, consecutive official messages from one person group
  into one block. Badge keeps every official message's own header.
- session-info carries features: ['highlight_messages', 'official_mode'] and
  officialMode, so apps can tell what a server supports.
2026-10-12 17:14:57 -04:00
ancsemi 15f6abf6ae Bump cache busters for the issue fixes 2026-10-12 17:14:25 -04:00
ancsemi 0c33c41ec3 Square (fit) tile shape shows the whole picture (#5764) 2026-10-12 17:14:14 -04:00
ancsemi f4a9f8b1b5 Channel and topic menus open above an open forum post (#5762) 2026-10-12 17:14:02 -04:00
ancsemi 89f92c61c0 Bump cache busters for blog pieces and categories 2026-10-12 13:44:23 -04:00
ancsemi 5f56322b41 Category headers read as buttons, with short names and a tab layout (#5756) 2026-10-12 13:44:23 -04:00
ancsemi 55ccd21171 Blog mode: comments on a single picture sit under it (#5753) 2026-10-12 13:44:23 -04:00
ancsemi 752950ac04 Forums get a sidebar dot for unread topics, and single topics can be muted 2026-10-12 12:46:39 -04:00
ancsemi a0019f5aad Bump cache busters for official messages and Persian 2026-10-12 11:46:38 -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 b1b18772f5 Official messages: post as your role with Highlight Messages 2026-10-12 11:46:34 -04:00
ancsemi 0c0e8af1c8 Add a GIF button to the DM pop-out window 2026-10-12 01:01:11 -04:00
ancsemi 6d6bfcb41d Bump cache busters for presence, dots and flash note 2026-10-11 23:43:47 -04:00
ancsemi ce5a269ba1 Flash games banner tells members to ask an admin instead of failing 2026-10-11 23:43:47 -04:00
ancsemi 78c5dba024 All Members dots show away and do not disturb, invisible reads offline 2026-10-11 23:43:47 -04:00
ancsemi 646d8d605d Bump cache busters for the tag, forum and defaults fixes 2026-10-11 23:27:39 -04:00
ancsemi a601702e1a Forum post stays opaque on file drag and follows sidebar resize (#5755) 2026-10-11 23:27:39 -04:00
ancsemi 71d5178756 Edit tags opens above an open forum post (#5752) 2026-10-11 23:27:39 -04:00
ancsemi cb5771f71b Give every settings number box the same themed size and padding 2026-10-11 19:11:05 -04:00
ancsemi 163b11377f Bump cache busters for files changed by the dash cleanup 2026-10-10 16:13:18 -04:00
ancsemi fe5ed5b8a0 Replace em dashes in client code comments and styles 2026-10-10 16:08:55 -04:00
ancsemi 0b8c04e708 Replace em dashes in the English UI text and messages 2026-10-10 16:08:54 -04:00
ancsemi 61674d22ce Blog mode for forums in the app (#5742)
A Blog mode row in Channel Functions for forums, next to Votes on posts.

When it is on, the list, gallery and feed cards show the number of comments
(or "Comment" when there are none) instead of replies. An open topic shows
the post first, with the author's own follow-ups under it as more of the
post, then a Comments heading with its count and everyone else's replies,
newest last. The message box says "Add to your post..." for the author and
"Write a comment..." for everyone else. New replies land in the right
section live, deleting a comment updates the count, and switching the mode
redraws the forum and any open topic for everyone viewing it. It works the
same in the side panel, full width and pop-out thread views.

Starting topics, reactions and votes are unchanged, and with Blog mode off a
forum behaves exactly as before. The client side is a new app-forum-blog.js
module.
2026-10-09 13:23:19 -04:00
ancsemi fcf45cc1b3 Add likes and dislikes on forum posts (#5742)
A new Channel Functions row for forums, "Votes on posts", picks Off (the
default), Likes, or Likes and dislikes. Anyone who can change the channel's
settings can set it.

When votes are on, every topic shows a like button with its count, plus a
dislike button when dislikes are allowed, in the list, gallery and feed views
and in the bar above an open topic. Each member has one vote per topic:
clicking it again takes it back, and liking replaces a dislike (and the other
way round). Counts update live for everyone viewing the forum without saying
who voted. Only members who can see the forum can vote, muted members cannot,
and votes are refused while the setting is Off (stored votes are kept and come
back if it is turned on again). The forum's sort menu gains "Most liked" while
votes are on.

Votes live in a new forum_votes table set up by src/forumVotes.js; the socket
handlers are in src/socketHandlers/forumVotes.js and the client side in a new
app-forum-votes.js module. Reactions are unchanged.
2026-10-09 11:24:54 -04:00
ancsemi 9abcc43129 Defaults for new members in Server Branding (#5739)
Admins tick which of their own look-and-feel settings to share and save
them with one button, can clear them, and can apply them once to
everyone. Members get the settings kept in the browser once at their
first load, only where the browser still has Haven's built-in value or
the value an earlier set put there, so their own changes always win.
2026-10-09 11:17:45 -04:00
ancsemi 965f37209a A server reachable at two addresses (for example localhost and its public address) shows once in the server rail; Manage Servers still lists both, marking the second as the same server so you can delete one 2026-10-06 01:39:38 -04:00
ancsemi e51d602f05 Put back the UTF-8 byte order mark at the start of style-admin-panels.css that the template change dropped (#5732) 2026-10-05 18:44:19 -04:00
ancsemi 41feeb6530 Restore the UTF-8 byte order mark on the profile and modals stylesheet (#5733)
The group DM change dropped the BOM that file had before.
2026-10-05 18:28:50 -04:00
Amnibroandancsemi 662534f976 Server templates: export a server's branding, categories, channels, roles and setup posts as one file, and import one from Settings or tools/template.js (#5732)
Admins download the template under Settings > Admin > Server Template, and import
one with a preview of what it will create or update. Add missing leaves existing
channels, roles and settings alone; Replace layout updates them to match. Neither
mode deletes anything. Members, messages, DMs, keys, invite and channel codes,
webhook tokens and secret settings are never exported. Settings go through an
allowlist, and imports are validated strictly: sizes, names, references, image
types and checksums.

The channel-name rule, built-in theme list, automod word and escalation checks
and image sniffing now each live in one place, since the template code shares
them.

Co-authored-by: ancsemi <ancsemi@gmail.com>
2026-10-05 18:00:22 -04:00
Amnibro 28f5f0f6b8 Group DMs: create, invite, leave, and end-to-end encrypted messaging in the web client (#5733) 2026-10-05 17:59:39 -04:00
ancsemi b9cfee5e5e Seasonal themes follow-ups (#5730): grouped by their header only, translated label, fresh cache busters 2026-10-05 17:21:51 -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