diff --git a/gtk/CLAUDE.md b/gtk/CLAUDE.md deleted file mode 100644 index 99ff308..0000000 --- a/gtk/CLAUDE.md +++ /dev/null @@ -1,58 +0,0 @@ -# CLAUDE.md - -This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. - -## Build Commands - -```bash -# Setup build directory (first time) -meson setup builddir - -# Build project -meson compile -C builddir - -# Clean rebuild -rm -rf builddir && meson setup builddir && meson compile -C builddir - -# Run the application -./builddir/src/kordophone -``` - -## Architecture Overview - -Kordophone is a GTK4/Libadwaita messaging client written in Vala that acts as a frontend to a separate DBus daemon (`kordophonecd`). The application follows a clean separation of concerns: - -### Core Architecture -- **DBus Client**: This GTK app connects to `net.buzzert.kordophonecd` daemon over DBus -- **Split UI**: Main window has conversation list sidebar + transcript view -- **Custom Rendering**: Transcript uses Gtk.DrawingArea with snapshot API for performance -- **Repository Pattern**: All data operations go through `Repository` singleton which proxies to DBus service - -### Key Components -- **Application** (`src/application/`): App lifecycle, main window, preferences -- **Service** (`src/service/`): DBus integration, data repository, settings management -- **Conversation List** (`src/conversation-list/`): Sidebar with conversation list and search -- **Transcript** (`src/transcript/`): Message display with pluggable bubble layouts -- **Models** (`src/models/`): Data structures (Conversation, Message, Attachment) - -### DBus Interface -The app depends on a running `kordophonecd` daemon that provides: -- **Repository interface**: Conversation/message CRUD, real-time sync via signals -- **Settings interface**: Server configuration, user credentials - -### Development Notes -- Vala compiles to C, build artifacts in `builddir/` -- DBus interfaces auto-generated from XML: run `src/service/interface/generate.sh` -- Resources bundled via GResource (`src/resources/kordophone.gresource.xml`) -- Custom CSS styling in `src/resources/style.css` -- Application ID: `net.buzzert.kordophone2` - -### Message Layout System -Transcript view uses a pluggable layout system in `src/transcript/layouts/`: -- `BubbleLayout`: Base class for message bubbles -- `TextBubbleLayout`: Text messages -- `ImageBubbleLayout`: Image attachments -- `DateItemLayout`: Date separators -- `SenderAnnotationLayout`: Sender labels - -All layouts render to Cairo context via Gtk snapshot API for efficient scrolling performance. \ No newline at end of file diff --git a/gtk/dist/rpm/kordophone.spec b/gtk/dist/rpm/kordophone.spec index 89cd731..3c1b280 100644 --- a/gtk/dist/rpm/kordophone.spec +++ b/gtk/dist/rpm/kordophone.spec @@ -4,7 +4,8 @@ Release: 1%{?dist} Summary: GTK4/Libadwaita client for Kordophone License: GPL -URL: https://git.sr.ht/~buzzert/kordophone-2-gtk +URL: https://code.buzzert.dev/buzzert/Kordophone +Source0: https://code.buzzert.dev/buzzert/Kordophone/archive/master.tar.gz BuildRequires: meson >= 0.56.0 BuildRequires: vala @@ -26,14 +27,9 @@ Requires: kordophoned >= 1.0.0 %description A GTK4/Libadwaita Linux Client for the Kordophone client daemon. -%prep -if [ ! -d .git ]; then - git clone --bare https://git.sr.ht/~buzzert/kordophone-2-gtk .git - git config --local --bool core.bare false - git reset --hard -fi - %build +pwd +cd gtk %meson %meson_build