freezmo/components/chat
Martin Dvorak 705808d45a Pickers: anchor the desktop dropdown to its chip, never clipped
"The model selection in teach it back is kinda broken at least on desktop":
the desktop panels were position:absolute children of whatever container held
their chip. In chat that is the composer at the bottom of the column, which
works, but Teach it back keeps its chips inside a scrolling form card — so the
panel opened upward out of the card and its top rows (including the selected
model) were cut off. The probe measured top: -66px and no way to reach the
first rows by scrolling the list.

- New components/chat/PickerPopover.tsx: the desktop surface for both pickers,
  portalled to <body> and position:fixed, anchored to the opening chip
  ([data-picker-trigger][aria-expanded="true"]), opening on the side with room
  and capped to the viewport so the panel scrolls as a whole with its heading
  and note attached. It closes on an outside press, Escape, resize or a page
  scroll — but not on scrolling its own list.
- ContextPicker and ModelPicker use it on desktop; the phone sheets and their
  inner list caps are unchanged (the list max-height became a parameter: the
  sheet caps it, the desktop panel scrolls instead).
- teach-test pins it: the panel's rect is fully inside the viewport,
  elementFromPoint over it lands on the panel, it is not a descendant of the
  scrolling card, and picking a model updates the chip + freezmo.chat.model.v1
  (46 checks). Chat and the phone sheets re-verified unchanged (110 + 128).

Version 0.8.3, SW v105.
2026-10-18 21:55:47 +00:00
..
AskButton.tsx Chat mode, phase 1: grounded streaming chat over your notes 2026-10-11 18:32:11 +00:00
ChatScreen.tsx Teach it back: the AI becomes the curious student 2026-10-16 23:05:24 +00:00
Composer.tsx Teach it back: the AI becomes the curious student 2026-10-16 23:05:24 +00:00
ContextPicker.tsx Pickers: anchor the desktop dropdown to its chip, never clipped 2026-10-18 21:55:47 +00:00
CopyIconButton.tsx Chat chrome: one gutter, one radius scale, one even glass recipe 2026-10-14 21:32:50 +00:00
HistoryPanel.tsx Teach it back: the AI becomes the curious student 2026-10-16 23:05:24 +00:00
Markdown.tsx Chat mode, phase 1: grounded streaming chat over your notes 2026-10-11 18:32:11 +00:00
MathSpan.tsx Chat mode, phase 1: grounded streaming chat over your notes 2026-10-11 18:32:11 +00:00
MessageRow.tsx Chat chrome: one gutter, one radius scale, one even glass recipe 2026-10-14 21:32:50 +00:00
ModelPicker.tsx Pickers: anchor the desktop dropdown to its chip, never clipped 2026-10-18 21:55:47 +00:00
PickerPopover.tsx Pickers: anchor the desktop dropdown to its chip, never clipped 2026-10-18 21:55:47 +00:00
SidebarChatSection.tsx Chat layout: history in the main sidebar, consistent header, cleaner icon 2026-10-11 20:11:11 +00:00
ThinkingRow.tsx Chat mode, phase 1: grounded streaming chat over your notes 2026-10-11 18:32:11 +00:00