aaronsb_obsidian-mcp-plugin/src
Aaron Bockelie 1fdcbc3a8b fix(dataview): recover rows for implicit LIST GROUP BY; label whitespace group keys
Two findings from testing 0.11.37 live against Dataview 0.5.68 in the app —
neither reachable through the pre-existing mock fixtures, both real:

1. Implicit `LIST ... GROUP BY` returned bare group keys, no rows. Dataview's
   programmatic query() API drops grouped rows when nothing in the query
   references `rows` (unlike rendered markdown), so `LIST FROM "x" GROUP BY
   file.folder` came back as just the folder names. normalizeListGroupByQuery
   injects a default `rows.file.link` output expression for exactly that shape
   — a LIST with GROUP BY and no explicit output expression — so proper
   {key, rows} groups come back. Queries that already name an output
   expression, and non-LIST / non-grouped queries, pass through untouched; the
   user-facing echoed query stays the original input.

2. `TASK ... GROUP BY status` groups incomplete tasks under a space-character
   key, which rendered as an empty bold header (`**** (n)`). groupKeyLabel now
   treats whitespace-only keys the same as empty → `(no group)`.

The test mock is made faithful to the live behavior: a grouped LIST that
references `rows` returns list-pair wrappers, one that doesn't collapses to bare
keys — so the injection is actually observable rather than passing vacuously.
Adds normalization unit tests, an end-to-end implicit-grouped-LIST recovery
test, and a whitespace-key label test. build + lint + test green, 355/355.
2026-07-03 21:47:21 -05:00
..
config feat: Complete semantic MCP integration with direct Obsidian API 2025-06-27 12:33:59 -05:00
formatters fix(dataview): recover rows for implicit LIST GROUP BY; label whitespace group keys 2026-07-03 21:47:21 -05:00
indexing fix: Address all review bot required issues - async, directives, globals 2026-02-04 17:08:43 -06:00
security fix(lint): clear debt surfaced by typescript-eslint 8.60 + obsidian 1.13.0 2026-06-09 11:06:16 -05:00
semantic fix(lint): use window timers + window.console; drop forbidden eslint-disables (closes #226) 2026-06-09 11:13:48 -05:00
tools fix(dataview): recover rows for implicit LIST GROUP BY; label whitespace group keys 2026-07-03 21:47:21 -05:00
types fix: Eliminate all eslint any-type violations for Obsidian plugin review 2026-02-03 21:51:55 -06:00
utils refactor(mcp): use McpServer wrapper to drop deprecated Server reference 2026-06-09 11:57:01 -05:00
validation fix(lint): clear debt surfaced by typescript-eslint 8.60 + obsidian 1.13.0 2026-06-09 11:06:16 -05:00
browser-mcp-server.ts fix: Address all review bot required issues - async, directives, globals 2026-02-04 17:08:43 -06:00
main-complex.ts chore(lint): support eslint-plugin-obsidianmd@0.3.0 2026-05-15 15:01:03 -05:00
main-simple.ts fix: Eliminate all eslint any-type violations for Obsidian plugin review 2026-02-03 21:51:55 -06:00
main.ts feat(settings): surface connect/getting-started section at top 2026-06-24 00:50:03 -05:00
mcp-server.ts refactor(mcp): address review of #244 — document SSE backstop, test teardown 2026-06-24 02:00:33 -05:00
node-mcp-server.ts feat(network): wire classifier into server, settings, UI (ADR-107) 2026-05-24 16:56:24 -05:00
version.ts chore: Bump version to 0.11.37 2026-07-03 21:30:21 -05:00