wherdr 2.0.1 → 2.2.0

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 (223) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/30nuHmZs.js +1 -0
  3. package/.output/public/_nuxt/30nuHmZs.js.br +0 -0
  4. package/.output/public/_nuxt/30nuHmZs.js.gz +0 -0
  5. package/.output/public/_nuxt/4gY2mLGX.js +62 -0
  6. package/.output/public/_nuxt/4gY2mLGX.js.br +0 -0
  7. package/.output/public/_nuxt/4gY2mLGX.js.gz +0 -0
  8. package/.output/public/_nuxt/AgentView.CfD2RWZY.css.br +0 -0
  9. package/.output/public/_nuxt/AgentView.CfD2RWZY.css.gz +0 -0
  10. package/.output/public/_nuxt/{BX8KVYfd.js → B8eSr-59.js} +1 -1
  11. package/.output/public/_nuxt/B8eSr-59.js.br +0 -0
  12. package/.output/public/_nuxt/B8eSr-59.js.gz +0 -0
  13. package/.output/public/_nuxt/Bd17z0YL.js.br +0 -0
  14. package/.output/public/_nuxt/Bd17z0YL.js.gz +0 -0
  15. package/.output/public/_nuxt/Bpoxvzh6.js.br +0 -0
  16. package/.output/public/_nuxt/Bpoxvzh6.js.gz +0 -0
  17. package/.output/public/_nuxt/BsbsvkAK.js +1 -0
  18. package/.output/public/_nuxt/BsbsvkAK.js.br +0 -0
  19. package/.output/public/_nuxt/BsbsvkAK.js.gz +0 -0
  20. package/.output/public/_nuxt/C25ROUa9.js.br +0 -0
  21. package/.output/public/_nuxt/C25ROUa9.js.gz +0 -0
  22. package/.output/public/_nuxt/CDWjMk9C.js.br +0 -0
  23. package/.output/public/_nuxt/CDWjMk9C.js.gz +0 -0
  24. package/.output/public/_nuxt/{DYKfeNM-.js → CML5cHwz.js} +1 -1
  25. package/.output/public/_nuxt/CN39A7L5.js +3 -0
  26. package/.output/public/_nuxt/CN39A7L5.js.br +0 -0
  27. package/.output/public/_nuxt/CN39A7L5.js.gz +0 -0
  28. package/.output/public/_nuxt/CXJnLmWv.js.br +0 -0
  29. package/.output/public/_nuxt/CXJnLmWv.js.gz +0 -0
  30. package/.output/public/_nuxt/{TS7GZUPU.js → CfQgQDOp.js} +7 -7
  31. package/.output/public/_nuxt/CfQgQDOp.js.br +0 -0
  32. package/.output/public/_nuxt/CfQgQDOp.js.gz +0 -0
  33. package/.output/public/_nuxt/{DOsw6KCR.js → CoRTPMqP.js} +43 -41
  34. package/.output/public/_nuxt/CoRTPMqP.js.br +0 -0
  35. package/.output/public/_nuxt/CoRTPMqP.js.gz +0 -0
  36. package/.output/public/_nuxt/{DeLLm2j1.js → CvGCN0_f.js} +15 -15
  37. package/.output/public/_nuxt/CvGCN0_f.js.br +0 -0
  38. package/.output/public/_nuxt/CvGCN0_f.js.gz +0 -0
  39. package/.output/public/_nuxt/{ScQ9FtVj.js → DmYihq1h.js} +1 -1
  40. package/.output/public/_nuxt/DoX0nZZb.js +105 -0
  41. package/.output/public/_nuxt/DoX0nZZb.js.br +0 -0
  42. package/.output/public/_nuxt/DoX0nZZb.js.gz +0 -0
  43. package/.output/public/_nuxt/{DZGKxROq.js → DuVQjOfc.js} +1 -1
  44. package/.output/public/_nuxt/DuVQjOfc.js.br +0 -0
  45. package/.output/public/_nuxt/DuVQjOfc.js.gz +0 -0
  46. package/.output/public/_nuxt/Y-4S7Nuf.js +1 -0
  47. package/.output/public/_nuxt/Y-4S7Nuf.js.br +0 -0
  48. package/.output/public/_nuxt/Y-4S7Nuf.js.gz +0 -0
  49. package/.output/public/_nuxt/{board.DK5EU4sL.css → board.CeTYM1XN.css} +1 -1
  50. package/.output/public/_nuxt/board.CeTYM1XN.css.br +0 -0
  51. package/.output/public/_nuxt/board.CeTYM1XN.css.gz +0 -0
  52. package/.output/public/_nuxt/builds/latest.json +1 -1
  53. package/.output/public/_nuxt/builds/meta/fd79ea32-8bac-487a-afa1-7a6e336fff3f.json +1 -0
  54. package/.output/public/_nuxt/entry.Cd2iNkBC.css +2 -0
  55. package/.output/public/_nuxt/entry.Cd2iNkBC.css.br +0 -0
  56. package/.output/public/_nuxt/entry.Cd2iNkBC.css.gz +0 -0
  57. package/.output/public/_nuxt/error-404.Bb87HomL.css.br +0 -0
  58. package/.output/public/_nuxt/error-404.Bb87HomL.css.gz +0 -0
  59. package/.output/public/_nuxt/error-500.Bwd7zAaE.css.br +0 -0
  60. package/.output/public/_nuxt/error-500.Bwd7zAaE.css.gz +0 -0
  61. package/.output/public/_nuxt/hSqNtAW9.js +25 -0
  62. package/.output/public/_nuxt/hSqNtAW9.js.br +0 -0
  63. package/.output/public/_nuxt/hSqNtAW9.js.gz +0 -0
  64. package/.output/public/_nuxt/o1wml4Rx.js +31 -0
  65. package/.output/public/_nuxt/o1wml4Rx.js.br +0 -0
  66. package/.output/public/_nuxt/o1wml4Rx.js.gz +0 -0
  67. package/.output/public/_nuxt/pdf.min.t82Z80JU.mjs.br +0 -0
  68. package/.output/public/_nuxt/pdf.min.t82Z80JU.mjs.gz +0 -0
  69. package/.output/public/_nuxt/pdf.worker.min.wgc6bjNh.mjs.br +0 -0
  70. package/.output/public/_nuxt/pdf.worker.min.wgc6bjNh.mjs.gz +0 -0
  71. package/.output/public/_nuxt/settings.Cdb21nNw.css.br +0 -0
  72. package/.output/public/_nuxt/settings.Cdb21nNw.css.gz +0 -0
  73. package/.output/public/sw.js +1 -1
  74. package/.output/server/chunks/_/branding.mjs +1 -1
  75. package/.output/server/chunks/_/package.mjs +1 -1
  76. package/.output/server/chunks/_/selfupdate.mjs +1 -1
  77. package/.output/server/chunks/_/updates.mjs +1 -1
  78. package/.output/server/chunks/_/worktrees.mjs +1 -1
  79. package/.output/server/chunks/_/ws.mjs +1 -1
  80. package/.output/server/chunks/nitro/nitro.mjs +887 -253
  81. package/.output/server/chunks/raw/prerelease.mjs +1 -1
  82. package/.output/server/chunks/routes/api/_..._.mjs +1 -0
  83. package/.output/server/chunks/routes/api/agents.post.mjs +1 -0
  84. package/.output/server/chunks/routes/api/ask-tab.post.mjs +1 -0
  85. package/.output/server/chunks/routes/api/attach.post.mjs +1 -0
  86. package/.output/server/chunks/routes/api/auth/disable.post.mjs +1 -0
  87. package/.output/server/chunks/routes/api/auth/lock-all.post.mjs +1 -0
  88. package/.output/server/chunks/routes/api/auth/lock.post.mjs +1 -0
  89. package/.output/server/chunks/routes/api/auth/login/options.post.mjs +1 -0
  90. package/.output/server/chunks/routes/api/auth/login/verify.post.mjs +1 -0
  91. package/.output/server/chunks/routes/api/auth/max-session.post.mjs +1 -0
  92. package/.output/server/chunks/routes/api/auth/register/options.post.mjs +1 -0
  93. package/.output/server/chunks/routes/api/auth/register/verify.post.mjs +1 -0
  94. package/.output/server/chunks/routes/api/auth/status.get.mjs +1 -0
  95. package/.output/server/chunks/routes/api/changes.get.mjs +1 -0
  96. package/.output/server/chunks/routes/api/chat/image.get.mjs +1 -0
  97. package/.output/server/chunks/routes/api/chat.get.mjs +1 -0
  98. package/.output/server/chunks/routes/api/choose.post.mjs +1 -0
  99. package/.output/server/chunks/routes/api/claude-setup.post.mjs +1 -0
  100. package/.output/server/chunks/routes/api/claude-statusline.post.mjs +1 -0
  101. package/.output/server/chunks/routes/api/clear-queued-input.post.mjs +1 -0
  102. package/.output/server/chunks/routes/api/close/status.get.mjs +1 -0
  103. package/.output/server/chunks/routes/api/close.post.mjs +1 -0
  104. package/.output/server/chunks/routes/api/codex-update.post.mjs +1 -0
  105. package/.output/server/chunks/routes/api/commands.get.mjs +1 -0
  106. package/.output/server/chunks/routes/api/config.get.mjs +1 -0
  107. package/.output/server/chunks/routes/api/dirs.get.mjs +1 -0
  108. package/.output/server/chunks/routes/api/dismiss-stopped.post.mjs +1 -0
  109. package/.output/server/chunks/routes/api/dismiss.post.mjs +1 -0
  110. package/.output/server/chunks/routes/api/effort.post.mjs +1 -0
  111. package/.output/server/chunks/routes/api/efforts.get.mjs +1 -0
  112. package/.output/server/chunks/routes/api/file.post.mjs +1 -0
  113. package/.output/server/chunks/routes/api/files/download.get.mjs +1 -0
  114. package/.output/server/chunks/routes/api/files/download.head.mjs +1 -0
  115. package/.output/server/chunks/routes/api/files/read.get.mjs +1 -0
  116. package/.output/server/chunks/routes/api/files.get.mjs +1 -0
  117. package/.output/server/chunks/routes/api/health.get.mjs +1 -0
  118. package/.output/server/chunks/routes/api/input.post.mjs +1 -0
  119. package/.output/server/chunks/routes/api/interrupt.post.mjs +1 -0
  120. package/.output/server/chunks/routes/api/isgit.get.mjs +1 -0
  121. package/.output/server/chunks/routes/api/machine/awake.get.mjs +1 -0
  122. package/.output/server/chunks/routes/api/machine/awake.post.mjs +1 -0
  123. package/.output/server/chunks/routes/api/machine/order.get.mjs +1 -0
  124. package/.output/server/chunks/routes/api/machine/order.post.mjs +1 -0
  125. package/.output/server/chunks/routes/api/machine/reconnect.post.mjs +1 -0
  126. package/.output/server/chunks/routes/api/machine/rename.post.mjs +1 -0
  127. package/.output/server/chunks/routes/api/machine/status.post.mjs +1 -0
  128. package/.output/server/chunks/routes/api/menu-left.post.mjs +1 -0
  129. package/.output/server/chunks/routes/api/menu.post.mjs +1 -0
  130. package/.output/server/chunks/routes/api/model.post.mjs +1 -0
  131. package/.output/server/chunks/routes/api/models.get.mjs +1 -0
  132. package/.output/server/chunks/routes/api/nav.post.mjs +1 -0
  133. package/.output/server/chunks/routes/api/onboarding.get.mjs +1 -0
  134. package/.output/server/chunks/routes/api/onboarding.post.mjs +1 -0
  135. package/.output/server/chunks/routes/api/phone.get.mjs +1 -0
  136. package/.output/server/chunks/routes/api/phone.post.mjs +1 -0
  137. package/.output/server/chunks/routes/api/plugins/actions.get.mjs +1 -0
  138. package/.output/server/chunks/routes/api/plugins/invoke.post.mjs +1 -0
  139. package/.output/server/chunks/routes/api/plugins/projects.get.mjs +1 -0
  140. package/.output/server/chunks/routes/api/plugins/projects.post.mjs +1 -0
  141. package/.output/server/chunks/routes/api/prompt.post.mjs +1 -0
  142. package/.output/server/chunks/routes/api/push/quiet.post.mjs +1 -0
  143. package/.output/server/chunks/routes/api/push/subscribe.post.mjs +1 -0
  144. package/.output/server/chunks/routes/api/push/test.post.mjs +1 -0
  145. package/.output/server/chunks/routes/api/push/unsubscribe.post.mjs +1 -0
  146. package/.output/server/chunks/routes/api/quotas.get.mjs +1 -0
  147. package/.output/server/chunks/routes/api/rename.post.mjs +1 -0
  148. package/.output/server/chunks/routes/api/requeue.post.mjs +1 -0
  149. package/.output/server/chunks/routes/api/restart.get.mjs +1 -0
  150. package/.output/server/chunks/routes/api/restart.post.mjs +1 -0
  151. package/.output/server/chunks/routes/api/reveal.post.mjs +1 -0
  152. package/.output/server/chunks/routes/api/screen-key.post.mjs +1 -0
  153. package/.output/server/chunks/routes/api/screen.get.mjs +1 -0
  154. package/.output/server/chunks/routes/api/search.get.mjs +1 -0
  155. package/.output/server/chunks/routes/api/seen.post.mjs +1 -0
  156. package/.output/server/chunks/routes/api/sessions.get.mjs +1 -0
  157. package/.output/server/chunks/routes/api/sessions.post.mjs +1 -0
  158. package/.output/server/chunks/routes/api/settings-tab.post.mjs +1 -0
  159. package/.output/server/chunks/routes/api/settings.get.mjs +1 -0
  160. package/.output/server/chunks/routes/api/settings.post.mjs +1 -0
  161. package/.output/server/chunks/routes/api/space.post.mjs +1 -0
  162. package/.output/server/chunks/routes/api/state.get.mjs +1 -0
  163. package/.output/server/chunks/routes/api/tasks/action.post.mjs +1 -0
  164. package/.output/server/chunks/routes/api/tasks/add.post.mjs +1 -0
  165. package/.output/server/chunks/routes/api/tasks/after.post.mjs +1 -0
  166. package/.output/server/chunks/routes/api/tasks/approve.post.mjs +1 -0
  167. package/.output/server/chunks/routes/api/tasks/archive-done.post.mjs +40 -0
  168. package/.output/server/chunks/routes/api/tasks/archived.get.mjs +2 -1
  169. package/.output/server/chunks/routes/api/tasks/autopilot.get.mjs +2 -1
  170. package/.output/server/chunks/routes/api/tasks/autopilot.post.mjs +2 -1
  171. package/.output/server/chunks/routes/api/tasks/board-settings.get.mjs +2 -1
  172. package/.output/server/chunks/routes/api/tasks/board-settings.post.mjs +2 -1
  173. package/.output/server/chunks/routes/api/tasks/coordinator.get.mjs +2 -1
  174. package/.output/server/chunks/routes/api/tasks/coordinator.post.mjs +2 -1
  175. package/.output/server/chunks/routes/api/tasks/describe.post.mjs +40 -0
  176. package/.output/server/chunks/routes/api/tasks/details.get.mjs +2 -1
  177. package/.output/server/chunks/routes/api/tasks/limit.post.mjs +2 -1
  178. package/.output/server/chunks/routes/api/tasks/links.get.mjs +2 -1
  179. package/.output/server/chunks/routes/api/tasks/models.get.mjs +2 -1
  180. package/.output/server/chunks/routes/api/tasks/pick.post.mjs +2 -1
  181. package/.output/server/chunks/routes/api/tasks/project.get.mjs +41 -0
  182. package/.output/server/chunks/routes/api/tasks/project.post.mjs +40 -0
  183. package/.output/server/chunks/routes/api/tasks/question.post.mjs +2 -1
  184. package/.output/server/chunks/routes/api/tasks/scheduled.get.mjs +2 -1
  185. package/.output/server/chunks/routes/api/tasks/settings.get.mjs +2 -1
  186. package/.output/server/chunks/routes/api/tasks/start.get.mjs +2 -1
  187. package/.output/server/chunks/routes/api/tasks/tell.post.mjs +2 -1
  188. package/.output/server/chunks/routes/api/tasks.get.mjs +1 -0
  189. package/.output/server/chunks/routes/api/unqueue.post.mjs +2 -1
  190. package/.output/server/chunks/routes/api/update/status.get.mjs +1 -0
  191. package/.output/server/chunks/routes/api/update.get.mjs +1 -0
  192. package/.output/server/chunks/routes/api/update.post.mjs +1 -0
  193. package/.output/server/chunks/routes/api/upload.post.mjs +1 -0
  194. package/.output/server/chunks/routes/api/worktrees/remove.post.mjs +1 -0
  195. package/.output/server/chunks/routes/api/worktrees.get.mjs +1 -0
  196. package/.output/server/chunks/routes/favicon.ico.get.mjs +1 -0
  197. package/.output/server/chunks/routes/icons/_name_.get.mjs +2 -1
  198. package/.output/server/chunks/routes/renderer.mjs +3 -2
  199. package/.output/server/chunks/routes/uploads/_...name_.get.mjs +2 -1
  200. package/.output/server/chunks/routes/ws/_..._.mjs +2 -1
  201. package/.output/server/chunks/routes/ws/events.mjs +2 -1
  202. package/.output/server/chunks/routes/ws/term.mjs +2 -1
  203. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  204. package/.output/server/index.mjs +2 -1
  205. package/.output/server/package.json +1 -1
  206. package/docs/README.md +4 -0
  207. package/docs/RELEASING.md +58 -46
  208. package/docs/board.md +7 -0
  209. package/docs/configuration.md +9 -0
  210. package/docs/development.md +1 -1
  211. package/docs/release-notes-2.1.0.md +21 -0
  212. package/docs/release-notes-2.2.0.md +19 -0
  213. package/package.json +1 -1
  214. package/.output/public/_nuxt/072bjdot.js +0 -2
  215. package/.output/public/_nuxt/8FAMamJX.js +0 -1
  216. package/.output/public/_nuxt/C2aT0CgA.js +0 -62
  217. package/.output/public/_nuxt/CanLPS0U.js +0 -105
  218. package/.output/public/_nuxt/DGXKTg7D.js +0 -31
  219. package/.output/public/_nuxt/DTiR5P9E.js +0 -25
  220. package/.output/public/_nuxt/DZ7VvF3e.js +0 -1
  221. package/.output/public/_nuxt/DumNBIyF.js +0 -1
  222. package/.output/public/_nuxt/builds/meta/b6ed1ddd-d6d6-4137-beab-2548b20dd998.json +0 -1
  223. package/.output/public/_nuxt/entry.BhiYrGAW.css +0 -2
package/docs/RELEASING.md CHANGED
@@ -4,7 +4,11 @@ Publishing a version requires the user's explicit approval. Never republish a pa
4
4
  for npm review. No new secret is needed: GitHub uses `GITHUB_TOKEN`, npm uses OIDC Trusted
5
5
  Publishing (`npm.yml`), and the tap uses the existing optional `HOMEBREW_TAP_TOKEN`.
6
6
 
7
- 1. Merge reviewed changes, including the release workflows, into `main`. The site workflow
7
+ 1. Prepare the version and notes in a PR targeting `develop`, the integration branch.
8
+ `main` only receives reviewed releases; `v2` is no longer an integration branch.
9
+ Require `checks` and `e2e` to be green on the exact preparation head, with the current
10
+ `develop` merged in. After explicit approval, open a release PR from `develop` to `main`
11
+ and require those checks again on its exact head before merging. The site workflow
8
12
  deploys relevant changes on pushes to `main`, independently of tags and npm.
9
13
  2. Set the same version in `package.json`, `package-lock.json` and `herdr-plugin.toml`.
10
14
  Move the Unreleased changelog into a dated version entry. Run tests, typecheck and leak
@@ -104,11 +108,13 @@ are released after the browser saves the file, keeping repeated downloads reliab
104
108
  [Full changelog](https://github.com/example/wherdr/blob/vX.Y.Z/CHANGELOG.md)
105
109
  ```
106
110
 
107
- ## Rolling v2 prerelease
111
+ ## Rolling develop prerelease
108
112
 
109
- `v2-prerelease.yml` rebuilds one prerelease on every push to the `v2` branch, so a machine
110
- can install v2 from a prebuilt package (the plugin's GitHub download) and never compile it.
111
- It publishes the version of `herdr-plugin.toml` (for example `2.0.0-dev`, before the stable version bump) as `v<version>`:
113
+ `develop-prerelease.yml` rebuilds one prerelease on every push to the `develop` branch (the
114
+ integration branch; `main` only receives releases), so a machine can install develop from a prebuilt package (the plugin's GitHub download) and never compile it.
115
+ It always publishes the fixed tag **`develop`**, including stable package versions.
116
+ The package version stays unchanged; `COMMIT` identifies the build. Existing
117
+ `vX.Y.Z-dev` prereleases are left alone.
112
118
 
113
119
  - the tag moves to the pushed commit; the release is a prerelease, never `latest`. The update
114
120
  checks of every version, the legacy channel and `release-ready.yml` only read stable
@@ -122,53 +128,59 @@ It publishes the version of `herdr-plugin.toml` (for example `2.0.0-dev`, before
122
128
  before the archive is replaced and attached last: when `COMMIT` is there and names the
123
129
  branch head, the archive is that commit's.
124
130
 
125
- Once the version is stable, the workflow skips packaging and publication; it must not create a stable tag.
131
+ The Pi reads `releases/tags/develop`, never `releases/latest`. Download `COMMIT`,
132
+ the single `wherdr-<version>.tgz` asset and `wherdr-<version>.tgz.sha256`.
133
+ For 2.1.0 these are `wherdr-2.1.0.tgz` and `wherdr-2.1.0.tgz.sha256`.
134
+ Verify the checksum and install the archive through the existing prebuilt-package
135
+ installation path. Read `COMMIT` again after downloading and retry if it changed
136
+ or is absent: publication can overlap a download. Previous version assets are removed.
126
137
 
127
- The rolling notes start with an Update summary of the first three top-level Unreleased
128
- changelog entries and a link to the changelog at the packaged commit, followed by build
129
- metadata. Keep these entries readable and current; packaging fails if they are absent or fail the same minimum-content check.
138
+ The workflow sets `PRERELEASE_TAG=develop` for `scripts/prerelease.sh`. Its notes
139
+ identify the branch and commit even when release preparation has emptied Unreleased.
140
+ Without that setting, the script keeps the historical `vX.Y.Z-suffix` mode and its
141
+ Unreleased summary requirement. Both modes refuse to edit a release unless it is
142
+ a published prerelease. The fixed tag does not match stable version tags; its
143
+ `GITHUB_TOKEN` update also starts neither `release.yml` nor `npm.yml`. Stable
144
+ publishing, update checks and readiness workflows remain unchanged.
130
145
 
131
- `scripts/prerelease.sh` does the checks and the publication. It refuses a version without a
132
- prerelease suffix (`X.Y.Z-something`) and a release of that tag that is not a published
133
- prerelease: stable versions keep going through the steps above. The tag is moved with
134
- `GITHUB_TOKEN`, which starts neither `release.yml` nor `npm.yml`. The workflow runs from the
135
- `v2` branch: it acts once this file is on `v2`.
146
+ ## Publishing the prepared 2.1.0 release
136
147
 
137
- ## Commands for 2.0.0
148
+ The preparation PR targets `develop`. Version 2.1.0 includes new task description editing,
149
+ bulk archiving and task limit controls as well as fixes, so it uses a minor increment from
150
+ 2.0.1 rather than the initially proposed 2.0.2 patch. It introduces no intended breaking
151
+ change and needs no migration from 2.0.1.
138
152
 
139
- Run in a release checkout after explicit approval. These commands are documentation, not a
140
- request to publish. The version commit must go through the usual reviewed PR process.
153
+ After explicit approval, merge the reviewed preparation PR into `develop`, then review a
154
+ `develop` → `main` release PR. Require `checks` and `e2e` on the exact release head;
155
+ run the full CI workflow manually on that head before publication (release tags also run
156
+ full CI, but the publishing workflows do not wait for it). Do not tag or create even a
157
+ GitHub draft until these checks and the publication approval are complete.
158
+
159
+ In a clean checkout of the approved `main` commit, using Node.js 22:
160
+
161
+ ```sh
162
+ git fetch origin
163
+ git merge --ff-only origin/main
164
+ test "$(git rev-parse HEAD)" = "$(git rev-parse origin/main)"
165
+ test "$(node -p "require('./package.json').version")" = 2.1.0
166
+ GITHUB_REPOSITORY="$(gh repo view --json nameWithOwner -q .nameWithOwner)" GITHUB_REF_NAME=v2.1.0 node scripts/check-release-notes.mjs < docs/release-notes-2.1.0.md
167
+ git tag v2.1.0
168
+ # Prepare the reviewed draft before the tag push starts publication.
169
+ gh release create v2.1.0 --target "$(git rev-parse HEAD)" --draft --title "wherdr 2.1.0" --notes-file docs/release-notes-2.1.0.md
170
+ git push origin v2.1.0
171
+ ```
172
+
173
+ Verify that `release.yml`, `npm.yml` and full tag CI actually started on the approved SHA.
174
+ If the existing tag push does not trigger them, stop and resolve the workflow trigger;
175
+ never move the tag or publish a different build. `release.yml` has no manual trigger.
176
+ Wait for packaging and publication to succeed, then perform the mandatory manual tap update
177
+ when the optional tap secret is absent:
141
178
 
142
179
  ```sh
143
- git switch main
144
- git pull --ff-only
145
- git switch -c release/2.0.0
146
- npm version 2.0.0 --no-git-tag-version
147
- sed -i.bak 's/^version = ".*"/version = "2.0.0"/' herdr-plugin.toml
148
- rm herdr-plugin.toml.bak
149
- # Move Unreleased notes to the dated 2.0.0 entry, run the project checks, then commit.
150
- git add package.json package-lock.json herdr-plugin.toml CHANGELOG.md
151
- git commit -m "Prepare release 2.0.0"
152
- git push -u origin release/2.0.0
153
- gh pr create --base main --head release/2.0.0 --title "Prepare release 2.0.0" --body "Prepare the reviewed 2.0.0 release versions and changelog."
154
- # Open, review and merge the version PR; refresh main before continuing.
155
- git switch main
156
- git pull --ff-only
157
- # Use the reviewed notes committed with the version preparation.
158
- GITHUB_REPOSITORY="$(gh repo view --json nameWithOwner -q .nameWithOwner)" GITHUB_REF_NAME=v2.0.0 node scripts/check-release-notes.mjs < docs/release-notes-2.0.0.md
159
- gh release create v2.0.0 --target "$(git rev-parse HEAD)" --draft --title "wherdr 2.0.0" --notes-file docs/release-notes-2.0.0.md
160
- git tag v2.0.0
161
- git push origin v2.0.0
162
- release_run=$(gh run list --workflow release.yml --commit "$(git rev-parse HEAD)" --json databaseId --jq '.[0].databaseId')
163
- # If no run appears yet, wait for GitHub to register the tag and repeat the lookup.
164
- gh run watch "$release_run" --exit-status
165
- gh run list --workflow npm.yml --limit 3
166
- # MANDATORY while the tap secret is absent. Run only after release.yml succeeds:
167
- sh scripts/bump-homebrew.sh 2.0.0 "$(gh repo view --json owner -q .owner.login)"
168
- # Inspect the readiness workflow; optionally request an immediate check:
180
+ sh scripts/bump-homebrew.sh 2.1.0 "$(gh repo view --json owner -q .owner.login)"
169
181
  gh workflow run release-ready.yml --ref main
170
182
  ```
171
183
 
172
- Use Node.js 22 for npm commands. Do not manually publish the draft or mark it latest ahead
173
- of these checks. A GitHub release created by `GITHUB_TOKEN` does not trigger other workflows;
174
- all publication work is driven by the pushed tag, not `release: published` events.
184
+ Do not manually publish the draft or mark it latest. npm publishes the attached archive
185
+ with provenance; npm moderation can delay availability. Readiness advances the legacy
186
+ channel only when npm and Homebrew are both ready. Never retry a successful npm publish.
package/docs/board.md CHANGED
@@ -101,6 +101,13 @@ What the Board shows and does:
101
101
  not started yet takes a first message (`coordinator tell`), which starts it. One that
102
102
  herdr-projects could not start (an agent not installed there…) says why, with **Try again**
103
103
  (`coordinator restart`) once it is fixed: the message still waiting then goes in.
104
+ - **New → Coordinator** opens a project coordinator from any Git folder of the chosen machine:
105
+ a repo the board knows, or **Other repository…** and a folder. The sheet says whether that
106
+ folder is **On the board** (its project name), a **New project** (the name it will get), or
107
+ missing or not Git. **Add and open conversation** adds a new one to that machine's board first:
108
+ herdr-projects has no command for that alone, so wherdr adds an automation for that folder
109
+ (`automations add --repo <folder> --when merged`) and removes it at once. No task is made, so
110
+ no "added" automation fires. The coordinator is then named by the repo's name.
104
111
  - **Autopilot** (herdr-projects 1.2.15 or later): each coordinator has a switch, under the Board's
105
112
  bar for the main Coordinator, in each machine and repo heading, and at the top of its panel. It
106
113
  shows whether the board wakes that coordinator to work toward its goal, and when next. Turning it
@@ -37,3 +37,12 @@ In the app, **Settings** holds display preferences such as theme, typing effect
37
37
  home screen shows; these follow you across devices through `settings.json`. Language,
38
38
  notifications, terminal text size and renderer remain device-specific. The passkey lock is
39
39
  managed under Settings › Security.
40
+
41
+ ## Paste diagnostics
42
+
43
+ Enable **Settings → Advanced → Paste journal** on the device used for dictation.
44
+ Paste into an agent's message field, then return to Advanced to inspect the last
45
+ 50 events: event kind, clipboard types, text length, default prevention, focus
46
+ and whether the field or its attachments changed. Text content is never recorded.
47
+ The journal stays in memory until reload; disabling the switch clears it.
48
+ The switch is off by default and stays local to this browser.
@@ -32,7 +32,7 @@ and logs a warning.
32
32
  ## Contributing
33
33
 
34
34
  See [CONTRIBUTING.md](../CONTRIBUTING.md), including the [agent test rule](../CONTRIBUTING.md#agent-test-rule)
35
- and `npm run test:affected -- --base origin/v2 --dry-run`. Changes are listed in [CHANGELOG.md](../CHANGELOG.md).
35
+ and `npm run test:affected -- --base origin/develop --dry-run`. Changes are listed in [CHANGELOG.md](../CHANGELOG.md).
36
36
 
37
37
  Every commit is public: a leak check (gitleaks plus your own forbidden patterns) covers the files
38
38
  and the commits about to be pushed; see [Leak check](../CONTRIBUTING.md#leak-check).
@@ -0,0 +1,21 @@
1
+ ## New
2
+
3
+ Edit a task's description directly in its panel. Archive all completed tasks in a repository together after confirming the action.
4
+
5
+ The Task tab now shows time and token limit gauges. At a limit stop, raise the limit with a preset or enter your own value before resuming.
6
+
7
+ ## Improved
8
+
9
+ Tasks open immediately from the sidebar, with the selected task highlighted on the Board. Cached Boards and conversations appear while fresh data loads, and narrow screens keep panels and controls within reach.
10
+
11
+ Working tasks distinguish an active agent, a task waiting for CI and a task queued behind other work. Automatic Autopilot wakes appear as distinct conversation notes.
12
+
13
+ ## Fixed
14
+
15
+ Creating a project coordinator from a Git folder registers the repository before opening its conversation, including on remote machines. Unreachable Board machines show the reason in their headings, and long queued-task badges fit on mobile screens.
16
+
17
+ ## Update
18
+
19
+ This release adds features to 2.0.1 and therefore uses version 2.1.0 rather than 2.0.2. No migration is required from 2.0.1; existing tasks and settings are kept. Node.js 22 or newer and Herdr 0.9.1 or newer are still required. Users upgrading from 1.x should follow the [2.0 migration guide](https://github.com/afloury/wherdr/blob/v2.1.0/docs/herdr-projects-1x.md).
20
+
21
+ [Full changelog](https://github.com/afloury/wherdr/blob/v2.1.0/CHANGELOG.md)
@@ -0,0 +1,19 @@
1
+ ## New
2
+
3
+ Choose one task type when creating a task: work, research or conversation. You can also request a plan before work starts and choose whether you or the reviewer approves it, or keep the inherited setting.
4
+
5
+ ## Improved
6
+
7
+ Agent cards preload the end of their conversations on hover or intent to open, making the latest messages available sooner when you open a conversation.
8
+
9
+ ## Fixed
10
+
11
+ Text dictated with Spokely is captured synchronously when pasted into the message field, preventing lost text. The HTML paste fallback preserves paragraph and line boundaries.
12
+
13
+ For troubleshooting, enable the optional Paste journal in Settings › Advanced. It records diagnostic events without recording text content, stays in memory until reload and clears when disabled.
14
+
15
+ ## Update
16
+
17
+ This release adds features to 2.1.0 and therefore uses version 2.2.0 rather than 2.1.1. No migration is required from 2.1.0; existing tasks and settings are kept. Node.js 22 or newer and Herdr 0.9.1 or newer are still required. Users upgrading from 1.x should follow the [2.0 migration guide](https://github.com/afloury/wherdr/blob/v2.2.0/docs/herdr-projects-1x.md).
18
+
19
+ [Full changelog](https://github.com/afloury/wherdr/blob/v2.2.0/CHANGELOG.md)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wherdr",
3
- "version": "2.0.1",
3
+ "version": "2.2.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "description": "Unofficial mobile web client (PWA) to drive the coding agents running in Herdr",