Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
96 commits
Select commit Hold shift + click to select a range
b30dd8e
Linux: put the island at the top on GNOME and keep it through Super+D
betodoescher Oct 2, 2026
353633a
linux: auto-close the island reliably on Wayland layer-shell
4rchila Oct 3, 2026
32484d4
Windows: stop Vite from watching target/ (EBUSY crash on tauri dev)
Andrev-91 Oct 4, 2026
9fc0ad4
feat(windows): answer Claude Code's questions from the island
PythonTilk Oct 4, 2026
83b3087
Linux: pin the layer-shell island to its display
chuxclay Oct 5, 2026
4207be9
Settings: choose which display the island lives on
chuxclay Oct 5, 2026
5b06e1c
Island: ignore clicks on a fresh permission card for 600 ms
chuxclay Oct 5, 2026
0bd0eb8
Settings: name the Secret Service as the key store on Linux
chuxclay Oct 5, 2026
5f7dfac
Windows: take file drops from every Explorer view, and make Cancel work
KauaDc Oct 5, 2026
0b700de
fix(windows): the step ticker no longer stops at a session's twentiet…
PythonTilk Oct 6, 2026
777d06f
feat(windows): support Gemini CLI hooks and session island view
Totopo27 Oct 7, 2026
c7db6ab
Linux: Arch Linux package (PKGBUILD, desktop entry, README)
FabioLukas123 Oct 7, 2026
c4e330f
Windows/Linux: GitHub pulse and contribution pollers
claude Oct 7, 2026
8d47969
Windows/Linux: record a weekly recap history from hook events
claude Oct 7, 2026
0f4edf1
Windows/Linux: GitHub pulse card, alerts and contribution grid
claude Oct 7, 2026
c2cfbca
Windows/Linux settings: say what the GitHub token needs
claude Oct 7, 2026
3bb9657
Windows README: the GitHub pulse, alerts and contribution grid
claude Oct 7, 2026
4b0a411
Windows: port the live diff engine (DiffEngine.swift) to TypeScript
claude Oct 7, 2026
fbc4605
Windows relay: forward a finished edit's text whole for the live diff
claude Oct 7, 2026
122e130
Windows: live diff in the ticker, the diff card, and Claude's final line
claude Oct 7, 2026
b93bfa4
Windows README: live diff and the final line
claude Oct 7, 2026
23c09b9
Mochi's outfits, drawn in code
claude Oct 7, 2026
396cf29
Remember Mochi's outfit in the preferences
claude Oct 7, 2026
d02f820
Greeting v2: drop in, bounce, slide aside and wave
claude Oct 7, 2026
c97dec1
Wardrobe view: right-click Mochi, or Wardrobe… in the tray
claude Oct 7, 2026
2e34a5e
README: wardrobe, tray entry, 29 sounds
claude Oct 7, 2026
deab632
Windows/Linux: register global shortcuts from Rust
claude Oct 7, 2026
2363550
Windows/Linux: shortcut logic and what the island does with them
claude Oct 7, 2026
21a8a86
Windows/Linux: Settings → Shortcuts
claude Oct 7, 2026
239155c
Windows/Linux README: keyboard shortcuts
claude Oct 7, 2026
43c13ed
Windows/Linux: weekly recap aggregation in local time
claude Oct 7, 2026
9806b66
Windows/Linux: weekly recap card, shared image and settings
claude Oct 7, 2026
dd16085
Windows README: the weekly recap, and how it differs from the Mac
claude Oct 7, 2026
b2ad213
Chat: one conversation for every provider, full Claude answers, first…
claude Oct 7, 2026
cab5e74
Chat: Google AI, OpenAI and OpenRouter as chat providers
claude Oct 7, 2026
6fd7743
Chat: local models through Ollama, LM Studio or any OpenAI-compatible…
claude Oct 7, 2026
5b4ee61
Chat: Markdown in the answers, with a copy button on code blocks
claude Oct 7, 2026
741aab2
Chat view: switch provider and model by clicking the model name
claude Oct 7, 2026
e7a4831
Settings: Chat providers and Local models sections
claude Oct 7, 2026
fde3e31
README: chat providers, local models, Markdown and the Anthropic gateway
claude Oct 7, 2026
c8b91de
Merge #202: Windows: stop Vite from watching target/ (EBUSY crash on …
claude Oct 7, 2026
262b865
Merge #265: fix(windows): the step ticker no longer stops at a sessio…
claude Oct 7, 2026
440da45
Merge #240: Windows: take file drops from every Explorer view, and ma…
claude Oct 7, 2026
181a358
Merge #160: Linux: auto-close the island reliably on Wayland layer-sh…
claude Oct 7, 2026
e1a1070
Merge #149: Linux: put the island at the top on GNOME and keep it thr…
claude Oct 7, 2026
8761b36
Merge #227: Linux: pin the island to its display on layer-shell (Hypr…
claude Oct 7, 2026
f6065db
Merge #299: Linux: Arch Linux package (PKGBUILD)
claude Oct 7, 2026
8efad4b
Fixes on top of #160, #149, #227, #299
claude Oct 7, 2026
452df97
File drop (#240): copy only paths a real drop delivered
claude Oct 7, 2026
5c3169c
Windows: keep ticker steps on their own line
shakibbinkabir Oct 4, 2026
af71d74
Merge #216: feat(windows): answer Claude Code's questions from the is…
claude Oct 7, 2026
771ea3b
Questions (#216): check answers against the questions, lists for mult…
claude Oct 7, 2026
e190f1f
Merge #278: feat(windows): support Gemini CLI hooks and session islan…
claude Oct 7, 2026
62e43c6
Windows: the island follows the auto-close delay live (Mac #25)
claude Oct 7, 2026
1190fab
Plan usage relay: coucou-hook --statusline and its installer
claude Oct 7, 2026
c02923e
Plan usage pills in the island: Claude and Codex, as on the Mac
claude Oct 7, 2026
a40ec1d
Agents: one hardened writer and one settings section for every agent
claude Oct 7, 2026
a8a1a57
Windows/Linux: tell whether each hook-driven agent is connected (Mac …
claude Oct 7, 2026
ea861d5
Relay: every agent's events onto one set, and each agent's own reply
claude Oct 7, 2026
a9c57d7
Windows/Linux: the pill catalog, your main tool and declared pills (M…
claude Oct 7, 2026
ec56e2a
Windows/Linux: the permission card waits for you, and can be folded a…
claude Oct 7, 2026
7deafb1
Island: agents' approvals on their own pill, and the wording fixed
claude Oct 7, 2026
600fe70
Antigravity: install its hooks from Settings, never auto-allow
claude Oct 7, 2026
092bb6d
Cursor Agent: install its hooks from Settings, one pill, no auto-allow
claude Oct 7, 2026
c68ed17
Codex: install its hooks from Settings, Allow / Deny from the island
claude Oct 7, 2026
7262361
Relay: tag Claude Desktop sessions and Claude Code in Cursor (Mac #19…
claude Oct 7, 2026
e68f837
Copilot CLI and Muse Code: install from Settings, approvals from the …
claude Oct 7, 2026
c90d30b
Windows: Open terminal brings the session's own window forward; Claud…
claude Oct 7, 2026
dde859e
Desktop Mochi: the pure logic and his life cycle, with tests
claude Oct 7, 2026
64bb85e
Desktop Mochi: his own window, placed and polled from Rust
claude Oct 7, 2026
b52bbe3
Desktop Mochi: the page that draws him
claude Oct 7, 2026
7a8d5e6
Desktop Mochi: drag him out of the island; alerts bring him back
claude Oct 7, 2026
27d9814
README: Mochi on the desktop
claude Oct 7, 2026
a722018
Windows README: active pills, waiting cards, Open terminal, what stay…
claude Oct 7, 2026
a2aa656
OpenCode, Amp and Hermes: plugins that call the relay directly
claude Oct 7, 2026
3c3e47b
README: supported agents on Windows and Linux
claude Oct 7, 2026
4fa9201
Merge port/agents: one hardened config writer, Settings → Agents, rel…
claude Oct 7, 2026
1d5f6bb
Merge port/pills-approvals: pill catalog, main and declared pills, on…
claude Oct 7, 2026
7fd2570
Merge port/plan-usage: coucou-hook --statusline, plan pills in the he…
claude Oct 7, 2026
5728a27
Merge port/chat-providers: Google AI, OpenAI, OpenRouter and local mo…
claude Oct 7, 2026
03f8f13
Merge port/live-diff: live diff in the ticker, the diff card, and the…
claude Oct 7, 2026
1066c7f
Merge port/github-pulse: GitHub pulse card, alerts and contribution grid
claude Oct 7, 2026
642a489
Merge port/shortcuts: global shortcuts, in-island keys and Settings →…
claude Oct 7, 2026
7be8f59
Merge port/weekly-recap: weekly recap history, card, shared image and…
claude Oct 7, 2026
7fb1541
Merge port/desktop-mochi: the wardrobe, greeting v2 and Mochi on the …
claude Oct 7, 2026
77a7098
i18n core: the Mac's strings, a key-based t() for the webviews and Rust
claude Oct 7, 2026
912de3e
Settings → General → Language, switched in place; the settings window…
claude Oct 7, 2026
66c774f
The island in ten languages: views, upload canvas, recap image, Arabi…
claude Oct 7, 2026
e7760df
Rust: errors, notes and labels shown to the user in the interface lan…
claude Oct 7, 2026
8b9be41
i18n tests and README: languages, the tables, Linux fonts
claude Oct 7, 2026
4802dd8
Merge port/i18n: Coucou in 10 languages on Windows and Linux
claude Oct 7, 2026
5bddaec
Fixes from an independent review of the catch-up
claude Oct 7, 2026
50af35d
Windows and Linux 0.2.0: version, changelog, README
claude Oct 7, 2026
6ce48e0
i18n test: read sources the same with CRLF line endings (Windows chec…
claude Oct 7, 2026
d3cd2cf
Windows build warning, and source-map-js 1.2.2 (GHSA-68fv-2mgg-jv7q)
claude Oct 7, 2026
a388d1d
Windows downloads are back: Microsoft removed the Defender detection
claude Oct 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,10 @@ on:
permissions:
contents: read

# Off until a first build has been checked by hand: run this workflow manually,
# download the Coucou-Linux artifact, try it, then set this to 'true' and push a
# linux-v* tag.
# On: a linux-v* tag publishes. Run this workflow by hand first and try the
# Coucou-Linux artifact; set this to 'false' to build tags without publishing.
env:
PUBLISH: 'false'
PUBLISH: 'true'

jobs:
build:
Expand Down
11 changes: 6 additions & 5 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,13 @@ on:
permissions:
contents: write

# Publishing is paused: Defender flags the unsigned installer as
# Trojan:Win32/Wacatac.H!ml (false positive, reported to Microsoft). Tags still
# build, to check the app compiles, but nothing is uploaded. Set this back to
# 'true' once the installer is signed or the detection is cleared.
# Publishing is on: Microsoft reviewed the Defender false positive
# (Trojan:Win32/Wacatac.H!ml) and removed the detection. Before pushing a
# windows-v* tag, run this workflow by hand and scan the artifacts with Defender:
# a new unsigned build can still trip its machine-learning model. Set this to
# 'false' to build tags without publishing.
env:
PUBLISH: 'false'
PUBLISH: 'true'

jobs:
build:
Expand Down
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
# Changelog

## Windows and Linux 0.2.0 — unreleased

The Windows and Linux app catches up with the Mac, from 0.1.1 to 0.2.1 — everything except Apple Music and the iPhone, which depend on macOS and iCloud.

- **Agents**: Codex, GitHub Copilot CLI and Muse Code sessions with Allow / Deny in the island; Gemini CLI, Antigravity, Cursor Agent, OpenCode, Amp and Hermes sessions on their own pills; Claude Code sessions from the Claude app on Windows. Install them all from Settings → Agents, which shows the diff and takes a dated backup before writing — one hardened writer for every agent's config (#278 by @Totopo27, #298 by @kobaltgit, #231 by @BeyondBirthday07)
- **Questions**: answer Claude Code's multiple-choice questions from the island; answers are checked against the questions asked, and a question answered in the terminal takes the card down (#216 by @PythonTilk)
- **The permission card** comes up for every agent, brings its pill forward, can be folded without answering, and never decides on its own
- **Chat**: Anthropic, Google AI, OpenAI and OpenRouter, switchable by clicking the model name; local models through Ollama, LM Studio or any OpenAI-compatible server, streamed, thinking hidden; Markdown answers with a copy button; full answers; your first name in the greeting; `COUCOU_ANTHROPIC_BASE_URL` for a gateway, https only (#161 by @4rchila, #166 by @AlphaIsYour, #173 by @AinzDerErste, #206 by @Totopo27)
- **Plan usage**: Claude's 5-hour and weekly limits and Codex's, in the island header (#171 by @AinzDerErste)
- **Live diff**: each file Claude edits shows in the ticker with its +N −M, and a click opens the diff; the finished card shows Claude's final message
- **GitHub**: your pull requests with their CI, reviews waiting for you, the CI of your default branches, alerts when CI turns red or green, and your contribution grid
- **Mochi**: the wardrobe and seasonal outfits, the new greeting and its sound, and Mochi on the desktop (Windows, X11 and layer-shell compositors)
- **Keyboard shortcuts** from anywhere, changeable in Settings → Shortcuts; the defaults never type an AltGr character on French, German, Spanish, Italian or Portuguese keyboards
- **Weekly recap** on Monday mornings, shareable as an image; history stays on your computer
- **Pills**: declare the tools you use and pick your main one; hook-based pills no longer ask for a key; "Open terminal" brings the session's own window forward on Windows
- **10 languages**: English, 中文, हिन्दी, Español, العربية, Français, বাংলা, Português (Brasil), Русский, Bahasa Indonesia — Settings → General → Language (#228; picker from #226 by @alexisrja)
- **File drop** works from every Explorer view, and Cancel works (#240 by @KauaDc, #126); only files a real drop delivered can be read
- **Linux**: auto-close on KDE/Wayland and GNOME (#160 by @4rchila, #136), the island at the top on GNOME (#149 by @betodoescher), pinned to its display on Hyprland and Sway with a display picker (#227 by @chuxclay), GNOME large text no longer cuts the island (#122), an Arch Linux PKGBUILD (#299 by @FabioLukas123, #230)
- The step ticker no longer stops at a session's 20th step (#265 by @PythonTilk), ticker steps keep their own line (from #203 by @shakibbinkabir), `tauri dev` no longer crashes on EBUSY (#202 by @Andrev-91)

## 0.2.1 — October 7, 2026

- **Hermes Agent** (Nous Research, open-source): sessions appear in the notch — live tool steps, the final response when done, and the platform (Telegram, Discord…) when running via the gateway. Install from Settings → Agents → Hermes: it writes a small Python plugin to `~/.hermes/plugins/coucou/` and enables it in `~/.hermes/config.yaml`, with the same preview, backup and confirmation flow as other agents *(macOS, GitHub build)* (#288)
Expand Down
17 changes: 8 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ macOS releases are published as `v*` tags. See [CHANGELOG.md](CHANGELOG.md) for
| [0.1.1](https://github.com/Louis-CFM/coucou/releases/tag/v0.1.1) | Oct 2, 2026 | Gemini and OpenAI chat, Linux build, more agents and pills, security hardening |
| [0.1.0](https://github.com/Louis-CFM/coucou/releases/tag/v0.1.0) | Sep 27, 2026 | First release: Mochi, Claude Code sessions, chat, file drop, integrations |

Windows 0.1.1 and Linux 0.1.1 (beta) are in Releases under the `windows-v*` and `linux-v*` tags.
Windows and Linux builds are in Releases under the `windows-v*` and `linux-v*` tags; the newest Windows installer is always at [`windows-latest`](https://github.com/Louis-CFM/coucou/releases/tag/windows-latest).

## Demo mode

Expand Down Expand Up @@ -148,28 +148,27 @@ Everything else, troubleshooting included, is in [docs/IPHONE.md](docs/IPHONE.md

### Windows

The Windows installer is **temporarily unavailable**. Microsoft Defender wrongly
flags the unsigned installer as malware; a false-positive report is under review
at Microsoft and the installer will come back once it is cleared and signed.
Until then you can [build it from source](#build-from-source).
Download **[Coucou-Windows.msi](https://github.com/Louis-CFM/coucou/releases/download/windows-latest/Coucou-Windows.msi)** or **[Coucou-Windows-setup.exe](https://github.com/Louis-CFM/coucou/releases/download/windows-latest/Coucou-Windows-setup.exe)** (Windows 10/11, always the newest version) and run it. The installer isn't code-signed yet, so SmartScreen may warn you: click **More info → Run anyway**. You can also [build it from source](#build-from-source).

**Windows and Linux 0.2.0** catch up with the Mac: Codex, Copilot CLI, Muse Code and six more agents with approvals from the island, answers to Claude's questions, live diffs, GitHub pull requests and CI, plan usage, local models, the wardrobe, Mochi on the desktop, keyboard shortcuts, the weekly recap and 10 languages. See the [changelog](CHANGELOG.md).

There is no notch on a PC, so the island slides out of the top edge of the screen
instead of hiding inside one. See [`windows/README.md`](windows/README.md) for the
rest of the differences.

### Linux

The first Linux build is out as a beta: download it from [Coucou for Linux 0.1.1 (beta)](https://github.com/Louis-CFM/coucou/releases/tag/linux-v0.1.1), x86_64 only for now. Later versions will be in [Releases](https://github.com/Louis-CFM/coucou/releases) under `linux-v*` tags.
Download the newest Linux build from [Releases](https://github.com/Louis-CFM/coucou/releases) (`linux-v*` tags), x86_64 only for now.

- **AppImage** (any distribution): `chmod +x Coucou-Linux-*.AppImage`, then run it.
- **Debian / Ubuntu**: `sudo apt install ./Coucou-Linux-*.deb`
- **Fedora / openSUSE**: `sudo dnf install ./Coucou-Linux-*.rpm`

Check a download with `sha256sum -c SHA256SUMS --ignore-missing`. Gemini CLI, Antigravity, Google AI, OpenAI and local model (Ollama / LM Studio) chat are macOS only for now.
Check a download with `sha256sum -c SHA256SUMS --ignore-missing`. On Arch Linux, build it with the [PKGBUILD](linux/arch/PKGBUILD).

The island sits on the top edge on compositors with layer-shell — COSMIC, KDE
Plasma, Hyprland, Sway and other wlroots compositors. GNOME has no layer-shell,
so there it opens as a regular window. See [`windows/README.md`](windows/README.md#linux).
so there it runs through XWayland as a dock window at the top of the screen. See [`windows/README.md`](windows/README.md#linux).

### Build from source

Expand Down Expand Up @@ -243,7 +242,7 @@ If Coucou isn't running, the hook exits immediately: **Claude Code is never bloc
| Hermes | Plugin — **Settings → Agents → Hermes → Install** | Mac only |
| Any other | `--agent <name>` flag; see [`docs/AGENTS.md`](docs/AGENTS.md) | No |

OpenCode, Amp and Hermes use a plugin model rather than a hook command. Coucou installs the plugin file into `~/.config/opencode/plugins/`, `~/.config/amp/plugins/` and `~/.hermes/plugins/coucou/` respectively — these are macOS paths; the Windows/Linux build does not support them.
OpenCode, Amp and Hermes use a plugin model rather than a hook command. Coucou installs the plugin file into `~/.config/opencode/plugins/`, `~/.config/amp/plugins/` and `~/.hermes/plugins/coucou/` respectively. On Windows and Linux the plugins start the `coucou-hook` relay directly — see [`windows/README.md`](windows/README.md#supported-agents).

## Things to try

Expand Down
69 changes: 69 additions & 0 deletions linux/arch/PKGBUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# Maintainer: FabioLukas123
# Coucou for Arch Linux — built from the Tauri app in windows/, which runs on
# Windows and Linux alike.

pkgname=coucou-git
_pkgname=coucou
pkgver=0.2.0
pkgrel=1
pkgdesc="Mochi lives at the top of your screen and keeps an eye on your Claude Code sessions"
arch=('x86_64' 'aarch64')
url="https://github.com/Louis-CFM/coucou"
license=("MIT" "LicenseRef-coucou-assets")
depends=(
'webkit2gtk-4.1'
'gtk3'
'gtk-layer-shell'
'libayatana-appindicator'
'gst-plugins-base'
'gst-plugins-good'
'dbus'
'xdg-utils'
'hicolor-icon-theme'
)
optdepends=(
'gnome-keyring: store API keys (or any other Secret Service provider)'
'kwallet: store API keys (or any other Secret Service provider)'
)
makedepends=('git' 'cargo' 'nodejs' 'npm')
provides=("$_pkgname")
conflicts=("$_pkgname")
# makepkg's default LTO and debug flags make the Rust build very slow.
options=('!lto' '!debug')
source=("$_pkgname::git+https://github.com/Louis-CFM/coucou.git")
sha256sums=('SKIP')

pkgver() {
cd "$_pkgname"
local v
v=$(sed -n 's/^version = "\(.*\)"/\1/p' windows/Cargo.toml | head -1)
printf "%s.r%s.%s" "$v" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}

prepare() {
cd "$_pkgname/windows"
export RUSTUP_TOOLCHAIN=stable
cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')"
npm ci
}

build() {
cd "$_pkgname/windows"
export RUSTUP_TOOLCHAIN=stable
export CARGO_TARGET_DIR="$PWD/target"
# beforeBuildCommand builds the front end and the coucou-hook relay.
npx tauri build --no-bundle
}

package() {
cd "$_pkgname"
install -Dm755 windows/target/release/coucou "$pkgdir/usr/bin/coucou"
# Found next to the app, then copied into ~/.local/share/coucou/bin at launch.
install -Dm755 windows/target/release/coucou-hook "$pkgdir/usr/bin/coucou-hook"
install -Dm644 linux/arch/coucou.desktop "$pkgdir/usr/share/applications/coucou.desktop"
install -Dm644 windows/src-tauri/icons/32x32.png "$pkgdir/usr/share/icons/hicolor/32x32/apps/coucou.png"
install -Dm644 windows/src-tauri/icons/128x128.png "$pkgdir/usr/share/icons/hicolor/128x128/apps/coucou.png"
install -Dm644 windows/src-tauri/icons/128x128@2x.png "$pkgdir/usr/share/icons/hicolor/256x256/apps/coucou.png"
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
install -Dm644 LICENSE-ASSETS.md "$pkgdir/usr/share/licenses/$pkgname/LICENSE-ASSETS.md"
}
9 changes: 9 additions & 0 deletions linux/arch/coucou.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[Desktop Entry]
Type=Application
Name=Coucou
Comment=Mochi lives at the top of your screen and keeps an eye on your Claude Code sessions
Exec=coucou
Icon=coucou
Terminal=false
Categories=Development;Utility;
StartupNotify=false
86 changes: 83 additions & 3 deletions windows/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion windows/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ members = ["src-tauri", "hook"]
resolver = "2"

[workspace.package]
version = "0.1.1"
version = "0.2.0"
edition = "2021"
license = "MIT"

Expand Down
Loading
Loading