79 Commits
Author SHA1 Message Date
SalastilandClaude Sonnet 5.5 f1183958ab Kick subscriptions, moderation and the stream's going live or ending are cards in the same theme as the gifts, raids and redeems
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-11 13:44:49 -04:00
SalastilandClaude Sonnet 5.5 97611c8742 No reference to the maintainer's own server: .gitmodules and PKGBUILD are the public ones on every branch, the nobilis release is its own script and the mirroring is kept outside the repository, and the maintainer is [email protected] everywhere it is named
Closes #335

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-11 00:28:47 -04:00
SalastilandClaude Sonnet 5.5 64ade92ee1 Kick cards sit where a person does: no join mark beside them, starting at the picture's edge with the name where a name is in the log - in comfy and in bubbles, where they had been centred - and with the air above them a message has
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-11 00:07:59 -04:00
SalastilandClaude Sonnet 5.5 39dcba548a A conversation opens as Discord's does: at its first unread only when the run is short (fifty or fewer), otherwise at its end with the bar to go back by - and the line from a visit is dropped when the conversation is left, so a return no longer goes up the history to a place nothing is unread
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-10 23:58:14 -04:00
SalastilandClaude Sonnet 5.5 7bae0eaaa8 Kick events are cards in Kick's shape on this client's surfaces: KICKs sent with the gift and its tier, gifted subs with their recipients on a purple bar, a raid, and a redeemed reward in the streamer's colour
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-10 20:49:58 -04:00
SalastilandClaude Sonnet 5.5 5d826a785d Mirror script: MIRROR_GITEA reaches Gitea by its own address for the files Cloudflare will not take
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-10 16:33:00 -04:00
SalastilandClaude Sonnet 5.5 99e03116e9 Mirror script: a file over Cloudflare's 100 MB limit stays on GitHub only, said plainly, instead of stopping the mirror before nobilis
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-10 16:28:04 -04:00
SalastilandClaude Sonnet 5.5 ee0120ff5e A deploy tidies first: old AppImages, debug and cross builds, and a daemon build directory past 8 GB are removed, so a checkout stops growing to a hundred gigabytes
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-10 16:12:52 -04:00
SalastilandClaude Sonnet 5.5 7803cc38a6 A mute stops the interruptions, not the count: a muted channel still shows its mentions in the list, the rail, the switcher and the tray; a muted direct message shows none; and muting on Discord is written to the account as it is on Matrix
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-10 13:33:05 -04:00
SalastilandClaude Sonnet 5.5 336335a8a3 Scrolling a long unread run no longer snaps back: the place being read is found through the bar laid over the top of the log, not read off the bar, so a card or picture settling above does not put the view back where the bar appeared
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-10 13:17:22 -04:00
SalastilandClaude Sonnet 5.5 1e314f85b6 The tray's number is the window's: counted by the rail's rule - muted and hidden conversations out, a direct message by each unread message, anywhere else by its mentions - and told to the tray whenever it changes, instead of a tally of its own that drifted
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-09 20:08:34 -04:00
SalastilandClaude Sonnet 5.5 55248eb583 GIFs: a linked GIF is drawn as the picture - silent, looping, without the player - on every service, a GIF picker with trending, categories and search, and Klipy/Tenor/Giphy pages are never probed (#331)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-09 17:55:10 -04:00
SalastilandClaude Sonnet 5.5 23c87dd353 Idle detection: how long since anything was used, from the system where it will say and moho's own windows where it will not; a setting for it and for how long; the plaque says Idle (away) and keeps what was chosen checked (#332)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-09 17:35:58 -04:00
SalastilandClaude Sonnet 5.5 0dc048cdc0 Server rail: a tile counts the mentions waiting in it and not the messages, and a muted room counts for nothing, mentions included
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-09 15:28:01 -04:00
SalastilandClaude Sonnet 5.5 745641a1ad The window stays where it is put: the link coming up is acted on once, a refresh does not follow the open conversation to its server, and the tray is told only what changed; Matrix's invisible is called offline; a mute held on a Matrix account can be taken off from the menu
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-09 11:45:38 -04:00
SalastilandClaude Sonnet 5.5 c1bcb72a38 Status: the plaque and the tray offer what each service has; idle from the tray reaches Discord and IRC and leaves the rest online; do-not-disturb silences desktop notifications everywhere
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-09 11:26:52 -04:00
SalastilandClaude Sonnet 5.5 53fb0f34ce Tray: no notifications switch of its own - Do not disturb is that, and now silences an account's desktop notifications and the taskbar flash (#330)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-09 11:07:50 -04:00
SalastilandClaude Sonnet 5.5 24106e51f4 Tray: a bubble drawn for the system's colour scheme with the number waiting on it; a menu of what is new, Status, notifications, Settings, Restart moho and Quit; no daemon plumbing (#330)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-09 11:00:10 -04:00
SalastilandClaude Sonnet 5.5 dd0c25e054 Discord forums: a pane of posts (title, tags, first message, replies, age, picture, reaction), search, sort, older posts, New Post; a forum has no message box (#329)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 23:26:07 -04:00
SalastilandClaude Sonnet 5.5 06bb812ed0 Recovery also covers a page that exits cleanly while its window is still there (that is what the log showed); the URL is logged
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 23:12:07 -04:00
SalastilandClaude Sonnet 5.5 dad55432b4 Server rail: the + is pinned below the list, under a rule and above the cog; the list scrolls above it
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 22:50:28 -04:00
SalastilandClaude Sonnet 5.5 d7c4215473 Discord's notices drawn as cards: a glyph, the time, the words and a button bar - red where it acts on the account (#328)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 22:45:03 -04:00
SalastilandClaude Sonnet 5.5 ff7d313b46 Where the message box would be: a banner saying why nothing can be written here; embed fields and footer drawn (#328)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 22:32:40 -04:00
SalastilandClaude Sonnet 5.5 2b41c5eb1c Join: browsing an IRC network's channels asks the daemon for a page, times out after a minute, can be stopped, and says when the network refuses
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 22:14:43 -04:00
SalastilandClaude Sonnet 5.5 f8936c6734 Room settings: a tabbed dialog - Security, Moderation, Advanced - instead of a 400px popover (#324)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 21:56:20 -04:00
SalastilandClaude Sonnet 5.5 078fe41261 Mentions page: service and unread filters, day groups, two-line bodies, put away one at a time (#314)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 21:53:34 -04:00
SalastilandClaude Sonnet 5.5 f8dcccdb8f Accounts and Join: groups open when there are few accounts, Remove in a danger zone, the add form stays open with a Cancel, Join picks its account and says Join (#323)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 21:51:06 -04:00
SalastilandClaude Sonnet 5.5 82a0bdf8a8 Settings: a Keybinds page - every shortcut listed, and the global hotkey is recorded by pressing it (#322)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 21:48:22 -04:00
SalastilandClaude Sonnet 5.5 adca84d657 Settings: a Notifications page - desktop notifications, sound, taskbar flash, unread badge (#321)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 21:45:53 -04:00
SalastilandClaude Sonnet 5.5 fe6ad97dae Settings: an Appearance page - layout, spacing, zoom, clock, relative times, reduce motion (#320)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 21:43:29 -04:00
SalastilandClaude Sonnet 5.5 66a0c0f20a Settings: the gear opens it directly, a grouped rail with Accounts and Downloads as pages, a search over every setting, one switch for every boolean, segmented sign-in, a saved tick (#319)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 18:21:28 -04:00
SalastilandClaude Sonnet 5.5 59d4893fbc Incoming calls: Discord's and Matrix's in one list, one style, stacked (#325)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 18:12:26 -04:00
SalastilandClaude Sonnet 5.5 f12007679b Thread panel: the room's own message box in thread mode - emoji, names, files, formatting (#310)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 18:09:52 -04:00
SalastilandClaude Sonnet 5.5 420a2f793c Dialogs: forward picker, message source, bot forms, poll, space rooms, folder settings, rules and the screen picker move onto the shared frame; the events panes share its scrim; a dialog focuses its first text box (#315, mostly)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 18:05:47 -04:00
SalastilandClaude Sonnet 5.5 2ef9e35c9e Header: one 48px row with a divider across every column, toggles drawn filled when on, and the topic beside the name (#289)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 18:01:17 -04:00
SalastilandClaude Sonnet 5.5 c026609e4b User footer: muted and deafened are red, the voice buttons stay put on every service, and the status is a popout with a custom status and Apply to all accounts (#290)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 17:54:41 -04:00
SalastilandClaude Sonnet 5.5 506140db86 Reactions: a sentence over each one naming the emoji and who gave it; the daemon answers who reacted on request (#303)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 17:48:26 -04:00
SalastilandClaude Sonnet 5.5 3a74cf030b Pins: a banner over the log for Discord and Matrix with a click-through to each, and the count on the header button (#311)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 17:42:25 -04:00
SalastilandClaude Sonnet 5.5 87ea3b8c31 Media: several pictures in one message lay out as a grid; SPOILER_ files are blurred until clicked (#304)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 17:39:11 -04:00
SalastilandClaude Sonnet 5.5 a59c1abc25 Composer: one box with the + on the left and emoji, stickers, voice and Send on the right; Send only when there is something to send (#306)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 17:34:06 -04:00
SalastilandClaude Sonnet 5.5 15e7061f97 Attachment tray: cards with name and size, spoiler toggle, token-coloured remove; dropped files go into the tray (#308)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 17:29:17 -04:00
SalastilandClaude Sonnet 5.5 99fd0d350f Emoji picker: arrow-key walking, Enter picks the top result, skin tones kept in prefs (#313)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 17:22:16 -04:00
SalastilandClaude Sonnet 5.5 817cb1e6fc Lightbox: step through the conversation's media, wheel/pinch zoom with panning, Copy picture, grows in (#312)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 17:17:58 -04:00
SalastilandClaude Sonnet 5.5 28d8b3c54e Autocomplete: one style for names, commands and emoji; member pictures; :shortcode emoji while typing (#309)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 17:12:23 -04:00
SalastilandClaude Sonnet 5.5 f48185e67a Reply bar: its own surface, the author's face, Esc to cancel, focus on reply, @ ping switch on Discord (#307)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 17:08:01 -04:00
SalastilandClaude Sonnet 5.5 9ba630cb17 Shift+Enter makes a new line, and pasted line breaks stay (#305)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 17:00:39 -04:00
SalastilandClaude Sonnet 5.5 6d8a050271 Motion pass: hover fades, turning fold arrows, arriving messages, reaction pop, overlays growing in (#283)
Rows, buttons and menu items fade between states on the shared durations. The fold arrow rotates instead of being swapped. A message said a moment ago arrives (fade and rise); history does not. A reaction that is new or has gone up pops. Popovers, pickers, dialogs and the switcher grow in, scrims fade, and the jump-to-present pill slides up. All of it stands still when the system asks for reduced motion.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 16:51:43 -04:00
SalastilandClaude Sonnet 5.5 55fd19282e Open a conversation at its first unread, with a bar that says how many are above (#301)
Opened with a lot unread, the log starts at the New line rather than at the end. While that line is out of sight above, a strip along the top says how many new messages since when and offers Mark as read; clicking the words goes back to the line. The line goes where reading stopped (the time last marked read) when the conversation has not been loaded yet. The harness now sweeps up anything a run leaves behind.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 16:48:41 -04:00
SalastilandClaude Sonnet 5.5 4065963640 Context menu: keyboard navigation, checked items, shortcut hints, entry animation, anchored to its button (#317)
Arrow keys, Home and End move through the entries, Enter does the focused one, Tab or Escape closes it and gives focus back. role=menu and menuitem(checkbox). An entry can be checked (the status menu uses it instead of appending a tick to the label) or show its shortcut. It fades and scales in, closes when the window is left or something scrolls, and a menu button's menu opens beside the button.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 15:05:53 -04:00
SalastilandClaude Sonnet 5.5 2d1b8beb8d Toasts: slide in and out, three kinds, pause on hover, fold repeats, cap at three, optional action (#318)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-08 15:02:16 -04:00