Commit Graph
5 Commits
Author SHA1 Message Date
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 Opus 5 c9129fb5a3 Make the tray icon survive both a dark panel and a light one
Following #36. A pale shape on a pale panel is simply gone, and this
shell has a light mode - so both icons now carry a light tone and a
dark one, a fill with a keyline in the opposite tone. Whichever way the
panel goes, one of the two is still there to see.

Waiting is the same bubble inverted, plus the badge. Inverting is the
largest change two icons of one shape can make, and unlike colour it
survives what this shell does to tray icons, which is render them in
monochrome - the reason the original pale pink ball arrived looking
white, and the reason a red one arrives grey.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-28 00:26:50 -04:00
SalastilandClaude Opus 5 4841545927 Light the tray for any unread direct message
Issue #36. The tray alert fired only for buffers in pinnedBuffers, on
the reasoning that a direct message had already had its desktop
notification and the tray was for things important enough to pin. In
practice that left the icon nearly inert: somebody messages you, the
notification fades, and the one indicator still on screen says nothing
unless you happened to have pinned that exact conversation. Any unread
direct message now raises it, and pinned buffers still do too.

That needed the buffer list seeding on connect. The daemon usually
outlives this process, so its buffers were announced long before the
connection existed and no bufferListChange is coming for them - main
knew of no conversations at all, and could not have told a direct
message from a channel. The mute rules were reading the same empty map.

The badge is bigger and separated from the bubble by a gap, rather than
a paler dot resting against its outline. Colour alone was never going
to carry it: the shell this was reported from renders tray icons in
monochrome, so the red arrives grey - which is also why the old pale
pink one looked white.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-28 00:19:44 -04:00
Salastil 9b07c4604b Depend on nobilis as a submodule, and fix four rendering bugs
The daemon moves to its own repository as nobilis, so both frontends - this
one and dms-chat - depend on it as a peer instead of one of them vendoring it.
The vendored chatd tree and the Rust workspace are gone; `npm run daemon`
builds the submodule, and packaging pulls the binary out of it.

The Sneedchat smiley images go with it, next to the table that names them.
Previously nobilis held the filenames while this repository held the files,
so the two could drift apart with nothing to catch it.

Fixes found while testing against live accounts:

- The sidebar did not truncate. A flex item's automatic minimum size is its
  content's min-content width, so prose-titled Matrix rooms made the buffer
  list wider than its pane and painted over the message list.
- Discord's QR never rendered: the event field is `qrCodePath`, not `path`.
  The Sneedchat and Matrix login progress text was blank for the same reason -
  all four status events carry `detail`, not `status`.
- Every Matrix message rendered as a grey system line with no author or
  avatar. IRC, Discord and Sneedchat tag an ordinary message "chat" but Matrix
  tags it "message"; only the first was treated as something a person said.
- Context menus and the emoji picker swallowed their own clicks. Both
  dismissed on a capture-phase mousedown, which unmounts the item before the
  click can land on it - so pin, mute, hide and emoji selection all did
  nothing. Presses inside the popup are now ignored.
2026-08-21 19:25:34 -04:00
Salastil 268751e5d0 Initial Commit 2026-08-21 14:04:58 -04:00