⚠️ WARNING: This entire feature was "vibe coded" by an AI. No humans wrote this code. It was generated by Qwen Code in a single session. Use at your own risk.
1. Text/UI Zoom (addresses #978)
Keyboard shortcuts:
Ctrl++- Zoom in (increase UI by 10%)Ctrl+-- Zoom out (decrease UI by 10%)Ctrl+0- Reset to default (100%)- Drag sidebar edge - Resize sidebar width (grab the right edge of conversation list)
What gets scaled:
- ✅ All text (messages, input, labels, timestamps)
- ✅ Message padding and spacing
- ✅ Avatar sizes (conversation view + sidebar)
- ✅ File attachment boxes
- ✅ Reaction buttons (2x larger for easier clicking)
- ✅ Call widgets
- ✅ Quote blocks
- ✅ All margins and borders
- ✅ Sidebar conversation rows
- ✅ Unread count badges
Avatar sizes: Reduced by 20% for better visual balance.
Font size persists across restarts and only affects Dino (not system-wide).
Visual indicators showing message delivery and read status:
| Icon | Status | Description |
|---|---|---|
| 🕐 Clock | Sending… | Message is being sent to server |
| ✓ Single tick | Sent | Message sent to server |
| ✓✓ Double tick | Delivered | Recipient's client received it |
| ✓✓ Double tick | Read | Recipient opened/read the message (hover to see "Read" tooltip) |
| Error | Failed to send |
"Read up to this point" bar appears at the bottom of the conversation (between last message and compose bar) when messages have been read by the recipient.
Checkmarks appear directly after each message text, properly aligned even for merged (stacked) messages.
Note: Delivered and Read both show double-tick icon - hover over the icon to see the tooltip distinction ("Delivered" vs "Read").
Requirements: Both your client and the recipient's client must support XEP-0333 (Dino, Gajim, Conversations on Android). Works in 1-on-1 chats only (not group chats).
- Fixed: Mouse hover now correctly matches visual message position at all zoom levels
- Fixed: Reaction emoji buttons appear below messages (not inline)
- Fixed: Merged messages properly aligned without extra indentation
- Technical: Changed from CSS
calc()to GTKmargin_*properties for accurate hit detection
The official Dino project has issue #978 requesting this feature since 2021, but it hasn't been implemented. This fork demonstrates what AI can do when asked to implement a feature.
- This is experimental code
- No guarantees it won't crash
- No guarantees it's memory-safe
- No guarantees it follows project conventions
- May break with future updates
- Zero human code review
This is a proof of concept showing AI-assisted development. For production use, please use official Dino releases.
sudo apt-get install -y meson ninja-build valac \
libgtk-4-dev libadwaita-1-dev libgee-0.8-dev libgpgme-dev libgcrypt20-dev \
libsqlite3-dev libqrencode-dev libnice-dev libomemo-c-dev libsrtp2-dev \
libsoup-3.0-dev libwebrtc-audio-processing-dev gettext libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev libgnutls28-dev libxml2-dev \
libprotobuf-dev protobuf-compiler-grpcmeson setup build --prefix=$HOME/.local
meson compile -C build
./build/main/dinosudo meson install -C build
sudo ldconfig- Launch Dino
- Open any conversation
- Press
Ctrl++to zoom in - Press
Ctrl+-to zoom out - Press
Ctrl+0to reset
Font size is saved automatically and persists across restarts.
- ZOOM_FEATURE_DOCUMENTATION.md - Complete technical documentation
- PUBLISHING.md - Publishing information and disclaimers
This fork modifies the following files from the original Dino source:
| File | Changes |
|---|---|
libdino/src/entity/settings.vala |
Added font_size setting |
main/src/ui/conversation_content_view/message_widget.vala |
Apply font scaling to message text |
main/src/ui/chat_input/chat_text_view.vala |
Apply font scaling to input area |
main/src/ui/conversation_content_view/conversation_view.vala |
UI scaling; fixed hover detection with GTK allocation |
main/src/ui/conversation_content_view/conversation_item_skeleton.vala |
GTK margin-based scaling; fixed reaction positioning |
main/src/ui/conversation_selector/conversation_selector.vala |
Apply UI scaling to sidebar |
main/src/ui/conversation_selector/conversation_selector_row.vala |
Apply per-row avatar scaling |
main/src/ui/conversation_view_controller.vala |
Add keyboard shortcuts and coordinate scaling |
main/src/ui/main_window.vala |
Add resizable sidebar (drag right edge) |
main/data/style.css |
Removed conflicting CSS padding/margin rules |
- No graphical settings UI (keyboard shortcuts only)
- Font size is global (not per-conversation)
- Minimal testing performed
- May have undiscovered bugs
- Website: https://dino.im/
- GitHub: https://github.com/dino/dino
- License: GPL-3.0
This fork is for experimental/educational purposes only. For a stable XMPP client, please use the official Dino release.
Vibe Coded with ❤️ by Qwen Code (AI Assistant)