This is a fairly large rewrite which unifies our threads, timelines and
profiles. Now all timelines have a MultiSubscriber, and can be added
and removed to columns just like Threads and Profiles.
Signed-off-by: William Casarin <jb55@jb55.com>
This reduces the number of things we have to update in our token parser
and serializer. For payloads, we we have to handle the payload cases
different, but we now have a structure that can deal with that
efficiently.
Signed-off-by: William Casarin <jb55@jb55.com>
In an attempt to make our deck serializer more localized,
comprehensible, and less error-prone, we introduce a new parser
combinator based around string tokens.
This replaces the Selection-based intermediary types so that we have a
more direct serialization style.
This function creates filters for the base our first algo in Damus:
Called "last N note per pubkey". I don't have a better name for it.
This function generates a query in the form:
[
{"authors": ["author_a"], "limit": 1, "kinds": [1]
, {"authors": ["author_b"], "limit": 1, "kinds": [1]
, {"authors": ["author_c"], "limit": 1, "kinds": [1]
, {"authors": ["author_c"], "limit": 1, "kinds": [1]
...
]
Due to an unfortunate restriction currently in nostrdb and strfry, we
can only do about 16 to 20 of these at any given time. I have made
this limit configurable in strfry[1]. I just need to do the same in
nostrdb now.
[1] https://github.com/hoytech/strfry/pull/133
Changelog-Added: Add last_n_per_pubkey_from_tags algo function
This reduces code duplication, and makes the border a bit cleaner
so that it blends into the panel color
Signed-off-by: William Casarin <jb55@jb55.com>
This actually has no behavioral change, but is more
logically correct if we ever end up updating these functions
Signed-off-by: William Casarin <jb55@jb55.com>
Thanks again to kernel and ken, as well as some new contributors:
kieran, daniel saxton for our alpha 2 release!
Added
=====
- Clicking a mention now opens profile page (William Casarin)
- Note previews when hovering reply descriptions (William Casarin)
- Media uploads (kernelkind)
- Profile editing (kernelkind)
- Add hashtags to posts (Daniel Saxton)
- Enhanced command-line interface for user interactions (Ken Sedgwick)
- Various Android updates and compatibility improvements (Ken Sedgwick, William Casarin)
- Debug features for user relay-list and mute list synchronization (Ken Sedgwick)
Changed
=======
- Add confirmation when deleting columns (kernelkind)
- Enhance Android build and performance (Ken Sedgwick)
- Image cache handling using sha256 hash (kieran)
- Introduction of decks_cache and improvements (kernelkind)
- Migrated to egui v0.29.1 (William Casarin)
- Only show column delete button when not navigating (William Casarin)
- Show profile pictures in column headers (William Casarin)
- Show usernames in user columns (William Casarin)
- Switch to only notes & replies on some tabs (William Casarin)
- Tombstone muted notes (Ken)
- Pointer interactions enhancements in UI (William Casarin)
- Persistent theme setup across sessions (kernelkind)
- Increased ping intervals for network performance (William Casarin)
- Nostrdb update for async support (Ken Sedgwick)
Fixed
=====
- Fix GIT_COMMIT_HASH compilation issue (William Casarin)
- Fix avatar alignment in profile previews (William Casarin)
- Fix broken quote repost hitbox (William Casarin)
- Fix crash when navigating in debug mode (William Casarin)
- Fix long delays when reconnecting (William Casarin)
- Fix repost button size (William Casarin)
- Fixed since kind filters (kernelkind)
- Clippy warnings resolved (Dimitris Apostolou)
Refactoring & Improvements
==========================
- Numerous internal structural improvements and modularization (William Casarin, Ken Sedgwick)
Signed-off-by: William Casarin <jb55@jb55.com>
People are spamming hashtags with AI CP. Let's disable this until we
at least have image blurring.
Alternatively we could only show the link for people you don't follow.
Signed-off-by: William Casarin <jb55@jb55.com>
kernelkind (8):
upload media button
get file binary
import base64
notedeck_columns: use sha2 & base64
use rfd for desktop file selection
add utils for uploading media
draft fields for media upload feat
ui: user can upload images