Commit graph

92 commits

Author SHA1 Message Date
Andre Light
4ac623b1bd feat: opt-in toggle, editor-paste cooperation, and orphaned-setting fix
Addresses #35 maintainer feedback: gate paste-time resolution behind a
default-off toggle with 5-min TTL on lastCopyMeta. Switch from DOM
paste (capture phase) to editor-paste workspace event with documented
defaultPrevented yield protocol; register only when active.

Also fixes a pre-existing bug where simplifiedHeadingToNoteLink was
never read — the simplification fired unconditionally when filename
matched heading.

Designed, carefully reviewed, and edited by @lightmotive in collaboration with Claude Code.
2026-04-27 20:46:42 -06:00
Andre Light
3c3c20800f test: extract copy-metadata builders and add unit tests
Move the inline metadata-construction logic from the three copy paths
(block/heading/file) into pure helpers in src/copyMetadata.ts, matching
the project's pure-function test style. Adds 25 unit tests covering
alias, subpath, and embed computation for each copy type.
2026-04-22 04:06:58 -06:00
Andre Light
2c51e4e52d feat: paste-time path resolution using Obsidian's link format settings
Intercept paste (DOM capture phase) to regenerate Easy Copy links via
generateMarkdownLink(), resolving shortest/relative/absolute paths based
on the destination file. Metadata is cleared on manual copy to prevent
false interception of non-Easy-Copy content.
2026-04-22 03:23:24 -06:00
Moy
f93ad24367 build: 1.5.3 2026-04-22 14:32:47 +08:00
Moy
d327b5013a build: 1.5.3 2026-04-22 13:22:01 +08:00
Moy
46723f1cd0 build: 1.5.3 2026-04-22 13:03:37 +08:00
Moy
f646ba8196 ci: fix release workflow for vitest compatibility 2026-04-22 13:00:28 +08:00
Moy
a07b499f4a build: 1.5.3 2026-04-22 12:58:16 +08:00
Andre Light
60e451db9f fix: sanitize heading link targets and fix substring matching
Strip # | ^ : %% [[ ]] from heading link targets to match Obsidian's
autocomplete behavior. Fix compareIgnoreCase to use strict equality
instead of includes(), preventing false-positive note-link simplification.
2026-04-22 12:55:29 +08:00
Andre Light
d6f6678b38 docs: add CONTRIBUTING.md with development and testing instructions 2026-04-22 12:38:52 +08:00
Andre Light
87692e012f test: add vitest harness with pure function extraction for link builders 2026-04-22 12:38:52 +08:00
Andre Light
7be3eee3b3 Fix: encode spaces as %20 in generated Markdown link URLs
Obsidian doesn't parse Markdown links with literal spaces in the URL
portion (e.g. `[text](file#My Heading)`). This encodes spaces as `%20`
in the URL part of all Markdown-format links — heading links, block
links, and file links — so they render correctly.

Closes #29

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 17:04:29 +08:00
Moy
f8c341c51b build: 1.5.2 2026-04-02 20:18:08 +08:00
Moy
14a98fa8e1 build: 1.5.2 2026-04-02 20:11:11 +08:00
Moy
68f239900b build: 1.5.1 2025-12-12 00:21:09 +08:00
Moy
d1b4aa4587 chore: add icon for plugin 2025-12-12 00:20:33 +08:00
Moy
5d977b8197 build: update the dependencies 2025-11-05 19:21:02 +08:00
Moy
23cc7622b1 refactor: lint 2025-11-05 17:24:02 +08:00
Moy
2278508ed6 build: add obsidian eslint 2025-11-05 17:08:41 +08:00
Moy
d716806092 build: 1.5.0 2025-11-05 13:54:17 +08:00
Moy
a20a9911f9 feat: support configurable block ID insertion position 2025-11-05 13:52:43 +08:00
Moy
bf98aeaa09 bump version to 1.4.0 2025-10-21 17:15:20 +08:00
Moy
cd9c1e06bd feat: add simplified-heading-to-note-link setting
Introduce a new boolean setting simplifiedHeadingToNoteLink to
allow simplifying heading links into note links when the filename
matches the heading. Update default settings to enable the option.

Add related i18n keys and translations across en/zh/zh-tw:
- note-link-simplified
- simplified-heading-to-note-link
- simplified-heading-to-note-link-desc

Update settings UI to expose the toggle with description and save
behavior, and re-render the settings panel when toggled.

These changes improve UX by letting users copy a simpler note link
instead of a filename#heading link when the filename corresponds to
the heading (commonly for top-level headings).
2025-10-21 17:15:20 +08:00
Moy
faba964011 build: 1.3.5 2025-09-15 20:21:55 +08:00
Moy
265eadae41 feat: add block display text limit settings
Add configurable limits for generated block display text and wire them
through UI, defaults, localization, and usage logic.

- Add blockDisplayWordLimit and blockDisplayCharLimit to settings with
  defaults (3 words, 5 chars).
- Expose new settings in the Settings tab show the two limit inputs
  only when autoBlockDisplayText is enabled and save changes.
- Use the configured limits in main generation logic (fall back to
  defaults if unset) to trim English-like text by words and other
  languages by characters.
- Add i18n keys and translations for labels and descriptions in all
  languages.

This allows users to control how much text is included when the plugin
auto-generates display text for block links.
2025-09-15 20:17:59 +08:00
Moy
e2d1ff6270 feat: prefer frontmatter title for heading link display
Update copyHeading to use frontmatter when configured.
 useFrontmatterAsDisplay is enabled, read the active file's
frontmatter key (configurable via frontmatterKey, default 'title')
and use that value as the filename portion of the display text.
Preserve existing behavior when frontmatter is absent.

Also adjust heading link generation to avoid redundant display
text: if the computed display text exactly equals
"filename#heading", emit a simple [[filename#heading]] link
instead of including an identical pipe-qualified label.

These changes make generated heading links respect a frontmatter
display name and produce cleaner links when the label would
duplicate the target.
2025-09-15 19:43:02 +08:00
Moy
df9494ed7d Bump version to 1.3.4 2025-09-15 18:42:16 +08:00
Moy
f4bb658d63 feat: add heading-link-separator setting and UI support
Introduce a new setting `headingLinkSeparator (default '#')
customize the separator used between filename and heading when the
"Use heading as display text" option is disabled.

- Add `headingLinkSeparator` to settings type and defaults.
- Add localization keys and translations (en/zh/zh-TW) for the new
  setting and its description.
- Update settings UI to render a text input for the separator and
  re-render when "use heading as display text" toggles so the control
  shows/hides correctly.
- Use the configured separator when composing display text for heading
  links.
- Simplify a Wiki-link conditional to avoid redundant `useHeadingAsDisplayText`
  check when filename equals selected heading.

This allows users to customize the filename-heading delimiter for copied
heading links.
2025-09-15 18:40:49 +08:00
Moy
3fe3eb81be fix: full filename+heading copy
Fix #18
2025-09-15 18:29:49 +08:00
Moy
5571b258c4 chore(release): bump version to 1.3.3 2025-09-15 11:56:10 +08:00
Moy
83db9a82d4 feat(parser): support _ and __ markup and fix capture selection
Closes #16
2025-09-15 11:56:10 +08:00
Moy
17c202b6fb chore: bump the version to 1.3.2 2025-08-05 11:55:04 +08:00
Moy
5d4c4d4a62 feat: enhance block ID detection to include next lines 2025-08-05 00:35:54 +08:00
Moy
01c54940c7 fix(link): 修复 markdown 格式的块链接复制文本 2025-08-05 00:35:54 +08:00
Moy
44944bcfd3 docs: update README 2025-06-18 15:50:52 +08:00
Moy
1f879988cf build: 1.3.1 2025-05-23 13:11:04 +08:00
Moy
f5e023d808 feat: add icons for commands 2025-05-23 13:10:43 +08:00
Moy
4d95c0bbc7 build: 1.3.0 2025-05-21 14:42:52 +08:00
Moy
adff4748e2 chore: combine feats and minor fix 2025-05-21 14:41:06 +08:00
Moy
35b65f5335 Merge branch 'more-commands' into local-dev 2025-05-21 13:28:24 +08:00
Moy
40f9e40b4b feat: 🎸 support more commands and options
- 3 new commands to copy current file/block links
- option to add display text for block link

 Closes: #7 #8
2025-05-21 00:00:59 +08:00
Moy
1f44a9545b feat: Add command to copy file link 2025-05-20 00:10:11 +08:00
Moy
42b2906fa2 feat: support copying callout content 2025-05-19 15:17:18 +08:00
Moy
6b317b7b48 feat: add option to generate embeded block 2025-05-19 13:36:53 +08:00
Moy
d43141e6c5 feat: support copying wiki link target 2025-05-19 13:30:50 +08:00
Moy
c2169fcf30 build: 1.2.2 2025-05-09 20:01:47 +08:00
Moy
f745fae9d8 build: 1.2.2 2025-05-09 20:01:01 +08:00
Moy
d5fc7790fc docs: update README 2025-05-09 20:00:45 +08:00
Moy
9b118131e8 fix: compatible with code block and callout 2025-05-09 16:19:59 +08:00
Moy
1abedd7983 build: 1.2.1 2025-05-09 15:38:10 +08:00