Commit graph

35 commits

Author SHA1 Message Date
saberzero1
c19c7c1c3e
deps: update @quartz-community/utils 2026-04-22 18:18:20 +02:00
saberzero1
8da4dbb45f
deps: update @quartz-community/utils 2026-04-17 02:39:36 +02:00
saberzero1
3539cf1e6a
fix: slugify wikilinks in frontmatter to prevent %20 in hrefs
Wikilinks appearing in frontmatter property strings (e.g. 'related:
"[[My Note]]"') were rendered with their raw target passed
directly to resolveRelative, leaving the space intact. The browser
then percent-encoded it as %20 in the rendered href, producing
broken links like './My%20Note' that never resolve.

The root cause was in renderTextWithLinks (NoteProperties.tsx):
the matched wikilink target went straight into resolveRelative
without going through slugifyFilePath, so spaces, ampersands, and
other characters that should be slugified survived into the href.
extractLinksFromValue (transformer.ts) had the same issue: it
stored raw target strings in file.data.frontmatterLinks instead
of canonical slugs.

Adds a shared slugifyWikilinkTarget helper in util/path.ts that
mirrors the slug+anchor contract CrawlLinks uses for body-content
links, so frontmatter wikilinks and body wikilinks now produce
identical hrefs. Both NoteProperties.tsx and the transformer's
extractLinksFromValue now go through this helper.

Also replaces the plugin's local slugTag/slugifyFilePath/
getFileExtension helpers with the shared @quartz-community/utils
versions. This eliminates slugification drift between plugins and
ensures that note-properties honors the same case-insensitive
matching that the rest of the Quartz ecosystem uses.

BREAKING CHANGE: tag URLs and frontmatter-wikilink slugs are now
lowercased (inherited from utils' case-insensitive matching).
Tags #MyTag, #mytag, and #MYTAG collapse into a single tag page
tags/mytag.
2026-04-16 22:22:10 +02:00
saberzero1
ed851f3380
deps: update @quartz-community/utils 2026-04-16 22:14:19 +02:00
saberzero1
f0ca778402
deps: update @quartz-community/types and @quartz-community/utils 2026-04-16 13:28:18 +02:00
saberzero1
85d58e6e6a
fix: preserve emoji characters in tag slugification 2026-04-07 16:09:53 +02:00
saberzero1
0e9935791b
refactor: use shared classNames from @quartz-community/utils 2026-04-03 19:10:33 +02:00
saberzero1
d15119dd1e
deps: update @quartz-community/types and @quartz-community/utils 2026-04-03 16:19:08 +02:00
saberzero1
95b261a14b
refactor: remove duplicate vfile DataMap fields now in @quartz-community/types 2026-04-03 15:47:55 +02:00
saberzero1
cd4337b47c
fix: move tsconfig from dts object to top-level option
The DtsConfig type in tsup does not have a tsconfig property.
Use top-level tsconfig option instead of dts: { tsconfig: ... }.
2026-03-22 13:25:12 +01:00
saberzero1
3a710087e0
fix: use separate tsconfig for DTS build to avoid vitest dependency 2026-03-22 13:12:01 +01:00
saberzero1
4769c820c1
chore: update @quartz-community/utils to 8d2e14b 2026-03-22 12:38:23 +01:00
saberzero1
306981a008
deps: update @quartz-community/utils to latest 2026-03-22 12:05:08 +01:00
saberzero1
71784b861f
fix: add createRequire banner for CJS compat in ESM bundles
Bundled CJS dependencies (e.g. reading-time) use require() for Node
builtins like 'stream' and 'util'. In ESM output, the esbuild-generated
__require shim throws 'Dynamic require of X is not supported' because
there is no global require in ESM context.

Add platform: 'node' and a banner that injects createRequire from the
'module' builtin, providing a working require() function for the CJS
compatibility layer.
2026-03-17 20:34:33 +01:00
saberzero1
b4b7d3b282
ci: add dist externals verification step 2026-03-17 19:41:47 +01:00
saberzero1
3c8374fdff
fix: bundle non-shared deps into dist to prevent runtime resolution failures
Move non-allowlisted packages from dependencies/peerDependencies to
devDependencies so tsup bundles them into dist/ instead of leaving
them as external imports that may not resolve at runtime.
2026-03-17 19:31:51 +01:00
saberzero1
74d9adac79
fix: add missing peer dependencies as devDependencies for CI build
Install github-slugger and hast-util-to-jsx-runtime as devDependencies.
These are peer dependencies of @quartz-community/utils that must be present
for tsup's DTS build to resolve all transitive type imports.
2026-03-16 19:07:37 +01:00
saberzero1
eabc0ed37a
chore: centralize type declarations and standardize tooling config
- Update types/globals.d.ts with centralized type declarations
- Add .prettierignore, update .eslintrc.json with triple-slash-reference override
- Remove duplicate scripts.d.ts/styles.d.ts if present
2026-03-16 18:55:26 +01:00
saberzero1
22727ad092
fix: update types/utils lockfile to commits with dist/ 2026-03-14 22:43:53 +01:00
saberzero1
2d29fc5c07
fix: add build-time deps for DTS generation
Peer dependencies needed at build time for TypeScript declaration file
generation were missing from devDependencies. Without them, the DTS build
fails silently, producing no index.d.ts.
2026-03-14 22:26:14 +01:00
saberzero1
8ac59ae70d
chore: commit dist/ and remove prepare script
Pre-built output is now committed to the repository so that
Quartz can skip the build step during plugin installation.
The prepare script is removed to prevent redundant builds
when installing from npm/git.
2026-03-14 22:00:25 +01:00
saberzero1
0eaf5ae7f9
chore: move build tools to devDependencies, shared deps to peerDependencies
tsup and typescript are only needed at build time — move to devDependencies
so they can be pruned after build. Dependencies already available from the
host Quartz installation are moved to peerDependencies to avoid duplication.
2026-03-14 21:27:14 +01:00
saberzero1
3535315850
feat: add render event listener for in-place DOM re-initialization 2026-03-12 19:45:35 +01:00
saberzero1
020317124e
fix: resolve ESLint and formatting issues for CI compliance 2026-03-09 03:47:02 +01:00
saberzero1
2f0e1914ee
fix: remove template boilerplate test files and add passWithNoTests 2026-03-09 03:21:37 +01:00
saberzero1
9dbf557e7b
deps: update @quartz-community/types and @quartz-community/utils
Also fix code formatting with prettier.
2026-03-09 03:04:02 +01:00
saberzero1
289554d596
deps: update @quartz-community/types 2026-02-28 20:08:37 +01:00
saberzero1
50c64ed790
fix: compile SCSS via sass instead of raw text to prevent lightningcss errors 2026-02-26 16:44:51 +01:00
saberzero1
7e8e299810
docs: update README for v5 unified config system 2026-02-25 16:07:03 +01:00
saberzero1
024b1220cd
fix: remove duplicate hashtag prefix from tag rendering 2026-02-24 02:15:53 +01:00
saberzero1
a67025816e
feat: add per-note frontmatter overrides for properties visibility and collapse state 2026-02-23 19:36:38 +01:00
saberzero1
75ba104995
feat: improve value rendering with proper link resolution and inline formatting
- Resolve wikilinks and markdown links via resolveRelative for correct relative paths
- Render lists as comma-separated inline values instead of ul/li
- Render nested objects as JSON.stringify in code blocks
- Parse inline wikilinks, markdown links, and bare URLs within mixed text
- Resolve tag hrefs via resolveRelative to match tag-list plugin pattern
- Add @quartz-community/utils dependency for path utilities
2026-02-23 09:36:24 +01:00
saberzero1
c074e112d6
fix: move tsup and typescript to dependencies for git install compatibility 2026-02-23 01:10:04 +01:00
saberzero1
107fe07c12
feat: implement note-properties plugin
Move frontmatter processing from core Quartz into a standalone plugin.
Parse YAML/TOML frontmatter, extract links from property values,
and render an Obsidian-like properties panel in the page.

Supports: includeAll/includedProperties/excludedProperties filtering,
hidePropertiesView mode, wikilink/markdown link resolution in values,
collapsible panel with client-side state persistence, i18n.
2026-02-22 23:40:23 +01:00
Emile Bangma
21bf54cf43
Initial commit 2026-02-22 15:03:10 +01:00