RESEARCH: convenience and vault-maintenance actions for Notes/Files (Obsidian core + community plugins, other PKMs) — catalogue + grill (NO implementation) #302

Closed
opened 2026-09-28 07:03:02 +00:00 by kayg · 5 comments
Owner

Owner (2026-09-28): after asking for Show orphaned links / Show wikilinks / Convert wikilinks → Markdown / Show orphaned files (#301): 'i am sure you can have a codex search for more convenience actions like these.'

Research (web search; read the real docs and plugin READMEs):

  • Obsidian core: command palette commands (file, editor, links, templates, backlinks, outgoing links, unlinked mentions, 'Find orphaned files' style helpers), the File recovery and Sync history features.
  • Popular community plugins: Better Markdown Links (the owner uses it), Janitor, Find orphaned files and broken links, Consistent Attachments and Links, Link Converter, Linter, Tag Wrangler, Various Complements, Note Refactor, Paste URL into selection, Auto Link Title, Omnisearch, Dataview-style queries, Templater, Periodic Notes, Advanced Tables, Outliner, Smart Typography, Folder Notes, Attachment Management, Clear Unused Images, Frontmatter Title and others that appear in 'most downloaded' lists.
  • Other tools: Logseq, Bear, Craft, Notion, Tana, Reflect, Capacities, iA Writer, Apple Notes, Drafts: their bulk/maintenance and 'quality of life' actions.
    For each candidate: what it does, who needs it, whether calternal already has it (check docs/DESIGN.md, CONTEXT.md and the code), how it maps to calternal (a Search operator per DESIGN §32 S5, a bulk action with dry run + Undo, an editor command, a composer feature), the risk (data safety; the server is the single writer), and the effort.
    Group them (link health, attachments, refactoring, tags, formatting/lint, daily notes, templates, typing helpers, import/export), rank the top 15 by value, and write numbered grill questions in the grilling format (question, options, recommended answer). Respect the owner principles: opinionated and easy-to-use defaults; reuse over new UI; no new bars (chrome rules §34); everything deep-linkable.
    Output: docs/research/notes-actions.md (ASD-STE100) with a source list. Commit it on the branch, push, and post a summary on this issue. Do NOT implement anything.
Owner (2026-09-28): after asking for Show orphaned links / Show wikilinks / Convert wikilinks → Markdown / Show orphaned files (#301): 'i am sure you can have a codex search for more convenience actions like these.' Research (web search; read the real docs and plugin READMEs): - Obsidian core: command palette commands (file, editor, links, templates, backlinks, outgoing links, unlinked mentions, 'Find orphaned files' style helpers), the File recovery and Sync history features. - Popular community plugins: Better Markdown Links (the owner uses it), Janitor, Find orphaned files and broken links, Consistent Attachments and Links, Link Converter, Linter, Tag Wrangler, Various Complements, Note Refactor, Paste URL into selection, Auto Link Title, Omnisearch, Dataview-style queries, Templater, Periodic Notes, Advanced Tables, Outliner, Smart Typography, Folder Notes, Attachment Management, Clear Unused Images, Frontmatter Title and others that appear in 'most downloaded' lists. - Other tools: Logseq, Bear, Craft, Notion, Tana, Reflect, Capacities, iA Writer, Apple Notes, Drafts: their bulk/maintenance and 'quality of life' actions. For each candidate: what it does, who needs it, whether calternal already has it (check docs/DESIGN.md, CONTEXT.md and the code), how it maps to calternal (a Search operator per DESIGN §32 S5, a bulk action with dry run + Undo, an editor command, a composer feature), the risk (data safety; the server is the single writer), and the effort. Group them (link health, attachments, refactoring, tags, formatting/lint, daily notes, templates, typing helpers, import/export), rank the top 15 by value, and write numbered grill questions in the grilling format (question, options, recommended answer). Respect the owner principles: opinionated and easy-to-use defaults; reuse over new UI; no new bars (chrome rules §34); everything deep-linkable. Output: docs/research/notes-actions.md (ASD-STE100) with a source list. Commit it on the branch, push, and post a summary on this issue. Do NOT implement anything.
Author
Owner

Starting research on job/notes-actions-research, based on dev c9ec6aff84. Scope: docs/research/notes-actions.md only; no implementation.

Starting research on job/notes-actions-research, based on dev c9ec6aff84a9ec810124a2cfbdd07c189eea1b9c. Scope: docs/research/notes-actions.md only; no implementation.
Author
Owner

Code finding: crates/calternal-notes-core/src/links.rs contains the Markdown/Wikilink scanner and convert_unique_wikilinks; crates/plugins/notes/src/lib.rs calls link resolution when a Note is created or updated, and exposes template list/create/default routes. The current Search parser only accepts is:todo|done|shared|favorite and has:photo|file|note (apps/web/src/lib/search/query.ts). I found no existing is:broken-link, has:wikilink, or is:orphan filter and no vault-wide dry-run convert route. The research document will mark the parser and templates as existing foundations, and the bulk actions as proposals.

Code finding: `crates/calternal-notes-core/src/links.rs` contains the Markdown/Wikilink scanner and `convert_unique_wikilinks`; `crates/plugins/notes/src/lib.rs` calls link resolution when a Note is created or updated, and exposes template list/create/default routes. The current Search parser only accepts `is:todo|done|shared|favorite` and `has:photo|file|note` (`apps/web/src/lib/search/query.ts`). I found no existing `is:broken-link`, `has:wikilink`, or `is:orphan` filter and no vault-wide dry-run convert route. The research document will mark the parser and templates as existing foundations, and the bulk actions as proposals.
Author
Owner

Code finding: crates/calternal-notes-core/src/notes_index.rs::link_rows_from_note currently projects features.links only. Its module comment says embedded references are excluded from backlink rows. An is:orphan result or unused-attachment action must count Note embeds as inbound references (and cover the other reference sources in #301) before it can offer a file for Trash. Otherwise it can report a used attachment as unused.

Code finding: `crates/calternal-notes-core/src/notes_index.rs::link_rows_from_note` currently projects `features.links` only. Its module comment says embedded references are excluded from backlink rows. An `is:orphan` result or unused-attachment action must count Note embeds as inbound references (and cover the other reference sources in #301) before it can offer a file for Trash. Otherwise it can report a used attachment as unused.
Author
Owner

Research complete — no implementation.

Built docs/research/notes-actions.md: a code-backed inventory of current calternal foundations, an action catalogue based on Obsidian and other PKM tools (including Apple Notes, Tana and Capacities), a value-ranked top 15, and 11 owner questions. It recommends Search and Saved searches for review actions, and preview/version/Undo for bulk writes. The link index omits embeds today, so orphan cleanup needs broader reference coverage first.

Base: dev c9ec6aff84a9ec810124a2cfbdd07c189eea1b9c. Merged current dev once. Head: 1daab0ebf89315f41201045cb44769c371ae36a4. Pushed job/notes-actions-research.

Files authored: docs/research/notes-actions.md. The dev merge also brought CONTRIBUTING.md, docs/DESIGN.md and docs/research/mail-threads.md.

Gate results (command exit status 0):

cargo fmt --check: no output

   Compiling calternal-server v0.0.1 (/home/kayg/Developer/calternal-wt/notes-actions-research/crates/calternal-server)
    Checking calternal-collab v0.0.1 (/home/kayg/Developer/calternal-wt/notes-actions-research/crates/calternal-collab)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 10.70s

    Finished `test` profile [unoptimized + debuginfo] target(s) in 18m 38s
    test result: ok. 486 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.39s
    test result: ok. 65 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 8.19s

svelte-check found 0 errors and 0 warnings
 Test Files  107 passed (107)
      Tests  701 passed (701)

Cargo Clippy first needed the production frontend at apps/web/build; after bun install --frozen-lockfile and bun run build, Clippy passed. The build emitted vendor use client warnings. cargo clean removed 10.9 GiB. Removed apps/web/build and apps/web/.svelte-kit afterward.

Known gap / owner decisions: this file is research only. The 11 questions need owner decisions before implementation. One proposed safety extension to #301 is to let Reference in a Collection file keep a file out of orphan results; confirm whether this extends the current Note links-and-embeds definition. Import formats beyond Markdown and the initial Obsidian/Tana/Capacities export paths remain to be selected.

Decisions made beyond DESIGN: recommendations only, no product behavior selected. The ranking is based on user value, design fit, risk and effort, not plugin download counts.

Research complete — no implementation. Built `docs/research/notes-actions.md`: a code-backed inventory of current calternal foundations, an action catalogue based on Obsidian and other PKM tools (including Apple Notes, Tana and Capacities), a value-ranked top 15, and 11 owner questions. It recommends Search and Saved searches for review actions, and preview/version/Undo for bulk writes. The link index omits embeds today, so orphan cleanup needs broader reference coverage first. Base: dev `c9ec6aff84a9ec810124a2cfbdd07c189eea1b9c`. Merged current dev once. Head: `1daab0ebf89315f41201045cb44769c371ae36a4`. Pushed `job/notes-actions-research`. Files authored: `docs/research/notes-actions.md`. The dev merge also brought `CONTRIBUTING.md`, `docs/DESIGN.md` and `docs/research/mail-threads.md`. Gate results (command exit status 0): ```text cargo fmt --check: no output Compiling calternal-server v0.0.1 (/home/kayg/Developer/calternal-wt/notes-actions-research/crates/calternal-server) Checking calternal-collab v0.0.1 (/home/kayg/Developer/calternal-wt/notes-actions-research/crates/calternal-collab) Finished `dev` profile [unoptimized + debuginfo] target(s) in 10.70s Finished `test` profile [unoptimized + debuginfo] target(s) in 18m 38s test result: ok. 486 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.39s test result: ok. 65 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 8.19s svelte-check found 0 errors and 0 warnings Test Files 107 passed (107) Tests 701 passed (701) ``` Cargo Clippy first needed the production frontend at `apps/web/build`; after `bun install --frozen-lockfile` and `bun run build`, Clippy passed. The build emitted vendor `use client` warnings. `cargo clean` removed 10.9 GiB. Removed `apps/web/build` and `apps/web/.svelte-kit` afterward. Known gap / owner decisions: this file is research only. The 11 questions need owner decisions before implementation. One proposed safety extension to #301 is to let `Reference` in a Collection file keep a file out of orphan results; confirm whether this extends the current Note links-and-embeds definition. Import formats beyond Markdown and the initial Obsidian/Tana/Capacities export paths remain to be selected. Decisions made beyond DESIGN: recommendations only, no product behavior selected. The ranking is based on user value, design fit, risk and effort, not plugin download counts.
Author
Owner

Research complete in fedb14c80 (origin/dev); the Notes actions catalogue and recommendations are recorded in the merged research report.

Research complete in `fedb14c80` (origin/dev); the Notes actions catalogue and recommendations are recorded in the merged research report.
kayg closed this issue 2026-10-03 11:55:37 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal#302
No description provided.