Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/buzz-help.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ the interface unless an available tool actually supports that action.
grants access.
- **Mute** is available from a channel or DM's sidebar context menu. Once
confirmed, a crossed-out bell appears immediately after its name. New messages
do not make muted channel names bold; muted DM names still become bold.
do not make muted channel or DM names bold.
Mute suppresses notifications for messages that do not mention you; mentions can still notify
you. Unmute restores ordinary unread emphasis and dots. Manual **Mark as unread**
can still make the name bold. Muted rows show no unread dots, including thread
Expand Down
4 changes: 2 additions & 2 deletions docs/notifications.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,8 @@ checks, not that an OS banner was displayed or read.
styling and offscreen cues without clearing unread evidence. Muted channel and
DM sidebar rows show a crossed-out bell immediately after their names and hide
unread dots, including thread dots. Manual unread can still emphasize
the name, and thread activity remains available. Muted DMs retain automatic
unread emphasis, offscreen unread counts and avatar previews. Solo chat labels
the name, and thread activity remains available. Muted DMs also suppress automatic
unread emphasis; offscreen unread counts and avatar previews remain. Solo chat labels
retain unread emphasis. Unread thread cues are distinct from participating-thread alerts,
which mute suppresses. Unknown or failed
preference reads hold non-mention candidates until explicit retry; a confirmed
Expand Down
6 changes: 3 additions & 3 deletions docs/unread.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,14 +168,14 @@ or local manual intent strengthens the channel label; protected attention alone
retains its dot without bolding a caught-up, unmuted channel. Confirmed-muted channels
suppress ordinary automatic unread styling and offscreen cues without clearing
unread evidence; explicit manual unread can still strengthen the label.
Pending or failed mute changes do not suppress these cues. Muted DMs retain
automatic unread bolding, “N unread” offscreen counts and avatar previews. Muted
Pending or failed mute changes do not suppress these cues. Muted DMs also suppress
automatic unread bolding; “N unread” offscreen counts and avatar previews remain. Muted
channel and DM sidebar rows show a crossed-out bell immediately after their names,
even with no unread activity. They hide all unread dots, including
thread activity dots. Thread activity remains available through the row's activity popover,
and its unread count remains accessible to assistive technology. Unmute restores
the dots from retained unread evidence. The promoted Bestie DM also hides muted
unread dots; its label keeps ordinary DM unread emphasis.
unread dots; its label follows the same mute rule.
Solo chat labels strengthen for any observed unread message, including mentions,
broadcasts and relevant replies, even when muted, so Solo rows omit the attention dot.
Ordinary unread renders no row marker. Unmuted DMs, mentions, broadcasts, and
Expand Down
10 changes: 2 additions & 8 deletions src/app/shell/BestieNavigation.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -422,10 +422,7 @@ it("honors the promoted DM's mute and unread state through reads and Bestie repl
within(row()).getByRole("img", { name: /1 observed unread messages/ }),
).toBeInTheDocument();
expect(row().querySelector("[data-channel-priority]")).toBeNull();
expect(row().querySelector("[data-bestie-unread]")).toHaveAttribute(
"data-bestie-unread",
"true",
);
expect(row().querySelector("[data-bestie-unread]")).toBeNull();
expect(dmRow()).toBeNull();
await act(async () => {
muted = false;
Expand All @@ -440,10 +437,7 @@ it("honors the promoted DM's mute and unread state through reads and Bestie repl
muted = true;
await preferences.queries.refresh();
});
expect(row().querySelector("[data-bestie-unread]")).toHaveAttribute(
"data-bestie-unread",
"true",
);
expect(row().querySelector("[data-bestie-unread]")).toBeNull();
expect(row().querySelector("[data-channel-activity]")).toBeNull();
expect(row()).toHaveAccessibleName(/1 unread thread/);
expect(dmRow()).toBeNull();
Expand Down
6 changes: 3 additions & 3 deletions src/bundled/channels/ChannelSidebarItem.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -631,9 +631,9 @@ it.each([
act(() => state.unread(2));
expect(row()).toHaveAttribute("data-ordinary");
act(() => state.mute(true));
expect(row()?.hasAttribute("data-ordinary")).toBe(channelType === "dm");
expect(row()).not.toHaveAttribute("data-ordinary");
act(() => state.unread(3, 0));
expect(row()?.hasAttribute("data-ordinary")).toBe(channelType === "dm");
expect(row()).not.toHaveAttribute("data-ordinary");
expect(
view.container.querySelectorAll("[data-channel-unread]"),
).toHaveLength(mutedIndicators);
Expand All @@ -651,7 +651,7 @@ it.each([
).toHaveLength(mutedIndicators);
act(() => state.mute(true));
act(() => state.unread(4, 1));
expect(row()?.hasAttribute("data-ordinary")).toBe(channelType === "dm");
expect(row()).not.toHaveAttribute("data-ordinary");
expect(view.container.querySelector("[data-channel-priority]")).toBeNull();
expect(
screen.getByRole("img", { name: /4 observed unread messages/ }),
Expand Down
2 changes: 1 addition & 1 deletion src/bundled/channels/UnreadBadge.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export function ordinaryUnread(
const count = snapshot.observedCount ?? 0;
return (
snapshot.manual !== "none" ||
(dm ? count > 0 : !muted && count > (snapshot.attentionCount ?? 0))
(!muted && (dm ? count > 0 : count > (snapshot.attentionCount ?? 0)))
Comment thread
laneysmith marked this conversation as resolved.
Resolved
);
}

Expand Down
Loading