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
From guythatsits:
> Not sure if this is helpful but the reason it isn't installing in any
of the debian based is the libc6 dependency(requires 2.39, these are
both on 2.35). Looks like popos alpha apparently includes the updated
library. Had the same issue on just a barebone debian system as well.
By default, GitHub Actions uses the latest Ubuntu runner (e.g.,
ubuntu-latest), which has glibc 2.39+. Instead, we can explicitly use
ubuntu-20.04, which has glibc 2.31.
Reported-by: guythatsits
Fixes: https://github.com/damus-io/notedeck/issues/706
Changelog-Fixed: Fixed issue running binary on older debian distros
Signed-off-by: William Casarin <jb55@jb55.com>
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
RootNoteId is simply a newtype for specifying an ID that is a root note
id (in the sense of a nip10 note)
This makes it more clear at the type level when referring to note ids
Signed-off-by: William Casarin <jb55@jb55.com>
Sometimes the commandline is nice for loading individual threads you
want to lookup (we don't have a UI for this yet). If you don't currently
choose a different data directory, then your decks cache gets nuked when
doing this.
Change the logic so that deck persistence is disabled when using CLI
columns. This stops notedeck from nuking your default decks.
Signed-off-by: William Casarin <jb55@jb55.com>
Daniel Saxton (5):
Add t tags for hashtags
Use HashSet, lowercase, and add emoji tests
Add test and format
Fix emoji hashtags
Handle punctuation better
Link: https://github.com/damus-io/notedeck/pull/592
This is an initial implementation of note multicast, which sends posted
notes to other notedecks on the same network.
This came about after I nerd sniped myself thinking about p2p nostr on
local networks[1]
You can test this exclusively without joining any other relays by
passing -r multicast on the command line.
[1] https://damus.io/note1j50pseqwma38g3aqrsnhvld0m0ysdgppw6fjnvvcj0haeulgswgq80lpca
Signed-off-by: William Casarin <jb55@jb55.com>
This allows ./preview to be a notedeck app runner. I am currently
using it for the ProfilePic app (which will because notedeck_viz)
Signed-off-by: William Casarin <jb55@jb55.com>
This reduces the number of choices the user needs to make. Some of these
filters were redundant anyways. This also saves memory.
Universe: Notes
Notificaitons: Notes & Replies
Everything else: Notes, Notes & Replies
Changelog-Changed: Simplified tab selections on some columns
Fixes: https://github.com/damus-io/notedeck/issues/517
This is the most intuitive, and damus iOS does the same thing. You
have to follow yourself, sorry. Otherwise you won't see your posts
when you post which is confusing.
Fixes: https://github.com/damus-io/notedeck/issues/509
This further deliminates our column titles to those that are simple,
and to those that require additional information from the database.
This allows us to avoid creating many transactions pointlessly if we
don't need to.
Changelog-Changed: Show usernames in user columns
before profile queries were not working at the database level,
because there was no note_pubkey or note_pubkey_kind index. Now there
is! So profiles should be much faster to query now, and will actually
return results.
There still appears to be an issue with the profile NotesHolder which
is preventing it from updating, via the logic in poll_notes_into_view.
The original Timeline version of this function works fine, but it looks
like the NotesHolder one is broken.
Going to work on refactoring the notes holder next to fix.
Signed-off-by: William Casarin <jb55@jb55.com>
This was using an ancient version of rustls, which in turn included
an old version of ring, which was the real reason of the windows
compile issues (i think)
Cc: kernelkind <kernelkind@gmail.com>
Signed-off-by: William Casarin <jb55@jb55.com>
This adds windows amd64 support via a dynamic build step that configures
the inno installer for the correct architecture
Changelog-Added: Add amd64 support for Windows build
Closes: https://github.com/damus-io/notedeck/issues/506
We added a startup panic to prevent users from running as debug mode,
our tests are also hitting this. Add a new --testrunner flag which
skips this check. We want this separate from the --debug flag so that
the tests have a more consistent runtime environment.
Signed-off-by: William Casarin <jb55@jb55.com>
This splits notedeck into:
- notedeck
- notedeck_chrome
- notedeck_columns
The `notedeck` crate is the library that `notedeck_chrome` and
`notedeck_columns`, use. It contains common functionality related to
notedeck apps such as the NoteCache, ImageCache, etc.
The `notedeck_chrome` crate is the binary and ui chrome. It is
responsible for managing themes, user accounts, signing, data paths,
nostrdb, image caches etc. It will eventually have its own ui which has
yet to be determined. For now it just manages the browser data, which
is passed to apps via a new struct called `AppContext`.
`notedeck_columns` is our columns app, with less responsibility now that
more things are handled by `notedeck_chrome`
There is still much work left to do before this is a proper browser:
- process isolation
- sandboxing
- etc
This is the beginning of a new era! We're just getting started.
Signed-off-by: William Casarin <jb55@jb55.com>