October 2026

lunardesk is the Linux desktop client for a self-hosted LunarWing gateway.
The official product name is **lunardesk**; the repository, Debian package
(`lunar-wing`), and installed executable (`/usr/bin/lunarwing2desktop`) keep
the `lunarwing2desktop` identity.

This is the first release: version 0.1.0-alpha.1, the first signed alpha
of 0.1.0 (an installable artifact for the operator and invited testers, not
a public launch — see `docs/ops/ALPHA_RELEASE_PLAN.md`).

- **Authenticated gateway chat** — connect one LunarWing gateway with a URL
  and bearer token. The token is held in the OS credential store (Secret
  Service on Linux); the Rust layer owns HTTP and SSE transport, redacts
  credentials from logs, and cancels in-flight work when the configuration
  changes. Streamed thinking, tool activity, and final responses are
  reconciled against canonical history, with bounded automatic reconnect
  after gateway or network interruptions.
- **Conversation navigation** — pinned assistant thread, ordered thread list,
  new-thread action, and backward pagination of history.
- **Agent activity and tool approvals** — bounded thinking/status updates and
  tool-call display without exposing raw protocol payloads, with Approve /
  Always approve / Deny controls for tool requests.
- **Steering and interrupt** — `/interrupt` and `/steer <note>` controls while
  a turn is in flight.
- **Voice** (requires a voice-enabled gateway) — push-to-talk recording button
  that transcribes through the gateway voice API, shows an editable
  transcript, and requires an explicit send; the serving STT model is surfaced
  from the gateway (whisper or other ONNX sherpa runtimes such as
  paraformer). Completed agent replies can be spoken aloud, with stop,
  replay, and disable controls. The gateway holds the LunarVoice sidecar
  credential; lunardesk never sees it.
- **File attachments** — picked, pasted, or dragged images are validated
  against the gateway caps (5 images, 5 MB each) and render as a removable
  thumbnail preview strip above the composer before they are sent with the
  message. Dragging image files from the OS file manager onto the
  conversation pane stages them through the same path as the picker.
- **Mascot** — a movable, hideable mascot overlay inside chat, driven only by
  real connection, working, response, and error events.
- **Settings menu** — a settings menu in the sidebar footer with a Lunar
  mascot on/off toggle, disabled by default and persisted across launches.
- **Color themes, custom accent, and font size** — six color themes (Lunar
  blue default, AMOLED black, Purple, Mint, Sunset, and High contrast), a
  custom accent color picker that overrides the active theme's accent
  family, and a Small/Medium/Large font size control, all in the settings
  menu and persisted across launches.
- **Code block copying** — every fenced code block in the transcript
  carries a one-click copy button (with a fallback for non-secure
  contexts); the copied code preserves the original content byte-exact.
- **Button animations and lunar iconography** — spring-eased button motion
  (press collapse, focus halo, accent glow), a crescent shimmer on the Send
  button while the gateway has not yet accepted the send, a breathing
  crescent rim on the brand mark, and a crescent-moon new-conversation
  glyph. Every animation collapses to a static state when the system
  requests reduced motion.
- **Blue theme and splash screen** — the desktop matches the LunarWing web
  gateway color scheme and shows a first-paint splash while the app loads.
- **Reliability fixes since the last review** — a mid-turn canonical-history
  reconcile no longer flashes a false agent-failure banner, spoken replies
  fire only for the selected conversation, and Wayland sessions
  automatically apply the WebKitGTK DMA-BUF renderer workaround so the app
  launches reliably on Wayland desktops.

- **Debian 12 (bookworm) and Ubuntu 24.04 LTS (x86_64)**: signed,
  reproducible `.deb` package (`lunar-wing`). Install with
  `sudo apt-get install ./LunarWing_0.1.0~alpha.1_amd64.deb`, then launch
  `lunarwing2desktop`. The release bundle carries the `.deb`, its SHA-256
  checksum, the detached GPG signature, and these notes.
- **Gentoo (rolling, x86_64)**: Portage overlay ebuild
  `gui-apps/lunarwing2desktop` (keyword-masked `~amd64`) under
  `packaging/gentoo/`; see `docs/ops/GENTOO.md`.
- Signing keys, verification, install/upgrade/rollback/uninstall flows, and
  the operator test matrix: `docs/ops/RELEASE.md`.

- Linux desktop with WebKitGTK 4.1 (provided by the supported distributions
  above).
- A LunarWing gateway with a bearer token for this client, reachable over
  HTTPS, loopback, or a private overlay network. Plain HTTP outside loopback
  sends the token unencrypted: lunardesk shows an explicit warning and
  requires a second confirmation before connecting.
- Voice features require a gateway with the voice API and LunarVoice sidecar
  enabled.

- macOS and Windows ports are feasibility-checked only; they are not shipped
  in this release.
- One gateway profile only; multi-account support, tray/menubar quick-ask,
  background notifications, and app-store distribution are deferred.
- AppImage is not produced; the `.deb` covers the supported Debian/Ubuntu
  targets.

Build instructions, configuration, repository layout, and the full feature
reference are in `README.md`. The execution roadmap behind this release is
`docs/ops/AGENT_GOALS_0.1.0.0.md`.

License: AGPL-3.0-or-later, matching LunarWing core.