Skip to content

[Task] Replace middle-dot (·) separators with gap, per the DESIGN.md no-dot rule #1197

@Astro-Han

Description

@Astro-Han

Goal

No · middle-dot separators remain in PawWork product-UI chrome, per the DESIGN.md "Do's and Don'ts" rule (separate with gap + typographic contrast). Any · that genuinely reads best in a dense metadata row is instead registered as a sanctioned exception in DESIGN.md, not left as silent drift.

Scope

In scope — the four call sites that render a literal · in user-facing chrome:

  • packages/ui/src/components/message-part/user-message.tsx:72 and :165 — user-bubble bottom toolbar joins model name and time with ·.
  • packages/ui/src/components/assistant-turn-footer.tsx:52 — agent-round footer joins agent / model / duration / interrupted with ·.
  • packages/ui/src/components/rate-limit-card.tsx:85 (with rate-limit-card.css __sep) — rate-limit card headline separates title and reset time with ·.
  • packages/app/src/components/prompt-input/context-items.tsx:44 — file-context tooltip puts · between the label and the path.

For each site: replace · with gap + typographic contrast (the canonical fix), or register it as a DESIGN.md exception (id + rule broken + reason) if a dot is genuinely warranted there.

Out of scope — any other separator/spacing redesign; · inside code comments (e.g. rate-limit-card.css:6) and docs prose, which are not product UI.

Relevant files or context

DESIGN.md rule (Do's and Don'ts): "The middle-dot · as a separator or decoration in product UI — separate with gap plus typographic contrast (sans vs mono, alphanumeric vs colon-time)."

Surfaced during the DESIGN.md condensation: the no-· rule was deliberately kept, so these pre-existing violations were not silently legitimized. The same pass found the · join helper duplicated across the two timeline footers (user-message.tsx / assistant-turn-footer.tsx), so a shared gap-based meta-row helper may be the cleanest fix for those two.

Verification

  • grep -rn "·" packages/app/src packages/ui/src over .tsx/.css returns no hits in product-UI render paths (comments/docs excluded), or each remaining hit maps to a registered DESIGN.md exception.
  • Visually confirm the affected surfaces (user-bubble toolbar, agent footer, rate-limit card, context tooltip) still read clearly with gap-based separation — bun run dev:desktop walk, or a snap of the relevant target.

Execution mode

Investigate and propose a plan first — post the per-site decision (gap fix vs registered exception) as an issue comment and wait for an explicit "approved" before writing code or opening a PR.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low priorityappApplication behavior and product flowstaskNarrow execution, audit, spike, migration, tracking, or upstream follow-up worktech-debtSupplemental cleanup, maintainability, architecture, test, or quality debt contextuiDesign system and user interface

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions