Whats new
=========
- Swipe nav on full screen media
- Made action buttons bigger
- Fix zap button not appearing
- Allow removal of Damoose account
- Profile is now clickable from side bar
- New settings view:
* Resize zoom level
* Clear cache
* Change locale
- Localization support
* German
* Spanish
* French
* Chinese
* Thai
Log
---
Fernando López Guevara (3):
feat(full-screen-media): add swipe navigation
feat(settings): add settings view
fix(columns): prevent crash when switching to account with no columns
Terry Yiu (9):
Add Fluent-based localization manager and add script to export source strings for translations
Add French, German, Simplified Chinese, and Traditional Chinese translations
Add Spanish (Latin America and Spain) translations
Add Thai translations
Add localization documentation to notedeck DEVELOPER.md
Clean up time_ago_since, add tests, and internationalize strings
Fix export_source_strings.py to adjust for tr! and tr_plural! macro signature changes
Internationalize user-facing strings and export them for translations
Update Chinese, French, and German translations
William Casarin (15):
args: add --locale option
debug: add startup query debug log
fix missing zap button
fix one missing home string
gitignore: remove cache
i18n: always have en-XA available
i18n: disable bidi for tests
i18n: disable broken tests for now
i18n: make localization context non-global
media/trust: always show if its yourself
ripgrep: add ignore file for ftl files
settings: fix route to relay
ui/note: make buttons larger
ui/note: small refactor to use returns instead of break
wallet: remove unused flag in note context
kernelkind (14):
add ChromePanelAction::Profile & use for pfp
add new Accounts button to chrome sidebar
allow removal of Damoose account
appease clippy
bugfix: properly sub to new selected acc after removal of selected
bugfix: unsubscribe all decks when log out account
bugfix: unsubscribe from timelines on deck deletion
expose `AccountCache::falback`
fix: sometimes most recent contacts list wasn't used
make `UserAccount` cloneable
move select account logic to own method
use `NwcError` instead of nwc::Error
use saturating sub
name added removed commits
kernelkind <kernelkind@gmail.com> +328 -50 14
Fernando López Guevara <fernando.lguevara@gmail.com> +802 -36 3
William Casarin <jb55@jb55.com> +1603 -1297 15
Terry Yiu <git@tyiu.xyz> +7547 -1024 9
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

