Skip to content

feat: overhaul Telegram dashboard and Device Capabilities UI with exp…#1129

Merged
theovilardo merged 2 commits intomasterfrom
fix/telegram-dashboard-redesign
Feb 19, 2026
Merged

feat: overhaul Telegram dashboard and Device Capabilities UI with exp…#1129
theovilardo merged 2 commits intomasterfrom
fix/telegram-dashboard-redesign

Conversation

@theovilardo
Copy link
Copy Markdown
Owner

…ressive design

  • Telegram Dashboard:
    • Completely redesign the dashboard with a collapsible top bar and a staggered list entry animation.
    • Implement a bottom sheet for channel actions (Sync, Remove) to replace inline buttons.
    • Enhance channel items with rich metadata pills (song count, last sync time), smooth corner shapes, and sync status indicators.
    • Improve empty state with a centered, expressive layout and integrated "Add Channel" action.
  • Device Capabilities:
    • Modernize the UI using a card-based layout with gradient backgrounds and smooth corners.
    • Refactor device information into hierarchical hero tiles and stats for better readability.
    • Implement a segmented list for audio codecs, clearly highlighting hardware-accelerated components.
  • Streaming Providers:
    • Update StreamingProviderSheet with brand-specific icons for Telegram and Netease Cloud Music.
    • Add a placeholder icon and updated styling for the Google Drive provider.
  • Resources:
    • Add vector assets for Netease Cloud Music and Google Drive logos.

…ressive design

- **Telegram Dashboard**:
    - Completely redesign the dashboard with a collapsible top bar and a staggered list entry animation.
    - Implement a bottom sheet for channel actions (Sync, Remove) to replace inline buttons.
    - Enhance channel items with rich metadata pills (song count, last sync time), smooth corner shapes, and sync status indicators.
    - Improve empty state with a centered, expressive layout and integrated "Add Channel" action.
- **Device Capabilities**:
    - Modernize the UI using a card-based layout with gradient backgrounds and smooth corners.
    - Refactor device information into hierarchical hero tiles and stats for better readability.
    - Implement a segmented list for audio codecs, clearly highlighting hardware-accelerated components.
- **Streaming Providers**:
    - Update `StreamingProviderSheet` with brand-specific icons for Telegram and Netease Cloud Music.
    - Add a placeholder icon and updated styling for the Google Drive provider.
- **Resources**:
    - Add vector assets for Netease Cloud Music and Google Drive logos.
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ff4f465323

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +556 to +560
ChannelActionCard(
title = "Remove channel",
subtitle = "Stop syncing and remove cached songs",
icon = Icons.Rounded.Delete,
onClick = onDelete,
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Disable remove action while channel sync is in progress

The delete action stays enabled even when isSyncing is true, unlike the sync action. In that state, removing a channel can race with refreshChannel's completion path (which saves an updated channel entity), so a channel the user just removed can reappear after the sync finishes. This is a user-visible data consistency issue; the remove action should be gated while sync is active (or sync must be canceled before delete).

Useful? React with 👍 / 👎.

.clip(listShape),
verticalArrangement = Arrangement.spacedBy(4.dp)
) {
codecs.forEachIndexed { index, codec ->
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep codec rendering lazy to avoid eager composition

This switches codec rendering from lazy items(...) to forEachIndexed inside a Column, meaning every codec card is composed and measured at once as a single LazyColumn item. On devices with large codec lists, this removes viewport virtualization and can noticeably degrade initial render and scroll performance compared with the previous implementation.

Useful? React with 👍 / 👎.

@theovilardo theovilardo merged commit d2f2663 into master Feb 19, 2026
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