Why Nostr? What is Njump?
2024-07-05 20:28:20

Damus Q3/Q4 OpenSats Report

Hey guys!

Here's our Q3-Q4 report. There was some confusion with the timing of the previous quarters so we've accumulated everything since the Q2 report (March 2nd, 2024) into this one. Enjoy!

Damus OpenSats Q3-Q4 Progress Report

The third and fourth quarter of the initial Damus OpenSats grant encompasses work done across many of the active projects being worked on at Damus HQ. Here's a quick overview of the progress made across the organization:

nostrdb

Added

  • Author query support (William Casarin)
  • REQ support: ndb_subscribe (William Casarin)
  • CLOSE support: ndb_unsubscibe (William Casarin)
  • Profile flatbuffer dump utility (William Casarin)
  • Ability to register a subscription callback instead of just polling (William Casarin)

Changed

  • Dump json in filter and fulltext queries in cli tool (William Casarin)

Stats

name                             added  removed  commits
William Casarin <[email protected]>  +665   -739     16

nostrdb-rust

Added

  • Note builder interface (William Casarin)
  • Nip10 implementation (William Casarin)
  • Getting profile by key (William Casarin)
  • Note tag support (William Casarin)
  • Tag::into_iter method (Yuki Kishimoto)
  • FilterBuilder::until method (Yuki Kishimoto)
  • Export structs from tags module (Yuki Kishimoto)

Fixed

  • FilterBuilder::limit method (Yuki Kishimoto)
  • Note::sig method (Yuki Kishimoto)

Stats

Yuki Kishimoto <[email protected]>  +20    -4       5
William Casarin <[email protected]>                +1551  -867     32

Damus NoteDeck/Android

This project is in heavy development and doesn't have clean changelogs yet, so here are all of the git logs from this period

Willam's updates

  • account_manager: don't add the same pubkey more than once
  • actionbar placeholder
  • actionbar: remove border on reply button, add expand animation
  • actionbar: support both dark and light buttons
  • Add forward navigation animation
  • add hover to profile map demo
  • add --light lightmode flag to previews and notedeck
  • add my pubkey to the timeline query for testing
  • add test queries for elsat
  • add vertical separators between timelines
  • allow missing profiles in account switcher
  • allow multiple invocations of --sec
  • always have some default timeline
  • app: make ndb public
  • a quick note about the View trait
  • args: allow filter files and raw filters on cli
  • bump timeline filter limit
  • cap size of remote filter limits
  • change selection color to purple
  • check: remove duplicate and disable wasm checks
  • ci: disable wasm builds for now
  • cli: add --sec argument to quickly add an account
  • clippy postbox cleanups
  • crates: add bitflags
  • damus: make relay pool public
  • darker quote reposts for mobile
  • debug: add some debug logs for keyboard note selection
  • deps: using tracing instead of log
  • direnv: disable nix direnv on darwin
  • direnv: make args explicit so its easy to change
  • don't bump timeline when adding notes
  • dont since-optimize when we don't have enough notes
  • don't use an actual keystorage in Damus test apps
  • drafts: clear post after posting
  • enable nip10 replies
  • enostr: rename Event to Note
  • env: allow private things like secret keys
  • filter: add default limit
  • filters: fix hashtag filters
  • filter: unify nostrdb and remote limits
  • Fix all warnings
  • fixed_window: fix clippy warning
  • fix global query
  • fix inline note preview colors
  • fix light borders for quote reposts
  • fix postbox design
  • fix scroll area shrinking
  • fix some clippy warnings
  • fix until filters
  • fix warnings
  • fonts: always use base fonts for all families
  • fun large profile grid preview
  • get all missing ids from all timelines
  • github: remove pages workflow
  • gitignore: add perf files
  • hide navigation title on global nav
  • ids: find more unknown ids from inline notes
  • images: add aspect_fill
  • initial inline note previews
  • initial navigation
  • initial note posting
  • initial postbox for testing
  • initial post box view
  • initial post reply view
  • initial refactor in preparation for routing
  • input: fix deadlock on resize
  • input: handle raw events
  • input: process input once
  • input: switch to scanning over raw input events
  • integrate sidebar into main view
  • introduce View and Previews traits
  • irc mode
  • ircmode: tighten username
  • keys: actually use the keystore
  • lighter gray for inline previews in white mode
  • list: switch from arc mutext to rc refcell
  • load timelines from commandline
  • log: reduce spammy new note log
  • log relay subscriptions
  • make notedeck front and center
  • mobile: add lots of top padding on mobile
  • mobile: a tad more padding at the top
  • mobile: black panel bg color
  • mobile: don't add hover on mobile
  • mobile: make mobile flag runtime-configurable
  • mobile: simplify is_mobile
  • mobile: use my timeline for testing again
  • move account_login_view to ui submodule
  • move add_space to its correct location
  • nip10: fetch unknown replied-to notes
  • nip10: show initial reply information on notes
  • nix: add openssl dep for reqwest
  • nix: make android emulator optional
  • nostrdb: bump to support timeline queries
  • note: don't allow nested note previews
  • note: support nprofile mentions
  • perf: don't clone bytes via a more specialized function
  • perf: fix continuous repaint
  • perf: profiling note content rendering
  • popup: increase fixed window margin
  • popup: simplify borrow
  • postbox: add focused state
  • postbox: add focus shadow from figma
  • post: full available width
  • postview: add vertical scroll
  • previews: remove central panel frame
  • profile: add about and username to profile previews
  • profiles: introduce DisplayNames
  • profiling: update puffin version
  • queries: add a few more test queries
  • queries: set reasonable initial query sizes
  • queries: update hashtags query
  • readme: add usage
  • readme: document previews
  • readme: make it clear that its for desktop
  • readme: make it clear that nix is optional for non-android dev
  • readme: show notedeck preview
  • refactor: move fixed_window to ui
  • refactor: move note into its own widget
  • refactor: rename widgets to ui
  • refactor: use map instead of explicit if let
  • remote: use default_remote_limit instead of hardcoding
  • remove context from DesktopSidePanel
  • remove minimum window size
  • remove useless struct
  • render_pfp: only depend on imgcache
  • reset virtual list if notes are spliced into timeline
  • set tooltip delay to 100ms
  • side_panel: return more detailed side panel responses
  • simplify is_mobile check
  • simplify tab underline calculation
  • since filter optimization
  • slightly larger pfpfs
  • small inline preview pfps
  • style: initial logic for mobile style
  • style: less bubbly
  • style: realtime hover interactions
  • style: set 0 duration tooltip delay
  • Switch to egui master to fix wgpu issues
  • switch to glow for now
  • switch to rustls-tls-native-roots
  • tabs: select notes & replies by default
  • test: add test timeline query
  • test: update test profile with a banner
  • test: use my timeline query by default for testing
  • textmode: adjust name sizing so it doesn't bump the column
  • textmode: fix coloring of abbreviated names
  • textmode: no previews in textmore for now
  • theme: update to correct colors based on figma design
  • timeline: don't hide on resize
  • timeline: refactor tabs into TimelineView
  • timeline: use strips instead of panels
  • ui: add banners to profile previews
  • ui: add feathering-resistant hline separator fn
  • ui: add frame around note previews
  • ui: add initial Profile hover previews
  • ui: add profile picture hover animation
  • ui: integrate egui-tabs for notes & replies selector
  • ui: introduce profile picture widget
  • ui: make pixel sizes correct, use more of the figma
  • ui: move RelayView into ui module
  • ui: only inline preview kind1 notes for now
  • ui: reduce vertical padding for more compact timelines
  • ui: remove some old note ui comments
  • ui: simplify note widget
  • ui: switch to flags for note options
  • update slow timeline query
  • update to latest nostrdb, adding tag support
  • update version in comment because I still use this on my laptop
  • use egui_virtual_list for rendering
  • use unique id for post/reply view
  • weird actionbar experiment
  • we should just called this damus
  • widgets: begin organizing ui components into widgets
  • working notes + notes&replies

kernelkind's updates

  • account_management: refactor
  • AccountManagementView
  • AccountManager: add ability to make a selection
  • AccountSelectionWidget
  • Account switcher
  • Add AccountManager to app
  • Add custom visual themes
  • Add flag to emulate mobile during preview
  • Add keypair & update pubkey
  • Add login key parsing
  • Add login manager
  • Add MacOS key storage
  • Add MobileAccountLoginView
  • Add modular custom text styles
  • Add monospace text style
  • Add nix-shell for macos android development
  • Add nostr-sdk dependency
  • Add precommit hook to suggest proper formatting
  • Add preview for RelayView
  • Add relay view
  • add reqwest as dependency
  • Add SimpleProfilePreview
  • Add ui_test_harness binary implementation
  • Add warn color and highlight color
  • app: add accounts to Damus & mock
  • Apply app style to AccountLoginView
  • Apply cargo fmt
  • Conditionally compile MacOS key storage code
  • Constrain app minimum size
  • Create account login panel
  • Create side panel & global popup
  • enostr: expose RelayStatus
  • Extract the sample relay to test_data for reuse
  • impl linux credential storage
  • Integrate account switcher to side panel
  • Integrate global popup into app
  • login: Add key loading & error to mobile
  • macos_key_storage: runner ignore tests
  • migrate AccountManagementView to enostr Keypair
  • Migrate to new AccountManagementView conception
  • Move login business logic to LoginManager
  • move login logic from promise to async fns
  • Move preview controller out of account_manager.rs
  • move test account creation & apply to global popup
  • Pfp integration to side panel
  • refactor account switcher & management previews
  • Refactor 'ui tests' conception to previews
  • reintroduce account management
  • reintroduce account switcher
  • remove nostr-sdk
  • Rename PersistState -> StateInMemory
  • select first account
  • Seperate mobile dark color theme into its own func
  • update cargo.lock to reflect toml change
  • Update egui 0.26.1 -> 0.27.1
  • Use app_creation for common app setup functions
  • Use custom style in app
  • use nostr in enostr

Stats

name                                added  removed  commits
kernelkind <[email protected]>   +6844  -1979    58
William Casarin <[email protected]>     +9733  -5583    194

Damus iOS

Added

  • Ability to create highlights (ericholguin)
  • Add ability to mute hashtag from SearchView (Charlie Fish)
  • Add ability to mute words, add new mutelist interface (Charlie) (William Casarin)
  • Added callbackuri for a better ux when connecting mutiny wallet nwc (ericholguin)
  • Added nip10 marker replies (William Casarin)
  • Added title image and tags to longform events (ericholguin)
  • Add event content preview to the full screen carousel (Daniel D’Aquino)
  • Add First Aid solution for users who do not have a contact list created for their account (Daniel D’Aquino)
  • Add marker nip10 support when reading notes (William Casarin)
  • Add video cache to save network bandwidth (Daniel D’Aquino)
  • Completely new threads experience that is easier and more pleasant to use (Daniel D’Aquino)
  • Connect to Mutiny Wallet Button (ericholguin)
  • Highlights (NIP-84) (ericholguin)
  • Notification reminders for Damus Purple impending expiration (Daniel D’Aquino)
  • Proxy Tags are now viewable on Selected Events (ericholguin)
  • Relay fees metadata (ericholguin)
  • Revamp emoji picker to be less error-prone and add search, frequently used, and multiple skin tone support capabilities (Terry Yiu)
  • Show list of quoted reposts in threads (William Casarin)

Changed

  • Added first aid contact damus support email (alltheseas)
  • Add support for Apple In-App purchases (Daniel D’Aquino)
  • Always strip GPS data from images (kernelkind)
  • Change reactions to use a native looking emoji picker (Terry Yiu)
  • Errors with an NWC will show as an alert (ericholguin)
  • Improve UX around video playback (Daniel D’Aquino)
  • Moved paste nwc button to main wallet view (ericholguin)
  • Relay config view user interface (ericholguin)
  • Relay detail design (ericholguin)
  • Updated Zeus logo (ericholguin)

Fixed

  • Fix broken GIF uploads (Daniel D’Aquino)
  • Fix bug that would cause connection issues with relays defined with a trailing slash URL, and an inability to delete them. (Daniel D’Aquino)
  • Fixed issue where some replies were including the q tag (William Casarin)
  • Fixed issue where timeline was scrolling when it isn't supposed to (William Casarin)
  • Fixed threads not loading sometimes (William Casarin)
  • Fixed wallet not disconnecting when a user logs out (ericholguin)
  • Fix emoji reactions being cut off (ericholguin)
  • Fix ghost notifications caused by Purple impending expiration notifications (Daniel D’Aquino)
  • Fix image indicators to limit number of dots to not spill screen beyond visible margins (ericholguin)
  • Fix in-app purchase issue that would trigger an error on purchase before confirming the account information. (Daniel D’Aquino)
  • Fix issue where bootstrap relays would inadvertently be added to the user's list on connectivity issues (Daniel D’Aquino)
  • Fix missing Mute button in profile view menu (Terry Yiu)
  • Fix nostrscripts not loading (William Casarin)
  • Fix profile not updating bug (William Casarin)
  • Fix stale feed issue when follow list is too big (Daniel D’Aquino)
  • Fix thread bug where a quote isn't picked up as a reply (William Casarin)
  • Fix welcome screen not showing if the user enters the app directly after a successful checkout without going through the link (Daniel D’Aquino)
  • Improve reliability of contact list creation during onboarding (Daniel D’Aquino)
  • Issue where NWC Scanner view would not dismiss after a failed scan/paste (ericholguin)

Stats

name                                      added  removed  commits
Fonta1n3 <[email protected]>  +1     -0       1
Sean Kibler <[email protected]>      +13    -2       1
alltheseas <64376233+alltheseas>          +65    -1       4
Transifex <[email protected]>       +581   -39      36
Terry Yiu <[email protected]>                  +763   -1383    8
William Casarin <[email protected]>           +1017  -1564    49
ericholguin <[email protected]>      +1962  -643     13
Daniel D’Aquino <[email protected]>       +3885  -761     48
Author Public Key
npub1xtscya34g58tk0z605fvr788k263gsu6cy9x0mhnm87echrgufzsevkk5s