Skip to content

v2 - #141

Draft
saberzero1 wants to merge 104 commits into
mainfrom
quartz-npm-plugins-rework
Draft

v2#141
saberzero1 wants to merge 104 commits into
mainfrom
quartz-npm-plugins-rework

Conversation

@saberzero1

Copy link
Copy Markdown
Owner

No description provided.

saberzero1 and others added 25 commits August 2, 2026 03:00
Replace full DOM teardown+rebuild with persistent shell and keyed row maps.
TreeRenderer becomes PublicationTree class with mount()/update() lifecycle.
DiffModal uses persistent header with replaceable content pane.
ScrollSync now handles both vertical and horizontal scrolling.
Indeterminate checkbox CSS styling added.
All files selectable including published.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Remove stubbed RepositoryConnection class entirely.
Add QuartzFileSource interface with RemoteFileSource (git remote) and
LocalFileSource (local disk) implementations.
Extract static methods to GitRemoteUtils with isomorphic-git HTTP transport.
Migrate all 15 consuming files (10 source + 5 test).

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
NodeDetector checks Node.js >= 18 availability with session caching.
QuartzRepoValidator checks quartzRepoPath for package.json and Quartz config.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Gate Quartz settings page to desktop only.
Add setup wizard and manual setup commands with platform guards.
Migrate Platform.isDesktop to Platform.isDesktopApp in external-fs.
Mark 5 unused settings as deprecated, add schema v3 and v4 migrations.
Add persistent notice and settings action for unconfigured repos.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
All 16 console.error calls across 7 integration files changed to
console.debug. These are non-fatal errors in catch blocks that already
return fallback values. CompilationQueue catch block also captures error
variable for logging.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Add shared ASSET_EXTENSIONS with isMediaFile/isTextMediaFile/getMediaIcon.
Add MediaLinkResolver to track which media is linked by published notes.
Extend PublishStatus with MediaEntry and ArbitraryFileEntry types.
Categorize media separately from deleted notes with linked/unlinked status.
Add cleanOrphanedMedia, deleteByRepoPaths, publishArbitraryFiles to Publisher.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Add ManualSetupModal with URL validation, connection test, provider
auto-detection, progressive disclosure, and advanced settings section.
Fix setup wizard: paginated repo loading with search, v5 branch for new
repos, correct GitHub Pages URL, Done button on success step.
Add quartz.config.yaml creation from template defaults with baseUrl.
Add content/index.md with welcome page for new repos.
Extract detectGitProvider to shared utility.
Add getFileContent and updateFile to GitHubApiService.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Change detectAll() from Promise.all to sequential loop to prevent
terminatePendingProcess() from killing concurrent detections.
Add proactive version warnings for Node.js < 18 and npm < 8.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Replace COMMANDS array with COMMAND_REGISTRY metadata system.
Switch from registerObsidianProtocolHandler to registerCliHandler.
Add help flag interceptor, base quartz-syncer command, verbose flag.
Add shared requireQuartzRunner guard.
Rewrite mark handler with glob, fuzzy search, and dry-run support.
Add force flag to delete/sync, dry-run to publish/delete/sync.
Add verbose output for status/test/publish/delete/sync handlers.
Restructure plugin handler: list/add/remove work everywhere,
install/enable/disable/config/prune require QuartzRunner.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Add timeout sentinel (-1 = no timeout) to ProcessRunner.
Add timeout to QuartzRunnerOptions, wire through all methods.
Refactor serve() to bypass ProcessRunner singleton pendingProcess.
Add sync, restore, pluginInstall/Enable/Disable/Config/Prune methods.
Add quartz-build, quartz-serve, quartz-sync, quartz-restore handlers.
Add circuit breaker auto-recovery after 5 minute cooldown.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Add pauseAutoPublish/resumeAutoPublish to BackgroundEngine.
Publication Center pauses auto-publish on open, resumes on close.
Prevents race condition where auto-publish modifies files user is selecting.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Remove stale RepositoryConnection references and outdated CLI count.
Document two-tier platform split, publication model, CLI registration
via registerCliHandler, Quartz v5 config conventions, and working
with external systems directive.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Publisher refactoring:
- Extract PublishBackend interface with RemotePublishBackend and LocalPublishBackend
- Extend QuartzFileSource with writeBinaryFile, deleteFile, listAllFiles
- Refactor Publisher from GitBackend to PublishBackend abstraction
- Wire local mode into getPublisher (quartzRepoPath takes priority)
- Expose cliHandlers on plugin instance for test invocation

New CLI commands:
- quartz-syncer:repo (info, set-local, set-remote, verify)
- quartz-syncer:media (list, orphaned, clean)
- quartz-syncer:diff (compiled vault vs repo content)
- quartz-syncer:validate (repo health checks with lockfile warning)
- quartz-syncer:inspect (cache, hashes, compilation, queue)

CLI gap filling:
- Cache handler: export, import, prune actions
- Config handler: reset action (partial, preserves identity fields)
- Plugin handler: add/remove dry-run via structuredClone, search action
- Publish/sync/delete: custom commit message param
- Publish: action=arbitrary for non-content file publishing
- Test handler: local mode path verification
- Inspect handler: target=queue via getEngineStatus
- Status handler: verbose enrichment with publishFlag and hasMedia

Marketplace migration:
- QuartzPluginRegistry: new URL, full marketplace schema
- PluginBrowserModal: tags to category filter migration

E2E test harness:
- 6 Quartz repo fixtures (minimal through multi-plugin)
- 3 vault templates (basic, media-heavy, bulk)
- FixtureManager, RepoAssertions, CLI invoker helpers
- 44 scenario specs across 10 spec files (43 passing)
- wdio.conf.mts extended for scenario specs

Unit tests: 522 total (41 new for CLI gap coverage)
@saberzero1
saberzero1 force-pushed the quartz-npm-plugins-rework branch from 4048bff to a4c130c Compare August 26, 2026 20:24
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.

1 participant