# Scratchpad
MVP: filter-by starred accounts
immediate implications:
- search-for-user (done)
- and filter-by-starred (done)
- star/unstar (done)
- show starred (done)
- implement RT/QT display
- timezone shift to local (done)
- refresh token on login (done)
maybe fix the alt-mode bug and make login easier
Then mint a 0.1 and organize this TODO list, add some doc on how to clean-up what's not cleaned up
Cleanup TODOs and CRs and warnings
# Packaging
Options:
- Package an entire sixel capable terminal emulator with (https://github.com/contour-terminal/contour)
- Use some kind of electron+xtermjs <-> rust backend setup
In either case, need to switch to an OAuth 2.0 flow, hopefully twitter supports.
https://stackoverflow.com/questions/46616873/https-on-localhost-for-oauth-for-a-desktop-application
https://developer.twitter.com/en/docs/authentication/oauth-1-0a/pin-based-oauth
https://dgu2000.medium.com/working-with-self-signed-certificates-in-chrome-walkthrough-edition-a238486e6858
# Issues
- It's tricky to implement handle_key_event correctly; returning true/false all the way up
- It's tricky to implement should_render semantics correctly
- There seems to be a lot of things needed to write when implementing Render + Input; much toil
# TODO
- view posting histogram for users when in feed view
- consider tui-rs
- figure out how to highlight only accounts w/ notifs on (or seed such a list)
- show threads as [n]
- consider moving to GUI already? or maybe see how far unicode gfx can go
- page up/page down tweets (alt, left-[ right-])
- index tweets? for vim style jump
- priority accounts (highlight, show condensed listing)
- adjust timestamps to local tz
- expand images/replies/QTs/related tweets
- show bars based on public_metrics
- live streaming updates
- lens on specific user's tweets
- lens on specific hash tag
- lens on search term
- maybe solve double-buffering to fix flashing on full re-render
- side pane with full tweet expansion (incl. multiline)
- for displaying tweets, prefix char (highlight for select, _^=reply, RT=retweet, QT=quote tweet)
- space to expand reply, RT, QT inline
- consider storing tweet ids as u64; at the very least, type alias the String
- remove "as usize" casts these are unsafe?
- test resize behavior
- name change tracking (previously_seen_by)
# Some Thoughts
- A twitter client that can have features built on top
- Features such as, author tagging (beyond abusing notifs), ticker+marketdata detection, rich annotation, etc.
- Somewhat opposed to, e.g. an extension that has features grafted on top
- A twitter client that is more performant and concise
- All tty/cli tools based on a "less is more" philosophy
- GUI tools for some reason require way more investment to get the same performance; ongoing maintenance higher as well
- Is that true? Perhaps I simply haven't yet encountered a lot of complexity that the TUI _will_ bring up eventually
- I think GUI _ought to_ dominate TUI in all aspects, even abstraction cost
- EXCEPT for remote streaming, where bandwidth needed for pixels >>> glyphs (even with diff/compression)
- ALSO EXCEPT for TUIs live inside a terminal ecosystem which might be compelling to some users
- Read more about the Go guy's TUI library and philosophy for a counterargument
- In TUI, w/o sixel or something similar, images really suffer, maybe better to show an AI-gen caption instead...
- ...and defer to "open"...honestly better to just lift to tauri
# More in the Future
- Interleave news from other sources, not just Twitter--steps towards a "bloomberg"ish