Profile sheet & themes, M3 variants, OLED, search, LaTeX, mobile UX #7
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "chat-enhancements"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Specs:
cross-client alias reads (Element, Extera, Commet, Sable, and MSC4440
structured biography).
fallback for existing implementations).
segments still get emoji + linkify.
Features:
accent, presence, and block/report/share row; replaces the centered
user dialog.
whole card (background, buttons, text, accents) uses a palette derived
from the user's chosen color.
active, yellow for idle / unavailable, hidden for offline) replacing
the "Currently active" text label.
displayname, about (256 chars), pronouns, color in one place.
sheet, banners, rich previews, autoplay media, LaTeX, translation,
and message pull direction (off / natural / all_rtl).
with eight curated dynamic scheme variants (tonal spot, vibrant,
expressive, fidelity, neutral, monochrome, rainbow, fruit salad),
each with a live preview swatch generated from the current seed.
ColorScheme through (Android 12+ via dynamic_color).
near-black containers to preserve M3 elevation hierarchy.
count; tap opens a Read-by sheet listing every reader.
userId localpart). Works on E2EE rooms where server search is empty.
with media (per-file and total size caps), as HTML / plain / JSON,
zipped + shared.
and a Custom endpoint with {{text}}/{{source}}/{{target}} templating
and JSON-pointer response path.
(2/3/4), drag-to-dismiss bottom sheet.
drag, velocity fling, and snap; opt-in via setting.
light/medium haptics, rubber-band cap at 120 px.
Fixes:
for custom emoji instead of dumping the raw mxc:// URL.
forcing the bubble to maxWidth.
and received (left), instead of left-aligning inside the 48 px tap
area.
trigger MaterialApp rebuild via ThemeController so changes apply
without a restart.
after the highlight expires.
url, info, and filename (only body updates).
(discord_emoji_shortcodes -> emoji_shortcodes, discordHeaderTimestamp
-> sectionHeaderTimestamp).
pubspec: added flutter_colorpicker, crop_your_image, proximity_sensor,
flutter_math_fork, flutter_staggered_grid_view.
Specs: - MSC4133 extended profile fields (m.about, m.pronouns, m.color) with cross-client alias reads (Element, Extera, Commet, Sable, and MSC4440 structured biography). - MSC4427 profile banner (m.banner_uri stable + chat.commet.profile_banner fallback for existing implementations). - MSC2191 inline LaTeX rendered in messages via flutter_math_fork; non-math segments still get emoji + linkify. Features: - Bottom-sheet user profile with banner, avatar, about, pronouns, color accent, presence, and block/report/share row; replaces the centered user dialog. - Profile color themes the entire sheet via ColorScheme.fromSeed, so the whole card (background, buttons, text, accents) uses a palette derived from the user's chosen color. - Status dot overlay on the profile-sheet avatar (green for online and active, yellow for idle / unavailable, hidden for offline) replacing the "Currently active" text label. - Settings > Profile at /rooms/settings/profile: edit avatar, banner, displayname, about (256 chars), pronouns, color in one place. - Settings > Features at /rooms/settings/features: toggles for profile sheet, banners, rich previews, autoplay media, LaTeX, translation, and message pull direction (off / natural / all_rtl). - Material 3 theme style picker: DropdownMenu in chat customizations with eight curated dynamic scheme variants (tonal spot, vibrant, expressive, fidelity, neutral, monochrome, rainbow, fruit salad), each with a live preview swatch generated from the current seed. - "Use system colors" toggle wires the device's wallpaper-derived ColorScheme through (Android 12+ via dynamic_color). - OLED dark mode: pure-black surface family in dark mode, stepped near-black containers to preserve M3 elevation hierarchy. - Color picker dialog (HSV + hex) via flutter_colorpicker. - Image cropper (1:1 avatar, 3:1 banner) via crop_your_image. - Read-receipts row: avatar stack on own last message with overflow count; tap opens a Read-by sheet listing every reader. - Inline pronouns chip next to sender name in the message header. - Local relevance-scored room search (name, topic, alias, heroes, userId localpart). Works on E2EE rooms where server search is empty. - Chat export: current view / entire room / last N events, optionally with media (per-file and total size caps), as HTML / plain / JSON, zipped + shared. - Message translation: LibreTranslate (self-hostable), Google, DeepL, and a Custom endpoint with {{text}}/{{source}}/{{target}} templating and JSON-pointer response path. - GIF picker: masonry layout, newest-first, configurable column count (2/3/4), drag-to-dismiss bottom sheet. - Mobile swipe navigation (OverlappingPanelsShell) with full-screen drag, velocity fling, and snap; opt-in via setting. - Per-message pull gestures: reply at 40 px, edit at 80 px (own text), light/medium haptics, rubber-band cap at 120 px. - App lock "lock on cover" via proximity sensor (350 ms debounce). - Back-button unread badge counter mode (chats vs messages). - Emoji picker recents sorted by frequency * 2 + recency bonus. Fixes: - Reactor list dialog now renders the actual image and shortcode label for custom emoji instead of dumping the raw mxc:// URL. - Reply preview width matches the bubble's natural width instead of forcing the bubble to maxWidth. - Read-receipt avatars hug the correct edge on own messages (right) and received (left), instead of left-aligning inside the 48 px tap area. - Live updates: theme variant, OLED, system-color, and color picks trigger MaterialApp rebuild via ThemeController so changes apply without a restart. - Context menus anchor at the press point in TwoColumnLayout. - MessagePullHandler is inert on search-jumped messages and re-enables after the highlight expires. - Image edits emit m.replace with m.new_content preserving msgtype, url, info, and filename (only body updates). - Strip Discord-style naming from identifiers, UI strings, and comments (discord_emoji_shortcodes -> emoji_shortcodes, discordHeaderTimestamp -> sectionHeaderTimestamp). pubspec: added flutter_colorpicker, crop_your_image, proximity_sensor, flutter_math_fork, flutter_staggered_grid_view.