taskplane 0.1.10 → 0.1.11

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.
@@ -715,14 +715,14 @@ body {
715
715
  font-size: 0.75rem;
716
716
  padding: 2px;
717
717
  border-radius: var(--radius-sm);
718
- opacity: 0.35;
718
+ opacity: 0.6;
719
719
  transition: opacity 0.2s, background 0.2s;
720
720
  line-height: 1;
721
721
  }
722
722
 
723
723
  .viewer-eye-btn:hover {
724
- opacity: 0.8;
725
- background: rgba(88,166,255,0.1);
724
+ opacity: 1;
725
+ background: rgba(88,166,255,0.15);
726
726
  }
727
727
 
728
728
  .viewer-eye-btn.active {
@@ -19,7 +19,7 @@
19
19
 
20
20
  import type { ExtensionAPI, ExtensionContext } from "@mariozechner/pi-coding-agent";
21
21
  import { DynamicBorder } from "@mariozechner/pi-coding-agent";
22
- import { Container, Text, truncateToWidth, visibleWidth } from "@mariozechner/pi-tui";
22
+ import { Container, Text, truncateToWidth } from "@mariozechner/pi-tui";
23
23
  import { spawn, spawnSync } from "child_process";
24
24
  import {
25
25
  readFileSync, writeFileSync, appendFileSync, existsSync, mkdirSync, unlinkSync,
@@ -130,7 +130,7 @@ const DEFAULT_CONFIG: TaskConfig = {
130
130
  standards_overrides: {},
131
131
  task_areas: {},
132
132
  worker: { model: "", tools: "read,write,edit,bash,grep,find,ls", thinking: "off" },
133
- reviewer: { model: "openai/gpt-5.3-codex", tools: "read,bash,grep,find,ls", thinking: "off" },
133
+ reviewer: { model: "openai/gpt-5.3-codex", tools: "read,bash,grep,find,ls", thinking: "on" },
134
134
  context: {
135
135
  worker_context_window: 200000, warn_percent: 70, kill_percent: 85,
136
136
  max_worker_iterations: 20, max_review_cycles: 2, no_progress_limit: 3,
@@ -214,18 +214,16 @@ function getTmuxPrefix(): string {
214
214
  /**
215
215
  * Detects whether this task runner is executing inside the parallel orchestrator.
216
216
  *
217
- * Requires BOTH signals to prevent false positives:
218
- * 1. TASK_RUNNER_SPAWN_MODE === "tmux"confirms tmux-based spawning
219
- * 2. TASK_RUNNER_TMUX_PREFIX starts with "orch-" — confirms orchestrator origin
217
+ * TASK_RUNNER_TMUX_PREFIX is only ever set by the orchestrator (via execution.ts
218
+ * buildLaneEnv). Its presence regardless of value indicates orchestrated mode.
219
+ * The prefix can be any user-configured value (e.g., "orch-lane-1", "penster-lane-1").
220
220
  *
221
221
  * When true, certain worker behaviors are suppressed — most notably, workers
222
222
  * must NOT archive task folders because the orchestrator polls for .DONE files
223
223
  * at the original path.
224
224
  */
225
225
  function isOrchestratedMode(): boolean {
226
- // Orchestrated when the prefix is set by the orchestrator (orch-lane-N pattern).
227
- // Spawn mode can be "tmux" or "subprocess" — both are valid orchestrated modes.
228
- return !!process.env.TASK_RUNNER_TMUX_PREFIX?.startsWith("orch-");
226
+ return !!process.env.TASK_RUNNER_TMUX_PREFIX;
229
227
  }
230
228
 
231
229
  /**
@@ -1101,7 +1099,7 @@ export default function (pi: ExtensionAPI) {
1101
1099
  return {
1102
1100
  render(width: number): string[] {
1103
1101
  if (!state.task) {
1104
- return ["", theme.fg("dim", " No task loaded. Use /task <path/to/PROMPT.md> to start.")];
1102
+ return [];
1105
1103
  }
1106
1104
 
1107
1105
  const task = state.task;
@@ -1624,7 +1622,7 @@ export default function (pi: ExtensionAPI) {
1624
1622
  prompt: promptContent,
1625
1623
  model: reviewerModel,
1626
1624
  tools: config.reviewer.tools || reviewerDef?.tools || "read,write,bash,grep,find,ls",
1627
- thinking: config.reviewer.thinking || "off",
1625
+ thinking: config.reviewer.thinking || "on",
1628
1626
  });
1629
1627
  reviewPromise = spawned.promise;
1630
1628
  state.reviewerProc = { kill: spawned.kill };
@@ -1633,7 +1631,7 @@ export default function (pi: ExtensionAPI) {
1633
1631
  const spawned = spawnAgent({
1634
1632
  model: reviewerModel,
1635
1633
  tools: config.reviewer.tools || reviewerDef?.tools || "read,write,bash,grep,find,ls",
1636
- thinking: config.reviewer.thinking || "off",
1634
+ thinking: config.reviewer.thinking || "on",
1637
1635
  systemPrompt,
1638
1636
  prompt: promptContent,
1639
1637
  onToolCall: (toolName, args) => {
@@ -1864,33 +1862,6 @@ export default function (pi: ExtensionAPI) {
1864
1862
 
1865
1863
  updateWidgets();
1866
1864
 
1867
- // Footer
1868
- ctx.ui.setFooter((_tui, theme, _footerData) => ({
1869
- dispose: () => {},
1870
- invalidate() {},
1871
- render(width: number): string[] {
1872
- const model = ctx.model?.id || "no-model";
1873
- const usage = ctx.getContextUsage();
1874
- const pct = usage ? usage.percent : 0;
1875
- const filled = Math.round(pct / 10);
1876
- const bar = "#".repeat(filled) + "-".repeat(10 - filled);
1877
-
1878
- const taskLabel = state.task
1879
- ? theme.fg("accent", state.task.taskId) +
1880
- theme.fg("dim", ` ${state.phase}`) +
1881
- (state.phase === "running" ? theme.fg("accent", ` Step ${state.currentStep}`) : "")
1882
- : theme.fg("dim", "no task");
1883
-
1884
- const left = theme.fg("dim", ` ${model}`) +
1885
- theme.fg("muted", " · ") +
1886
- taskLabel;
1887
- const right = theme.fg("dim", `[${bar}] ${Math.round(pct)}% `);
1888
- const pad = " ".repeat(Math.max(1, width - visibleWidth(left) - visibleWidth(right)));
1889
-
1890
- return [truncateToWidth(left + pad + right, width)];
1891
- },
1892
- }));
1893
-
1894
1865
  const config = loadConfig(ctx.cwd);
1895
1866
  ctx.ui.setStatus("task-runner", `📋 ${config.project.name}`);
1896
1867
 
@@ -560,13 +560,7 @@ export function createOrchWidget(
560
560
 
561
561
  // ── Idle state ─────────────────────────────────
562
562
  if (vm.phase === "idle") {
563
- return [
564
- "",
565
- truncateToWidth(
566
- theme.fg("dim", " No active batch. Use /orch <areas|all> to start."),
567
- width,
568
- ),
569
- ];
563
+ return [];
570
564
  }
571
565
 
572
566
  const lines: string[] = [""];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taskplane",
3
- "version": "0.1.10",
3
+ "version": "0.1.11",
4
4
  "description": "AI agent orchestration for pi — parallel task execution with checkpoint discipline",
5
5
  "keywords": [
6
6
  "pi-package",