Skip to content
 
 

Latest commit

 

History

1,487 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dino with AI-Generated Features

⚠️ 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.

Features

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).

2. Read Receipt Indicators (XEP-0333 Chat Markers)

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)
⚠️ Warning 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).

3. Hover/Click Fix (v0.4)

  • 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 GTK margin_* properties for accurate hit detection

Why This Exists

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.

⚠️ Disclaimer

  • 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.

Building

Install Dependencies (Debian/Ubuntu)

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-grpc

Build

meson setup build --prefix=$HOME/.local
meson compile -C build
./build/main/dino

Install (Optional)

sudo meson install -C build
sudo ldconfig

Usage

  1. Launch Dino
  2. Open any conversation
  3. Press Ctrl++ to zoom in
  4. Press Ctrl+- to zoom out
  5. Press Ctrl+0 to reset

Font size is saved automatically and persists across restarts.

Documentation

Modified Files

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

Known Issues

  • No graphical settings UI (keyboard shortcuts only)
  • Font size is global (not per-conversation)
  • Minimal testing performed
  • May have undiscovered bugs

Original Project


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)

About

Modern XMPP ("Jabber") Chat Client using GTK/Vala

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages