Commit graph

505 commits

Author SHA1 Message Date
Kodai Nakamura
dabd8d428d docs: clarify architecture deepening design
Why:
- The architecture deepening work will span multiple core modules, so the design needs to remove vague implementation guidance before planning begins.
- Clearer scope reduces the chance that future agents move the wrong tests or leave settings and Markdown segmentation decisions ambiguous.

What:
- Specify that pure transformation tests should move from main adapter tests into formatting-run tests.
- Define the URL formatting settings projection in concrete terms.
- Make the Markdown segment extraction order explicit for the implementation plan.
2026-06-22 00:56:07 +09:00
Kodai Nakamura
ef7e233a47 docs: add architecture deepening design
Why:
The architecture review identified five related deepening opportunities that should be implemented in a staged, testable sequence rather than as ad hoc refactors.

What:
Document the approved design for candidate scanning, formatting runs, settings catalog, Markdown protected segments, and URL formatting adapters, including scope, non-goals, testing strategy, migration order, risks, and success criteria.
2026-06-22 00:46:15 +09:00
Kodai Nakamura
1ca3619541 4.5.2 2026-06-21 23:23:12 +09:00
Kodai Nakamura
1490c1d39f feat: add frontmatter opt-out for URL titles
Why:
- Some notes need to keep raw URLs and avoid web title requests even when global URL title replacement is enabled.
- A per-note frontmatter flag gives users local control without disabling other automatic linking behavior.

What:
- Add automatic-linker-disable-url-title frontmatter detection.
- Skip URL title fetching and replacement when the flag is set on a note.
- Document the frontmatter option and add regression coverage for the helper and plugin flow.
- Record this repository's agent version-control instructions in AGENTS.md.
2026-06-21 23:22:35 +09:00
Kodai Nakamura
4344af6157 4.5.1 2026-05-30 15:11:33 +09:00
Kodai Nakamura
997e5a8b49 refactor(replace-links): centralize table link escaping
Why:
- Markdown table escaping is link formatting behavior, not plugin orchestration behavior.
- Keeping pipe escaping in main.ts duplicated logic already used by the default link generator and made the Obsidian adapter responsible for markdown rendering details.

What:
- Add a shared escapeLinkForMarkdownTable helper in replace-links.
- Reuse the helper from defaultLinkGenerator and from the Obsidian API link generator path.
- Delegate fallback wikilink rendering in main.ts to defaultLinkGenerator.
- Add direct coverage for table link escaping behavior.
2026-05-30 15:06:07 +09:00
Kodai Nakamura
83d97e2c39 4.5.0 2026-05-30 11:04:11 +09:00
Kodai Nakamura
846ebda9ce fix(replace-links): preserve unclosed fenced code blocks
Why:
- Markdown treats an opening fenced code block without a closing fence as code through the end of the document.
- Automatic linking was still processing that content as normal text, which could turn code block contents into wiki links.

What:
- Extract fenced code blocks before heading, callout, table, and link replacement processing.
- Preserve unmatched fenced blocks through EOF and restore them unchanged after replacement.
- Add regression coverage for unclosed code blocks, including when heading protection is enabled.
2026-05-30 10:32:24 +09:00
Kodai Nakamura
504e37a8d1 4.4.0 2026-05-30 09:46:50 +09:00
Kodai Nakamura
11b0960bc7 feat: add option to ignore markdown tables
Why:
- Some users prefer leaving Markdown table rows untouched to avoid table formatting conflicts during automatic linking.
- Issue #35 requested a skip-tables option as an additional escape hatch alongside pipe escaping.

What:
- Add an ignoreMarkdownTables setting with a default value of false.
- Add a settings toggle for ignoring Markdown table rows during automatic linking.
- Skip both plain-text link insertion and existing-link ambiguity replacement inside Markdown table rows when the option is enabled.
- Cover the table-skip behavior with regression tests.

Refs: #35
2026-05-30 09:46:29 +09:00
Kodai Nakamura
f821e618f6 fix: escape Obsidian alias links in tables
Why:
- Aliased wiki links generated inside Markdown table cells used a raw pipe separator.
- Markdown table formatters interpret that raw pipe as a column delimiter, which mangles table rows after automatic linking.

What:
- Escape pipe characters in links returned by Obsidian's generateMarkdownLink API when the replacement occurs inside a table.
- Add a regression test covering an existing target file with a frontmatter alias inside a Markdown table cell.

Closes: #35
2026-05-30 09:40:36 +09:00
Kodai Nakamura
b5e09f9b75 4.3.3 2026-05-27 22:39:56 +09:00
Kodai Nakamura
af7bb51813 chore(manifest): punctuate plugin description
Why:
- Obsidian plugin metadata validation warns when the manifest description does not end with punctuation.
- Keeping the manifest warning-free makes release checks and plugin review feedback easier to act on.

What:
- Add a trailing period to the plugin description in manifest.json.
2026-05-27 22:39:37 +09:00
Kodai Nakamura
b8399b0626 4.3.2 2026-05-26 21:50:31 +09:00
Kodai Nakamura
8748a6c4d2 fix(plugin): resolve obsidian compatibility warnings
Why:
- Obsidian's plugin checks were reporting compatibility and packaging warnings that could break popout-window behavior or leave async failures unhandled.
- The build also depended on a deprecated module listing package and carried inline tests that leaked warning noise into the production bundle.

What:
- add @codemirror/view as a runtime dependency and replace builtin-modules with node:module builtinModules in the esbuild config
- route plugin async startup and save-file hooks through compatibility helpers so delayed work uses window.setTimeout and fire-and-forget promises are explicitly handled
- switch the AI progress notice to activeDocument, await clipboard writes, align extended Obsidian types, rename the settings heading, and remove unused catch bindings
- move trie inline tests into dedicated Vitest files and add coverage for the new compatibility helpers to keep the build warning-free
2026-05-26 21:49:50 +09:00
Kodai Nakamura
4ef40e3c10 4.3.1 2026-05-11 23:42:49 +09:00
Kodai Nakamura
76e0da3ac9 fix: resolve lint and formatting errors in AI Link Enhancer implementation 2026-04-06 23:19:38 +09:00
Kodai Nakamura
82ac311afb 4.3.0 2026-04-06 23:04:40 +09:00
Kodai Nakamura
dfd463922c
Merge pull request #33 from kdnk/ai
feat: AI Link Enhancer for resolving ambiguous links
2026-04-06 23:04:12 +09:00
Kodai Nakamura
c1b7ba4b0d docs: update README with AI Link Enhancer information 2026-04-06 23:03:05 +09:00
Kodai Nakamura
706bbf91ef feat: add AI Link Enhancer for resolving ambiguous links
- Implemented AI-powered link disambiguation using local LLMs (Gemma 4 / LM Studio).
- Refactored Trie and candidate mapping to support multiple link candidates per word.
- Added 'AI Link Enhancer' command with a progress bar UI in Obsidian.
- Enhanced link replacement logic to verify existing links and resolve ambiguities using context.
- Added comprehensive unit tests for AI disambiguation and candidate mapping.
- Updated settings to include AI configuration (endpoint, model, context length).
2026-04-06 22:59:52 +09:00
Kodai Nakamura
7855027117 4.2.0 2026-02-15 15:37:51 +08:00
Kodai Nakamura
fa4ae53bd6 feat: add sentence case detection for matching capitalized text at sentence start
When ignoreCase is off, text capitalized at the start of a sentence (e.g., "My name")
now matches lowercase candidates (e.g., "my name.md"), producing [[my name|My name]].

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 15:37:15 +08:00
Kodai Nakamura
18081e540c 4.1.3 2026-02-11 11:32:01 +09:00
Kodai Nakamura
e591f59df2 chore: rename "Consider Aliases" to "Include Aliases" 2026-02-11 11:31:47 +09:00
Kodai Nakamura
a82c87d91c 4.1.2 2026-02-11 11:10:20 +09:00
Kodai Nakamura
44ae7e7869 chore: add lint:fix 2026-02-11 10:48:16 +09:00
Kodai Nakamura
f7746c985f chore: remove prettier dependency 2026-02-11 10:47:51 +09:00
Kodai Nakamura
771bd29ca4 chore: reorganize settings to group integrations together 2026-02-11 10:46:48 +09:00
Kodai Nakamura
927cfcefb0 4.1.1 2026-02-09 11:36:14 +09:00
Kodai Nakamura
4295c9cbfa chore: update CLAUDE.md with settings flow architecture 2026-02-09 11:36:04 +09:00
Kodai Nakamura
240dd06ed8 chore: add ignoreHeadings setting to ReplaceLinksSettings interface 2026-02-09 11:35:58 +09:00
Kodai Nakamura
f90300d72b 4.1.0 2026-02-09 11:17:39 +09:00
Kodai Nakamura
d6bdf49357 feat: add option to ignore headings when replacing links 2026-02-09 11:17:23 +09:00
Kodai Nakamura
9c5fccfbb3 4.0.5 2026-01-19 21:20:42 +09:00
Kodai Nakamura
e53381fa61
Merge pull request #22 from dnlbauer/fix_typo
fix: remove typo in setting 'Igonre' to 'Ignore'
2026-01-19 21:18:08 +09:00
Daniel Bauer
65b4eec9a1
fix: remove typo in setting 'Igonre' to 'Ignore' 2026-01-19 11:45:42 +01:00
Kodai Nakamura
0e8d01fbab 4.0.4 2026-01-06 00:01:31 +09:00
Kodai Nakamura
07b9fb852e fix: handle missing titles and request errors 2026-01-06 00:01:08 +09:00
Kodai Nakamura
7b47fec2d9 4.0.3 2025-12-28 01:47:58 +09:00
Kodai Nakamura
d9154194ef fix: remove frontmatter cache clearing on trie rebuild 2025-12-28 01:47:41 +09:00
Kodai Nakamura
7bc5205f3c chore: update readme 2025-12-27 16:41:41 +09:00
Kodai Nakamura
a4e4b77a20 chore: missing change 2025-12-21 18:00:20 +09:00
Kodai Nakamura
8eb47a1d43 chore: stylistic 2025-12-21 17:59:06 +09:00
Kodai Nakamura
8a8a57194d chore: fix incorrect variable name 2025-12-21 17:53:46 +09:00
Kodai Nakamura
b20e2367f9 chore: stylistic 2025-12-21 16:09:27 +09:00
Kodai Nakamura
43ab63bfdf chore 2025-12-21 01:43:07 +09:00
Kodai Nakamura
1a17b853c0 4.0.2 2025-12-21 01:04:48 +09:00
Kodai Nakamura
18d80400ce chore: change default setting to respect "Folder to create new notes in" 2025-12-21 01:03:36 +09:00
Kodai Nakamura
21fe4dda6f 4.0.1 2025-12-21 01:01:38 +09:00