WIP: feat: Graphical interface #19

Closed
kir68k wants to merge 6 commits from graphical into stream
kir68k commented 2026-01-04 01:16:16 +01:00 (Migrated from github.com)

adding all of lucide's icons might've been a mistake considering how bad gh's ui is ._.

I finally got around to moving the whole program to a GUI.
At first I tried using iced, but the whole elm thing didn't click with me, and I couldn't find anything besides egui that wasn't gonna need writing everything inside macros or a dsl. (then I gave up and forgot until mid december)

I found gpui recently and really liked its way of doing things, including the entity system & reactivity, and styling elements with tailwind syntax. The component library also provided exactly what I was looking for, i.e. easy window dialogs and client-side decorations.

This PR does several things which I wanted to naturally implement while adding the UI.

Progress tracker:

  • Usable UI (finally)
  • Persistent sessions
    • Session storage like in a normal client (sqlite backend)
    • OS secret storage support (for acc/db passwords)
  • Extended cross-signing support
    • SAS/Emoji verification method
    • QR verification method
  • Re-implement exporting (can utilize old src/utils code)
    • Room selection view in the dashboard (could utilize the room sidebar and give a visual hint)
    • Export preferences like which event types to save (global, per-room in the future), or whether to export concurrently or not.
  • Decide whether ALL icons should be in this repo (bad....), or find a way to keep them all locally but only include used ones here.
  • Evaluate or fix any TODOs/FIXMEs found in src/ui.
<sub>adding all of lucide's icons might've been a mistake considering how bad gh's ui is ._.</sub> I finally got around to moving the whole program to a GUI. At first I tried using iced, but the whole elm thing didn't click with me, and I couldn't find anything besides egui that wasn't gonna need writing everything inside macros or a dsl. (then I gave up and forgot until mid december) I found gpui recently and really liked its way of doing things, including the entity system & reactivity, and styling elements with tailwind syntax. The component library also provided exactly what I was looking for, i.e. easy window dialogs and client-side decorations. This PR does several things which I wanted to naturally implement *while* adding the UI. **Progress tracker**: - [x] Usable UI (finally) - [x] Persistent sessions - [x] Session storage like in a normal client (sqlite backend) - [x] OS secret storage support (for acc/db passwords) - [ ] Extended cross-signing support - [x] SAS/Emoji verification method - [ ] QR verification method - [ ] Re-implement exporting (can utilize old `src/utils` code) - [ ] Room selection view in the dashboard (could utilize the room sidebar and give a visual hint) - [ ] Export preferences like which event types to save (global, per-room in the future), or whether to export concurrently or not. - [x] Decide whether ALL icons should be in this repo (bad....), or find a way to keep them all locally but only include used ones here. - [ ] Evaluate or fix any TODOs/FIXMEs found in `src/ui`.
kir68k closed this pull request 2026-04-29 20:37:19 +02:00

Pull request closed

Sign in to join this conversation.
No description provided.