What happened?
The current UI uses 14px as a universal font size for almost all text elements, resulting in a flat visual hierarchy that makes the interface feel cluttered and indistinct. Group headers in the sidebar are too small to read comfortably in dark mode, while the empty-state headline is disproportionately large compared to the rest of the UI.
Steps to reproduce
- Open PawWork
- Look at the left sidebar session list — all session titles use
text-14-regular (14px / 400 weight) with no distinction between active and inactive
- Observe the group headers (e.g., "All", "Pinned") — they use
text-11-medium (11px), nearly invisible against the dark background
- Click "New Session" to enter the empty state — the headline "今天想做什么?" uses
text-20-medium (20px), creating a jarring jump from the 14px baseline
- Compare with ChatGPT / Codex / Claude desktop apps — they use 13px as the body baseline and establish hierarchy through weight and color, not just size
What did you expect to happen?
- Session list items should have clear visual distinction between active (bold/strong) and inactive (regular/weak) states
- Group headers should be readable without straining, acting as clear section dividers
- The empty-state headline should feel integrated with the overall typography scale, not oversized
- The font size scale should have smooth gradations (11px → 12px → 13px → 14px → 16px → 20px) instead of large gaps
PawWork version
v0.2.14
OS version
macOS 15.4.1 (also reproducible on Windows 11)
Can you reproduce it again?
Yes, every time
Screenshots, recordings, or extra context
Current font size distribution:
| Element |
Current Class |
Size |
Weight |
Issue |
| Session title (default) |
text-14-regular |
14px |
400 |
No distinction from body text |
| Session title (active) |
text-14-regular |
14px |
400 |
Same as inactive — no hierarchy |
| Group header ("All", "Pinned") |
text-11-medium |
11px |
500 |
Too small, nearly invisible in dark mode |
| Empty-state headline |
text-20-medium |
20px |
500 |
Oversized vs 14px baseline |
| Empty-state subtitle |
text-14-regular |
14px |
400 |
6px gap from headline, no middle ground |
| Button text |
inherited |
~14px |
— |
Same as content text |
| Input placeholder |
inherited |
~14px |
— |
Same as content text |
Competitor comparison:
| Element |
PawWork |
ChatGPT |
Codex |
Claude |
| Session list |
14px regular |
13px medium |
13px |
13px |
| Group header |
11px medium |
12–13px |
12px |
12px |
| Body / chat |
14px |
13px |
13px |
13–14px |
| Empty headline |
20px |
16–18px |
16px |
16px |
Competitors use 13px as the body baseline and establish hierarchy primarily through weight (400/500/600) and color (text-strong / text-base / text-weak), not size jumps.
Proposed changes:
| Element |
Current |
Proposed |
Change |
| Session title (inactive) |
14px regular |
13px regular |
-1px |
| Session title (active) |
14px regular |
13px medium |
-1px, +weight |
| Group header |
11px medium |
12px medium |
+1px |
| Empty-state headline |
20px medium |
16px regular |
-4px, -weight |
| Subtitle / description |
14px regular |
14px regular |
no change |
| Footer hint |
12px regular |
12px regular |
no change |
Files involved:
packages/ui/src/styles/utilities.css — font utility classes
packages/ui/src/styles/theme.css — font size variables
packages/app/src/pages/layout/sidebar-items.tsx — session list items
packages/app/src/pages/layout/pawwork-sidebar.tsx — sidebar group headers
packages/app/src/components/session/session-new-view.tsx — empty-state headline
packages/app/src/pages/session/message-timeline.tsx — session title header
Acceptance criteria:
What happened?
The current UI uses
14pxas a universal font size for almost all text elements, resulting in a flat visual hierarchy that makes the interface feel cluttered and indistinct. Group headers in the sidebar are too small to read comfortably in dark mode, while the empty-state headline is disproportionately large compared to the rest of the UI.Steps to reproduce
text-14-regular(14px / 400 weight) with no distinction between active and inactivetext-11-medium(11px), nearly invisible against the dark backgroundtext-20-medium(20px), creating a jarring jump from the 14px baselineWhat did you expect to happen?
PawWork version
v0.2.14
OS version
macOS 15.4.1 (also reproducible on Windows 11)
Can you reproduce it again?
Yes, every time
Screenshots, recordings, or extra context
Current font size distribution:
text-14-regulartext-14-regulartext-11-mediumtext-20-mediumtext-14-regularCompetitor comparison:
Competitors use 13px as the body baseline and establish hierarchy primarily through weight (400/500/600) and color (
text-strong/text-base/text-weak), not size jumps.Proposed changes:
Files involved:
packages/ui/src/styles/utilities.css— font utility classespackages/ui/src/styles/theme.css— font size variablespackages/app/src/pages/layout/sidebar-items.tsx— session list itemspackages/app/src/pages/layout/pawwork-sidebar.tsx— sidebar group headerspackages/app/src/components/session/session-new-view.tsx— empty-state headlinepackages/app/src/pages/session/message-timeline.tsx— session title headerAcceptance criteria: