There was a bunch of redundant responses. Let's unify them under
the RenderNavAction enum. We unify all action processing under this
type.
This also centralizes all of our side effects into a single function
instead of scattering them everywhere
Instead of only new columns, show login route on first open.
We will also add a demo column.
Changelog-Changed: Show login column on first open
Fixes: https://github.com/damus-io/notedeck/issues/440
To reduce the side effects of this change, we introduce a new UnknownId
action type:
- SingleUnkIdAction
This can be returned from functions to signal that we need to do some
work to look for things. We add a `must_use` directive to this type
to ensure callers handle it.
Changelog-Fixed: Fix missing profiles when new accounts are added
Fixes: https://github.com/damus-io/notedeck/issues/356
This fixes an issue where if one of the columns fail to load, all other
columns fail to load. This is because we are too aggressive with the
early exit on failure.
To reproduce:
$ notedeck --dbpath what
With existing columns in an existing data path.
Signed-off-by: William Casarin <jb55@jb55.com>
Just take an egui::Context instead of an eframe::CreationContext.
This should make it easier to test the app via egui::Context::default();
Signed-off-by: William Casarin <jb55@jb55.com>
Before we were hardcoding the basepath with dirs, which isn't that
useful for testing, previews, or for android. Let's fix that.
This also moves the db and cache directories into our root DataPaths.
This is a breaking change, we don't have a migration step. sorry.
Signed-off-by: William Casarin <jb55@jb55.com>
Pick a few fixes from #380
Link: https://github.com/damus-io/notedeck/pull/380
Ken Sedgwick (5):
build: Cargo.lock updates to mitigate num_enum_derive problem
add .rustfmt.toml to specify edition
Fix parsing of subscription id for RelayMessage::Event
Skip adding relays that are already in the pool
canonicalize relay urls to avoid false duplicates
Noticing a small delay when clicking on macos with large nostrdb, still
need to investigate
kernelkind (14):
init profile routing
add profile preview and implement scrolling
profile unsub
click on thread pfp
consolidate timelineTab ui to TimelineTabView
generify Threads
profile struct
integrate profile view caching
proper timelineTabs
revert timeline no_scroll stuff
fix unnecessary copy every frame
reword comments and logs thread -> NotesHolder
rename TimelineResponse -> ColumnNoteResponse
NoteActionResponse for note preview pfp clicking
William Casarin (2):
update to use upstream egui-nav branch
kernelkind (13):
basic add column impl
remote sub new timeline
add more add column options
animate add column options
push column picker immediately to new column
move get first router to Columns
tmp use kernelkind egui-nav
title bar
unsubscribe timeline on deletion
fix deck author bug & rename titles
tmp: kernelkind/egui-nav
updated back arrow
tmp: kernelkind/egui-nav
A few merge conflicts resolved, and changes the image to svg
kernelkind (7):
initial compose note view
change side panel width to 64.0
Add AnimationHelper
update sidebar to match new design
remove app from sidebar
remove profile_preview_controller
add logo to side panel
Closes: https://github.com/damus-io/notedeck/pull/327
Ken Sedgwick (6):
debug: implemented fmt::Debug for Pubkey
debug: implemented fmt::Debug for NoteId
hitbox: more naming cleanup
hitbox: extend the hitbox to the full width of the container
hitbox: handle hits on quoted notes correctly
hitbox: cache note size instead of rect
Closes: https://github.com/damus-io/notedeck/pull/319
This merges kernel's note context menu with a bunch of refactorings on
top, closing #328 and #318
William Casarin (7):
refactor: remove processs_note_selection
refactor: make options_button a NoteOptions
note: switch to muted menu_options_button color
context: move note context button to its own file
context: fix hitbox, float on far right
context: set cursor icon on hover
kernelkind (3):
Add 'more options' to each note
can left click note more options button
process 'more options' for previews
This updates the context menu to "float" instead of using the layout
engine. This is so that we don't take up an unnecessary amount of space
when we increase the hitbox height.
Signed-off-by: William Casarin <jb55@jb55.com>
This adds a note hitbox for opening threads. It doesn't seem to work on
note previews so we'll need to work on that next.
Ken Sedgwick (1):
add note underbutton to detect clicks and open thread
William Casarin (3):
notes: rename "underbutt" to "hitbox"
remove thread button
Changelog-Added: Added note hitboxes for opening threads
Changelog-Removed: Remove temporary thread open button
Merge kernel's changes for displaying kind6 reposts. We still need to
update the timeline code to fetch and include these in the queries.
kernelkind (2):
kind 6 repost impl
add suggested changes
Now that we've refactored everything, column routing is trivial. This
adds account management and relay nav to the sidebar.
https://cdn.jb55.com/s/notedeck-router.mp4
William Casarin (5):
accounts: use column nav for account management
cleanup: remove account switcher widget
nav: fix accounts nav animations
ui: hook up relay management view
also make nav go backward when clicking the account switch button if we
already are navigating to accounts
Signed-off-by: William Casarin <jb55@jb55.com>
Another massive refactor to change the way routing works. Now any
column can route anywhere.
Also things are generally just much better and more modular via the
new struct split borrowing technique.
I didn't even try to split this into smaller commits for my sanity.
Signed-off-by: William Casarin <jb55@jb55.com>
is_mobile doesn't really make sense for android tablets. We were
overloading this variable to mean "is_narrow". What we really want is
is_oled for mobile devices and is_narrow for if its phone-like.
Signed-off-by: William Casarin <jb55@jb55.com>
This adds blank space, but it will be nice if we can improve this
by either fading in or having some shimmer effect.
Signed-off-by: William Casarin <jb55@jb55.com>
Thanks to Ken Sedgwick for getting this over the line by generalizing
our images cache!
Ken Sedgwick (2):
build: updated num_enum to get around build problem
Extend ImageCache to handle content images
William Casarin (4):
update image to 0.25
initial image support
use slightly better carousel id
Fixes: https://github.com/damus-io/notedeck/issues/249
Fixes: https://github.com/damus-io/notedeck/issues/148
William Casarin (15):
cli: add --pub support for watchonly accounts
column: extract into_timeline logic into ColumnKind
contacts: fix hashtags in filter_from_tags
docs: fix comment in the wrong spot
fetch contact lists
filter: create filter from contact list
nostrdb: bump version
perf: coordinate unknown id lookups
refactor: move args to its own file
tidy: move ColumnKind to its own file
tidy: move parse_args to Args::parse
tidy: organize bools
tidy: remove some crate:: namespaces
timeline: initial contact queries
Fixes: https://github.com/damus-io/notedeck/issues/236
Fixes: https://github.com/damus-io/notedeck/issues/6
This is a huge improvement over what it was before. Now all unknown id
lookups are debounced and happen through a central coordinator. This
ensures there is no duplication between timelines.
Fixes: https://github.com/damus-io/notedeck/issues/279
Signed-off-by: William Casarin <jb55@jb55.com>
split hashtag follows into a separate Filter, combining authors and
hashtags doesn't work, because this is considered an AND filter, where
we want an OR.
We may want an option to split hashtags follows into a separate column.
Signed-off-by: William Casarin <jb55@jb55.com>
This implements initial local contact queries. For testing you can
create contact list columns via:
Examples
--------
Make a contacts column from a specific npub:
$ notedeck --column contacts:npub...
Use the current user's contacts:
$ notedeck --column contacts --pub npub...
We also introduce a new ColumnKind enum which is used to describe the
column type.
Signed-off-by: William Casarin <jb55@jb55.com>