@dennisrongo/dsh-todo 0.4.1 → 0.5.1

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 CHANGED
@@ -65,6 +65,12 @@ next to the code it describes.
65
65
  description and labels, reorder (▲/▼), archive, and delete. Release and sprint
66
66
  inputs suggest labels already in use, so values converge on a shared
67
67
  vocabulary without a releases table to administer.
68
+ - **Suggest** — a button in the tab header scans the workspace and proposes
69
+ concrete next tasks: unresolved `TODO`/`FIXME`/`HACK` comments, features the
70
+ docs promise but the code does not implement, and modules with no tests. Each
71
+ proposal comes with a one-line rationale, a priority, and a `file:line`
72
+ pointer where one exists. Tick the ones you want and **Add selected** files
73
+ them into the backlog. Never automatic — it runs only when you click it.
68
74
  - **Themed** — colors come only from the shell's `--dsw-*` tokens, so it follows
69
75
  light/dark automatically. Respects `prefers-reduced-motion`.
70
76
 
@@ -179,6 +185,46 @@ swallow a move.
179
185
  `clearCompleted` (hard delete of done items) is still exported for callers that
180
186
  want it, but it is no longer wired to a button.
181
187
 
188
+ ## Suggest — what to work on next
189
+
190
+ The list holds work someone already thought of. Deciding what to do *next*
191
+ usually happens somewhere else — reading the code and noticing what is missing.
192
+ **Suggest**, in the tab header, moves that into the tab.
193
+
194
+ Clicking it reads the workspace and proposes concrete tasks from three kinds of
195
+ evidence:
196
+
197
+ - **Unresolved comments** — `TODO`, `FIXME` and `HACK`, with the file and line.
198
+ - **Docs-vs-implementation gaps** — the README and the file tree together, so
199
+ what is promised but absent has somewhere to show up.
200
+ - **Untested modules** — source files with no matching test file. A name-based
201
+ hint rather than a coverage run, so it is offered as a hint.
202
+
203
+ Each suggestion arrives as a checkbox row: a title, a one-line rationale, a
204
+ priority, and a `file:line` pointer where there is one to give. Nothing is
205
+ ticked by default — you opted into scanning, not into the results. **Add
206
+ selected** writes the ticked rows into the backlog as real tasks, with the
207
+ rationale as the description. Until then they are **proposals**: nothing is
208
+ stored, and closing the dialog discards them.
209
+
210
+ **Refresh returns genuinely new ideas, not a reshuffle.** Every title already
211
+ shown joins the exclusion set, alongside every unfinished task already in the
212
+ backlog, so the scan is told what not to repeat. Rows you have already ticked
213
+ survive a refresh — the selection is yours, not the model's.
214
+
215
+ > **A scan spends tokens.** It runs a real model session in the background —
216
+ > created, prompted, and archived when the scan finishes or you close the
217
+ > dialog; it never appears in the sidebar and is never navigated to. Nothing is
218
+ > scheduled and nothing is automatic: a scan happens when you click **Suggest**
219
+ > or **Refresh**, and only then.
220
+
221
+ What is sent is a **bounded digest**, not the repository: a capped file tree, a
222
+ capped list of comment matches one line each, and a leading slice of the README
223
+ and `package.json`. Vendored and generated directories (`node_modules`, `lib`,
224
+ `dist`, `vendor`, `target` and the rest) never enter it. Anything left out is
225
+ marked in the digest rather than dropped quietly, so a big repository yields a
226
+ smaller scan rather than a confident one about code it never read.
227
+
182
228
  ## CLI — for you and for AI agents
183
229
 
184
230
  The same list is reachable from a terminal, so an agent can shell out and manage your tasks
package/lib/bin.js CHANGED
@@ -44,6 +44,8 @@ function normalizeDueDate(raw) {
44
44
  var MAX_TEXT = 500;
45
45
  var MAX_DESC = 5e3;
46
46
  var MAX_LABEL = 60;
47
+ var SUGGESTIONS_DIR = ".dsh";
48
+ var SUGGESTIONS_FILE = `${SUGGESTIONS_DIR}/suggestions.json`;
47
49
 
48
50
  // src/db.ts
49
51
  var DOT_DSH = ".dsh";
package/lib/cli.js CHANGED
@@ -42,6 +42,8 @@ function normalizeDueDate(raw) {
42
42
  var MAX_TEXT = 500;
43
43
  var MAX_DESC = 5e3;
44
44
  var MAX_LABEL = 60;
45
+ var SUGGESTIONS_DIR = ".dsh";
46
+ var SUGGESTIONS_FILE = `${SUGGESTIONS_DIR}/suggestions.json`;
45
47
 
46
48
  // src/db.ts
47
49
  var DOT_DSH = ".dsh";