Skip to content

[Feature] Implement missing UI components #38

Description

@b-re-w

Settings screen lacks multi-theme options

Implement Settings screen with multi-theme support
The settings screen (SettingsScreen.kt) only declares a package and offers no UI, leaving theme selection or user preferences unimplemented.

  1. Flesh out app/src/commonMain/kotlin/gemstone/framework/ui/compose/screen/settings/SettingsScreen.kt to display preferences such as theme selection and user profile.
  2. Expand app/src/commonMain/kotlin/gemstone/framework/ui/viewmodel/SettingsViewModel.kt to store and expose theme mode and other settings, persisting them if needed.
  3. Update app/src/commonMain/kotlin/gemstone/framework/ui/compose/theme/Color.kt to allow runtime switching among color sets (e.g., Black, Blue, Orange) based on the selected theme.
  4. Add navigation entry points so the settings screen is reachable from the sidebar or main chat UI.

Search functionality missing

Add chat search capability
The sidebar’s search button has no action, and no view model or UI exists to handle searching chat history or content.

  1. Create a SearchViewModel in app/src/commonMain/kotlin/gemstone/framework/ui/viewmodel/ to handle search queries and results.
  2. Implement a search overlay or screen (e.g., SearchScreen.kt) that filters existing chats, hooking it to the search icon in app/src/commonMain/kotlin/gemstone/framework/ui/compose/screen/chat/SideScreen.kt.
  3. Wire search results to open the selected conversation.

Notification system unimplemented

Implement notifications UI and logic
The notification icon in the sidebar is inert, and no infrastructure exists for displaying alerts or updates.

  1. Add a NotificationViewModel under app/src/commonMain/kotlin/gemstone/framework/ui/viewmodel/ to manage notification data.
  2. Create a composable (e.g., NotificationsScreen.kt) to list notifications, triggered by the bell icon in SideScreen.kt.
  3. Integrate platform-specific notification handling for desktop/mobile targets where feasible.

Spotlight-like global search absent

Create Spotlight-style global search overlay
The app lacks a global command/search overlay (similar to macOS Spotlight) accessible via keyboard shortcut or menu.

  1. Implement a composable overlay (e.g., SpotlightSearchOverlay.kt) under app/src/commonMain/kotlin/gemstone/framework/ui/compose/ that appears over any screen.
  2. Provide keyboard shortcut support (e.g., Cmd/Ctrl + Space) using platform-specific hooks.
  3. Reuse the SearchViewModel to populate results and open selected items.

Conversation text cannot be drag-selected

Enable drag selection for chat messages
Message text within ChatScreen.kt is rendered without any selection container, preventing users from selecting or copying content.

  1. Wrap message content in SelectionContainer or use SelectableText within app/src/commonMain/kotlin/gemstone/framework/ui/compose/screen/chat/ChatScreen.kt.
  2. Populate app/src/commonMain/kotlin/gemstone/framework/ui/compose/screen/chat/component/MessageItem.kt with a dedicated message composable that supports selection.
  3. Ensure markdown-rendered text remains selectable.

Markdown rendering is minimal

Introduce comprehensive Markdown rendering
Markdown parsing in ChatScreen.kt covers only simple bold/italic/code patterns and lacks full spec compliance.

  1. Replace regex-based parsing in app/src/commonMain/kotlin/gemstone/framework/ui/compose/screen/chat/ChatScreen.kt with a proper Markdown renderer (e.g., a Compose-compatible markdown library).
  2. Support headings, lists, links, and code blocks, ensuring styling matches the app theme.
  3. Refactor message rendering to delegate markdown content to the new renderer, maintaining streaming behavior if required.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions