kaizen-agent 1.6.3 → 1.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/cli/install.ts +9 -7
- package/package.json +1 -1
- package/web/board.html +2 -2
package/README.md
CHANGED
|
@@ -297,7 +297,7 @@ backlog; `⋯` on a card runs, edits, rejects, abandons or archives. `Clear` on
|
|
|
297
297
|
every finished run to the archive (`.kaizen/archive.md`, a list, nothing moves), and
|
|
298
298
|
`Archive` in the strip shows what is there, with `Restore` on each card. The gear at the top right holds the browser's theme
|
|
299
299
|
and every `kaizen settings` knob, same rows, same `config.yml`. `--port N` picks a port, `--no-open` just
|
|
300
|
-
serves, `?all=
|
|
300
|
+
serves, the board opens on every project; `?all=0` in the URL narrows it to the one it was started in. `--daemon` starts the server
|
|
301
301
|
detached so it outlives the terminal (pid kept in `~/.kaizen/web.pid`); `--stop` ends it. `kaizen web --shortcut` adds a launcher
|
|
302
302
|
the OS can find — Spotlight on macOS, the app menu on Linux, a Desktop shortcut on Windows.
|
|
303
303
|
|
package/cli/install.ts
CHANGED
|
@@ -478,20 +478,22 @@ async function resolveRepoQuietly() {
|
|
|
478
478
|
|
|
479
479
|
async function resolveRepo() {
|
|
480
480
|
const here = dirname(import.meta.dir);
|
|
481
|
-
if (existsSync(join(here, ".git"))) return here;
|
|
482
|
-
|
|
483
481
|
const dest = process.env.KAIZEN_HOME ?? join(home, "kaizen");
|
|
484
|
-
|
|
482
|
+
// The launcher runs the clone itself, so an upgrade from inside it must pull
|
|
483
|
+
// that clone -- returning it untouched was "Up to date" at whatever was there.
|
|
484
|
+
for (const dir of [here, dest]) {
|
|
485
|
+
if (!existsSync(join(dir, ".git"))) continue;
|
|
486
|
+
if (!upgrade && dir === here) return dir;
|
|
485
487
|
// A pull can refuse for reasons that have nothing to do with linking -- local
|
|
486
488
|
// edits, a detached head, no network. Linking the checkout already on disk
|
|
487
489
|
// still works, so say what happened and carry on.
|
|
488
490
|
try {
|
|
489
|
-
await Bun.$`git -C ${
|
|
490
|
-
step(`updated ${tilde(
|
|
491
|
+
await Bun.$`git -C ${dir} pull --ff-only`.quiet();
|
|
492
|
+
step(`updated ${tilde(dir)}`);
|
|
491
493
|
} catch {
|
|
492
|
-
step(`kept ${tilde(
|
|
494
|
+
step(`kept ${tilde(dir)} ${c.dim("(could not pull)")}`);
|
|
493
495
|
}
|
|
494
|
-
return
|
|
496
|
+
return dir;
|
|
495
497
|
}
|
|
496
498
|
// A copy made before git was installed can never be pulled, so it keeps upgrading
|
|
497
499
|
// through npm and its caches. Once git is here, replace it with a real clone --
|
package/package.json
CHANGED
package/web/board.html
CHANGED
|
@@ -229,7 +229,7 @@ const ICON={idea:"idea",starting:"start",running:"run",stalled:"stall",waiting:"
|
|
|
229
229
|
const WORD={idea:"idea",starting:"starting",running:"running",stalled:"stalled",waiting:"waiting on you",done:"done",abandoned:"abandoned"};
|
|
230
230
|
|
|
231
231
|
let S={project:null,projects:[],cards:[],now:Date.now(),all:false};
|
|
232
|
-
let all=new URLSearchParams(location.search).get("all")
|
|
232
|
+
let all=new URLSearchParams(location.search).get("all")!=="0",openKey=null,mode=null,modeKey=null,filter=null,menuKey=null,tab=0,runDoc=null;
|
|
233
233
|
// A column shows this many cards, then a "more" line; Done is where it matters.
|
|
234
234
|
const FOLD=6;const unfolded=new Set();
|
|
235
235
|
let archive=false;
|
|
@@ -302,7 +302,7 @@ function render(){
|
|
|
302
302
|
strip.push(`<span class="sp"></span><span>${cs.filter(c=>c.kind==="idea").length} ideas · ${cs.filter(c=>c.kind==="run").length} runs</span>`,`<button class="${archive?"on":""}" data-f="__archive">${archive?"Back to board":"Archive "+nArch}</button>`);
|
|
303
303
|
$("strip").innerHTML=strip.join("");
|
|
304
304
|
$("strip").querySelectorAll("button").forEach(c=>c.onclick=()=>{if(c.dataset.f==="__archive"){archive=!archive;filter=null;render();return}filter=filter===c.dataset.f?null:c.dataset.f;render()});
|
|
305
|
-
const sel=$("proj");sel.innerHTML=(S.project?`<option value="cur">${esc(S.project)}</option>`:"")
|
|
305
|
+
const sel=$("proj");sel.innerHTML=`<option value="all">All projects</option>`+(S.project?`<option value="cur">${esc(S.project)}</option>`:"");sel.value=all||!S.project?"all":"cur";
|
|
306
306
|
if(!cs.length&&mode!=="new"){b.innerHTML=archive?'<div class="empty"><div class="mascot"></div><div>Nothing archived.</div></div>':'<div class="empty"><div class="mascot"></div><div>Nothing here yet.</div><button class="btn pri" id="newempty">New idea</button></div>';if(!archive)$("newempty").onclick=()=>{mode="new";render()};}
|
|
307
307
|
COLS.forEach((name,ci)=>{
|
|
308
308
|
const s=document.createElement("section");const list=cs.filter(c=>c.column===ci&&(!filter||c.status===filter));
|