Skip to content

Unread conversation tab marker renders as literal text "CF" instead of a dot/icon #146

Description

@ClaireCampbell-PD

What's wrong

PDChat.razor.css (around line 1169) implements the unread-tab marker described in MS-25788/issue #112 like this:

/* The unread marker is what makes "ask, switch away, come back" work: a reply arriving for a tab the
   user is not reading marks it rather than stealing focus. Rendered as a leading dot via ::before so
   that it needs no extra element inside PDTabSet's own tab markup. */
.pdchat-conversation-main ::deep .pdtabset-tab.pdchat-conversation-tab-unread::before {
	content: "CF";
	margin-right: 4px;
	font-size: 0.625rem;
	line-height: 1;
	color: var(--pd-chat-info-border, #0078d4);
}

The comment states this should render as "a leading dot", but content: "CF"; is a literal two-character string, not a Unicode escape for a dot/circle glyph. In the browser this renders as the visible text "CF" immediately before the tab title, rather than a small coloured dot.

Likely intent: \25CF is the CSS Unicode escape for ● (BLACK CIRCLE, U+25CF), or \2022 for • (BULLET, U+2022). The current value looks like the leading backslash-escape prefix was dropped, leaving the literal characters CF (or 2022's trailing digits) behind as plain text.

How it was found

Found live on the public demo (https://panoramicdata.github.io/PanoramicData.Blazor/pdchat) while testing MS-25788 (Jira) — a reply arriving on a background conversation tab correctly marks that tab unread (the underlying tracking logic in PDChat.razor.cs's OnConversationMessageReceived is correct and unaffected), but the visible marker is the literal text "CF" rather than a dot/icon.

Expected

content: should be a proper CSS content value for a dot/bullet glyph, e.g.:

content: "\25CF"; /* ● */

or similar, matching the "leading dot" description in the adjacent comment.

Repro

  1. Open the demo, maximise the chat to full-screen.
  2. Open a second conversation from the sidebar as its own tab.
  3. With that second tab selected, send a message, then switch to the first tab.
  4. Wait for the simulated reply — the second tab should show a dot marker but instead shows the literal text "CF" before its title.

Cosmetic only — the underlying unread-state tracking (mark without stealing focus, clears on selection) works correctly.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions