toolroll 0.9.10 → 0.9.12
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/CHANGELOG.md +25 -0
- package/dist/assignment.d.ts +3 -0
- package/dist/assignment.js +3 -1
- package/dist/browser/workspace.css +2 -2
- package/dist/browser/workspace.js +20 -18
- package/dist/browser-workspace.d.ts +61 -0
- package/dist/chat-channel.d.ts +9 -7
- package/dist/chat-channel.js +23 -17
- package/dist/chat-delivery.js +21 -0
- package/dist/chat-quiet.js +1 -0
- package/dist/chat-voice.d.ts +3 -1
- package/dist/chat-voice.js +13 -5
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +1 -0
- package/dist/coding-update.d.ts +13 -0
- package/dist/coding-update.js +68 -0
- package/dist/desktop-update.d.ts +7 -0
- package/dist/desktop-update.js +42 -1
- package/dist/flow-triggers.js +17 -1
- package/dist/guides.js +9 -0
- package/dist/lead-status.d.ts +10 -1
- package/dist/lead-status.js +13 -3
- package/dist/lead-voice.d.ts +81 -0
- package/dist/lead-voice.js +275 -0
- package/dist/needs-you.d.ts +7 -0
- package/dist/needs-you.js +9 -0
- package/dist/operate.d.ts +2 -0
- package/dist/operate.js +186 -38
- package/dist/serve.d.ts +5 -1
- package/dist/serve.js +447 -226
- package/dist/setup-guide.d.ts +2 -2
- package/dist/store.d.ts +15 -1
- package/dist/store.js +38 -1
- package/dist/surface.js +8 -1
- package/dist/task-status.d.ts +6 -0
- package/dist/task-status.js +19 -2
- package/dist/team-cli.js +1 -1
- package/dist/telegram-mate.d.ts +7 -0
- package/dist/telegram-mate.js +50 -21
- package/dist/telegram-progress.js +7 -0
- package/dist/telegram-settings.d.ts +3 -0
- package/dist/telegram-settings.js +11 -0
- package/dist/telegram.d.ts +14 -0
- package/dist/telegram.js +105 -12
- package/dist/test-temp.js +1 -1
- package/dist/toolroll-update.d.ts +3 -0
- package/dist/toolroll-update.js +13 -2
- package/dist/work-index.d.ts +9 -0
- package/dist/work-index.js +57 -20
- package/dist/work-summary.d.ts +4 -1
- package/dist/workspace-ui.d.ts +25 -0
- package/dist/workspace-ui.js +20 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.9.12 — 2026-10-02
|
|
4
|
+
|
|
5
|
+
- **Approving a plan fits one phone screen.** The plan shows up front in plain
|
|
6
|
+
rows (Goal, Changes, Won't touch, Done when) with one Approve & start, pinned
|
|
7
|
+
to the bottom on phones, and a line saying what happens next. The fine print
|
|
8
|
+
sits under Details.
|
|
9
|
+
- **Tasks puts what needs you first.** Waiting work is grouped as Decide,
|
|
10
|
+
Review and Unblock, each with a solid ink chip, and usage folds to one line.
|
|
11
|
+
- **Reviewing a result shows the change before Accept.** Each thing you check
|
|
12
|
+
comes with its evidence and Looks right / Not right; Accept says "Accept
|
|
13
|
+
without checks" when they didn't run, and what accepting does.
|
|
14
|
+
- **Your lead tells you what it's doing.** A task your lead is handling says
|
|
15
|
+
"Your lead is on it" instead of waiting on you, and short updates from your
|
|
16
|
+
lead arrive in chat.
|
|
17
|
+
- **Updates over 0.9.11 work.** Stopping the service no longer leaves the
|
|
18
|
+
coding server's record behind, and a deploy or update that fails after
|
|
19
|
+
stopping it puts the previous version back on its own.
|
|
20
|
+
|
|
21
|
+
## 0.9.11 — 2026-10-02
|
|
22
|
+
|
|
23
|
+
- **The Telegram bot always answers.** Replies and notifications go out from
|
|
24
|
+
the service itself, never from inside a build. If it can't answer, it says
|
|
25
|
+
why in plain words, and a session mix-up starts a fresh conversation instead
|
|
26
|
+
of refusing.
|
|
27
|
+
|
|
3
28
|
## 0.9.10 — 2026-10-02
|
|
4
29
|
|
|
5
30
|
- **Chat reads like a teammate.** Short messages, outcome first, with real
|
package/dist/assignment.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { type VerifiedApprover } from "./principal.js";
|
|
|
4
4
|
import { type CheckLevel } from "./check-levels.js";
|
|
5
5
|
import { type BuildReviewView } from "./review-switch.js";
|
|
6
6
|
import { type NeedKey, type WaitKey } from "./needs-you.js";
|
|
7
|
+
import { type LeadClaim } from "./lead-voice.js";
|
|
7
8
|
export type AssignmentAccess = WorkSummaryAccess;
|
|
8
9
|
export type AssignmentOwner = {
|
|
9
10
|
kind: "coordinator" | "lead";
|
|
@@ -108,6 +109,8 @@ export type AssignmentSnapshot = {
|
|
|
108
109
|
wait: WaitKey;
|
|
109
110
|
build: number | null;
|
|
110
111
|
} | null;
|
|
112
|
+
/** The person's lead took it on (lead-voice.ts): "Your lead is on it" until done, handed on, or two quiet hours. */
|
|
113
|
+
lead?: LeadClaim | null;
|
|
111
114
|
};
|
|
112
115
|
/** Status-first handoff for routine reads. Fetch get_assignment only when
|
|
113
116
|
* inspecting its exact evidence; do not repeat a full proof in every poll. */
|
package/dist/assignment.js
CHANGED
|
@@ -19,6 +19,7 @@ import { followUpChecksOf, withFollowUps } from "./result-follow-ups.js";
|
|
|
19
19
|
import { buildReviewOf, findingWords } from "./review-switch.js";
|
|
20
20
|
import { NEEDS, WAITS, processNeedOf } from "./needs-you.js";
|
|
21
21
|
import { assignmentStageOf } from "./task-status.js";
|
|
22
|
+
import { leadClaimOf } from "./lead-voice.js";
|
|
22
23
|
/** Status-first handoff for routine reads. Fetch get_assignment only when
|
|
23
24
|
* inspecting its exact evidence; do not repeat a full proof in every poll. */
|
|
24
25
|
export function assignmentBrief(assignment) {
|
|
@@ -323,6 +324,7 @@ export function assignmentOf(store, taskId, now, access, root) {
|
|
|
323
324
|
action: primaryAction === null ? null : { code: primaryAction.code, target: primaryAction.target },
|
|
324
325
|
attention, receipt: receipt?.digest ?? null }), acknowledged: false } : null;
|
|
325
326
|
const publication = result === null ? null : store.publicationForRun(result.id);
|
|
327
|
+
const lead = state === "complete" || state === "cancelled" || access.principal !== "operator" ? null : leadClaimOf(store, family.root.id, now, access.viewer);
|
|
326
328
|
// Existing saved inputs and output, read only after family admission. Keep
|
|
327
329
|
// polling briefs small; full reads disclose exactly which excerpts are shortened.
|
|
328
330
|
const planId = result?.planRevision == null ? null : store.getPlanRevision(result.planRevision)?.artifact;
|
|
@@ -339,7 +341,7 @@ export function assignmentOf(store, taskId, now, access, root) {
|
|
|
339
341
|
return { version: 1, rootId: family.root.id, activeTaskId: current.id, repo: current.repo, title: family.root.title,
|
|
340
342
|
state, detail, primaryAction, attention: [...new Set(attention)], attempts, owner, receipt, savedContext, completion, handoff,
|
|
341
343
|
publication: publication === null ? null : { state: publication.state, prUrl: publication.prUrl, remoteState: publication.remoteState },
|
|
342
|
-
review, deployment: { status: "not-recorded" }, ...(need === null ? {} : { need }) };
|
|
344
|
+
review, deployment: { status: "not-recorded" }, ...(need === null ? {} : { need }), ...(lead === null ? {} : { lead }) };
|
|
343
345
|
}
|
|
344
346
|
function admittedOwner(store, taskId, owner, now, root) {
|
|
345
347
|
if (owner.kind !== "coordinator")
|