50 lines
2.4 KiB
Markdown
50 lines
2.4 KiB
Markdown
# za-tui widgets/chat_view.py — transcript rows, grouping, scroll behavior
|
|
|
|
## Metadata
|
|
|
|
| Field | Value |
|
|
|---|---|
|
|
| Institute | Molodetz Institute — Research & Retrieval Division |
|
|
| Subject | tui-framework-design |
|
|
| Document type | Source Dossier |
|
|
| Tier | 1 |
|
|
| Source title | za-tui widgets/chat_view.py — chat view widget (Textual Zalo client) |
|
|
| Source URL | https://raw.githubusercontent.com/buihongduc132/za-tui/main/src/za_tui/widgets/chat_view.py |
|
|
| Source publisher / author | buihongduc132 (za-tui project) |
|
|
| Source type | repository |
|
|
| Source date (published) | Unknown — not stated |
|
|
| Date researched | 2026-10-11 |
|
|
| Researched by | tai (agent), model: Muse Spark, on behalf of retoor |
|
|
| Research method | direct page fetch |
|
|
| Confidence | Medium |
|
|
| Status | Active |
|
|
|
|
## Summary
|
|
|
|
Transcript rendering as plain rows with sender grouping on a 90-minute gap, per-message `[sending]`/`[failed]` status suffixes, a selection arrow, a `New messages (n)` indicator, scroll-to-bottom only when already at the bottom, and older-message loading at scroll-top. The fullest transcript-behavior precedent inspected.
|
|
|
|
## Key findings
|
|
|
|
- Messages render as plain rows with sender grouping: consecutive messages from one sender group until a 90-minute gap.
|
|
- Each message can carry a `[sending]` or `[failed]` status suffix; a selection arrow marks the selected row; a `New messages (n)` indicator counts unseen messages.
|
|
- New arrivals auto-scroll to the bottom only when the view is already at the bottom; scrolling to the top loads older messages.
|
|
|
|
## Pros / strengths
|
|
|
|
- Pin-to-bottom-only-if-at-bottom is the correct scroll contract for a live transcript and is stated as behavior, not inferred.
|
|
- Sender grouping plus per-message status plus unread indicator covers the whole transcript feature set in one widget.
|
|
|
|
## Cons / limitations / caveats
|
|
|
|
- Plain rows only: no markdown, streaming-token, or tool-call rendering in the inspected evidence, so those tai needs remain inferred patterns.
|
|
|
|
## Relevance to tai
|
|
|
|
- Supplies the transcript contract (grouped rows, per-message status, conditional pin-to-bottom, history loading) adopted in the messaging-layout conclusion; its scroll contract is also the inferred carrier for tai's streaming rendering.
|
|
|
|
## Changelog
|
|
|
|
| Date | Change |
|
|
|---|---|
|
|
| 2026-10-11 | Initial dossier created from 2026-10-11 research-pass evidence (body opened via web_fetch by researching agent). |
|