toolroll 0.9.82 → 0.9.84

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.
Files changed (92) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/README.md +4 -3
  3. package/dist/assignment-ui.js +5 -1
  4. package/dist/browser/workspace.css +1 -1
  5. package/dist/browser/workspace.js +22 -22
  6. package/dist/browser-crew.js +5 -1
  7. package/dist/browser-workspace.d.ts +7 -0
  8. package/dist/contracts/console-api.d.ts +2 -1
  9. package/dist/contracts/console-api.js +5 -1
  10. package/dist/control-setup.d.ts +9 -0
  11. package/dist/control-setup.js +31 -4
  12. package/dist/control-ui.d.ts +7 -1
  13. package/dist/control-ui.js +3 -2
  14. package/dist/dispatch.d.ts +15 -0
  15. package/dist/dispatch.js +26 -4
  16. package/dist/first-run.d.ts +5 -2
  17. package/dist/first-run.js +13 -2
  18. package/dist/first-tasks-child.d.ts +1 -0
  19. package/dist/first-tasks-child.js +11 -0
  20. package/dist/folder-look.d.ts +110 -0
  21. package/dist/folder-look.js +306 -0
  22. package/dist/guides.js +4 -3
  23. package/dist/learning-child.d.ts +1 -0
  24. package/dist/learning-child.js +34 -0
  25. package/dist/learning-look.d.ts +25 -0
  26. package/dist/learning-look.js +72 -0
  27. package/dist/model-catalog.d.ts +5 -0
  28. package/dist/model-catalog.js +11 -2
  29. package/dist/model-choices.d.ts +188 -0
  30. package/dist/model-choices.js +405 -0
  31. package/dist/model-names.d.ts +6 -0
  32. package/dist/model-names.js +34 -0
  33. package/dist/models-ui.d.ts +69 -5
  34. package/dist/models-ui.js +53 -10
  35. package/dist/needs-you.d.ts +8 -0
  36. package/dist/needs-you.js +8 -0
  37. package/dist/operate.d.ts +53 -0
  38. package/dist/operate.js +277 -49
  39. package/dist/project-admission.d.ts +4 -1
  40. package/dist/project-admission.js +23 -2
  41. package/dist/project-identity.d.ts +44 -0
  42. package/dist/project-identity.js +153 -0
  43. package/dist/project-knowledge.d.ts +6 -6
  44. package/dist/project-tools.d.ts +4 -1
  45. package/dist/project-tools.js +7 -2
  46. package/dist/project.d.ts +4 -1
  47. package/dist/project.js +11 -4
  48. package/dist/repos.d.ts +7 -0
  49. package/dist/repos.js +57 -0
  50. package/dist/serve.js +91 -17
  51. package/dist/server/chat.js +5 -4
  52. package/dist/server/chrome.d.ts +3 -0
  53. package/dist/server/chrome.js +5 -2
  54. package/dist/server/console.css +5 -2
  55. package/dist/server/flows.js +13 -3
  56. package/dist/server/guards.d.ts +4 -0
  57. package/dist/server/guards.js +12 -3
  58. package/dist/server/http.d.ts +12 -0
  59. package/dist/server/http.js +9 -0
  60. package/dist/server/pages.js +102 -92
  61. package/dist/server/people-tokens.js +40 -20
  62. package/dist/server/render-pages.d.ts +12 -16
  63. package/dist/server/render-pages.js +30 -69
  64. package/dist/server/render-people.d.ts +14 -2
  65. package/dist/server/render-people.js +35 -12
  66. package/dist/server/render-settings.js +1 -0
  67. package/dist/server/render-tasks.js +7 -14
  68. package/dist/server/request-context.d.ts +2 -0
  69. package/dist/server/route-table.js +8 -1
  70. package/dist/server/runtime.d.ts +4 -0
  71. package/dist/server/runtime.js +1 -0
  72. package/dist/server/settings.d.ts +58 -1
  73. package/dist/server/settings.js +211 -71
  74. package/dist/server/signup-gate.d.ts +9 -0
  75. package/dist/server/signup-gate.js +40 -0
  76. package/dist/server/tasks.js +19 -5
  77. package/dist/settings-kit-script.d.ts +21 -0
  78. package/dist/settings-kit-script.js +67 -0
  79. package/dist/settings-kit.d.ts +137 -0
  80. package/dist/settings-kit.js +186 -0
  81. package/dist/settings-proofs.d.ts +64 -0
  82. package/dist/settings-proofs.js +101 -0
  83. package/dist/setup-guide.js +4 -2
  84. package/dist/spend-report.d.ts +87 -0
  85. package/dist/spend-report.js +265 -0
  86. package/dist/spend-ui.d.ts +29 -8
  87. package/dist/spend-ui.js +74 -39
  88. package/dist/task-sizing.d.ts +5 -3
  89. package/dist/task-sizing.js +4 -4
  90. package/dist/up-processes.d.ts +13 -0
  91. package/dist/up-processes.js +6 -2
  92. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,46 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.9.84 — 2026-11-01
4
+
5
+ - **An honest Spend page, in Settings.** See API dollars, plan usage and
6
+ unknown cost separately — never added together, and unknown never shown
7
+ as $0 — by project, model, role and person, with the most expensive runs
8
+ and a CSV export. Settings → Spend holds your monthly limits.
9
+ - **One Models editor (Settings → Models).** "Sized by job" is the default:
10
+ Haiku 5.5 for small tasks, Sonnet 5.5 for routine ones, Opus 5.5 for large
11
+ or risky ones, and Opus 5.5 plans and reviews. "Opus for everything" is one
12
+ click away. Every change shows its exact before → after first, needs your
13
+ password, and is logged; approved work keeps its models. "Switch to it"
14
+ appears when a newer model ships. A fresh install now starts on Sized by
15
+ job instead of needing a terminal command.
16
+ - **A safer first-account page.** The setup code page now locks after five
17
+ wrong tries (with how to get a new code), and only accepts submissions from
18
+ the page itself.
19
+ - **No more dead ends on first run.** "Connect a builder" opens the steps to
20
+ do it, the setup checklist knows when a builder is connected, model names
21
+ read plainly, and `toolroll up` prints the exact command to read your
22
+ sign-in details.
23
+ - **Settings, rebuilt on one frame.** A clearer layout and one consistent
24
+ way to confirm sensitive changes: each one shows exactly what it asks for,
25
+ can't be sent twice, and keeps what you typed if it's refused.
26
+ - **The console answers right away.** Projects are checked in the
27
+ background; a project only becomes visible once its folder is confirmed.
28
+ - **CI** jobs now have time limits.
29
+
30
+ ## 0.9.83 — 2026-10-31
31
+
32
+ - **A folder that doesn't answer can't freeze the console.** A disconnected
33
+ drive, an iCloud-synced Documents folder or a pending macOS privacy prompt
34
+ used to stall the whole console at startup. Folder reads now run in a
35
+ separate, time-limited process: the console keeps answering, and the one
36
+ page that needed the folder says it didn't answer.
37
+ - **Projects come back by themselves.** A saved project whose folder was
38
+ away when Toolroll started connects as soon as the folder returns, with no
39
+ restart. It reconnects only to the same folder it was saved as, and a
40
+ project you remove stays removed.
41
+ - **Safer project paths.** A project's access is decided from its real,
42
+ resolved location, never from how its path is spelled.
43
+
3
44
  ## 0.9.82 — 2026-10-31
4
45
 
5
46
  - **A failing nightly holds your releases.** Turn it on with
package/README.md CHANGED
@@ -286,9 +286,10 @@ the git tests on 2.41 and on 2.47.
286
286
  `npm install -g toolroll` gives you the bare `toolroll` command for later
287
287
  (`standing-orders`, the older name, still works).
288
288
 
289
- `up` prints your login once (and saves it beside the database as
290
- `up-login.txt`), opens the app in your browser, and connects this machine as
291
- the builder. Add an existing folder or a GitHub repository from **Projects**;
289
+ `up` saves your password beside the database as `up-login.txt` (every
290
+ start prints where, and the `cat` command that shows it; never the password
291
+ itself), opens the app in your browser, and connects this machine as the
292
+ builder. Add an existing folder or a GitHub repository from **Projects**;
292
293
  the builder and unified chat pick it up while the app keeps running. The
293
294
  projects folder and every added repository are remembered. Later,
294
295
  `toolroll up` can be run from any directory and reconnects all of them.
@@ -1,6 +1,7 @@
1
1
  import { assignmentPresentationOf, shortenedMaterialReason } from './assignment-presentation.js';
2
2
  import { plainReasonWords } from './proof.js';
3
3
  import { chatResultHref } from './chat-controls.js';
4
+ import { startBuilderHref } from './needs-you.js';
4
5
  import { statusDetailsHtml, statusWhyHtml } from './task-status.js';
5
6
  import { html } from './html.js';
6
7
  /** The existing verified receipt reader may discover damage after a verdict
@@ -39,13 +40,16 @@ export function assignmentActionHref(assignment) {
39
40
  }
40
41
  if (runId !== null && (action.code === 'inspect-run' || action.code === 'reconcile-run'))
41
42
  return `/r/${runId}`;
43
+ // The task page only repeats that no builder is connected: lead to the command that connects one.
44
+ if (action.code === 'start-worker')
45
+ return startBuilderHref(taskId);
42
46
  const anchor = action.code === 'approve-scope' ? '#approve'
43
47
  : action.code === 'inspect-stop' || action.code === 'resume-run' ? '#task-control'
44
48
  // Retry (and Build again) is the task's status card itself, at the top: no anchor to its options.
45
49
  : action.code === 'unhold' ? '#task-actions'
46
50
  : action.code === 'write-scope' || action.code === 'select-agent' ? '#scope'
47
51
  : action.code === 'inspect-hold' ? '#holds'
48
- : action.code === 'start-worker' || action.code === 'repair-dependency' ? '#run-status' : '';
52
+ : action.code === 'repair-dependency' ? '#run-status' : '';
49
53
  return taskHref(assignment, taskId) + anchor;
50
54
  }
51
55
  /** Every version of the assignment, oldest first, as the card lists them. */