notedeck

One damus client to rule them all
git clone git://jb55.com/notedeck
Log | Files | Refs | README | LICENSE

ModeNameSize
-rw-r--r--.beads/PRIME.md103L
-rw-r--r--.beads/issues.jsonl35L
-rw-r--r--.cargo/config.toml2L
-rw-r--r--.envrc24L
-rw-r--r--.github/workflows/build-and-test.yml26L
-rw-r--r--.github/workflows/rust.yml309L
-rw-r--r--.gitignore29L
-rw-r--r--.rgignore1L
-rw-r--r--.rustfmt.toml1L
-rw-r--r--AGENTS.md124L
-rw-r--r--CHANGELOG.md69L
-rw-r--r--Cargo.lock9868L
-rw-r--r--Cargo.toml154L
-rw-r--r--LICENSE15L
-rw-r--r--Makefile45L
-rw-r--r--README.md148L
-rw-r--r--SECURITY.md5L
-rw-r--r--TODO0B
-rw-r--r--Trunk.toml3L
-rwxr-xr-xandroid11L
-rw-r--r--assets/Logo-Gradient-2x.png18616B
-rw-r--r--assets/Welcome to Nostrdeck 2x.png52397B
-rw-r--r--assets/app_icon.icns633843B
-rw-r--r--assets/damus-app-icon.png271986B
-rw-r--r--assets/damus-app-icon.svg261L
-rw-r--r--assets/damus.ico293138B
-rw-r--r--assets/damus.svg184L
-rw-r--r--assets/damus_rounded.svg334L
-rw-r--r--assets/damus_rounded_80.png6812B
-rw-r--r--assets/damusbg.svg186L
-rw-r--r--assets/damusfg.svg186L
-rwxr-xr-xassets/favicon.ico15406B
-rw-r--r--assets/fonts/DejaVuSans-Bold-SansEmoji.ttf497128B
-rw-r--r--assets/fonts/DejaVuSans-Bold.ttf705684B
-rw-r--r--assets/fonts/DejaVuSans.ttf757076B
-rw-r--r--assets/fonts/DejaVuSansSansEmoji.ttf560848B
-rw-r--r--assets/fonts/Inconsolata-Regular.ttf108684B
-rw-r--r--assets/fonts/NotoEmoji-Regular.ttf878892B
-rw-r--r--assets/fonts/NotoSansCJK-Regular.ttc19484784B
-rw-r--r--assets/fonts/NotoSansThai-Regular.ttf47484B
-rw-r--r--assets/fonts/ark/ark-pixel-10px-proportional-latin.ttf328720B
-rw-r--r--assets/fonts/onest/OnestBlack1602-hint.ttf105716B
-rw-r--r--assets/fonts/onest/OnestBold1602-hint.ttf100424B
-rw-r--r--assets/fonts/onest/OnestExtraBold1602-hint.ttf101988B
-rw-r--r--assets/fonts/onest/OnestLight1602-hint.ttf91836B
-rw-r--r--assets/fonts/onest/OnestMedium1602-hint.ttf92992B
-rw-r--r--assets/fonts/onest/OnestRegular1602-hint.ttf93048B
-rw-r--r--assets/fonts/onest/OnestThin1602-hint.ttf94300B
-rw-r--r--assets/fonts/pressstart/PressStart2P.ttf82480B
-rw-r--r--assets/icons/accounts_4x.png984B
-rw-r--r--assets/icons/add_account_icon_4x.png3081B
-rw-r--r--assets/icons/add_column_dark_4x.png1150B
-rw-r--r--assets/icons/add_column_light_4x.png1267B
-rw-r--r--assets/icons/add_relay_icon_4x.png3081B
-rw-r--r--assets/icons/algo.png6226B
-rw-r--r--assets/icons/algo.svg12L
-rw-r--r--assets/icons/claude-code.svg3L
-rw-r--r--assets/icons/clnlogo.svg57L
-rw-r--r--assets/icons/codex.svg3L
-rw-r--r--assets/icons/column_delete_icon_4x.png806B
-rw-r--r--assets/icons/column_delete_icon_light_4x.png1089B
-rw-r--r--assets/icons/columns.svg9L
-rw-r--r--assets/icons/columns_80.png13521B
-rw-r--r--assets/icons/connected_icon_4x.png1872B
-rw-r--r--assets/icons/connecting_icon_4x.png1733B
-rw-r--r--assets/icons/copy-to-clipboard.svg3L
-rw-r--r--assets/icons/delete_icon_4x.png1057B
-rw-r--r--assets/icons/disconnected_icon_4x.png1863B
-rw-r--r--assets/icons/edit_icon_4x_dark.png719B
-rw-r--r--assets/icons/eye-dark.png4067B
-rw-r--r--assets/icons/eye-light.png3790B
-rw-r--r--assets/icons/eye-slash-dark.png4110B
-rw-r--r--assets/icons/eye-slash-light.png3837B
-rw-r--r--assets/icons/filled_zap_icon.svg3L
-rw-r--r--assets/icons/hashtag_icon_4x.png2587B
-rw-r--r--assets/icons/help_icon_dark_4x.png1230B
-rw-r--r--assets/icons/help_icon_inverted_4x.png554B
-rw-r--r--assets/icons/home-toolbar.png1114B
-rw-r--r--assets/icons/home-toolbar.svg4L
-rw-r--r--assets/icons/home_icon_dark_4x.png2847B
-rw-r--r--assets/icons/key_4x.png1446B
-rw-r--r--assets/icons/like_icon_4x.png1286B
-rw-r--r--assets/icons/like_icon_filled_4x.png3135B
-rw-r--r--assets/icons/links_4x.png1332B
-rw-r--r--assets/icons/media_upload_dark_4x.png1501B
-rw-r--r--assets/icons/move_column_4x.png1771B
-rw-r--r--assets/icons/new-message.svg1L
-rw-r--r--assets/icons/new_deck_icon_4x_dark.png4837B
-rw-r--r--assets/icons/newmessage_64.png3418B
-rw-r--r--assets/icons/notifications.svg4L
-rw-r--r--assets/icons/notifications_dark_4x.png1529B
-rw-r--r--assets/icons/notifications_icon_dark_4x.png3403B
-rw-r--r--assets/icons/plus_icon_4x.png340B
-rw-r--r--assets/icons/profile.png1479B
-rw-r--r--assets/icons/profile_icon_4x.png4010B
-rw-r--r--assets/icons/reply-dark.png912B
-rw-r--r--assets/icons/reply.png1205B
-rw-r--r--assets/icons/reply.svg1L
-rw-r--r--assets/icons/repost_icon_4x.png808B
-rw-r--r--assets/icons/repost_light_4x.png1145B
-rw-r--r--assets/icons/select_icon_3x.png1405B
-rw-r--r--assets/icons/settings_dark_4x.png3886B
-rw-r--r--assets/icons/settings_light_4x.png3055B
-rw-r--r--assets/icons/signout_icon_4x.png1420B
-rw-r--r--assets/icons/sparkle.svg11L
-rw-r--r--assets/icons/universe_icon_dark_4x.png3323B
-rw-r--r--assets/icons/verified_4x.png3376B
-rw-r--r--assets/icons/wallet-icon.svg4L
-rw-r--r--assets/icons/zap_4x.png866B
-rw-r--r--assets/manifest.json28L
-rwxr-xr-xassets/mkicons19L
-rw-r--r--assets/sw.js25L
-rw-r--r--assets/translations/de/main.ftl416L
-rw-r--r--assets/translations/en-US/main.ftl673L
-rw-r--r--assets/translations/en-XA/main.ftl673L
-rw-r--r--assets/translations/es-419/main.ftl458L
-rw-r--r--assets/translations/es-ES/main.ftl458L
-rw-r--r--assets/translations/fr/main.ftl458L
-rw-r--r--assets/translations/ja/main.ftl410L
-rw-r--r--assets/translations/pt-BR/main.ftl414L
-rw-r--r--assets/translations/pt-PT/main.ftl458L
-rw-r--r--assets/translations/th/main.ftl460L
-rw-r--r--assets/translations/zh-CN/main.ftl411L
-rw-r--r--assets/translations/zh-TW/main.ftl411L
-rwxr-xr-xcheck11L
-rw-r--r--crates/enostr/Cargo.lock1870L
-rw-r--r--crates/enostr/Cargo.toml36L
-rw-r--r--crates/enostr/src/client/message.rs86L
-rw-r--r--crates/enostr/src/client/mod.rs3L
-rw-r--r--crates/enostr/src/error.rs61L
-rw-r--r--crates/enostr/src/filter.rs1L
-rw-r--r--crates/enostr/src/keypair.rs291L
-rw-r--r--crates/enostr/src/lib.rs35L
-rw-r--r--crates/enostr/src/negentropy.rs422L
-rw-r--r--crates/enostr/src/note.rs158L
-rw-r--r--crates/enostr/src/pns.rs229L
-rw-r--r--crates/enostr/src/profile.rs110L
-rw-r--r--crates/enostr/src/pubkey.rs181L
-rw-r--r--crates/enostr/src/relay/broadcast.rs94L
-rw-r--r--crates/enostr/src/relay/compaction.rs1040L
-rw-r--r--crates/enostr/src/relay/coordinator.rs570L
-rw-r--r--crates/enostr/src/relay/identity.rs253L
-rw-r--r--crates/enostr/src/relay/limits.rs296L
-rw-r--r--crates/enostr/src/relay/message.rs386L
-rw-r--r--crates/enostr/src/relay/mod.rs239L
-rw-r--r--crates/enostr/src/relay/multicast.rs198L
-rw-r--r--crates/enostr/src/relay/outbox/handler.rs83L
-rw-r--r--crates/enostr/src/relay/outbox/mod.rs960L
-rw-r--r--crates/enostr/src/relay/outbox/session.rs496L
-rw-r--r--crates/enostr/src/relay/pool.rs387L
-rw-r--r--crates/enostr/src/relay/queue.rs48L
-rw-r--r--crates/enostr/src/relay/subs_debug.rs273L
-rw-r--r--crates/enostr/src/relay/subscription.rs445L
-rw-r--r--crates/enostr/src/relay/test_utils.rs55L
-rw-r--r--crates/enostr/src/relay/transparent.rs576L
-rw-r--r--crates/enostr/src/relay/websocket.rs145L
-rw-r--r--crates/enostr/tests/outbox_integration.rs700L
-rw-r--r--crates/md-stream/Cargo.toml12L
-rw-r--r--crates/md-stream/README.md71L
-rw-r--r--crates/md-stream/src/element.rs106L
-rw-r--r--crates/md-stream/src/inline.rs596L
-rw-r--r--crates/md-stream/src/lib.rs17L
-rw-r--r--crates/md-stream/src/parser.rs880L
-rw-r--r--crates/md-stream/src/partial.rs116L
-rw-r--r--crates/md-stream/src/tests.rs1042L
-rw-r--r--crates/notedeck/Cargo.toml89L
-rw-r--r--crates/notedeck/Clippy.toml3L
-rw-r--r--crates/notedeck/DEVELOPER.md396L
-rw-r--r--crates/notedeck/README.md30L
-rw-r--r--crates/notedeck/src/abbrev.rs20L
-rw-r--r--crates/notedeck/src/account/accounts.rs578L
-rw-r--r--crates/notedeck/src/account/cache.rs134L
-rw-r--r--crates/notedeck/src/account/contacts.rs169L
-rw-r--r--crates/notedeck/src/account/mod.rs12L
-rw-r--r--crates/notedeck/src/account/mute.rs117L
-rw-r--r--crates/notedeck/src/account/relay.rs272L
-rw-r--r--crates/notedeck/src/app.rs542L
-rw-r--r--crates/notedeck/src/args.rs150L
-rw-r--r--crates/notedeck/src/async_loader.rs109L
-rw-r--r--crates/notedeck/src/compact.rs76L
-rw-r--r--crates/notedeck/src/contacts.rs30L
-rw-r--r--crates/notedeck/src/context.rs108L
-rw-r--r--crates/notedeck/src/debouncer.rs35L
-rw-r--r--crates/notedeck/src/error.rs111L
-rw-r--r--crates/notedeck/src/filter.rs383L
-rw-r--r--crates/notedeck/src/fonts.rs210L
-rw-r--r--crates/notedeck/src/frame_history.rs48L
-rw-r--r--crates/notedeck/src/i18n/error.rs24L
-rw-r--r--crates/notedeck/src/i18n/key.rs47L
-rw-r--r--crates/notedeck/src/i18n/manager.rs710L
-rw-r--r--crates/notedeck/src/i18n/mod.rs107L
-rw-r--r--crates/notedeck/src/imgcache.rs419L
-rw-r--r--crates/notedeck/src/jobs/cache.rs210L
-rw-r--r--crates/notedeck/src/jobs/job_pool.rs102L
-rw-r--r--crates/notedeck/src/jobs/media.rs80L
-rw-r--r--crates/notedeck/src/jobs/mod.rs14L
-rw-r--r--crates/notedeck/src/jobs/types.rs100L
-rw-r--r--crates/notedeck/src/lib.rs153L
-rw-r--r--crates/notedeck/src/media/action.rs125L
-rw-r--r--crates/notedeck/src/media/blur.rs267L
-rw-r--r--crates/notedeck/src/media/gif.rs320L
-rw-r--r--crates/notedeck/src/media/images.rs225L
-rw-r--r--crates/notedeck/src/media/imeta.rs1L
-rw-r--r--crates/notedeck/src/media/latest.rs229L
-rw-r--r--crates/notedeck/src/media/mod.rs58L
-rw-r--r--crates/notedeck/src/media/network.rs177L
-rw-r--r--crates/notedeck/src/media/renderable.rs9L
-rw-r--r--crates/notedeck/src/media/static_imgs.rs185L
-rw-r--r--crates/notedeck/src/muted.rs110L
-rw-r--r--crates/notedeck/src/name.rs79L
-rw-r--r--crates/notedeck/src/nav.rs82L
-rw-r--r--crates/notedeck/src/nip05.rs138L
-rw-r--r--crates/notedeck/src/nip51_set.rs241L
-rw-r--r--crates/notedeck/src/note/action.rs84L
-rw-r--r--crates/notedeck/src/note/context.rs130L
-rw-r--r--crates/notedeck/src/note/mod.rs268L
-rw-r--r--crates/notedeck/src/note/publish.rs263L
-rw-r--r--crates/notedeck/src/notecache.rs69L
-rw-r--r--crates/notedeck/src/oneshot_api.rs86L
-rw-r--r--crates/notedeck/src/options.rs32L
-rw-r--r--crates/notedeck/src/persist/app_size.rs30L
-rw-r--r--crates/notedeck/src/persist/mod.rs9L
-rw-r--r--crates/notedeck/src/persist/settings_handler.rs310L
-rw-r--r--crates/notedeck/src/persist/token_handler.rs54L
-rw-r--r--crates/notedeck/src/platform/android.rs136L
-rw-r--r--crates/notedeck/src/platform/file.rs99L
-rw-r--r--crates/notedeck/src/platform/mod.rs49L
-rw-r--r--crates/notedeck/src/profile/context.rs32L
-rw-r--r--crates/notedeck/src/profile/mod.rs5L
-rw-r--r--crates/notedeck/src/profile/url.rs18L
-rw-r--r--crates/notedeck/src/publish.rs174L
-rw-r--r--crates/notedeck/src/relay_debug.rs173L
-rw-r--r--crates/notedeck/src/relayspec.rs89L
-rw-r--r--crates/notedeck/src/remote_api.rs152L
-rw-r--r--crates/notedeck/src/result.rs3L
-rw-r--r--crates/notedeck/src/route.rs142L
-rw-r--r--crates/notedeck/src/scoped_sub_api.rs160L
-rw-r--r--crates/notedeck/src/scoped_sub_owners.rs192L
-rw-r--r--crates/notedeck/src/scoped_sub_state.rs36L
-rw-r--r--crates/notedeck/src/scoped_subs.rs1934L
-rw-r--r--crates/notedeck/src/setup.rs36L
-rw-r--r--crates/notedeck/src/storage/account_storage.rs331L
-rw-r--r--crates/notedeck/src/storage/file_storage.rs278L
-rw-r--r--crates/notedeck/src/storage/keyring_store.rs192L
-rw-r--r--crates/notedeck/src/storage/mod.rs7L
-rw-r--r--crates/notedeck/src/style.rs62L
-rw-r--r--crates/notedeck/src/theme.rs242L
-rw-r--r--crates/notedeck/src/time.rs384L
-rw-r--r--crates/notedeck/src/timecache.rs41L
-rw-r--r--crates/notedeck/src/timed_serializer.rs78L
-rw-r--r--crates/notedeck/src/ui.rs35L
-rw-r--r--crates/notedeck/src/unknowns.rs398L
-rw-r--r--crates/notedeck/src/urls.rs586L
-rw-r--r--crates/notedeck/src/user_account.rs164L
-rw-r--r--crates/notedeck/src/wallet.rs429L
-rw-r--r--crates/notedeck/src/zaps/cache.rs672L
-rw-r--r--crates/notedeck/src/zaps/default_zap.rs125L
-rw-r--r--crates/notedeck/src/zaps/mod.rs49L
-rw-r--r--crates/notedeck/src/zaps/networking.rs516L
-rw-r--r--crates/notedeck/src/zaps/zap.rs279L
-rw-r--r--crates/notedeck_chrome/Cargo.toml130L
-rw-r--r--crates/notedeck_chrome/DEVELOPER.md136L
-rw-r--r--crates/notedeck_chrome/README.md48L
-rw-r--r--crates/notedeck_chrome/android/Makefile13L
-rw-r--r--crates/notedeck_chrome/android/app/build.gradle49L
-rw-r--r--crates/notedeck_chrome/android/app/src/main/AndroidManifest.xml42L
-rw-r--r--crates/notedeck_chrome/android/app/src/main/java/com/damus/notedeck/MainActivity.java249L
-rw-r--r--crates/notedeck_chrome/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml6L
-rw-r--r--crates/notedeck_chrome/android/app/src/main/res/mipmap-hdpi/damusbg.png5231B
-rw-r--r--crates/notedeck_chrome/android/app/src/main/res/mipmap-hdpi/damusfg.png1965B
-rw-r--r--crates/notedeck_chrome/android/app/src/main/res/mipmap-ldpi/damusbg.png1583B
-rw-r--r--crates/notedeck_chrome/android/app/src/main/res/mipmap-ldpi/damusfg.png808B
-rw-r--r--crates/notedeck_chrome/android/app/src/main/res/mipmap-mdpi/damusbg.png2668B
-rw-r--r--crates/notedeck_chrome/android/app/src/main/res/mipmap-mdpi/damusfg.png1161B
-rw-r--r--crates/notedeck_chrome/android/app/src/main/res/mipmap-xhdpi/damusbg.png8567B
-rw-r--r--crates/notedeck_chrome/android/app/src/main/res/mipmap-xhdpi/damusfg.png2917B
-rw-r--r--crates/notedeck_chrome/android/app/src/main/res/mipmap-xxhdpi/damusbg.png17395B
-rw-r--r--crates/notedeck_chrome/android/app/src/main/res/mipmap-xxhdpi/damusfg.png4845B
-rw-r--r--crates/notedeck_chrome/android/app/src/main/res/mipmap-xxxhdpi/damusbg.png28309B
-rw-r--r--crates/notedeck_chrome/android/app/src/main/res/mipmap-xxxhdpi/damusfg.png6956B
-rw-r--r--crates/notedeck_chrome/android/build.gradle9L
-rw-r--r--crates/notedeck_chrome/android/gradle.properties22L
-rw-r--r--crates/notedeck_chrome/android/gradle/wrapper/gradle-wrapper.jar59821B
-rw-r--r--crates/notedeck_chrome/android/gradle/wrapper/gradle-wrapper.properties5L
-rwxr-xr-xcrates/notedeck_chrome/android/gradlew234L
-rw-r--r--crates/notedeck_chrome/android/gradlew.bat89L
-rw-r--r--crates/notedeck_chrome/android/settings.gradle16L
-rw-r--r--crates/notedeck_chrome/src/android.rs159L
-rw-r--r--crates/notedeck_chrome/src/app.rs93L
-rw-r--r--crates/notedeck_chrome/src/chrome.rs1728L
-rw-r--r--crates/notedeck_chrome/src/lib.rs12L
-rw-r--r--crates/notedeck_chrome/src/notedeck.rs255L
-rw-r--r--crates/notedeck_chrome/src/options.rs30L
-rw-r--r--crates/notedeck_chrome/src/preview.rs107L
-rw-r--r--crates/notedeck_chrome/src/setup.rs53L
-rw-r--r--crates/notedeck_clndash/Cargo.toml21L
-rw-r--r--crates/notedeck_clndash/README.md77L
-rw-r--r--crates/notedeck_clndash/src/channels.rs124L
-rw-r--r--crates/notedeck_clndash/src/event.rs77L
-rw-r--r--crates/notedeck_clndash/src/invoice.rs77L
-rw-r--r--crates/notedeck_clndash/src/lib.rs291L
-rw-r--r--crates/notedeck_clndash/src/summary.rs140L
-rw-r--r--crates/notedeck_clndash/src/ui.rs148L
-rw-r--r--crates/notedeck_clndash/src/watch.rs198L
-rw-r--r--crates/notedeck_columns/Cargo.toml77L
-rw-r--r--crates/notedeck_columns/DEVELOPER.md194L
-rw-r--r--crates/notedeck_columns/README.md53L
-rw-r--r--crates/notedeck_columns/build.rs29L
-rw-r--r--crates/notedeck_columns/src/accounts/mod.rs269L
-rw-r--r--crates/notedeck_columns/src/accounts/route.rs95L
-rw-r--r--crates/notedeck_columns/src/actionbar.rs630L
-rw-r--r--crates/notedeck_columns/src/app.rs1053L
-rw-r--r--crates/notedeck_columns/src/app_creation.rs1L
-rw-r--r--crates/notedeck_columns/src/app_style.rs13L
-rw-r--r--crates/notedeck_columns/src/args.rs216L
-rw-r--r--crates/notedeck_columns/src/column.rs279L
-rw-r--r--crates/notedeck_columns/src/deck_state.rs63L
-rw-r--r--crates/notedeck_columns/src/decks.rs500L
-rw-r--r--crates/notedeck_columns/src/draft.rs71L
-rw-r--r--crates/notedeck_columns/src/error.rs34L
-rw-r--r--crates/notedeck_columns/src/key_parsing.rs239L
-rw-r--r--crates/notedeck_columns/src/lib.rs45L
-rw-r--r--crates/notedeck_columns/src/login_manager.rs205L
-rw-r--r--crates/notedeck_columns/src/media_upload.rs397L
-rw-r--r--crates/notedeck_columns/src/nav.rs1314L
-rw-r--r--crates/notedeck_columns/src/onboarding.rs258L
-rw-r--r--crates/notedeck_columns/src/options.rs26L
-rw-r--r--crates/notedeck_columns/src/post.rs1338L
-rw-r--r--crates/notedeck_columns/src/profile.rs311L
-rw-r--r--crates/notedeck_columns/src/repost.rs112L
-rw-r--r--crates/notedeck_columns/src/route.rs861L
-rw-r--r--crates/notedeck_columns/src/scoped_sub_owner_keys.rs41L
-rw-r--r--crates/notedeck_columns/src/search.rs237L
-rw-r--r--crates/notedeck_columns/src/storage/decks.rs430L
-rw-r--r--crates/notedeck_columns/src/storage/mod.rs3L
-rw-r--r--crates/notedeck_columns/src/support.rs147L
-rw-r--r--crates/notedeck_columns/src/test_data.rs90L
-rw-r--r--crates/notedeck_columns/src/test_utils.rs36L
-rw-r--r--crates/notedeck_columns/src/timeline/cache.rs357L
-rw-r--r--crates/notedeck_columns/src/timeline/kind.rs937L
-rw-r--r--crates/notedeck_columns/src/timeline/mod.rs959L
-rw-r--r--crates/notedeck_columns/src/timeline/note_units.rs678L
-rw-r--r--crates/notedeck_columns/src/timeline/route.rs116L
-rw-r--r--crates/notedeck_columns/src/timeline/sub/mod.rs27L
-rw-r--r--crates/notedeck_columns/src/timeline/sub/thread_sub.rs337L
-rw-r--r--crates/notedeck_columns/src/timeline/sub/timeline_sub.rs132L
-rw-r--r--crates/notedeck_columns/src/timeline/thread.rs436L
-rw-r--r--crates/notedeck_columns/src/timeline/timeline_units.rs249L
-rw-r--r--crates/notedeck_columns/src/timeline/unit.rs304L
-rw-r--r--crates/notedeck_columns/src/timeline_loader.rs203L
-rw-r--r--crates/notedeck_columns/src/toolbar.rs114L
-rw-r--r--crates/notedeck_columns/src/ui/account_login_view.rs198L
-rw-r--r--crates/notedeck_columns/src/ui/accounts.rs226L
-rw-r--r--crates/notedeck_columns/src/ui/add_column.rs1418L
-rw-r--r--crates/notedeck_columns/src/ui/column/header.rs739L
-rw-r--r--crates/notedeck_columns/src/ui/column/mod.rs3L
-rw-r--r--crates/notedeck_columns/src/ui/configure_deck.rs357L
-rw-r--r--crates/notedeck_columns/src/ui/edit_deck.rs91L
-rw-r--r--crates/notedeck_columns/src/ui/images.rs1L
-rw-r--r--crates/notedeck_columns/src/ui/mentions_picker.rs127L
-rw-r--r--crates/notedeck_columns/src/ui/mod.rs36L
-rw-r--r--crates/notedeck_columns/src/ui/note/custom_zap.rs444L
-rw-r--r--crates/notedeck_columns/src/ui/note/mod.rs8L
-rw-r--r--crates/notedeck_columns/src/ui/note/post.rs934L
-rw-r--r--crates/notedeck_columns/src/ui/note/quote_repost.rs81L
-rw-r--r--crates/notedeck_columns/src/ui/note/reply.rs184L
-rw-r--r--crates/notedeck_columns/src/ui/onboarding.rs126L
-rw-r--r--crates/notedeck_columns/src/ui/post.rs57L
-rw-r--r--crates/notedeck_columns/src/ui/preview.rs29L
-rw-r--r--crates/notedeck_columns/src/ui/profile/edit.rs260L
-rw-r--r--crates/notedeck_columns/src/ui/profile/menu.rs2L
-rw-r--r--crates/notedeck_columns/src/ui/profile/mod.rs560L
-rw-r--r--crates/notedeck_columns/src/ui/relay.rs391L
-rw-r--r--crates/notedeck_columns/src/ui/report.rs76L
-rw-r--r--crates/notedeck_columns/src/ui/repost.rs177L
-rw-r--r--crates/notedeck_columns/src/ui/search/mod.rs833L
-rw-r--r--crates/notedeck_columns/src/ui/search/state.rs130L
-rw-r--r--crates/notedeck_columns/src/ui/settings.rs893L
-rw-r--r--crates/notedeck_columns/src/ui/side_panel.rs839L
-rw-r--r--crates/notedeck_columns/src/ui/support.rs120L
-rw-r--r--crates/notedeck_columns/src/ui/thread.rs409L
-rw-r--r--crates/notedeck_columns/src/ui/timeline.rs1001L
-rw-r--r--crates/notedeck_columns/src/ui/tos.rs121L
-rw-r--r--crates/notedeck_columns/src/ui/wallet.rs489L
-rw-r--r--crates/notedeck_columns/src/ui/welcome.rs121L
-rw-r--r--crates/notedeck_columns/src/ui/widgets.rs7L
-rw-r--r--crates/notedeck_columns/src/view_state.rs62L
-rw-r--r--crates/notedeck_dashboard/Cargo.toml17L
-rw-r--r--crates/notedeck_dashboard/README.md102L
-rw-r--r--crates/notedeck_dashboard/src/chart.rs254L
-rw-r--r--crates/notedeck_dashboard/src/lib.rs561L
-rw-r--r--crates/notedeck_dashboard/src/sparkline.rs89L
-rw-r--r--crates/notedeck_dashboard/src/ui.rs522L
-rw-r--r--crates/notedeck_dave/Cargo.toml49L
-rw-r--r--crates/notedeck_dave/README.md170L
-rw-r--r--crates/notedeck_dave/docs/README.md9L
-rw-r--r--crates/notedeck_dave/docs/developer-guide.md263L
-rw-r--r--crates/notedeck_dave/docs/tools.md366L
-rw-r--r--crates/notedeck_dave/src/agent_status.rs62L
-rw-r--r--crates/notedeck_dave/src/auto_accept.rs326L
-rw-r--r--crates/notedeck_dave/src/avatar.rs435L
-rw-r--r--crates/notedeck_dave/src/backend/claude.rs755L
-rw-r--r--crates/notedeck_dave/src/backend/codex.rs3388L
-rw-r--r--crates/notedeck_dave/src/backend/codex_protocol.rs284L
-rw-r--r--crates/notedeck_dave/src/backend/mod.rs15L
-rw-r--r--crates/notedeck_dave/src/backend/openai.rs186L
-rw-r--r--crates/notedeck_dave/src/backend/remote.rs43L
-rw-r--r--crates/notedeck_dave/src/backend/session_info.rs46L
-rw-r--r--crates/notedeck_dave/src/backend/shared.rs230L
-rw-r--r--crates/notedeck_dave/src/backend/tool_summary.rs156L
-rw-r--r--crates/notedeck_dave/src/backend/traits.rs111L
-rw-r--r--crates/notedeck_dave/src/bin/notedeck-spawn.rs96L
-rw-r--r--crates/notedeck_dave/src/config.rs363L
-rw-r--r--crates/notedeck_dave/src/cube.rs1L
-rw-r--r--crates/notedeck_dave/src/dave.wgsl155L
-rw-r--r--crates/notedeck_dave/src/events.rs114L
-rw-r--r--crates/notedeck_dave/src/file_update.rs547L
-rw-r--r--crates/notedeck_dave/src/focus_queue.rs628L
-rw-r--r--crates/notedeck_dave/src/git_status.rs251L
-rw-r--r--crates/notedeck_dave/src/ipc.rs246L
-rw-r--r--crates/notedeck_dave/src/lib.rs3485L
-rw-r--r--crates/notedeck_dave/src/mesh.rs94L
-rw-r--r--crates/notedeck_dave/src/messages.rs454L
-rw-r--r--crates/notedeck_dave/src/path_normalize.rs141L
-rw-r--r--crates/notedeck_dave/src/path_utils.rs19L
-rw-r--r--crates/notedeck_dave/src/quaternion.rs83L
-rw-r--r--crates/notedeck_dave/src/session.rs2024L
-rw-r--r--crates/notedeck_dave/src/session_converter.rs72L
-rw-r--r--crates/notedeck_dave/src/session_discovery.rs245L
-rw-r--r--crates/notedeck_dave/src/session_events.rs1397L
-rw-r--r--crates/notedeck_dave/src/session_jsonl.rs469L
-rw-r--r--crates/notedeck_dave/src/session_loader.rs427L
-rw-r--r--crates/notedeck_dave/src/session_reconstructor.rs86L
-rw-r--r--crates/notedeck_dave/src/tools.rs674L
-rw-r--r--crates/notedeck_dave/src/ui/ask_question.rs276L
-rw-r--r--crates/notedeck_dave/src/ui/badge.rs320L
-rw-r--r--crates/notedeck_dave/src/ui/dave.rs1752L
-rw-r--r--crates/notedeck_dave/src/ui/diff.rs226L
-rw-r--r--crates/notedeck_dave/src/ui/directory_picker.rs401L
-rw-r--r--crates/notedeck_dave/src/ui/git_status_ui.rs152L
-rw-r--r--crates/notedeck_dave/src/ui/host_picker.rs143L
-rw-r--r--crates/notedeck_dave/src/ui/keybind_hint.rs76L
-rw-r--r--crates/notedeck_dave/src/ui/keybindings.rs230L
-rw-r--r--crates/notedeck_dave/src/ui/markdown_ui.rs861L
-rw-r--r--crates/notedeck_dave/src/ui/mod.rs961L
-rw-r--r--crates/notedeck_dave/src/ui/pill.rs43L
-rw-r--r--crates/notedeck_dave/src/ui/query_ui.rs59L
-rw-r--r--crates/notedeck_dave/src/ui/scene.rs437L
-rw-r--r--crates/notedeck_dave/src/ui/session_list.rs477L
-rw-r--r--crates/notedeck_dave/src/ui/session_picker.rs315L
-rw-r--r--crates/notedeck_dave/src/ui/settings.rs253L
-rw-r--r--crates/notedeck_dave/src/ui/top_buttons.rs135L
-rw-r--r--crates/notedeck_dave/src/update.rs1086L
-rw-r--r--crates/notedeck_dave/src/vec3.rs38L
-rw-r--r--crates/notedeck_dave/tests/claude_integration.rs556L
-rw-r--r--crates/notedeck_dave/tests/openai_integration.rs174L
-rw-r--r--crates/notedeck_dave/tests/tool_result_integration.rs156L
-rw-r--r--crates/notedeck_messages/Cargo.toml24L
-rw-r--r--crates/notedeck_messages/src/cache/conversation.rs281L
-rw-r--r--crates/notedeck_messages/src/cache/message_store.rs86L
-rw-r--r--crates/notedeck_messages/src/cache/mod.rs13L
-rw-r--r--crates/notedeck_messages/src/cache/registry.rs146L
-rw-r--r--crates/notedeck_messages/src/cache/state.rs40L
-rw-r--r--crates/notedeck_messages/src/convo_renderable.rs194L
-rw-r--r--crates/notedeck_messages/src/lib.rs381L
-rw-r--r--crates/notedeck_messages/src/loader.rs240L
-rw-r--r--crates/notedeck_messages/src/nav.rs237L
-rw-r--r--crates/notedeck_messages/src/nip17/message.rs74L
-rw-r--r--crates/notedeck_messages/src/nip17/mod.rs385L
-rw-r--r--crates/notedeck_messages/src/relay_ensure.rs249L
-rw-r--r--crates/notedeck_messages/src/relay_prefetch.rs62L
-rw-r--r--crates/notedeck_messages/src/ui/convo.rs642L
-rw-r--r--crates/notedeck_messages/src/ui/convo_list.rs311L
-rw-r--r--crates/notedeck_messages/src/ui/create_convo.rs166L
-rw-r--r--crates/notedeck_messages/src/ui/messages.rs174L
-rw-r--r--crates/notedeck_messages/src/ui/mod.rs253L
-rw-r--r--crates/notedeck_messages/src/ui/nav.rs295L
-rw-r--r--crates/notedeck_nostrverse/Cargo.toml20L
-rw-r--r--crates/notedeck_nostrverse/src/convert.rs523L
-rw-r--r--crates/notedeck_nostrverse/src/lib.rs986L
-rw-r--r--crates/notedeck_nostrverse/src/model_cache.rs165L
-rw-r--r--crates/notedeck_nostrverse/src/nostr_events.rs267L
-rw-r--r--crates/notedeck_nostrverse/src/presence.rs387L
-rw-r--r--crates/notedeck_nostrverse/src/room_state.rs386L
-rw-r--r--crates/notedeck_nostrverse/src/room_view.rs896L
-rw-r--r--crates/notedeck_nostrverse/src/subscriptions.rs89L
-rw-r--r--crates/notedeck_nostrverse/src/tilemap.rs348L
-rw-r--r--crates/notedeck_notebook/Cargo.toml9L
-rw-r--r--crates/notedeck_notebook/demo.canvas232L
-rw-r--r--crates/notedeck_notebook/src/lib.rs58L
-rw-r--r--crates/notedeck_notebook/src/ui.rs184L
-rw-r--r--crates/notedeck_ui/Cargo.toml23L
-rw-r--r--crates/notedeck_ui/README.md121L
-rw-r--r--crates/notedeck_ui/docs/README.md205L
-rw-r--r--crates/notedeck_ui/docs/components.md321L
-rw-r--r--crates/notedeck_ui/src/anim.rs331L
-rw-r--r--crates/notedeck_ui/src/app_images.rs286L
-rw-r--r--crates/notedeck_ui/src/colors.rs6L
-rw-r--r--crates/notedeck_ui/src/constants.rs2L
-rw-r--r--crates/notedeck_ui/src/contacts_list.rs293L
-rw-r--r--crates/notedeck_ui/src/context_menu.rs105L
-rw-r--r--crates/notedeck_ui/src/debug.rs24L
-rw-r--r--crates/notedeck_ui/src/header.rs172L
-rw-r--r--crates/notedeck_ui/src/icons.rs365L
-rw-r--r--crates/notedeck_ui/src/images.rs1L
-rw-r--r--crates/notedeck_ui/src/lib.rs117L
-rw-r--r--crates/notedeck_ui/src/media/mod.rs3L
-rw-r--r--crates/notedeck_ui/src/media/spiral.rs232L
-rw-r--r--crates/notedeck_ui/src/media/viewer.rs336L
-rw-r--r--crates/notedeck_ui/src/mention.rs112L
-rw-r--r--crates/notedeck_ui/src/nip51_set.rs478L
-rw-r--r--crates/notedeck_ui/src/note/contents.rs399L
-rw-r--r--crates/notedeck_ui/src/note/context.rs200L
-rw-r--r--crates/notedeck_ui/src/note/media.rs645L
-rw-r--r--crates/notedeck_ui/src/note/mod.rs1165L
-rw-r--r--crates/notedeck_ui/src/note/options.rs78L
-rw-r--r--crates/notedeck_ui/src/note/reply_description.rs367L
-rw-r--r--crates/notedeck_ui/src/profile/context.rs98L
-rw-r--r--crates/notedeck_ui/src/profile/mod.rs169L
-rw-r--r--crates/notedeck_ui/src/profile/name.rs19L
-rw-r--r--crates/notedeck_ui/src/profile/picture.rs210L
-rw-r--r--crates/notedeck_ui/src/profile/preview.rs137L
-rw-r--r--crates/notedeck_ui/src/username.rs105L
-rw-r--r--crates/notedeck_ui/src/widgets.rs148L
-rw-r--r--crates/notedeck_wasm/Cargo.toml16L
-rw-r--r--crates/notedeck_wasm/api/notedeck_api.h36L
-rw-r--r--crates/notedeck_wasm/examples/build_hello_wasm.rs134L
-rw-r--r--crates/notedeck_wasm/examples/hello.c53L
-rw-r--r--crates/notedeck_wasm/src/commands.rs124L
-rw-r--r--crates/notedeck_wasm/src/host_fns.rs175L
-rw-r--r--crates/notedeck_wasm/src/lib.rs465L
-rw-r--r--crates/protoverse/Cargo.toml5L
-rw-r--r--crates/protoverse/src/ast.rs280L
-rw-r--r--crates/protoverse/src/describe.rs205L
-rw-r--r--crates/protoverse/src/lib.rs272L
-rw-r--r--crates/protoverse/src/parser.rs581L
-rw-r--r--crates/protoverse/src/serializer.rs177L
-rw-r--r--crates/protoverse/src/tokenizer.rs230L
-rw-r--r--crates/renderbud/.rustfmt.toml1L
-rw-r--r--crates/renderbud/COPYING1L
-rw-r--r--crates/renderbud/Cargo.lock2743L
-rw-r--r--crates/renderbud/Cargo.toml25L
-rw-r--r--crates/renderbud/Makefile5L
-rw-r--r--crates/renderbud/README.md15L
-rw-r--r--crates/renderbud/assets/kloofendal_43d_clear_1k.hdr1184531B
-rw-r--r--crates/renderbud/assets/venice_sunset_1k.hdr1440400B
-rw-r--r--crates/renderbud/examples/ironwood.rs259L
-rw-r--r--crates/renderbud/src/camera.rs362L
-rw-r--r--crates/renderbud/src/egui.rs73L
-rw-r--r--crates/renderbud/src/grid.wgsl144L
-rw-r--r--crates/renderbud/src/ibl.rs918L
-rw-r--r--crates/renderbud/src/lib.rs1206L
-rw-r--r--crates/renderbud/src/material.rs141L
-rw-r--r--crates/renderbud/src/model.rs632L
-rw-r--r--crates/renderbud/src/outline.wgsl56L
-rw-r--r--crates/renderbud/src/shader.wgsl299L
-rw-r--r--crates/renderbud/src/shadow.wgsl47L
-rw-r--r--crates/renderbud/src/skybox.wgsl61L
-rw-r--r--crates/renderbud/src/texture.rs121L
-rw-r--r--crates/renderbud/src/world.rs924L
-rw-r--r--crates/tokenator/Cargo.toml8L
-rw-r--r--crates/tokenator/DEVELOPER.md211L
-rw-r--r--crates/tokenator/README.md75L
-rw-r--r--crates/tokenator/src/lib.rs266L
-rw-r--r--damus.keystore2726B
-rw-r--r--docs/EULA.md114L
-rw-r--r--docs/UGC_COMPLIANCE_PLAN.md180L
-rw-r--r--docs/ai-conversation-nostr-design.md138L
-rw-r--r--entitlements.plist12L
-rw-r--r--example-android-config.json14L
-rwxr-xr-xpreview5L
-rwxr-xr-xscripts/dev_setup.sh19L
-rwxr-xr-xscripts/export_source_strings.py595L
-rwxr-xr-xscripts/macos_build.sh88L
-rw-r--r--scripts/pre_commit_hook.sh4L
-rwxr-xr-xscripts/svg_to_icns.sh59L
-rw-r--r--scripts/windows-installer.iss18L
-rw-r--r--shell.nix76L