Skip to content

refactor(ui/sidebar): move Diary from ActivityBar into Chat sidebar#175

Merged
luokerenx4 merged 2 commits intomasterfrom
dev
May 10, 2026
Merged

refactor(ui/sidebar): move Diary from ActivityBar into Chat sidebar#175
luokerenx4 merged 2 commits intomasterfrom
dev

Conversation

@luokerenx4
Copy link
Copy Markdown
Contributor

@luokerenx4 luokerenx4 commented May 10, 2026

Summary

Reframes the Chat activity from "literal chat" to "interactions with
Alice" — including read-only observation. Diary fits there: it's
Alice's first-person output stream, not a peer of Portfolio/Market/News
which are user-facing data surfaces. Diary's render order also
corrected to match its observation-surface shape (feed, newest-first).

Per-session contributions

2026-05-10 — Diary read order fix

  • DiaryPage was rendering oldest cycle first (chat-style: bottom =
    newest, scroll up for history). For an observation surface that's
    inverted — feed/timeline shape is newest-first, scroll down for
    older. Reversed the groups, dropped auto-scroll-to-bottom, repurposed
    the floating scroll button to "Newest ↑" pinned at top.
  • Items inside a single cycle still ascending so the prompt → thought
    → tool-call read inside one heartbeat tick stays chronological.
  • Key commit: f286040

2026-05-10 — Diary moves under Chat

  • ActivityBar drops the Diary leaf (8 nav items, was 9)
  • ChatChannelListContainer: Diary row added below Notifications using
    the same lucide Notebook icon. Top half = "Alice surfaces"
    (Notifications + Diary), separator + "Channels" section label, then
    the channel list. Reads as deliberate two-purpose sidebar instead of
    a flat list with one decorative row at top.
  • ActivitySection and Page enums drop 'diary'
  • sections.tsx no longer maps a Diary sidebar
  • DiarySidebar.tsx deleted (was placeholder; never grew past one row)
  • The diary tab kind itself stays — /diary URL, openOrFocus({ kind: 'diary' }),
    and the existing DiaryPage are unchanged
  • Key commit: ccac56c

Full commit log

f286040 fix(ui/diary): newest-first ordering — diary is a feed, not a chat
ccac56c refactor(ui/sidebar): move Diary from ActivityBar into Chat sidebar

Test plan

  • npx tsc --noEmit clean
  • pnpm test — 1592 / 1592 passing
  • vite build clean
  • Manual:
    • ActivityBar shows 8 icons (no Diary), active indicator still works
    • Click ActivityBar Chat → sidebar shows Notifications + Diary rows on top, then "Channels" label, then channel list
    • Click Diary row → opens (or focuses) Diary tab; row highlights when Diary is the focused tab
    • /diary URL still resolves to the Diary tab
    • Notifications row unread badge still works
    • NEW Diary opens at the newest cycle (Today divider on top, then Yesterday, etc.); scroll down reveals older entries
    • NEW Floating "Newest ↑" pill appears after scrolling into history; click jumps back to top

🤖 Generated with Claude Code

Ame and others added 2 commits May 10, 2026 13:55
Diary is Alice's first-person output stream — read-only observation, not
a peer of Portfolio/Market/News which are user-facing data surfaces. It
clusters conceptually with Chat ("interactions with Alice", whether
two-way or just observation), so it lives there now.

- ActivityBar drops the Diary leaf (8 nav items remaining)
- ChatChannelListContainer adds a Diary row below Notifications using
  the same lucide Notebook icon. Channels list gets a "Channels" section
  label so the upper "Alice surfaces" rows read as deliberate, not as
  miscellaneous header noise.
- ActivitySection enum + Page enum drop 'diary'
- sections.tsx no longer maps a Diary sidebar
- DiarySidebar.tsx deleted (placeholder; never grew past one row)

The diary tab kind itself stays — `/diary` URL, openOrFocus, and existing
DiaryPage are unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diary read as inverted: opening landed on the oldest cycle, with newer
ones below the fold. That's chat ergonomics (bottom = newest, scroll
up for history) — wrong shape for an observation surface where the
expected mental model is feed/timeline (top = newest, scroll down for
older).

- `groupItemsByCycle` reverses the result: cycles render newest-first,
  with day dividers running Today → Yesterday → … . Items inside a
  single cycle stay ascending so the prompt-then-thought-then-tool-call
  read inside one heartbeat tick is still chronological.
- Drop auto-scroll-to-bottom and the `messagesEndRef` anchor — first
  paint already lands on the newest entry.
- Re-purpose the floating scroll button: was "scroll to bottom (latest)"
  pinned at bottom; now "Newest ↑" pinned at top, surfaces only after
  the user has scrolled into history. Same UX as Twitter / HN's
  "new posts ↑".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@luokerenx4 luokerenx4 merged commit a132b8c into master May 10, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant