Commit Graph
100 Commits
Author SHA1 Message Date
William Casarin 91016facc7 Merge Persist Columns #390
Fixed a few merge conflicts

kernelkind (2):
      initial column storage
      tmp remove DeckAuthor columns
2024-11-13 13:13:55 -08:00
William Casarin 94b97d247d Merge Add External Notifications Column setting #395
kernelkind (2):
      init external notifs column
      use AcquireKeyState for AddColumn
2024-11-13 13:06:18 -08:00
William Casarin 29da910534 android: fix build
Fixes: 2f20e8253e ("app: simplify Damus::new constructor")
Signed-off-by: William Casarin <jb55@jb55.com>
2024-11-13 12:10:02 -08:00
William Casarin 804a7f0bf9 test: add args column test
Adding a testcase for a bug I noticed on another branch

Signed-off-by: William Casarin <jb55@jb55.com>
2024-11-13 10:55:14 -08:00
William Casarin 19d790fce0 timeline: add TimelineKind equality
we will be using these for tests

Signed-off-by: William Casarin <jb55@jb55.com>
2024-11-13 10:55:14 -08:00
William Casarin 9801a20429 storage: simplify imports
Signed-off-by: William Casarin <jb55@jb55.com>
2024-11-13 10:55:14 -08:00
William Casarin d1059d9480 bin: extract logging setup into its own function
a little bit less messy

Signed-off-by: William Casarin <jb55@jb55.com>
2024-11-13 10:55:14 -08:00
William Casarin 2f20e8253e app: simplify Damus::new constructor
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>
2024-11-13 10:53:29 -08:00
William Casarin fab1257f6e paths: remove hardcoded basepath
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>
2024-11-13 09:55:56 -08:00
William Casarin 6c9693dbf0 github: disable --all-features for now
Since some things are broken

Signed-off-by: William Casarin <jb55@jb55.com>
2024-11-13 09:55:56 -08:00
William Casarin 702f8ffca3 Merge a few relay fixes from ken
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
2024-11-11 11:19:56 -08:00
William Casarin 1476be48cc Merge 'Support view, key storage'
kernelkind (5):
      file storage
      write log files to disk daily and on panic
      app window size persists on app close
      support view
      fix cmd line args bug
2024-10-28 13:30:16 -07:00
William Casarin d729823f33 Merge 'Update account_login_view.rs' #366
alltheseas (1):
      Update account_login_view.rs
2024-10-22 10:35:57 -07:00
William Casarin a2a8a9f66d cargo fmt
Signed-off-by: William Casarin <jb55@jb55.com>
2024-10-16 08:52:43 -07:00
William Casarin b803693449 Merge Profile View
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
2024-10-16 08:42:18 -07:00
William Casarin 1a490eb069 use stable toolchain
this was overriding rustup to use nightly

Signed-off-by: William Casarin <jb55@jb55.com>
2024-10-16 08:41:31 -07:00
William Casarin 54dcbd724b Merge 'column titlebar #345'
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
2024-10-11 12:56:15 +02:00
William Casarin f7c6e2774e update to use upstream egui-nav branch
Signed-off-by: William Casarin <jb55@jb55.com>
2024-10-11 12:54:49 +02:00
William Casarin 6c94987a7a Merge multi-subscriber #287
kernelkind (2):
      multi subscriber impl
      implement multi_subscriber for Thread
2024-09-26 14:04:25 -07:00
William Casarin 5ddeb0e383 remove dead code in side panel
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-26 13:49:51 -07:00
William Casarin 56af979c21 panel: rasterize damus logo
Image is set to double the pixel size to reduce artifacts.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-26 13:43:53 -07:00
William Casarin 7fe3d5e99f Merge side panel update #327
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
2024-09-26 13:21:11 -07:00
William Casarin 7e4bddcacb Merge hitbox improvements #319
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
2024-09-26 12:54:09 -07:00
William Casarin dbb164970c remove PostActionExecutor
Just use PostAction::execute

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-26 12:41:38 -07:00
William Casarin 13d6873eb1 Merge note context menu #328
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
2024-09-26 12:33:56 -07:00
William Casarin d416044f47 context: set cursor icon on hover
So we know its clickable. I mean the animation signals that as well, but
still.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-26 12:31:23 -07:00
William Casarin 5120686679 context: fix hitbox, float on far right
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>
2024-09-26 12:18:10 -07:00
William Casarin 2dba41186d context: move note context button to its own file
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-26 10:51:08 -07:00
William Casarin 0c3b2ae817 note: switch to muted menu_options_button color
Otherwise it stands out too much

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-26 09:40:53 -07:00
William Casarin a9cb734ef6 refactor: make options_button a NoteOptions
No reason why this needs to be a standalone bool

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-26 09:32:21 -07:00
William Casarin 1a94c21d96 refactor: remove processs_note_selection
Moved this to NoteOptionSelection::process

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-26 09:22:05 -07:00
William Casarin 2208e68726 Merge 'Initial quote reposts #305'
kernelkind (6):
      post quote reposts impl
      make PostActionExecutor for code reuse
      add repost button
      address PR comments
      make views pure
      minor cleanup
2024-09-18 14:15:43 -07:00
William Casarin 8e32f757f0 Merge 'Repost improvements #314'
This slightly improves the style of reposts. Icon color and size still
needs an update[2]

We also update nostrdb[1] to support instant kind6 ingestion, making
reposts render immediately

William Casarin (3):
      repost: update style
      nostrdb: update to support fast kind6 repost ingest

[1] https://github.com/damus-io/nostrdb/commit/cd9ba0ea7dfd021f2a3e98aefef87990d161aab3
[2] https://github.com/user-attachments/assets/23feba47-9d63-443f-9968-eba93053fc24
2024-09-17 15:37:21 -07:00
William Casarin b3f065fd2e nostrdb: update to support fast kind6 repost ingest
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-17 15:28:01 -07:00
William Casarin 27aa146300 repost: update style
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-17 15:28:01 -07:00
William Casarin b1339c8a24 Merge branch 'thread-hitbox'
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
2024-09-17 15:18:02 -07:00
William Casarin a8731c0210 remove thread button
now that we have note hitboxes

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-17 15:15:51 -07:00
William Casarin e16eeb4d1b notes: rename "underbutt" to "hitbox"
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-17 15:12:20 -07:00
William Casarin 80c9cbe5b2 Merge 'display kind 6 repost impl #302'
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
2024-09-17 09:29:55 -07:00
William Casarin d141bb0ab5 Merge 'Accounts and Relay nav #307'
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
2024-09-17 09:28:52 -07:00
William Casarin 945ccde818 ui: hook up relay management view
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-16 17:15:07 -07:00
William Casarin fce82b2b6d nav: fix accounts nav animations
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>
2024-09-16 16:54:29 -07:00
William Casarin 79a447239a cleanup: remove account switcher widget
we don't need this anymore

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-16 16:37:04 -07:00
William Casarin 52a7ed53ec accounts: use column nav for account management
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-16 16:36:38 -07:00
William Casarin 3c79724a81 Merge 'Read android args from config file on device' #298
Ken Sedgwick (1):
      Read android args from config file on device
2024-09-16 15:24:24 -07:00
William Casarin 36c0971fd9 Flexible routing
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>
2024-09-16 14:50:20 -07:00
William Casarin b4a8cddc48 fix crash in selected columns
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-11 16:24:50 -07:00
William Casarin 37fbde1566 fix some rebase issues
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-11 16:24:43 -07:00
William Casarin 00091c5088 Switch to Columns
Also refactor damus app usage to only pass in things that we need in views.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-11 15:49:34 -07:00
William Casarin 4379466d1d android: launch with initial options
Feel free to change to have a customized android build

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-09 16:10:33 -07:00
William Casarin 4a4fb06425 split is_mobile to is_narrow and is_oled
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>
2024-09-06 21:54:48 -07:00
William Casarin 772bfbad5f img: remove loading spinners
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>
2024-09-06 21:06:12 -07:00
William Casarin 8602650278 args: add datapath argument
This will allow us to test cache resets

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-06 21:06:12 -07:00
William Casarin c879982260 args: add --textmode
An option to enable textmode on startup

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-06 08:59:49 -07:00
William Casarin 7fa18fa5f7 Merge 'Supply default timeline for mobile app if empty' (#285)
Ken Sedgwick (1):
      Supply default timeline for mobile app if empty
2024-09-03 11:49:21 -07:00
William Casarin 989f88c989 fonts: add thai support
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-03 11:45:59 -07:00
William Casarin 01b9704415 appease clippy
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-03 11:25:48 -07:00
William Casarin efadd6153b arg: add -c universe column
Add helper for adding universe columns

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-03 11:18:32 -07:00
William Casarin ddba62df47 env: add some test npubs
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-03 11:12:50 -07:00
William Casarin c34227b5f7 arg: add -c profile{,:pubkey} arg column
This allows you to add profile columns

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-03 11:12:02 -07:00
William Casarin 4fdbad0df8 fix bug where it was subscribing too many times
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-03 11:11:38 -07:00
William Casarin 043ccf2146 debug: add subid debugging
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-03 11:10:59 -07:00
William Casarin 2603d08d1a tidy: fix formatting
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-02 18:31:53 -07:00
William Casarin ad9c8f959c columns: add --notifications{,:pubkey} argcolumn
This allows you to add notification columns pretty easily:

$ notedeck --sec $SEC -c contacts -c notifications -c notifications:$CORP_ACCT

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-02 18:29:21 -07:00
William Casarin ca09dc1675 filters: add limits to follow filters
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-02 18:16:22 -07:00
William Casarin 4c61c337bd fix transaction crash regression when opening thread
small oversight

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-02 18:12:12 -07:00
William Casarin 6a989e388b Merge images support
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
2024-09-02 17:56:32 -07:00
William Casarin b00dc735e1 use slightly better carousel id
still need to include timeline...

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-02 17:54:49 -07:00
William Casarin 0e4aad4184 initial image support
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-02 17:54:49 -07:00
William Casarin 036c257379 update image to 0.25
Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-02 17:54:49 -07:00
William Casarin 21c00a41e0 Merge contact list fetching
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
2024-09-02 17:47:57 -07:00
William Casarin bc8a8d4a74 perf: coordinate unknown id lookups
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>
2024-09-02 17:38:18 -07:00
William Casarin ad244d48c0 fetch contact lists
If we don't have a contact list, make sure to fetch one

Signed-off-by: William Casarin <jb55@jb55.com>
2024-09-02 16:22:29 -07:00
William Casarin 92e9e34e19 column: extract into_timeline logic into ColumnKind
I thought I needed this but maybe I don't. Anyways, it's a bit cleaner
this way.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-31 08:15:09 -07:00
William Casarin db49cf3c4b tidy: move ColumnKind to its own file
timeline file is starting to get messy

Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-31 08:08:17 -07:00
William Casarin 9a9342ad35 tidy: remove some crate:: namespaces
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-31 07:17:45 -07:00
William Casarin 5de78cef21 docs: fix comment in the wrong spot
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-31 05:43:43 -07:00
William Casarin a051760fd9 contacts: fix hashtags in filter_from_tags
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>
2024-08-31 05:43:43 -07:00
William Casarin 2ea6473ae2 refactor: move args to its own file
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-31 05:43:43 -07:00
William Casarin 71259a8dd5 timeline: initial contact queries
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>
2024-08-30 08:59:48 -07:00
William Casarin 11ede2086f cli: add --pub support for watchonly accounts
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-30 08:59:37 -07:00
William Casarin dd60d03407 filter: create filter from contact list
This adds a method for creating filters from contact lists. We will be
using this for creating follow timelines.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-30 08:49:29 -07:00
William Casarin ea547a3497 tidy: move parse_args to Args::parse
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-30 08:49:29 -07:00
William Casarin ae6c05ab42 tidy: organize bools
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-30 07:17:56 -07:00
William Casarin 21fd57f2c5 nostrdb: bump version
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-30 07:17:56 -07:00
William Casarin bf34175560 time: add future timestamp formatting
+10s for 10 seconds in the future, etc

This can happen sometimes

Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-27 14:09:14 +03:00
William Casarin ad37602e0e Merge 'Fix global.json' 2024-08-27 14:08:45 +03:00
William Casarin 54526a8f55 log: track virtual list splices
These are caused when timeline note insertions are not at the top.
egui-virtual-list only has optimizations for that scenario.

Link: https://github.com/damus-io/notedeck/issues/94
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-27 13:50:38 +03:00
William Casarin 4ff30304e1 fix android build
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-21 07:48:56 +03:00
William Casarin cf14c6dfd2 flag to disable since optimization
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-21 07:48:45 +03:00
William Casarin 9b4093cd41 update to latest nostrdb version
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-21 06:59:27 +03:00
William Casarin 1f149aec3b fix clippy warnings
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-19 21:26:20 -07:00
William Casarin 973a7c780f thread: remote subscriptions working
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-19 21:22:58 -07:00
William Casarin 9328ef2dff remove duplicate filter types
only use nostrdb::Filter

Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-19 21:12:32 -07:00
William Casarin 8c458f8f78 Merge initial threads 2024-08-16 11:51:42 -07:00
William Casarin 579b47fc40 selectable text option
Add a selectable text option to various note views. We don't want
selection events to interfere with back drag, so this is the first step
toward ensure back drag works.

Vertical scrollviews also interfere with back drag, so we'll still need
a way to compose gestures. It's not clear if this is currently possibly
with egui (union of responses somehow maybe?)

Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-12 14:21:29 -07:00
William Casarin f769ddad09 fix threads
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-06 14:38:21 -07:00
William Casarin 51b4dfd3f3 temp fix crash due to race condition
we should fix the race condition though

Link: https://github.com/damus-io/nostrdb/issues/35
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-03 11:41:41 -07:00
William Casarin be0efd57e5 bump ingester threads from 2 to 4
Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-03 11:38:46 -07:00
William Casarin 3cbcd98dd4 arg: add dbpath argument
This is great for testing without using an existing DB

Signed-off-by: William Casarin <jb55@jb55.com>
2024-08-03 11:38:38 -07:00