ENG-2120 Add documentation for bulk importing feature (Obsidian) - #1291
ENG-2120 Add documentation for bulk importing feature (Obsidian)#1291trangdoan982 wants to merge 1 commit into
Conversation
…ian) Document the "Bulk identify discourse nodes" command, which had no user-facing docs. Adds a new page under Obsidian advanced features covering the three-step wizard, the title-matching rules that are not visible in the UI, and what identification does and does not change. Also cross-links from the single-note "Convert into" flow.
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cea25c45ca
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| - Patterns match a note's **title only**. Note content is never scanned. | ||
| - The pattern must match the **whole title**, from start to end. `CLM - {content}` matches `CLM - Coral bleaching is accelerating`, but not `Draft: CLM - Coral bleaching is accelerating`. | ||
| - `{content}` stands in for any text. | ||
| - Everything outside `{content}` is matched literally, so spacing and punctuation must line up exactly. |
There was a problem hiding this comment.
Remove the literal-matching guarantee
When a format contains unescaped regex metacharacters such as *, |, (, ), ^, or $, getDiscourseNodeFormatExpression interpolates them directly into a RegExp after escaping only [, ], ?, ., and +. For example, CLM.*{content} can match titles far beyond the intended literal pattern, so this guarantee is inaccurate and especially risky for an operation with no bulk undo; describe the actual limitation or fix the matcher.
AGENTS.md reference: AGENTS.md:L75-L80
Useful? React with 👍 / 👎.
| ## Troubleshooting | ||
|
|
||
| - **No candidates found** — Check that the pattern matches the full title, including spacing around separators. A pattern of `CLM -{content}` will not match a note titled `CLM - Coral bleaching is accelerating`. | ||
| - **Notes you expected are missing from the list** — They may already be identified as discourse nodes. Notes with a node type already set are excluded from the scan. |
There was a problem hiding this comment.
Warn that unconfigured node type IDs can be overwritten
When a note already has a nodeTypeId that is stale or absent from the current settings, both scan paths still include it: scanForBulkImportCandidates excludes only IDs in validNodeTypes, and handleBulkIdentify then replaces the existing value. This sentence incorrectly assures users that any note with a node type is excluded; qualify that only currently configured IDs are excluded and warn that selecting another match overwrites an unconfigured ID.
AGENTS.md reference: AGENTS.md:L75-L80
Useful? React with 👍 / 👎.
| - Patterns match a note's **title only**. Note content is never scanned. | ||
| - The pattern must match the **whole title**, from start to end. `CLM - {content}` matches `CLM - Coral bleaching is accelerating`, but not `Draft: CLM - Coral bleaching is accelerating`. | ||
| - `{content}` stands in for any text. | ||
| - Everything outside `{content}` is matched literally, so spacing and punctuation must line up exactly. |
| ## Troubleshooting | ||
|
|
||
| - **No candidates found** — Check that the pattern matches the full title, including spacing around separators. A pattern of `CLM -{content}` will not match a note titled `CLM - Coral bleaching is accelerating`. | ||
| - **Notes you expected are missing from the list** — They may already be identified as discourse nodes. Notes with a node type already set are excluded from the scan. |
Documents the Bulk identify discourse nodes Obsidian command, which shipped without user-facing docs.
Linear: ENG-2120
New page at
/docs/obsidian/advanced-features/bulk-identify-discourse-nodes, with four screenshots and a cross-link from Creating nodes.Beyond the three-step wizard, it documents what isn't discoverable from the UI:
nodeTypeIdare excludednodeTypeId— no rename, no move, no template, no bulk undoThat last point is the reason for the page: "identify" reads like "convert," and it isn't.
Verified on a local dev server: page and images render, sidebar order correct, all cross-links and anchors resolve, prettier clean.
Scope check
$scope-checkagainst ENG-2120 and the final diff.Done When: The ticket'sDone Whenis empty, so there is no stated boundary to check against. Scoped toProblem("feature no documentation") — docs only, no runtime code touched.Noted, not fixed
getDiscourseNodeFormatExpressionescapes[ ] ? . +but not( ) * |, so formats with parentheses silently mis-match. Documented as a "prefer simple prefixes" note; likely worth its own ticket.🤖 Generated with Claude Code