mirror of
https://github.com/status-im/status-app.git
synced 2026-08-27 07:01:14 +00:00
feat/threads-poc
Fixes #21257 Implements threaded messages in community channels with UI integration, gated behind a feature flag ### Features - **Create thread** — right-click any message → "Create Thread" opens a thread rooted at that message as a sub-chat - **Open thread** — if a thread already exists the action shows "Open Thread" instead - **Auto-display threads** — threads are automatically listed in chat when loaded, positioned directly below their parent chat - **Parallel to replies** — threads are independent of the existing reply feature ### Architecture - Reuses `sendMessage` with a `threadId` parameter; no duplicate send variants - Thread messages are lazy-loaded per chat on first open and cached in memory - `hasThread` model role derived from the cache drives the Open/Create label - `threadId == parentMessageId` (validated against status-go behaviour), so no separate ID mapping is needed - Unified `MessageByChatID` API across all layers (Go → Nim → RPC) with optional `threadId` parameter - Thread message routing fixed: base chat only shows messages with `threadId IS NULL OR threadId = ''` - `isThread` property on ChatItem enables proper list positioning and future UI styling ### Implementation Details - Go layer: `MessageByChatID(chatID, threadID, ...)` handles both base and thread message fetching - Nim layer: Single `fetchMessages` function with optional threadId parameter - UI layer: Threads auto-populate in chat list via `SIGNAL_CHAT_THREADS_LOADED` signal - Threading: No separate reactions fetch for thread messages (only base chat reactions)
Status App
The Status App is a privacy-first, decentralised messenger built with Nim and Qt/QML. It offers end-to-end encrypted messaging, community chats, and Ethereum wallet integration — all without requiring a phone number or email.
📑 Table of Contents
🚀 Download & Install
Get the latest release for your platform:
- Android: Play Store
- Apple: App Store
- Windows: Download EXE
- Linux: Download Tarball
- macOS: Download DMG
Supported Versions
| Platform | Supported versions | Notes |
|---|---|---|
| Windows | Intel chip (no native Windows ARM build yet) | Windows 11 is used for testing |
| Linux | Continuous effort to support the lowest Ubuntu LTS version. | Actively tested on Ubuntu 22.04; should run on most Linux flavours using glibc 2.31 or newer |
| macOS | ARM chip | MacOS latest version |
| Android | 9 to 16 | |
| iOS | 17 and higher |
Windows
- Download the
.exefile. - Run the
.exeinstaller. - Launch the installed app 🎉
Linux
- Download the
.tar.gzfile. - Extract the tarball file (replace
*with the version)cd ~/Downloads tar xvf StatusIm-Desktop-*.tar.gz - Optionally, verify the Status app GPG signature.
- Go to the directory where it extracted and double-click the AppImage file 🎉
macOS
- Download the
.dmgfile. - Open it and drag
Status.appto the Applications folder. - Open the Applications folder and double-click the Status icon 🎉
🛠️ Build from Source
To build Status from source, follow the instructions specific to your operating system. Detailed build instructions are available in the official documentation:
🤝 Contributing
We welcome contributions from the community! To get started:
- Read our Contributing Guidelines.
- Check out good first issues to get involved.
- Join the #feedback-desktop and #feedback-mobile channels on Status.
📚 Documentation
- 📘 User Help documentation
- 🛠️ Installation Guide
- 🏗️ Building Desktop from Source
- 📱 Building Mobile from Source
- 🏛️ Architecture Docs
- 🤝 Contributing Guide
- 💡 You have an idea for a cool feature or improvement?
- 🗺️ Status Roadmap
For more information, visit our official website or explore our GitHub organization.
This project is tested with BrowserStack.
Languages
QML
49.5%
Nim
21.2%
JavaScript
11.1%
Python
11%
C++
3.7%
Other
3.2%









