Skip to content

ENG-2120 Add documentation for bulk importing feature (Obsidian) - #1291

Open
trangdoan982 wants to merge 1 commit into
mainfrom
eng-2120-add-documentation-for-bulk-importing-feature-obsidian
Open

ENG-2120 Add documentation for bulk importing feature (Obsidian)#1291
trangdoan982 wants to merge 1 commit into
mainfrom
eng-2120-add-documentation-for-bulk-importing-feature-obsidian

Conversation

@trangdoan982

@trangdoan982 trangdoan982 commented Aug 12, 2026

Copy link
Copy Markdown
Member

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:

  • Patterns match the filename only, and must match the whole title
  • Notes already carrying a configured nodeTypeId are excluded
  • On multiple matches, the first pattern wins, in settings order
  • Identification writes only nodeTypeId — no rename, no move, no template, no bulk undo

That 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

  • Ran $scope-check against ENG-2120 and the final diff.
  • Scope beyond Done When: The ticket's Done When is empty, so there is no stated boundary to check against. Scoped to Problem ("feature no documentation") — docs only, no runtime code touched.

Noted, not fixed

  • Completion notice reads "identified 1 files" (BulkIdentifyDiscourseNodesModal.tsx#L180)
  • getDiscourseNodeFormatExpression escapes [ ] ? . + 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

…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.
@linear-code

linear-code Bot commented Aug 12, 2026

Copy link
Copy Markdown

ENG-2120

@supabase

supabase Bot commented Aug 12, 2026

Copy link
Copy Markdown

This pull request has been ignored for the connected project zytfjzqyijgagqxrzbmz because there are no changes detected in packages/database/supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

@vercel

vercel Bot commented Aug 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
discourse-graph Ready Ready Preview Aug 12, 2026 3:47am

Request Review

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Open in Devin Review

@mdroidian

Copy link
Copy Markdown
Member

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

## 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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

- 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.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

## 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.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants