76 Commits

Author SHA1 Message Date
saberzero1 a121fd2e96 feat: unify layout slot architecture - make header/footer configurable positions, footer as array, add defaultPosition fallback, add tests, update docs 2026-07-27 17:32:40 +02:00
saberzero1 94fcabb0b4 feat: add @quartz-themes/core to config and templates
Add disabled theme entry to default config and default/blog templates.
Migrate obsidian and ttrpg templates from git-based quartz-themes source
to npm @quartz-themes/core package.
2026-07-24 20:33:05 +02:00
saberzero1 11b9960663 feat: migrate to npm specifiers with type-safe plugin index
- Default config and all 4 templates use @quartz-community/* npm specifiers
- config-loader: npm packages imported directly (not via .quartz/plugins/ paths)
- gitLoader: regeneratePluginIndex cross-references .d.ts with .js to correctly
  classify type-only exports, preventing runtime 'does not provide export' errors
- All 44 default plugins added as dependencies
- Locally tested: 111 docs files → 374 output files, zero errors
2026-07-23 02:19:17 +02:00
saberzero1 4b7ecb96f0 revert: restore github: specifiers in default config and templates
The npm specifier path requires additional work in the esbuild
transpilation pipeline to mark npm imports as external. Reverting
to github: specifiers to restore the docs site immediately.

The npm loader code (parsePluginSource, config-loader, CLI) remains
in place for future use. Only the default config/templates are reverted.
2026-07-23 02:06:45 +02:00
saberzero1 fe1f1d30aa fix: add npm plugin dependencies and fix fonts package name
- Added all 44 default plugins as dependencies so npm ci installs them
- Fixed @quartz-community/fonts → @quartz-community/quartz-fonts (actual npm name)
- Regenerated package-lock.json with plugin dependencies
2026-07-23 01:46:28 +02:00
saberzero1 97eea3ee34 feat: migrate default config and templates to npm specifiers
- quartz.config.default.yaml: all 44 plugins use @quartz-community/* npm specifiers
- cli/templates/*.yaml: all 4 templates updated (default, blog, obsidian, ttrpg)
- bootstrap-cli.mjs: updated help text
- package.json: devDeps use npm semver ranges instead of github: specifiers
- gitLoader.ts: regeneratePluginIndex scans npm packages from node_modules
- install-plugins.ts: generates plugin index for npm packages
- Removed quartz.lock.json (only relevant for git-installed plugins)
2026-07-23 01:29:25 +02:00
saberzero1 5b34917e98 feat: support npm scoped package specifiers for plugins
Plugins can now be referenced as "@quartz-community/<name>" in
quartz.config.yaml and via 'quartz plugin add'. The npm path skips
git installation and resolves from node_modules.

Changes:
- gitLoader.ts: detect @scope/name as npm package in parsePluginSource()
- config-loader.ts: skip git install for npm packages, read manifests
  from node_modules via createRequire
- install-plugins.ts: filter npm packages from prebuild, fallback to
  YAML config parsing to avoid loading full quartz.ts
- plugin-data.js: npm detection in CLI parseGitSource()
- plugin-git-handlers.js: npm install path in handlePluginAdd()
- package.json: add missing hast-util-from-html dependency
2026-07-23 01:17:53 +02:00
Narath Carlile e12ca11100 fix: watch quartz.config.yaml during serve (#2448)
The serve-mode watcher globs never matched quartz.config.yaml or
quartz.config.default.yaml, so config edits (theme colors, plugin
flags, footer links) silently required a server restart. This was a
regression from v4, where quartz.config.ts matched the **/*.ts glob.
2026-06-15 20:19:27 -04:00
saberzero1 8a79f59abb chore: configure fonts plugin in templates 2026-06-10 23:17:19 +02:00
saberzero1 f15aa0032a fix: allow updating when repository is generated from template 2026-05-27 20:43:56 +02:00
saberzero1 3138a88bb1 chore: updated layouts to include table of contents 2026-05-27 00:18:06 +02:00
saberzero1 db5aca2b8d fix: apply default position when installing plugins 2026-05-27 00:17:45 +02:00
saberzero1 4579e49465 test: regression tests for junctions 2026-05-26 21:15:36 +02:00
saberzero1 882d3b3f50 fix: fall back to junctions on windows 2026-05-26 21:15:20 +02:00
saberzero1 cbe101dc12 chore: updated configuration templates 2026-05-25 03:15:41 +02:00
saberzero1 7f00400ad2 fix: improve CLI error handling and user guidance
- Add Node.js >= 22 runtime version check before any imports
- Add EADDRINUSE error handlers for HTTP and WebSocket servers
- Fix misleading 'Couldn't parse Quartz configuration' error message
- Add actionable guidance to sync/upgrade/push failure messages
- Add --concurrency validation (must be >= 1)
2026-05-24 17:09:56 +02:00
saberzero1 7fd0590a46 fix: improved plugin type resolution 2026-05-21 17:59:26 +02:00
saberzero1 9fcc3f260c fix: handle EEXIST race in peer dependency symlink creation 2026-04-27 22:34:31 +02:00
saberzero1 efd9e8e095 feat(loader): prefer pre-built plugins 2026-04-27 22:03:23 +02:00
saberzero1 85563ffaab fix: wikilinks normalization and various slugging fixes 2026-04-17 00:35:28 +02:00
saberzero1 64802f858b feat(cli): generalize concurrency flag 2026-04-11 15:51:50 +02:00
saberzero1 232781cbca chore: updated templates 2026-04-11 15:37:01 +02:00
saberzero1 b8b71edffe chore: updated templates 2026-04-11 14:22:48 +02:00
Sara Lilith Slootmaker 2bf6cb655b chore: update links to leaflet bases plugin (#2347)
* chore: update leaflet bases plugin

* docs: update external link
2026-04-04 01:18:22 +02:00
saberzero1 1d5d069174 fix: remove unused code in git handlers 2026-04-03 14:57:53 +02:00
saberzero1 2a6117142c feat: parallel git command handling 2026-04-03 14:39:30 +02:00
saberzero1 52e4257bda chore: linting 2026-04-03 14:20:25 +02:00
saberzero1 c0d3a30fdd chore: linting 2026-04-03 14:11:09 +02:00
saberzero1 00c4e392ff refactor(cli): remove migrate command 2026-04-03 13:59:43 +02:00
saberzero1 1342728ce2 chore: linting 2026-03-31 20:51:32 +02:00
saberzero1 3012aa01ea feat(cli): async update checking 2026-03-31 19:22:17 +02:00
saberzero1 db2cc6abca refactor: simplified CLI options 2026-03-31 18:50:27 +02:00
saberzero1 144b7d9a4a fix(cli): properly handle subdir plugin updates 2026-03-26 11:44:52 +01:00
saberzero1 2d579c0f9e feat(cli): added flags for plugin name and subdir 2026-03-25 22:18:51 +01:00
saberzero1 b61e023759 chore: updated templates 2026-03-20 21:14:15 +01:00
saberzero1 d9bfbf876f refactor: move defaultDateType to CreatedModifiedDate plugin 2026-03-20 21:13:45 +01:00
saberzero1 7b85aa3464 fix(cli): extended options for plugin sources 2026-03-18 01:12:38 +01:00
saberzero1 02488d07b2 fix: suppress harmless esbuild warnings from bundled plugin deps
Add logOverride to the main esbuild build context to silence three
warning types that originate from upstream third-party code bundled
inside plugin dist files:
- direct-eval: gray-matter's JS frontmatter engine in note-properties
- equals-negative-zero: webidl-conversions in citations
- duplicate-object-key: BibTeX month mapping in citations
2026-03-17 21:26:44 +01:00
steven-smith-IT 56a801345a fix(cli): use 'gray' instead of 'grey' in styleText calls (#2340) 2026-03-17 15:23:32 +01:00
saberzero1 f7f33444ca chore: linting 2026-03-16 22:55:39 +01:00
saberzero1 7e28a970e7 fix(cli): quote paths in git commands for windows users 2026-03-16 22:42:02 +01:00
saberzero1 6ec256dcbc fix(plugin) resolve lockfile after create 2026-03-16 13:05:12 +01:00
saberzero1 0f67327a6c fix(plugin): restore user lockfile after upgrading 2026-03-16 12:20:27 +01:00
saberzero1 b2971bde6b fix(plugin): always shallow clone plugins 2026-03-16 12:19:52 +01:00
saberzero1 cc8756b0c7 chore: updated plugins 2026-03-16 12:07:16 +01:00
saberzero1 f8c9a2926d fix(plugin): build plugins when dist is ignored 2026-03-16 11:49:15 +01:00
saberzero1 1b878e655e chore: updated plugins 2026-03-16 01:50:23 +01:00
saberzero1 cdda0dc520 fix: pass string to styleText instead of Error object
styleText('grey', err) throws ERR_INVALID_ARG_TYPE when err is an Error
object. Use err.message ?? String(err) to pass a string instead.
2026-03-14 22:31:34 +01:00
saberzero1 b0724bf99d chore: updated plugins 2026-03-14 22:07:09 +01:00
saberzero1 341b8b3779 perf(plugins): parallelize builds, skip when dist/ exists, fix double-build
- Use --ignore-scripts during npm install to prevent duplicate builds
- Skip build entirely when dist/ directory already exists (pre-built plugins)
- Add buildPluginAsync() and runParallel() for concurrent plugin builds
- Convert all 5 build loops to parallel execution bounded by CPU count
- Prune devDependencies after build to avoid singleton duplication
2026-03-14 22:02:49 +01:00