Commit Graph

124 Commits

Author SHA1 Message Date
Carlos Florêncio da45983c4c feat: add native kandev launcher (#1391) 2026-06-20 19:40:15 +01:00
Carlos Florêncio aee1846cd5 feat: remove nextjs production runtime (#1389) 2026-06-18 18:36:48 +01:00
github-actions[bot] e1d14a0a13 release: 0.65.0 2026-06-18 15:44:33 +00:00
github-actions[bot] b13606e86a release: 0.64.0 2026-06-17 21:18:41 +00:00
github-actions[bot] 7268c55783 release: 0.63.0 2026-06-17 19:01:52 +00:00
github-actions[bot] 9ea30d5e3e release: 0.62.0 2026-06-17 07:12:09 +00:00
github-actions[bot] 6f4da4519e release: 0.61.0 2026-06-16 21:59:24 +00:00
github-actions[bot] 0bc91a62b3 release: 0.60.0 2026-06-15 21:13:37 +00:00
Carlos Florêncio fd421848fb feat: add feature toggles settings (#1372) 2026-06-15 13:33:45 +01:00
github-actions[bot] a897c67499 release: 0.59.0 2026-06-14 16:27:00 +00:00
Carlos Florêncio e983cb1be1 feat: show session config in message metadata (#1354) 2026-06-13 22:32:12 +01:00
Carlos Florêncio f444fba455 perf(chat): eliminate redundant re-renders and markdown re-parsing (#1357) 2026-06-13 19:26:54 +01:00
github-actions[bot] a92a8ac469 release: 0.58.0 2026-06-12 09:24:31 +00:00
github-actions[bot] dfca24ee31 release: 0.57.0 2026-06-11 14:36:10 +00:00
Carlos Florêncio fc4bf8a40c feat: add checkout service make targets (#1311) 2026-06-08 19:30:21 +01:00
Carlos Florêncio 1484ae7d28 fix: expose user agent bins to system service (#1292) 2026-06-07 21:13:28 +01:00
github-actions[bot] 2557b69c0e release: 0.56.0 2026-06-06 20:43:33 +00:00
github-actions[bot] d2ab3cd509 release: 0.55.0 2026-06-02 23:11:24 +00:00
Carlos Florêncio 6b98185ac3 fix(web): restore debug UI on make start-debug (#1252) 2026-06-02 21:48:23 +01:00
José Almeida 041a19f060 feat: service-managed UI self-update (#1210)
* feat: add service-managed self-update

* chore: add temporary self-update test scripts

* chore: simplify temporary script markdown fences

* chore: run frontend in temporary self-update scripts

* fix: show self-update job progress after apply

* chore: add real npm self-update test script

* fix: isolate npm self-update prefix

* fix: detect npm service installs from bin shim

* chore: reset service before real npm update test

* chore: expand real npm status diagnostics

* fix: preserve service home during self-update

* fix(cli): tee self-update helper output to a log file

* fix(cli): avoid launchd bootstrap race when reloading the macOS service

* fix(backend): run macOS self-update helper once via transient launchd plist

* fix(web): show self-update progress and lock the apply button until the update lands

* fix(cli): reinstall via the kandev wrapper on Homebrew self-update

* chore: remove temp self-update test scripts

* fix(web): drop unused apply path from useUpdates hook

* fix(backend): snapshot install state once in apply preflight

* docs: align self-update docs with transient LaunchAgent flow

* chore(release): run cli bundle from apps workspace root

* fix(backend): guard against concurrent self-update applies

* fix(backend): check scheme and helper paths in self-update apply

* fix(backend): drop duplicate binary name from npx manual command

* fix(cli): allow --help for service self-update without --intent

* fix(cli): harden self-update dir perms and darwin uid resolution

* fix(web): set required POST fields last in applyUpdate

* docs: use JSON body notation for the apply endpoint

* fix(backend): expire self-update guard so a stuck helper cannot wedge apply

* refactor(cli): collapse redundant writeSync branch in self-update log
2026-06-01 17:49:15 +01:00
github-actions[bot] 7b2d503722 release: 0.54.0 2026-05-31 21:35:11 +00:00
Carlos Florêncio b16b27b3e3 fix(cli): generate brew-upgrade-resilient systemd unit (#1180) 2026-05-31 11:14:01 +01:00
Carlos Florêncio 0966b71f1c fix(cli): add ~/.bun/bin to service PATH (#1175) 2026-05-30 19:17:19 +01:00
github-actions[bot] 1b5454153c release: 0.53.0 2026-05-29 01:41:11 +00:00
Carlos Florêncio f4be0d279c fix: dockview, sprite, auth, and CLI db backup improvements (#1075) 2026-05-28 16:23:17 +01:00
github-actions[bot] 97c5b9dc17 release: 0.52.0 2026-05-25 21:27:20 +00:00
Carlos Florêncio 372779ad32 feat(preview): inspect mode with pin and area annotations (#917) 2026-05-24 11:21:50 +01:00
github-actions[bot] 3702056578 release: 0.51.0 2026-05-22 20:11:28 +00:00
Nicolas Lenepveu 722cd31489 fix(cli): include ~/.local/bin in service unit PATH for user-mode installs (#994)
User-mode systemd units and launchd agents now prepend the loading user's
~/.local/bin to PATH, so user-installed agent CLIs (claude, codex, etc.,
installed via npm user prefix, pipx, fnm/nvm) are discoverable by the
kandev daemon. Without this they appeared as `not_installed` even though
they were on the user's interactive PATH.

System-mode units keep the original system-only PATH.
2026-05-21 23:34:20 +01:00
João Salavisa 8a4ac6c570 fix(cli): include node bin dir in service unit PATH for fnm/nvm/asdf/volta/mise (#1000)
* fix(cli): prepend node bin dir to service unit PATH so npx-based agents resolve

systemd/launchd units hard-coded a system-only PATH. Under per-user node
managers (fnm, nvm, asdf, volta, mise), node lives in a versioned
subdirectory like ~/.local/share/fnm/node-versions/v24.14.0/installation/bin,
so the daemon could exec node (ExecStart resolves the absolute path) but
could not exec npx — every ACP agent built with `npx -y <bridge-pkg>`
(claude, codex, opencode, …) failed at spawn time with "peer disconnected
before response".

`captureLauncher()` already records the node binary path. Its parent dir
is exactly where the matching npm/npx live, so prepend it to the unit's
PATH (with dedup so /usr/local/bin etc. don't appear twice).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(cli): guard pathWithNodeBinDir against non-POSIX nodePath

`path.dirname` returns `'.'` on POSIX when given a path with no `/`
separator (e.g. a Windows-style `C:\…\node.exe`). Prepending `.` to a
service unit's PATH would put CWD ahead of system dirs in the daemon
context — a latent privilege-escalation footgun if any future caller
ever passed a relative or bare-filename nodePath. Production is safe
because `captureLauncher()` uses `process.execPath` (always absolute on
Linux/macOS), so the guard is defensive, not a behavior change.

Adds regression tests for both systemd and launchd, plus a previously
missing launchd system-mode + versioned-bin-dir test.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Kandev Agent <agent@kandev.dev>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-21 22:35:07 +01:00
github-actions[bot] a00d56412c release: 0.50.0 2026-05-19 22:51:13 +00:00
Carlos Florêncio c62739d3c1 feat(cli): kandev service install for systemd and launchd (#926) 2026-05-17 21:12:20 +01:00
Carlos Florêncio fd433626ae fix(cli): unblock make dev on WSL2 mirrored networking (#924) 2026-05-17 12:29:44 +01:00
Carlos Florêncio 0b2085688b feat(office): autonomous agent management layer (#914) 2026-05-16 20:07:57 +01:00
github-actions[bot] 4a517427ba release: 0.49.0 2026-05-16 14:36:34 +00:00
github-actions[bot] 11f468be3d release: 0.48.0 2026-05-15 20:09:04 +00:00
github-actions[bot] de9bbb210d release: 0.47.0 2026-05-15 19:17:12 +00:00
github-actions[bot] c55c01c62f release: 0.46.0 2026-05-15 16:52:23 +00:00
Carlos Florêncio a5108de926 fix(windows): make conpty Close idempotent and kill orphan agentctl (#900) 2026-05-15 16:04:35 +01:00
github-actions[bot] c72080e133 release: 0.45.0 2026-05-12 18:21:01 +00:00
github-actions[bot] ed056a22b5 release: 0.44.0 2026-05-11 21:59:51 +00:00
github-actions[bot] a86085f2d9 release: 0.43.0 2026-05-11 19:46:27 +00:00
Carlos Florêncio 71ee104178 fix(cli): skip NEXT_PUBLIC_KANDEV_API_PORT in production single-port mode (#872) 2026-05-11 20:32:51 +01:00
github-actions[bot] b0e27c3750 release: 0.42.0 2026-05-11 17:55:16 +00:00
José Almeida d031ba9824 fix(ci): harden release package publishing (#862)
* fix: pin pnpm for Docker release builds

* test: harden release pnpm version guard

* test: improve release guard diagnostics

* test: cover named pnpm setup steps

* fix: make npm release publishing rerunnable
2026-05-11 09:27:39 +01:00
github-actions[bot] deb12d31b2 release: 0.41.0 2026-05-09 11:30:38 +00:00
github-actions[bot] 14e80c8904 release: 0.40.0 2026-05-08 09:16:14 +00:00
github-actions[bot] ec1e4a8d61 release: 0.39.2 2026-05-05 00:30:49 +00:00
José Almeida e8780d54bb fix(release): add repository field for npm provenance, patch CLI perms (#826)
* fix(release): add repository field for npm provenance

The publish-npm step in release run 25350606233 (v0.39.1) failed for all
6 packages with:

  npm error code E422
  npm error 422 Unprocessable Entity
  Error verifying sigstore provenance bundle: Failed to validate
  repository information: package.json: "repository.url" is "",
  expected to match "https://github.com/kdlbs/kandev" from provenance

We added `--provenance` to `npm publish` earlier so the registry attaches
a sigstore attestation linking each tarball to its source repo + workflow
run. The attestation is signed using info from the OIDC token (which
includes the repo). At publish time, npm cross-checks the package.json's
`repository.url` against the OIDC repo claim — if the package.json
doesn't have one, or it doesn't match, the publish is rejected.

Both the runtime template (package-npm-runtime.sh) and the main
apps/cli/package.json were missing `repository`. Adding `repository` +
`homepage` to both. The runtime template gets it inline via the
heredoc; the main package.json gets static fields.

This fix unblocks the next release. v0.39.1 itself can't be republished
(version conflict on npm if it had landed; on GitHub release it already
exists). The next release will be v0.39.2 and will go all the way through.

Side state notes:
- v0.39.1 git tag + GitHub release exist with all 5 platform tarballs.
- Homebrew tap was updated to v0.39.1 — `brew install` works as v0.39.1.
- npm has nothing at v0.39.1 (all 6 publishes 422'd).
- v0.39.2 will replace the npm side; Homebrew formula will move forward;
  v0.39.1 GitHub release stays as a historical artifact.

* fix(release): re-chmod cli.js after artifact download (lost in zip roundtrip)

`brew install kdlbs/kandev/kandev` followed by `kandev` failed with:

  /opt/homebrew/bin/kandev: line 2:
  /opt/homebrew/Cellar/kandev/0.39.1/libexec/cli/bin/cli.js: Permission denied
  cannot execute: Undefined error: 0

Inspected the published v0.39.1 macos-arm64 tarball:

  -rwxr-xr-x  kandev/bin/kandev          (755 — executable, correct)
  -rwxr-xr-x  kandev/bin/agentctl        (755 — executable, correct)
  -rw-r--r--  kandev/cli/bin/cli.js      (644 — NOT executable)

Root cause: `actions/upload-artifact@v4` + `actions/download-artifact@v4`
zip-encode the artifact during upload and extract during download.
**Executable bits do not survive that round-trip.** The Go binaries
(kandev, agentctl) keep their +x because they're built inside the same
build-bundles job (no artifact crossing); cli.js is built in build-cli,
uploaded as an artifact, downloaded in build-bundles, and emerges as 644.
The chmod +x in package-cli.sh runs before upload, so it's effectively
erased.

Fix: re-apply chmod +x to dist/kandev/cli/bin/cli.js right before
tarballing, in the Package bundle step (which runs in build-bundles
after the artifact download).

Could not have been caught by the Tier 1.1 local smoke test we did
before merging — that test cp -R'd the cli/ dir directly without an
artifact roundtrip, so the chmod survived. This bug only manifests in
CI's matrix builds.

Manual recovery for v0.39.1 brew users:
  chmod +x /opt/homebrew/Cellar/kandev/0.39.1/libexec/cli/bin/cli.js

Or wait for v0.39.2 and `brew upgrade kandev`.
2026-05-05 01:27:17 +01:00
github-actions[bot] 252c874c3e release: 0.39.1 2026-05-05 00:11:29 +00:00