Fernando López Guevara (2): media: handle upload on android chore(macos): fix cargo-bundle Terry Yiu (7): Remove unused strings from translation files Import translations Add Japanese and Portuguese (Portugal) languages Export strings for translation Import translations Add missing localized strings and export strings for translation Import translations William Casarin (41): chrome: add virtual keyboard ui android: fix dark/light mode and folding screen crash notedeck app: add clndash clndash: initial peer channel listing default logs clndash: channels ui clndash: summary cards clndash: include listpeerchannel errors clndash: invoice loading clndash: zap rendering clndash: fix invoice order, return more stuff clndash: reorganize clndash: configurable host clndash: add readme clndash: readme clndash: tweak readme clndash: tweak links in readme clndash: specify you need --clndash clndash: dont forget CLNDASH_ID remove hjkl bindings clippy: fix lint errors Implement soft keyboard visibility on Android chrome: greatly improve soft-keyboard visibility & layout handling args: parse hashtag columns from cli debug: fix memory debug builds tweak follow pack design chrome: remove dev log v0.7.0 fix android-activity crash on unhandled app cmds v0.7.1 macos: fix build script ui/note: fix actionbar note responses filter: reservoir sample the algo feed ui/timeline: make notification text smaller images: disable useless animation frame log refactor: replace notification bool prop drill with note option enostr: show unrecognized message in log time: more time-ago granularity in months/years test: fix relay message tests nix: android: move gradle to android deps refactor: rename process to process_selection kernelkind (165): make search icon more customizable make compose button animate horiz rather than vert add toolbar icons to `notedeck_ui` add select_by_route add toolbar related logic add toolbar defaults copy toolbar rendering to `notedeck_ui` use toolbar in columns rather than chrome clippy: allow collapsible match add flags to `ScaledTexture` extract a pub `render_media` from image_carousel add impl for `ScaledTextureFlags::RESPECT_MAX_DIMS` add nip51 set caching structs nip 51 set widget add onboarding 'manager' TMP: temporary author for trusted pks list add onboarding view add onboarding related state to app integrate onboarding fix contact list bug use the onboarding follow pack curator pubkey make `TimelineCache::notes` private remove commented out code... move `HybridSet` to own file ui: add like icon appease clippy add muted helper unknownids: use pk bytes replace `HybridSet` with `NoteUnits` add reactions kind to notifications filter add `TimelineUnits` note: account for mutes in the notifications dot make since optimize accept Option<&NoteRef> instead of notes prop `UnknownIds` for initial timeline ui: add rendering for `NoteUnit`s upgrade `TimelineOpenResult` to hold new pubkeys too use `TimelineUnits` instead of `Vec` ui: remove unnecessary reverse introduce failing test for reaction duplication bug fix duplicate ReactionUnit for multiple kth indices fix reaction target bug ui: reactions closer approximation of iOS design expose indexmap to notedeck use indexmap add Nip51SetCache helper methods add virtual list to `Onboarding` prop `Onboarding` as mut render follow pack by index from virtual list add `AnimationHelper::scaled_rect` add copy to clipboard img make eye button public add keys section to settings custom-zap: dont force keyboard actionbar: don't early return actionbar: reintroduce error messages rename `LNUrlPayRequest` -> `LNUrlPayResponseRaw` make endpoint error into struct rename `get_users_zap_endpoint` -> `get_users_zap_address` move `ZapAddress` to `zaps/mod.rs` make `get_users_zap_address` `Result` add `LNUrlPayResponse` introduce `PayCache` use `PayCache` when zapping zap: add requirements for zapping user add ReactionFragment error msg NoteUnits: use `UnitKey` instead of just `NoteKey` ui: modularize composite entry rendering & fix tr add `NotePayload::noteref` helper test: better naming for NoteUnits tests add `RepostUnit` & `RepostFragment` ui: repost description impl image: `repost_image` wrapper add `CompositeType::Repost` ui: render repost cluster impl add Repost to composite unit & fragment make `get_reposted_note` pub process repost notes test: NoteUnits repost test nav: reduce back nav threshold from 1/2 to 1/4 fix blank thread from notifications filter: remove unused code introduce `NdbQueryPackages` note: remove repost from note ui ui: add support for non-notification composite rendering filter: add repost kind to `FilteredTags::into_filter` use `NdbQueryPackage` to call ndb::query multiple times allow reposts in "Notes" timeline tab log: info -> debug for ndb can't find repost ui: minor tweaks fix: can upload photo from reply or quote fix: image shimmer bug feat: transitively trust images from parent note fix: repost desc text size on newline refactor: impl transitive trust via `NoteOptions::TrustMedia` feat: enable transitive trust for repost Revert "feat: transitively trust images from parent note" refactor: remove unnecessary code refactor: move `profile_body` to fn make `tabs_ui` return `InnerResponse` fix `NoteUnits` front insertion logic fix: no longer make the scroll position jump oddly fix: don't reset scroll position when switching toolbar fix: add tag for hashtag in reply prop drag id through responses instead of manual wiring add tracy support TMP: new egui-nav remove unnecessary `DragSwitch` make update return AppResponse instead of Option add nav drawer router cargo: expose egui-nav to chrome render chrome nav drawer chrome: readd click to toggle nav drawer feat: "All" & "Mentions" notifications tabs like Damus iOS profiling: add more profile markup perf: improve filter generation performance fix: WalletView don't request keyboard focus if narrow fix: crash on startup add `load_texture_checked` use `load_texture_checked` over `load_texture` add clippy rule to disallow the usage of `load_texture` add `after_action` to `SingletonRouter` route: add CloseSheetThenRoute `RouterAction` add repost fns ui: add `RepostDecisionView` route: add `RepostDecision` refactor: rename `NoteAction::Quote` -> `Repost` add `RenderNavAction::RepostAction` & render `RepostDecisionView` process popup after action split popup correctly for repost & update egui-nav fix: profile wrapping fix: custom zap wrapping refactor: move profile.rs -> url.rs to new module refactor: move shared context stuff up in scope add `ProfileContext` ui: add `ProfileContextWidget` render profile context button feat: copy damus.io link to clipboard update egui-nav fix: nav drawer shadow extends all the way vertically drawer: only use drag on mobile new `egui` update egui_nav refactor: move `galley_centered_pos` to notedeck_ui refactor: rename assets assets: add accounts image chrome: ui polish refactor(assets): rename like icon -> filled version feat(assets): add like icon feat(action): add `ReactAction` feat(ui-state): add `reaction_sent_id` feat(event): add `send_reaction_event` feat(ui): add like button feat(action): add `NoteAction::React` feat(reaction): user can send reactions fix(notif-indicator): more performant impl refactor(NoteFreshness): remove now unnecessary `NoteFreshness` fix(thread): remove flicker on opening thread fix(thread): remove flicker on opening thread Revert "fix: nav drawer shadow extends all the way vertically" fix(nav-drawer): shadow extends all the way vertically chore(tracy): repaint every frame chore(profiling): markup composite render path feat(reactions): use ProfileKey when possible for performance feat(composite-cluster): do culling for pfps feat(mime-cache): upgrade UrlMimes