What's new
==========
- New notifications indiciator dot on toolbar
- Fixed mentions/tagging
- Gave dave a new swarm look
- Persist some more settings
- Allow sorting thread replies newest first in options
- Show full created date format on selected notes
- Show client name on selected notes
- Higher quality media
- Increase media viewer transition animation
- Fix some ui glitches when replying
- Fix gpu crash on adrendo devices (some samsung galaxy tablets)
Fernando López Guevara (14):
feat(note): show full created date format on selected notes
feat(notedeck): add cross-platform URI opener
feat(settings): allow sorting thread replies newest first
feat(settings): persist settings to storage
feat(settings): show note full date
fix(media): add spacing
fix(note-content): avoid empty text blocks
fix(settings): use localization
refactor(settings): add settings sections methods
settings: use timed serializer, handle zoom properly, use custom text style for note body font size, added font size slider, added preview note
update i18n comments for source client options
Update crates/notedeck/src/persist/settings_handler.rs
Terry Yiu (2):
Import Spanish translations
Fix localization issues and export strings for translation
William Casarin (31):
add NotedeckOptions and feature flags, add notebook feature
android: fix build
chrome: remove duplication in app setup
columns: clean up flags, refactor content rendering
columns: fix double reference
dave: switch to use standard vertex/index buffers
evolve dave into a swarm
init notebook
lint: fix format issue
make clippy happy
media: less blurry media
mediaviewer: decrease transition anim from 500ms to 300ms
note/ui: fix reply line when replying in narrow mode
note: small doc fix
note: turn off full date view for previews
notebook: draw edges and arrows
notebook: fix heights of nodes
notebook: fix node sizes
notebook: move ui code into its own file
notebook: remove redundant closure
perf: a few micro optimizations
post: set client tag to Damus Android on android
refactor: collapse client label settings; drop CLI/settings toggles
remove explicit loop continue
ui/note: fix extra padding in block renderer
ui/note: fix indented actionbar in non-wide mode
ui/note: fix reply description item spacing
ui/note: fix width instabilities because of spacing_mut
ui/note: slightly more spacing between blocks
ui: keep original design on non-narrow
kernelkind (12):
TMP: update egui for better TextInputState handling
add `NotesFreshness` to `TimelineTab`
chrome: method to find whether there are unseen notifications
extract notifications filter to own method
fix scroll regression
insert space after mention selection
mention-picker: re-add spacing from inner_margin
mentions: don't lose focus after select mention
paint unseen indicator
rename `SearchResultsView` => `MentionPickerView`
set fresh from `TimelineCache`
use unseen notification indicator
Signed-off-by: William Casarin <jb55@jb55.com>
Notedeck
A modern, multiplatform Nostr client built with Rust. Notedeck provides a feature-rich experience for interacting with the Nostr protocol on both desktop and Android platforms.
✨ Features
- Multi-column Layout: TweetDeck-style interface for viewing different Nostr content
- Dave AI Assistant: AI-powered assistant that can search and analyze Nostr content
- Profile Management: View and edit Nostr profiles
- Media Support: View and upload images with GIF support
- Lightning Integration: Zap (tip) content creators with Bitcoin Lightning
- Cross-platform: Works on desktop (Linux, macOS, Windows) and Android
📱 Mobile Support
Notedeck runs smoothly on Android devices with a responsive interface:
🏗️ Project Structure
notedeck
├── crates
│ ├── notedeck - Core library with shared functionality
│ ├── notedeck_chrome - UI container and navigation framework
│ ├── notedeck_columns - TweetDeck-style column interface
│ ├── notedeck_dave - AI assistant for Nostr
│ ├── notedeck_ui - Shared UI components
│ └── tokenator - String token parsing library
🚀 Getting Started
Desktop
To run on desktop platforms:
# Development build
cargo run -- --debug
# Release build
cargo run --release
Android
For Android devices:
# Install required target
rustup target add aarch64-linux-android
# Build and install on connected device
cargo apk run --release -p notedeck_chrome
Android Emulator
- Install Android Studio
- Open 'Device Manager' and create a device with API level
34and ABIarm64-v8a - Start the emulator
- Run:
cargo apk run --release -p notedeck_chrome
🧪 Development
Android Configuration
Customize Android views for testing:
- Copy
example-android-config.jsontoandroid-config.json - Run
make push-android-configto deploy to your device
Setting Up Developer Environment
./scripts/dev_setup.sh
This adds pre-commit hooks for proper code formatting.
📚 Documentation
Detailed developer documentation is available in each crate:
🔄 Release Status
Notedeck is currently in BETA status. For the latest changes, see the CHANGELOG.
Future
Notedeck allows for app development built on top of the performant, built specifically for nostr database nostrdb. An example app written on notedeck is Dave
Building on notedeck dev documentation is also on the roadmap.
🤝 Contributing
Developers
Contributions are welcome! Please check the developer documentation and follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Translators
Help us bring Notedeck to non-English speakers!
Request to join the Notedeck translations team through Crowdin.
If you do not have a Crowdin account, sign up for one. If you do not see your language, please request it in Crowdin.
🔒 Security
For security issues, please refer to our Security Policy.
📄 License
This project is licensed under the GPL - see license information in individual crates.
👥 Authors
- William Casarin jb55@jb55.com
- kernelkind kernelkind@gmail.com
- And contributors

