Files
Ely-GPUI-Components/tasks/ch21-30.md
T
ZacharyZhang-NY f4cf1ef3d7 T24b: Agent, progress
- AgentStepList: an agent's steps down a data_display::Timeline rail,
  marked by chat::step_mark, with detail and time
- AgentPlan: items waiting, at work or done, with a count; done items go
  quiet and struck through
- chat::step_mark reads motion::changes: a check or cross that arrives pops
  in, still on first paint
- AgentStatus: a pill for planning, working, waiting, done or failed
- AgentProgress: the step at work, done of total, the time so far and a
  bar split by step; progress past its total fails loud
- SubAgentTree is lists::Tree with each agent's state as its note
- gallery: a plan the button advances, steps, statuses and a tree
2026-09-26 08:25:51 -04:00

350 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Chapters 21–30
## T21a Documents · Editing — `src/documents`
- [x] RichTextEditor
- [x] MarkdownEditor — visual, source, split
- [x] BlockEditor
- [x] Block types — paragraph, heading, list, todo, quote, code, divider, table, image, video, embed, math, callout, toggle, columns, synced; video and embed open as cards the app plays or shows
- [x] BlockHandle → the block editor's handle, a `menus::OverflowMenu` that drags its block
- [x] SlashMenu → `/` in `BlockEditor`
- [x] FloatingFormatToolbar → `overlays::FloatingToolbar`
- [x] FixedFormatToolbar
- [x] LinkEditor
- [x] MentionMenu → `@` in `RichTextEditor` and `BlockEditor`; `forms::MentionInput` in a field
- [x] EmojiAutocomplete → a colon and two letters in `RichTextEditor` and `BlockEditor`
- [x] TableEditor → the block editor's table: rows and columns added and removed, cells merged across
- [x] ImageEditorBlock → the block editor's picture: resized by its edges, aligned, captioned
- [x] MathEditor / LatexBlock → the block editor's math block over `typography::Latex`
- [x] MermaidBlock / DiagramBlock — host renders the SVG → `BlockEditor::diagrams`
- [x] CodeBlockEditor → the block editor's code block
- [x] TodoItem / Checklist
- [x] PlaceholderText → each kind's hint in `BlockEditor`
- [x] WordCount / CharacterCount → `WordCount`, with `limit` for characters
- [x] ReadingTime
## T21b Documents · Reading
- [x] MarkdownRenderer
- [x] DocumentViewer — host pages
- [x] PDFViewer — host pages; thumbnails, search, zoom, notes → `documents::DocumentViewer` with `thumbnails`, `find` (an `editor::FindWidget`) and `notes`
- [x] EpubReader — host chapters
- [x] OfficePreview — host pages → `documents::DocumentViewer`
- [x] PageThumbnailList
- [x] TableOfContents → `navigation::TableOfContents`; `MarkdownRenderer::sections` and `outline` feed it
- [x] DocumentOutline → `navigation::TableOfContents`
- [x] Footnote
- [x] Glossary / TooltipTerm
- [x] ReadingProgress
- [x] FocusMode / ZenMode → `documents::ZenMode`
- [x] PrintPreview — host pages
## T21c Documents · Knowledge
- [x] PageTree → `lists::Tree`, a page's emoji leading its label
- [x] Backlinks
- [x] GraphView → `charts::NetworkGraph`
- [x] PageCover / PageIcon
- [x] PageProperties → `data_display::PropertyGrid`
- [x] DatabaseView — table, board, gallery, calendar, timeline → lands with Project (T31): its board is the KanbanBoard, its calendar the CalendarMonthView (T30)
- [x] TemplatePicker
- [x] TrashBin
- [x] VersionHistory
- [x] PageHistoryDiff
- [x] Favorites / Pinned → `documents::Favorites`
## T22 Collaboration — `src/collab`
- [x] PresenceAvatars
- [x] RemoteCursor → over a `forms::TextInput`, placed where its offset sits as the field paints
- [x] RemoteSelection → over a `forms::TextInput`, from `TextInput::bounds_for_range`
- [x] CommentThread
- [x] CommentBubble / CommentMarker → `collab::CommentMarker`, its thread in an `overlays::Popover`
- [x] CommentSidebar
- [x] Reply / ReactionPicker
- [x] Reactions
- [x] Annotation / Highlight → `collab::AnnotatedText`; a plain mark is `typography::Highlight`
- [x] SuggestionMode → edits become suggestions through `collab::suggested`
- [x] TrackChanges
- [x] ShareDialog → with `collab::LinkAccess` for who the link lets in
- [x] PermissionSelect
- [x] InviteInput → a `forms::TagInput` that checks each address
- [x] AccessList
- [x] ActivityLog → `data_display::ActivityFeed`
- [x] FollowMode
- [x] LiveIndicator
## T23a AI Chat · Messages — `src/chat`
- [x] ChatContainer
- [x] MessageList — virtualized, stick to bottom, new-message hint
- [x] MessageBubble — user, assistant, system, error
- [x] MessageAvatar
- [x] MessageHeader
- [x] MessageFooter
- [x] StreamingText
- [x] StreamingMarkdown
- [x] StreamingCursor
- [x] CodeBlock — language, copy, download, run, fold, apply
- [x] MathBlock → `typography::Latex`
- [x] TableBlock → `documents::MarkdownRenderer`
- [x] MermaidRenderer → the host draws the SVG; `chat::ImageMessage` shows it
- [x] ImageMessage / ImageGrid
- [x] FileMessage
- [x] AudioMessage
- [x] VideoMessage — host frames
- [x] LinkPreviewCard
- [x] QuoteReply
- [x] MessageActions
- [x] MessageEditor
- [x] BranchNavigator
- [x] RegenerateButton → `chat::regenerate_button`
- [x] StopGeneratingButton → `chat::stop_button`
- [x] ContinueButton → `chat::continue_button`
- [x] ErrorMessage / RetryMessage → `chat::ErrorMessage`, over `feedback::Alert`
- [x] RateLimitNotice
- [x] FeedbackForm
- [x] ScrollToBottomButton
- [x] DateSeparator
- [x] ThinkingBlock / ReasoningPanel → `chat::ThinkingBlock`
- [x] ThinkingIndicator
- [x] ThinkingDuration
## T23b AI Chat · Citations
- [x] CitationBadge / InlineCitation → `chat::CitationBadge`, set after the words it cites
- [x] SourceCard
- [x] SourceList / SourcesPanel → `chat::SourceList`
- [x] SearchProgress
- [x] WebResultCard
- [x] DocumentChunkPreview
## T23c AI Chat · Input
- [x] PromptInput / Composer → `chat::PromptInput`
- [x] AttachmentButton
- [x] AttachmentChip / AttachmentPreview → `chat::AttachmentChip`, a picture's thumbnail or a file's icon
- [x] PasteImagePreview → a pasted picture as an `AttachmentChip`
- [x] DragDropOverlay
- [x] VoiceInputButton
- [x] VoiceWaveform / RecordingIndicator → `chat::VoiceWaveform`, a red dot and the time with the bars
- [x] SlashCommandMenu → `/` at the start of `chat::PromptInput`, over `forms::Suggestions`
- [x] PromptTemplateMenu → `menus::DropdownMenu` of saved prompts
- [x] ContextMentionMenu → `@` in `chat::PromptInput`
- [x] ContextChips
- [x] ModelSelector → `forms::Select`, a note on each model
- [x] ModeSelector → `buttons::SegmentedControl`
- [x] ToolToggleMenu → `menus::DropdownMenu` with check rows
- [x] TemperatureSlider / ParameterPanel → `chat::ParameterPanel`
- [x] SystemPromptEditor
- [x] TokenCounter
- [x] ContextWindowMeter → `data_display::UsageBar`
- [x] CostEstimator
- [x] SendButton
- [x] InputHint
## T23d AI Chat · Conversations
- [x] ConversationList
- [x] ConversationItem
- [x] ConversationSearch → `forms::SearchInput` over `chat::ConversationList::query`
- [x] NewChatButton → `chat::new_chat_button`, a `buttons::Button`
- [x] FolderList / ProjectList → `chat::ProjectList`
- [x] ProjectKnowledgePanel
- [x] SharedConversationView
- [x] ConversationExport
## T23e AI Chat · Welcome
- [x] WelcomeScreen / Greeting → `chat::WelcomeScreen`, a greeting for the hour
- [x] SuggestionChips / StarterPrompts → `chat::SuggestionChips`
- [x] PromptLibrary → `documents::TemplatePicker` over saved prompts
- [x] FollowUpSuggestions
- [x] CapabilityCards
## T24a Agent · Tool calls — `src/agent`
- [x] ToolCallCard
- [x] ToolCallGroup
- [x] ToolApprovalDialog
- [x] PermissionPrompt
## T24b Agent · Progress
- [x] AgentStepList / TaskTimeline → `agent::AgentStepList`, over `data_display::Timeline`
- [x] AgentPlan / TodoList → `agent::AgentPlan`, marks that pop in as items finish
- [x] AgentStatus
- [x] AgentProgress
- [x] SubAgentTree → `lists::Tree`, a node per agent with its state as note and tone
## T24c Agent · Changes
- [ ] FileChangeCard
- [ ] MultiFileDiff Review
- [ ] CommandExecutionCard
## T24d Agent · Previews
- [ ] BrowserPreview / ScreenshotStream — host frames
- [ ] ComputerUseViewer — host frames
- [ ] ArtifactPanel
- [ ] ArtifactVersionSwitcher
- [ ] LivePreview — host content
## T24e Agent · Environment
- [ ] SandboxStatus
- [ ] MCPServerList / ConnectorList
- [ ] ToolRegistry Panel
- [ ] MemoryPanel
- [ ] CheckpointList / Rewind
## T24f Agent · Control and cost
- [ ] InterruptButton
- [ ] HumanInputRequest
- [ ] TokenUsageChart
- [ ] CostBreakdown
- [ ] TraceViewer
- [ ] EvalResultTable
## T25 Generative — `src/generative`
- [ ] ImageGenerationPanel
- [ ] GenerationQueue
- [ ] GenerationGrid
- [ ] VariationPicker
- [ ] PromptEnhancer
- [ ] NegativePromptInput
- [ ] StylePresetPicker
- [ ] SeedInput
- [ ] AspectRatioPicker
- [ ] InpaintCanvas
- [ ] MaskBrush
- [ ] ImageCompare → `data_display::BeforeAfter`
- [ ] AudioGenerationPlayer
- [ ] VideoGenerationTimeline
- [ ] TTSVoicePicker
- [ ] ModelCard
- [ ] ModelDownloadManager
- [ ] ModelStatus
- [ ] HardwareMonitor
- [ ] FineTuneJobCard
- [ ] DatasetViewer
- [ ] EmbeddingVisualizer — 2D, 3D projection
- [ ] PromptPlayground
- [ ] PromptDiff / PromptVersionHistory
- [ ] ABCompareView
## T26 Media — `src/media`
- [ ] ImageViewer — zoom, pan, rotate, fit
- [ ] ImageCropper — also T06e ImageUpload
- [ ] ImageAnnotator
- [ ] ImageThumbnail
- [ ] Lightbox / Gallery Viewer → `overlays::Lightbox`
- [ ] VideoPlayer — host frames
- [ ] VideoTimeline / Scrubber
- [ ] VideoThumbnailStrip
- [ ] AudioPlayer — host playback
- [ ] AudioWaveform
- [ ] AudioSpectrum / Visualizer
- [ ] VolumeControl
- [ ] PlaybackSpeedControl
- [ ] MediaControls
- [ ] Playlist
- [ ] SubtitleEditor
- [ ] ScreenRecorderControls
- [ ] CameraPreview — host frames
- [ ] MicLevelMeter
- [ ] DeviceSelector
- [ ] 3DModelViewer — host frames, orbit input
## T27 Files — `src/files`
- [ ] FileExplorer — list, icons, columns
- [ ] FileGrid
- [ ] FileList
- [ ] FileItem
- [ ] FileIcon
- [ ] FilePreview / QuickLook
- [ ] FileBreadcrumb / PathBar → `navigation::Breadcrumb`
- [ ] FolderTree → `lists::FileTree`
- [ ] FileContextMenu → `menus::ContextMenu`
- [ ] RenameInline → `forms::InlineEdit`
- [ ] DragDropFiles → `forms::DropZone`
- [ ] FileOperationProgress
- [ ] TransferQueue
- [ ] DownloadManager
- [ ] StorageUsage → `data_display::UsageBar`
- [ ] RecentFiles
- [ ] Favorites / Bookmarks → `documents::Favorites`
- [ ] FileSearch
- [ ] DuplicateFinder
- [ ] ArchiveViewer — host entries
- [ ] HexViewer → `debug::HexViewer`
## T28 Messaging — `src/messaging`
- [ ] ChannelList / ChatList
- [ ] ChannelItem
- [ ] DirectMessageItem
- [ ] MessageThread
- [ ] ThreadPanel
- [ ] ChatMessage
- [ ] UnreadDivider
- [ ] MessageReactions → `collab::Reactions`
- [ ] ReadReceipt
- [ ] TypingIndicator → `motion::TypingIndicator`
- [ ] MemberList
- [ ] UserProfileCard
- [ ] OnlineStatus
- [ ] StatusSetter
- [ ] VoiceCallBar
- [ ] VideoCallGrid — host frames
- [ ] ScreenShareView — host frames
- [ ] CallControls
- [ ] ParticipantTile
- [ ] IncomingCallDialog
- [ ] StickerPicker
- [ ] GifPicker — host images
- [ ] PinnedMessages
- [ ] ChannelHeader
- [ ] HuddleIndicator
## T29 Mail — `src/mail`
- [ ] MailboxList / FolderList
- [ ] MailList
- [ ] MailItem
- [ ] MailReader
- [ ] MailComposer
- [ ] RecipientInput
- [ ] MailThreadView
- [ ] QuotedText
- [ ] SignatureEditor
- [ ] LabelPicker
- [ ] SnoozePicker
- [ ] ScheduleSend
- [ ] InboxZeroState
## T30 Calendar — `src/calendar`
- [ ] CalendarMonthView
- [ ] CalendarWeekView
- [ ] CalendarDayView
- [ ] AgendaView
- [ ] YearView
- [ ] MiniCalendar → `forms::Calendar`
- [ ] EventCard / EventChip
- [ ] EventEditor
- [ ] EventPopover
- [ ] TimeGrid — drag to create, resize
- [ ] AllDayRow
- [ ] CurrentTimeIndicator
- [ ] RecurrenceEditor
- [ ] AvailabilityPicker
- [ ] TimezoneOverlay
- [ ] ReminderPicker
- [ ] AttendeeList