Also moves rust toolchain to a nightly equivalent of stable 1.87, in
order to allow for existing rustfmt configs such as imports granularity
to be used.
* Render blog headers using a patched `ratatui-image` to export internal
`Picker` fields which we use to construct our own picker based on
guesses for what capabilities a terminal might have based on
`$TERM_PROGRAM` values
* Move truncate implementation into `content` module and have other
modules import it
* Add `terminal` module under `tui` for classifying different terminals
and storing information regarding them
* Update trait `Component::init` to supply a `TerminalInfo`, to help
components adapt themselves to terminal emulator capabilities
* Move rust toolchain back to stable, now version 1.87
* Increase rustfmt max width and chain width to 95
Finally implemented the actual portfolio design! This includes a tab
mechanism for various aspects of the portfolio and the complete content
for the about tab.
Also fixes the TUI not being correctly scaled due to crossterm using the
dimensions of the server console tty instead of the client pty by
defining a custom `Backend` for ratatui.
* Made constructed `App` instances use CLI args for `frame_rate` and
`tick_rate`
* Moved lazy constants from `LazyLock` to `lazy_static!`
* Slightly restructure SSH config initialization
* Also apply rustfmt formatting to some files
Makes controls usable by taking SSH keystroke data (encoded in the xterm
format) and converting them to crossterm `KeyCode`s / `KeyEvent`s and
sending them to the `Tui`.
Also adds support for suspension of the `Tui` over the SSH connection.
Some minor refactoring was also done.