* feat: copy user and assistant messages as text or Markdown
* fix: exclude Mermaid status controls from copied text
* test: cover plain-copy fallback for oversized messages
* added nix build (with source filtering) and nix run to the project
* Update nix build to conform to version 0.5.0:
- Removed leftover ouput dependency in flake.nix
- Added local font download during derivation build for JetBrains Mono and Geist
- Aadded `instrumentation.ts` to the nix source fileset
- Updated npm deps module hash in nix build
- Removed stale comments
* feat(linux): add systemd service manager and system tray
Add Linux parity for the Windows tray service and macOS launchd agent:
- `ompweb-systemd` bin installs and manages a systemd user service
(install/uninstall/start/stop/restart/status/open) that runs the local
ompweb binary at login, restarts on crash, and bakes PORT/OMP_WEB_* env
into ~/.config/systemd/user/ompweb.service
- `ompweb-tray` gains a Linux path: a StatusNotifierItem tray icon with a
DBusMenu (open, copy URL, start/stop/restart service, view logs,
autostart toggle, quit), live status polling, desktop notifications,
and XDG autostart support
- tray icon ships as self-contained ARGB32 IconPixmap (pure-JS rasterizer)
so it renders without theme-cache dependency
- `ompweb systemd <cmd>` forwards to the service manager, mirroring
`ompweb launchd`
- new dependency: dbus-next (pure JS) for the tray's session-bus work
* feat(tray): add service settings to the Linux tray (expose, port, password)
- move runtime service config into ~/.omp/agent/web-service.env, read by
the unit via EnvironmentFile — port/hostname/password edits no longer
require a reinstall
- tray menu gains "Expose to Network" (rebinds 127.0.0.1 -> 0.0.0.0,
prompts for a web password via kdialog/zenity when leaving loopback),
"Change Port...", and "Set Web Password..." — each applies the env
file and restarts the service
- dialogs are async (execFile) so the tray's DBus loop stays responsive
while a prompt is open
- new shared bin/service-env.js (atomic 600 env-file read/write/parse)
* fix(linux): make systemd/tray tests pass on Windows
- runCli handles --help/--version and unknown commands before the
Linux-only guard, so help works everywhere and bogus commands
return exit 2 on all platforms (previously process.exit(1)
killed the test runner on non-Linux)
- guard the mode-600 assertion: chmod is best-effort on Windows
- branch the X_OK and PATH-order assertions per platform
---------
Co-authored-by: Khaled Ahmed <[email protected]>
- add Windows System Tray/service section and CLI flags (--install-tray etc)
- fix macOS launchd npx -p -> npx --yes
- expand Features to match actual code: interactive chat with queue/interrupt,
session archive/import, live plans/subagents, tool preset picker,
worktrees, Usage analytics, tray/launchd services, 8 settings tabs
- keep env vars and dev notes in sync
OMP_WEB_PASSWORD='...' ompweb uses POSIX inline-env syntax which does
not exist in PowerShell/CMD ("cmdlet was not found"). Add first-class
--password "..." (-p stays port, -H hostname, -h help, --version)
with OMP_WEB_PASSWORD fallback (--password wins), propagate to
process.env for proxy.ts and the spawned Next child, include
printHelp() and Windows examples (="...";
ompweb / set ...&&) in README* and a helpful refusing hint. Tests
updated (8 pass).
* docs: add Russian README translation
Add README.ru.md and link Русский from existing locale language bars.
* docs: improve Russian README translation
---------
Co-authored-by: Alex Yang <[email protected]>
- Translate README.md from English to Chinese
- Add npx quick-start instructions to README
- Resolve next CLI entry directly to avoid .bin symlink issues when running via npx
- Spawn next with node directly instead of relying on shell or .bin wrappers
- Gracefully handle missing @mariozechner/pi-coding-agent package in next.config.ts
- Add ModelsConfig component with sidebar for providers/models and detail panel
- Implement /api/models-config endpoint to read and write models.json
- Add Models button to sidebar bottom that opens configuration modal
- Support provider-level settings: baseUrl, apiKey, API type, headers
- Support model-level settings: id, name, API override, reasoning, input types, context window, max tokens, cost
- Add provider and model creation