genderphasing

fatui

fatui is an immediate-mode terminal ui library that aims to be flexible and cell-perfect.

less vaguely:

how do i use it?

fatui is a library for the programming language rust, so first you need to learn that, and by the time you're done with that you'll know what to do with this.

this page isn't gonna go into detail because the details will change with each version! so instead of maintaining a readme for each version in the repo and a separate page saying the same things, just go look at the crate readme.

what if there's a bug?

…fair play, that's not version-specific at all. you can email me at fatui@genderphas.ing with the usual components of a bug report:

once i get a report, i'll dutifully follow the standard procedure for open-source maintainers:

  1. ignore you for three weeks as you send increasingly agitated follow-ups
  2. reply with something snippy that implies it's your fault without saying how you could actually fix the problem
  3. after enough badgering, begrudgingly admit i may be less than perfect and write a bugfix
  4. out of spite, sit on it for 3 more months before releasing it to crates.io

obviously this section is mostly a joke. if you make a sincere effort to explain the issue you're having, i'll work with you to fix it. all the better if you can give me concrete steps to reproduce it, e.g. a short, self-contained, compilable example. maybe it's your code that's wrong, but hey, if nothing else i can improve the documentation!

just bear in mind: this is a hobby project. i maintain fatui for free, and if you're invested enough to send a bug report, you have already gotten the better end of the deal. if you try to turn my hobby into a second job, no matter how badly you want me to.

also, make sure you include the 3 words from above, because i'm serious about the spamfilter.

what's up next?

mentally i'm categorizing all future work into two blocks, pre-1.0 and post-1.0. everything leading up to the 1.0 release – which should hopefully be by the end of 2025, but we'll see – is about establishing the core abstractions and writing complex enough examples to stretch the apis. everything after that is refinement, improvement, and expansion.

for example: pre-1.0, i'm going to write a bunch of traits to expose a few different kinds of functionality, and a handful of essential implementations for each. post-1.0, i'm going to add a lot more.

there's also the miscellaneous category of tech debt: previous bad api decisions (i know, already) or implementation details that need to be cleaned up. i think of this as being "between" pre- and post-1.0, but in practice i'll kinda just get to them as i get to them.

so with that in mind, in no particular order:

pre-1.0

tech debt

post-1.0

(let me stress again this is in no particular order)