This repository has been archived on 2026-08-16. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Levi Neely 455d9c9190 kate: fix use-after-free crash in setupGhostProvider
m_ghost was parented to the view, so Qt parent-child cleanup could
destroy it when a view was replaced. The raw pointer remained non-null,
causing a double-free on the next viewChanged signal.

Fix by using QPointer<OllieGhostProvider> which auto-nulls on destroy.

Also replace qobject_cast with dynamic_cast for KF5 KTextEditor
interfaces to avoid crashes when qt_metacast accesses uninitialized
KateViewConfig during early view activation.
2026-07-15 11:06:20 +02:00
dolphin dolphin: split desktop file for KF5/KF6 authorization compatibility 2026-07-06 13:37:16 +02:00
gui gui: allow text selection in chat area 2026-07-10 11:43:48 +02:00
kate kate: fix use-after-free crash in setupGhostProvider 2026-07-15 11:06:20 +02:00
krunner use system font sizes instead of hardcoded pixel values 2026-07-06 13:40:40 +02:00
plasmoid plasmoid: fix highlighted session text unreadable on light themes 2026-07-14 15:58:46 +02:00
prompts add gui_brightness tool (percentage-based brightness control) 2026-07-14 11:56:01 +02:00
skills add prompts, skills, tools (D-Bus API versions) 2026-07-07 12:07:39 +02:00
tools add gui_brightness tool (percentage-based brightness control) 2026-07-14 11:56:01 +02:00
tray kate/krunner/tray: add session rename, pick session, CMakeLists-active 2026-07-06 13:19:05 +02:00
.gitignore add .gitignore: exclude __pycache__ 2026-07-14 12:00:43 +02:00
CMakeLists-active.txt kate/krunner/tray: add session rename, pick session, CMakeLists-active 2026-07-06 13:19:05 +02:00
CMakeLists-kf5.txt Add KF5/Qt5 support for Plasma 5.27 2026-07-06 09:18:04 +02:00
CMakeLists.txt feat: ghost-text code completion via InlineNoteProvider 2026-07-14 12:30:18 +02:00
Makefile kate: config page improvements, status bar dedup, default backend/model 2026-07-14 14:53:13 +02:00
README.md remove daemon (moved to ollie-dbus submodule) 2026-07-07 13:02:34 +02:00
test-e2e.sh phase 2: interaction + state queries 2026-07-05 22:46:37 +02:00
test-peers.sh phase 6: peers verified end-to-end 2026-07-05 23:31:48 +02:00

README.md

ollie-kde

KDE-native integration for ollie — thin KDE clients (system tray, Plasmoid, KRunner, Kate plugin, Dolphin menus) that talk to the ollied D-Bus daemon.

Architecture

┌──────────────────────────────────────────────────────────────┐
│                     Plasma Desktop                            │
│  System Tray │ KRunner │ Plasmoid │ Kate Plugin │ Dolphin    │
└──────────────────────────┬───────────────────────────────────┘
                           │ D-Bus (org.ollie.SessionManager)
┌──────────────────────────┴───────────────────────────────────┐
│                  ollied (../dbus)                             │
│              Pure Go │ godbus │ ollie/core                   │
└──────────────────────────────────────────────────────────────┘

The daemon lives in ../dbus/ (the ollie-dbus submodule). KDE components here are pure D-Bus clients — lightweight, stateless, and independently restartable.

Dependencies

  • Qt 6 (Core, DBus, Widgets, Quick) or Qt 5 (Core, DBus, Widgets, Quick, Qml)
  • KDE Frameworks 6 (StatusNotifierItem, Runner, TextEditor, CoreAddons, Config) or KDE Frameworks 5 (Notifications, Runner, TextEditor, CoreAddons, Config, Plasma)
  • Plasma 6 or Plasma 5 (for Plasmoid)
  • ECM (Extra CMake Modules)

KF6/Qt6 is the default. To build against KF5/Qt5:

make kf5

Build

make          # builds tray + KRunner + Kate + Plasmoid via CMake

Outputs:

  • build-cmake/ollie-tray — system tray icon
  • build-cmake/lib/kf6/krunner/krunner_ollie.so — KRunner plugin
  • build-cmake/lib/kf6/ktexteditor/ollie_kate.so — Kate plugin
  • build-cmake/org/ollie/private/ — Plasmoid QML plugin

Install

sudo make install      # all KDE components (KF6)
sudo make kf5-install  # all KDE components (KF5)

# Individual:
make krunner-install
make dolphin-install
make plasmoid-install

The D-Bus daemon (ollied) is installed separately from the ../dbus/ submodule.

Usage

KRunner

  • ollie <prompt> — one-shot: creates session, submits, shows popup with result
  • ollie list — show active sessions
  • ollie kill <id> — terminate a session

Dolphin

Right-click any file or directory:

  • Ask Ollie about this — one-shot prompt with file context, shows result in kdialog
  • Start Ollie session here — creates a persistent session in that directory

Kate

Enable the "Ollie" plugin in Settings → Configure Kate → Plugins. Panel appears on the right with:

  • Session indicator + CWD label
  • New — create session in project/file directory
  • Ask File — send current file path for description
  • Explain — send selected text for explanation
  • Prompt input for free-form messages
  • Live-streaming chat view

Plasmoid

Add the "Ollie" widget to your panel or desktop:

  • Session list with state indicators (○ idle, ● thinking, ⚡ tool call)
  • Live chat view with auto-scroll
  • Inline prompt input
  • Real-time updates via D-Bus signals

System Tray

  • Tooltip: session count
  • Status: passive (no sessions), active (sessions idle), attention (agent working)
  • Right-click: New Session, Sessions submenu (kill each), Stop All, Quit

File Layout

ollie-kde/
├── Makefile                        # CMake orchestration
├── CMakeLists.txt
├── tray/
│   ├── main.cpp
│   └── ollie_tray.h/cpp            # KStatusNotifierItem
├── krunner/
│   ├── metadata.json
│   └── ollie_runner.h/cpp          # KRunner plugin
├── kate/
│   ├── metadata.json
│   └── ollie_kate.h/cpp            # KTextEditor plugin
├── plasmoid/
│   ├── metadata.json
│   ├── contents/ui/main.qml
│   └── plugin/
│       └── olliedbusclient.h/cpp   # QML singleton (D-Bus client)
├── dolphin/
│   ├── ollie-actions.desktop       # Service menu entries
│   ├── ollie-ask                   # One-shot helper script
│   └── ollie-session-here          # Session creation helper
└── test-e2e.sh                     # End-to-end test script