Commit Graph
100 Commits
Author SHA1 Message Date
William Casarin c5cc2f923c mobile: a tad more padding at the top
Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-24 13:21:22 -07:00
William Casarin 56e1e2fa09 update slow timeline query
relays have trouble with large limits?

Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-24 13:21:02 -07:00
William Casarin 739e9f87f2 nip10: fetch unknown replied-to notes
Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-24 13:20:33 -07:00
William Casarin 135a5c99ae Revert "deps: using tracing instead of log"
This reverts commit af92e326f6.
2024-05-23 16:10:07 -07:00
William Casarin c421a49912 Merge MacOS key storage
kernelkind (3):
      Add MacOS key storage
      Conditionally compile MacOS key storage code
      macos_key_storage: runner ignore tests
2024-05-23 16:00:18 -07:00
William Casarin 83100d7f50 tabs: select notes & replies by default
Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-23 15:50:06 -07:00
William Casarin 6fc5eb27fc working notes + notes&replies
Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-23 15:31:24 -07:00
William Casarin 232ba0e3aa list: switch from arc mutext to rc refcell
we don't have any multithreaded stuff yet

Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-23 15:27:37 -07:00
William Casarin a8693a2bd3 timeline: refactor tabs into TimelineView
TimelineView is a filtered view of a timeline. We will use this for
future tab rendering. We also introduce a new "selection" concept for
selecting notes on different timeline views. This is in preparation for
vim keybindings.
2024-05-23 15:27:37 -07:00
William Casarin 8663851e7e input: handle raw events 2024-05-23 15:27:37 -07:00
William Casarin cf2a832a5e input: switch to scanning over raw input events
Calling key_pressed invokes a filter over the entire event list every
time, this is much more efficient, which is important when we are
handling many key events.
2024-05-23 11:16:50 -07:00
William Casarin 3a891a982c input: process input once
Instead of calling ctx.input multiple times, let's do it once. We are
going to do a lot more stuff in here, such as vim key bindings
2024-05-23 11:16:50 -07:00
William Casarin 93b7af1a4e perf: fix continuous repaint
Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-23 11:16:50 -07:00
William Casarin c30fc44df0 cleanup: remove old viewport code 2024-05-23 11:16:50 -07:00
William Casarin af92e326f6 deps: using tracing instead of log
also update some other deps

Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-23 11:16:43 -07:00
William Casarin 7e02c7f745 fonts: always use base fonts for all families
We should always fallback if we can't find a glyph in a particular font

Fixes: https://github.com/damus-io/notedeck/issues/78
Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-20 12:19:48 -07:00
William Casarin 4fc6e225ca don't bump timeline when adding notes
This is quite different than Damus iOS. The timeline will continually
add new items without bumping scroll position, thanks to
egui-virtual-list's `items_inserted_at_start` function.

Closes: https://github.com/damus-io/notedeck/issues/38
Fixes: https://github.com/damus-io/notedeck/issues/59
Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-16 10:26:36 -07:00
William Casarin 0e0e5d0eaa fix clippy issues
Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-15 20:53:17 -07:00
William Casarin 0d240c16a5 simplify tab underline calculation
Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-15 18:01:48 -07:00
William Casarin 95c526f453 mobile: add lots of top padding on mobile
and remove top panel

Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-15 18:01:28 -07:00
William Casarin dbc56ac098 mobile: simplify is_mobile
we don't need context anymore

Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-15 18:01:04 -07:00
William Casarin 12a6c64778 move add_space to its correct location
Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-15 17:39:42 -07:00
William Casarin 9e8f7a2e5c ui: integrate egui-tabs for notes & replies selector
demo: https://cdn.jb55.com/s/notedeck-tabs.mp4

Fixes: https://github.com/damus-io/notedeck/issues/47
Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-15 17:28:01 -07:00
William Casarin 029896627c ui: add feathering-resistant hline separator fn
"pixel-aligned" Separators get feathered into a blurry mess. This seems
to help.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-15 15:26:19 -07:00
William Casarin bc5ff4858f direnv: make args explicit so its easy to change
for direnv enjoyers

Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-15 09:41:19 -07:00
William Casarin c7a1ca534d Merge commit 'refs/pull/github/53'
35adae86f9 ("nix: keep lazy for use_android=false")
2024-05-15 09:40:12 -07:00
William Casarin e1f61076f7 switch to rustls-tls-native-roots
This fixes our android build which doesn't like openssl

Fixes: https://github.com/damus-io/notedeck/issues/54
Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-15 09:16:20 -07:00
William Casarin 3e1acfa9cf update version in comment because I still use this on my laptop
Signed-off-by: William Casarin <jb55@jb55.com>
2024-05-04 10:26:26 -07:00
William Casarin 30e9aa5357 nix: make android emulator optional
Tony was having issues on aarch64-linux

Changelog-Fixed: Fix nix build on aarch64-linux
2024-05-04 11:32:34 -05:00
William Casarin f9d6161500 move account_login_view to ui submodule
trying to keep all views and widgets in here
2024-05-04 11:32:34 -05:00
William Casarin 5b7b47aaf5 style: less bubbly 2024-05-04 11:32:34 -05:00
William Casarin 029bbf0e77 nix: add openssl dep for reqwest 2024-05-02 19:31:20 +02:00
William Casarin 5396085d96 textmode: adjust name sizing so it doesn't bump the column 2024-05-02 18:51:05 +02:00
William Casarin f3f8d4ecb4 textmode: no previews in textmore for now
Ideally these would just be angle bracket quotes or something. would be
cool.
2024-05-02 18:50:25 +02:00
William Casarin d9f1582ee7 since filter optimization
This is an optimization that allows us to modify our network filter to
include since-information based off of our local relay. The idea is to
look at the latest note in a given view, and add that to the since
filter for the remote query.

Fixes: https://github.com/damus-io/notedeck/issues/36
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-29 14:06:20 -07:00
William Casarin f4d496012b log relay subscriptions
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-29 14:06:20 -07:00
William Casarin 632e5b89d1 mobile: don't add hover on mobile
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-29 12:48:26 -07:00
William Casarin a173e38141 slightly larger pfpfs
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-29 12:47:29 -07:00
William Casarin ca58b831b6 queries: set reasonable initial query sizes
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-29 11:01:28 -07:00
William Casarin 0a6a441041 simplify is_mobile check
Just base it on the current compile target

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-29 11:00:56 -07:00
William Casarin 28e2e7edd5 Merge remote-tracking branch 'github/virtual-list' 2024-04-28 17:55:29 -07:00
William Casarin 26128c3456 use egui_virtual_list for rendering
absolutely insane performance increase

Fixes: https://github.com/damus-io/notedeck/issues/32
Suggested-by: @lucasmerlin
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-28 11:03:47 -07:00
William Casarin 69054d71ca nip10: show initial reply information on notes
Using the newly merged nip10 code, we can show replies on notes!

This is not final, and it's actually different than how we do it in
Damus iOS. Not sure if I like it yet. We will likely have to put pubkey
information back in somewhere soon.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-27 01:58:35 -07:00
William Casarin afb0e5fe65 github: remove pages workflow
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-27 01:53:08 -07:00
William Casarin d0cfeee79f readme: make it clear that nix is optional for non-android dev
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-26 11:11:06 -07:00
William Casarin f12ccc69a4 add hover to profile map demo
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-24 12:49:06 -07:00
William Casarin 7ec31d0eae fun large profile grid preview
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-24 12:49:06 -07:00
William Casarin e8168b0004 ui: add profile picture hover animation
I wanted to practice doing animation in egui, so here is a simple
profile picture hover affect. When you mouse over a profile picture, it
get slightly bigger.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-24 12:49:06 -07:00
William Casarin 61deeb03e1 note: support nprofile mentions
realized we were missing this bit

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-24 12:49:06 -07:00
William Casarin 32923abfc2 perf: profiling note content rendering
Made some small speed improvements

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-22 08:58:30 -07:00
William Casarin c944cac810 style: realtime hover interactions
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-21 17:57:32 -07:00
William Casarin 1d44b08f13 ui: make pixel sizes correct, use more of the figma
I noticed the pixel sizes were off which made it harder to match the
pixel dimensions of rob's figma designs. This restores the pixel size
and adjust the font sizes so that things look somewhat ok with the
default pixel settings.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-21 17:45:09 -07:00
William Casarin 24633b84bb ui: introduce profile picture widget
We are starting to use profile pics in different places, let's make it a
widget. We'll also probably need to have adjustable sizes and such soon.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-21 16:49:49 -07:00
William Casarin 863ccd866b render_pfp: only depend on imgcache
This will allow us to build previews a bit nicer

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-21 16:36:14 -07:00
William Casarin ee94f27987 profile: add about and username to profile previews
Also adjust colors to match design

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-21 16:28:12 -07:00
William Casarin 893fd582dc profiles: introduce DisplayNames
This is exactly the same as the DisplayName enum in Damus iOS. Due to
the various inconsistencies in `name` and `display_name` between
clients, we have to generalize DisplayName into two variants: one name
or two names.

If we have two names, we treat it in the standard way of display_name is
the real name, and `name` is the username.

If only one is set, then it is considered both the username and "real name".

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-21 15:55:47 -07:00
William Casarin 2edba9942c ui: add banners to profile previews
profile previews still need lots of work, but this was a challenge to
get an aspectRatio: fill mechanism for images which the banner takes
advantage of.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-21 15:03:05 -07:00
William Casarin 2f6f92e62c style: set 0 duration tooltip delay
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-21 15:03:05 -07:00
William Casarin 7f61d9aeb7 images: add aspect_fill
This is similar to SwiftUI's .aspectRatio(contentMode: .fill) so that
we can get a filling banner image

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-21 15:03:05 -07:00
William Casarin 55111b8b25 test: update test profile with a banner
I need this to test profile preview banners

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-21 15:03:05 -07:00
William Casarin a408c96d91 ui: remove some old note ui comments
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-21 15:03:05 -07:00
William Casarin 54bf2a0767 previews: remove central panel frame
This was adding padding we don't want

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-21 13:42:49 -07:00
William Casarin bf7775467d readme: document previews
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-19 22:16:54 -07:00
William Casarin 05fe164a49 ui: add initial Profile hover previews
The idea with these is that on notedeck you can just hover your cursor
over a profile link to see the profile. I just have a stub for now, but
full design coming soon after.

Also simplify the preview system even further with a macro. In the
future I imagine we can grep every preview in the codebase, and then
include this as a string inside this macro. This is some kind of
template metaprogramming insanity but in theory it could work.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-19 22:00:19 -07:00
William Casarin 2d566cc637 ui: move RelayView into ui module
Trying to keep all UI stuff in there

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-19 21:53:47 -07:00
William Casarin 51c25b88cc timeline: use strips instead of panels
panels grow when their childs a larger than its container. strips do not
do this, which is better for timelines

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-19 19:55:02 -07:00
William Casarin 9642b9243d a quick note about the View trait
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-19 17:38:47 -07:00
William Casarin 22e4b72729 check: remove duplicate and disable wasm checks
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-19 17:37:41 -07:00
William Casarin 73f54d1c4f ci: disable wasm builds for now
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-19 14:32:51 -07:00
William Casarin 99ac578ebd fix clippy warnings
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-19 14:30:08 -07:00
William Casarin a71e8206fb introduce View and Previews traits
In this commit we refactor the preview mechanism, and switch to
responsive views by default.

To create a preview, your view now has to implement the Preview trait.
This is very similar to SwiftUI's preview mechanism.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-19 14:13:11 -07:00
William Casarin ff5e5ed74a make notedeck front and center
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-17 14:37:11 -07:00
William Casarin 6e939a414f readme: show notedeck preview
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-17 14:33:19 -07:00
William Casarin d247382219 ui: add frame around note previews
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-14 18:23:33 -07:00
William Casarin a8185d9a75 note: don't allow nested note previews
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-14 17:36:05 -07:00
William Casarin 6f2aa56b9e ids: find more unknown ids from inline notes
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-14 16:30:12 -07:00
William Casarin 402a1337f2 ui: switch to flags for note options
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-14 16:23:59 -07:00
William Casarin e348950e7a crates: add bitflags
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-14 16:23:36 -07:00
William Casarin 72b9b0dab9 ui: only inline preview kind1 notes for now
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-14 16:23:01 -07:00
William Casarin dcd53beea8 remove minimum window size
This is preventing me from doing a single column layout on desktop

Cc: kernelkind
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-14 12:11:30 -07:00
William Casarin 3b9cd3f3c4 mobile: black panel bg color
for battery life

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-12 21:14:56 -07:00
William Casarin 0a9e7698c1 theme: update to correct colors based on figma design
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-12 21:00:48 -07:00
William Casarin 483e8e85d6 fix until filters
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-12 20:30:28 -07:00
William Casarin 2b20f73974 initial inline note previews
still needs a border and options to remove actionbar

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-12 18:58:36 -07:00
William Casarin d4ccf7435f get all missing ids from all timelines
before we were only fetching missing profiles from the first timeline,
update the logic to pull both missing authors and ids from all timelines

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-12 18:52:32 -07:00
William Casarin 5e45e4a2e5 ui: simplify note widget
pass just a note pointer to the note ui widget. We currently don't
support non-db notes but we can add support for that later.

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-12 16:49:18 -07:00
William Casarin 4e7d168d22 refactor: rename widgets to ui
consolidate ui related things like widgets into our ui module

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-12 16:16:19 -07:00
William Casarin 9b7c63c800 refactor: move note into its own widget
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-12 16:03:16 -07:00
William Casarin 91c5d453c4 profiling: update puffin version
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-12 16:03:00 -07:00
William Casarin 99b163da7e textmode: fix coloring of abbreviated names
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-12 15:09:07 -07:00
William Casarin 3f26ba1af7 readme: add usage
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-11 15:03:30 -07:00
William Casarin bfdd066654 fix warnings
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-11 15:00:58 -07:00
William Casarin ef57ddd9ca readme: make it clear that its for desktop
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-11 14:47:41 -07:00
William Casarin 8cfb021dab add rustup just in case
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-11 14:35:02 -07:00
William Casarin 116ba27f3f ircmode: tighten username
will probably have to change the design of this for mobile

Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-11 13:36:29 -07:00
William Casarin d0efb2ef55 we should just called this damus
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-11 11:41:28 -07:00
William Casarin 9e7111f8a7 Merge remote-tracking branch 'android/master' 2024-04-11 11:38:04 -07:00
William Casarin 9d1e8ce666 irc mode
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-11 11:09:30 -07:00
William Casarin 7ecacc69a5 log: reduce spammy new note log
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-09 18:49:52 -07:00
William Casarin 813409c7bb queries: update hashtags query
Signed-off-by: William Casarin <jb55@jb55.com>
2024-04-09 18:49:24 -07:00