Files
ermine/NOTES.md
2026-03-20 02:43:24 -04:00

4.1 KiB

2026-02-22

2200

Requirements:

  • Need a better Revolt client that's cross-platform native
    • Ideally macOS / iPadOS / iOS / Windows / Linux / Android / Web
  • Need the UI / UX to be top-notch and feel good in the hands, otherwise people won't use it
    • On top of this, it should also be fun and cute
  • Accessibility should be considered, but I do not have experience in this area, will need to do research
  • Currently Revolt has a (now deprecated) web app and a native app that doesn't support custom endpoints
    • We're forking from Revolt, so don't need to worry about breaking changes on their end
    • Sticking with the name ermine cause I like it (stylized ermine all lowercase to be cool)
  • Decided to try using Slint + Rust for a more bare-bones low-level approach
  • Licensing
    • Slint requires GPLv3 without a paid license - fine with this
    • Revolt is also AGPLv3
    • Code I write will be MIT as I don't want to hinder people re-using anything for any reason
  • Have already spent a number of hours 100% vibe coding a prototype
    • Used Flutter + Dart (was considered for this iteration)
    • It worked okay, had a UX close to what I want as a starting point, so we know what we want is possible, we just need to build it
    • There are just too many bugs and there's no way to trust the code written underneath
    • Feel awful and ashamed of vibe coding, giving away my agency and creativity to an LLM and to big tech, rotting away my ability to create
  • This is a project to push myself outside of my comfort zone towards something I've not done before, to grow beyond the limitations I've placed upon myself
    • Having seen what other people've worked on, over months, and the kind of dedication they have towards software quality, I know this is something that will take time to craft instead of something I can bang out in a few hyperfixated days

Resources:

Notes:

  • Slint reminds me a lot of when I tried messing with SwiftUI
  • Trying to make things look pretty early on is a fools errand
    • Need to remember to make things work, then make them look nice
  • Have not used Rust before so this should be interesting
  • HMC Revolt seems to be on version 0.8.2 while Stoat is now on 0.11.5
    • Have an OpenAPI spec for the latest stoat, but no historical ones
    • Need to figure out what differences exist, if any, and how to support different server versions cleanly
  • Seems like there's an /api endpoint with information about the server (if it's a revolt server)
    • App version
    • autumn endpoint (file server)
    • january endpoint (media server)
    • voso ?
    • livekit ?
      • livekit seems to be what's used for voice / video support
      • Currently not supported by HMC Revolt instance
    • main websocket
  • Trying to use progenitor + openAPI spec to generate rust code, not going that well, and Gwen said it may be better to write these by hand
  • Read through documentation mostly, taking it slow and making sure I understand how things are working, being patient with myself

2026-03-20

0220

Figured the API endpoint (/api) would be a good place to start. Now have successful deserialization.

Sidebars are important, so I added two, one for channel list and another for server list. I'm still trying to figure out the best way to integrate different instances seamlessly.