Commit Graph
71 Commits
Author SHA1 Message Date
Ewald 34aebea35b ci: update Comfy publish action 2026-09-04 21:24:55 +02:00
Ewald 094cb552c2 fix(security,ci): gate reads behind auth, harden release pipeline, fix cache-provider coupling and delete atomicity
- Require the same Comfy auth on all Majoor GET routes as on writes, closing
  a read-confidentiality gap for remote/multi-user deployments (no-op when
  Comfy auth is disabled, the default single-user setup).
- Gate nightly and stable releases on a quality job (pytest, mypy, frontend
  typecheck/build/tests, dist/ drift check) before publishing, and refresh
  the committed dist/ bundle to match a clean build.
- Pin softprops/action-gh-release and Comfy-Org/publish-node-action to
  commit SHAs.
- Resolve ComfyUI's CacheProvider through the public comfy_api.latest.Caching
  alias instead of the underscore-private _caching module.
- Make asset-delete DB cleanup atomic: a failed cleanup statement now aborts
  the transaction instead of committing a partial delete.
2026-09-04 20:53:57 +02:00
Ewald 0db328352a fix: close auth bypass on /api route mirror, revert PrimeVue to MIT 4.5.5
Security
--------
ComfyUI's PromptServer.add_routes() mirrors every registered route under a
second "/api" prefix, so /mjr/am/<mutation> is also served at
/api/mjr/am/<mutation>. The auth middleware matched only the canonical
prefix, so the mirrored path reached the same handler with the
authentication check skipped entirely, and without the hardening headers:

    POST /mjr/am/assets/delete      -> requires_auth = True
    POST /api/mjr/am/assets/delete  -> requires_auth = False

Replaced the prefix test with a shared _is_majoor_path() boundary covering
the canonical prefixes, ComfyUI's /api mirror, and the /api/v2/assets
compat surface. Verified it does not capture ComfyUI's own routes. CSRF,
rate limiting and safe-mode gates are per-handler and were unaffected.

Licensing
---------
PrimeVue 5 is no longer MIT: PrimeTek moved it to the commercial "PrimeUI"
license, which requires a key, shows a license notice without one, and
forbids redistributing it "as a component library or development tool"
without a separate OEM License. Dependabot had auto-merged 4.5.5 -> 5.0.1.
This project is GPL-3.0 and commits dist/ to the repo, so shipping it would
nag every user and conflict with the GPL's redistribution requirement.

Pinned back to 4.5.5 (last MIT release). The 5.x bump had touched only
package.json/package-lock.json, so no source depended on v5 APIs. The
revert drops @primeui/license-manager and its @noble/ed25519 key-signature
stack; the primevue chunk shrinks 555.70 -> 520.61 kB. Dependabot is now
configured to ignore primevue major bumps.

Correctness
-----------
- api_v2_assets: stop returning the DB's absolute filepath on this
  network-reachable surface; subfolder + root_id already convey location
  without disclosing local disk layout.
- watcher: enforce _RECENT_GENERATED_HARD_CAP after inserting a batch;
  pruning only beforehand let a large batch overshoot the cap.
- routes/registry: track registered route groups individually so a group
  failing part-way through does not re-register earlier groups on retry.
- fs_walker/scanner: apply the viewer's root check to symlinked files, so
  the scanner stops indexing symlinks whose target escapes every allowed
  root ("ghost assets" the viewer then refuses to open). Consulted only for
  actual symlinks, so ordinary scans pay no extra I/O.
- routes/registry_app: skip the redundant app.add_routes() on the live
  PromptServer app; ComfyUI adds the shared table itself after node
  loading, so every core and Majoor route was registered twice at startup.
- Result: unwrap()/unwrap_or()/map() gated on `data is not None`, treating
  a legitimate Ok(None) as failure; gate on `ok` instead.
- custom_roots: replace a leftover debug print() that wrote user file paths
  to stderr on every move request with logger.debug.
- schema: drop the redundant UNIQUE(filepath, source, root_id) index
  (migration m022). assets.filepath is already UNIQUE, so it could never
  reject a row the column constraint does not, nor narrow a lookup - it
  only cost a second B-tree write per asset on the scan hot path.

Frontend
--------
- entry.ts: app.registerExtension() throws on a duplicate name and ComfyUI
  exposes no unregisterExtension, so a live re-import threw before setup()
  ran and the reload-safe teardown never executed. Catch it and re-run
  setup() directly.
- Rebuilt dist/ so both the reload fix and the PrimeVue revert ship.

CI / tooling
------------
- frontend-compat-nightly: the types step died with a bare "cp: cannot
  stat" (upstream's build has not emitted dist/index.d.ts since Aug 26).
  Check both candidate paths and dump dist/ with an actionable message.
- package.json: lenient checks that swallowed their exit code are now
  suffixed :advisory, the plain names are strict, and quality:strict runs
  the full set.

Verified: 1841 Python tests pass (5 skipped, symlink privileges), ruff
clean; tsc --noEmit clean, 831 JS tests pass, eslint clean, build succeeds.
2026-09-04 18:41:48 +02:00
Ewald c669c03439 Improve viewer compatibility and media handling 2026-08-13 10:02:39 +02:00
Ewald b700104588 feat: modernize ComfyUI integration and add KJNodes previews 2026-08-12 11:16:06 +02:00
dependabot[bot] 2913a9e590 chore(deps): bump actions/setup-python from 6.3.0 to 7.0.0
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6.3.0 to 7.0.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/ece7cb06caefa5fff74198d8649806c4678c61a1...5fda3b95a4ea91299a34e894583c3862153e4b97)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-24 13:50:16 +00:00
dependabot[bot] 699ddb4c20 chore(deps): bump actions/checkout from 7.0.0 to 7.0.1
Bumps [actions/checkout](https://github.com/actions/checkout) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v7...v7.0.1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-24 07:34:00 +00:00
dependabot[bot] 63e8d37bc7 chore(deps): bump actions/setup-node from 6.3.0 to 7.0.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.3.0 to 7.0.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/53b83947a5a98c8d113130e565377fae1a50d02f...820762786026740c76f36085b0efc47a31fe5020)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-17 07:33:39 +00:00
Ewald ALOEBOETOE 27e9b0666b Delete .github/workflows/release-on-tag.yml 2026-07-09 12:38:31 +02:00
dependabot[bot] 765b5010da chore(deps): bump actions/setup-python from 6.2.0 to 6.3.0
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/a309ff8b426b58ec0e2a45f0f869d46889d02405...ece7cb06caefa5fff74198d8649806c4678c61a1)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-26 13:43:15 +02:00
MajoorWaldi 7058ce2668 chore(deps): bump actions/checkout from 6 to 7
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-19 07:33:21 +00:00
Ewald 4660c90b28 Fix CI event tests and bundle drift check 2026-06-03 15:05:49 +02:00
MajoorWaldi 99398aad5d Fix mojibake text and update default settings 2026-05-31 20:03:25 +02:00
Ewald c62e15d65e refactor(workflows): remove redundant checkout steps in python-tests.yml 2026-05-26 15:06:55 +02:00
Ewald a78f4572c8 Align frontend layout with ComfyUI conventions 2026-05-26 10:42:22 +02:00
Ewald 5480f34768 align frontend bundle workflow 2026-05-25 00:52:27 +02:00
Ewald 6587940862 refactor(app): enhance ComfyUI integration and settings sync - Implement two-way binding for ComfyUI settings in Majoor - Add new settings for auto-opening viewers and floating sidebar - Improve extension manager compatibility and dialog handling - Extend sidebar tab registration and controller discovery - Introduce graph canvas helpers for centering view and getting viewport bounds - Enhance minimap functionality with new graph canvas methods - Add settings sync with ComfyUI language 2026-05-23 18:35:21 +02:00
Ewald 8e1599412b Adjust tag release workflow 2026-05-18 00:36:27 +02:00
MajoorWaldi dcdc76a2b1 chore(deps): bump softprops/action-gh-release from 2 to 3
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2 to 3.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v2...v3)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-17 07:36:06 +00:00
Ewald ALOEBOETOE dc7159156d Change submodule checkout option to false 2026-04-15 16:07:08 +02:00
Ewald ALOEBOETOE babb7321c8 Update publish.yml 2026-04-15 15:54:54 +02:00
Ewald 1982b3ab3c Add local and CI quality gates 2026-04-10 11:05:27 +02:00
MajoorWaldi 0a7e61e40d chore(deps): bump actions/setup-node from 4 to 6
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-10 07:35:51 +00:00
Ewald 79f98217c5 feat(viewer): enhance video controls and asset navigation
- Add keyboard shortcuts for video in-point (I), out-point (O), and navigation (Home/End)
- Implement swipe gesture for navigating between assets in the viewer
- Add option to copy prompt to clipboard (Ctrl/Cmd+C)
- Improve stack group card functionality and representative selection
- Optimize image preloading for smoother navigation
- Enhance audio visualizer with WebGL support and mode switching
- Refine feed card appearance and interaction
2026-04-08 20:50:26 +02:00
Ewald ALOEBOETOE ffe5d8c45e Delete .github/workflows/codeql.yml 2026-04-07 12:24:53 +02:00
Ewald ALOEBOETOE bca3d98dec Add CodeQL analysis workflow configuration 2026-04-07 10:52:18 +02:00
MajoorWaldi 92a662077a feat: Update pytest configuration and refactor vec embeddings rebuild logic 2026-03-28 20:58:22 +01:00
MajoorWaldi 0124a8f6d5 feat: enhance asset management with job finalization logic, improve coverage thresholds, and update documentation for AI/vector features 2026-03-28 15:35:28 +01:00
MajoorWaldi c33256be68 feat: Enhance asset management with stack finalization logic and cleanup of job ID references 2026-03-27 17:59:28 +01:00
MajoorWaldi cb171e826d feat: Add runtime bootstrap helpers and search request normalization
- Introduced runtime bootstrap helpers in `mjr_am_backend.features.runtime` for dependency initialization.
- Implemented `apply_startup_settings` to handle various startup configurations.
- Added search request normalization helpers in `mjr_am_backend.features.search` including `SearchRequestContext` and `parse_search_request` for better query handling.
- Created audit logging helpers in `mjr_am_backend.routes.core.audit_log` for state-changing route handlers.
- Developed a quality gate script in `scripts/run_quality_gate.py` to enforce code quality checks.
- Added comprehensive tests for audit routes, scan consistency, vendor routes, and code quality metrics.
2026-03-26 20:42:51 +01:00
Ewald ALOEBOETOE 4382adf934 Merge pull request #19 from MajoorWaldi/dependabot/github_actions/actions/setup-node-6.3.0
chore(deps): bump actions/setup-node from 4.4.0 to 6.3.0
2026-03-06 12:07:41 +01:00
Ewald ALOEBOETOE a43bc7aecc Merge pull request #20 from MajoorWaldi/dependabot/github_actions/actions/checkout-6
chore(deps): bump actions/checkout from 4 to 6
2026-03-06 12:07:24 +01:00
MajoorWaldi 49b3b41ef3 chore(deps): bump actions/upload-artifact from 4 to 7
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-06 07:36:14 +00:00
MajoorWaldi 8bb9c5d2de chore(deps): bump actions/checkout from 4 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-06 07:36:10 +00:00
MajoorWaldi 56096fb90f chore(deps): bump actions/setup-node from 4.4.0 to 6.3.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.4.0 to 6.3.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/49933ea5288caeca8642d1e84afbd3f7d6820020...53b83947a5a98c8d113130e565377fae1a50d02f)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-06 07:36:02 +00:00
MajoorWaldi 06e19c0c68 feat: Enhance version checking and nightly release handling
- Added support for fetching nightly release markers and checking for updates.
- Introduced a notice for AI features in local builds.
- Improved version badge display logic in the header view.
- Refactored caption normalization logic in vector indexing.
- Enhanced floating viewer with edge resizing capabilities.
- Updated styles for pop-in mode and resizing state.
- Added tests for enhanced prompt generation and X-CLIP embedding handling.
2026-03-04 08:27:17 +01:00
MajoorWaldi def385042c feat: Enhance Git HTTP settings and improve repository checkout process in CI workflows 2026-03-03 20:40:43 +01:00
MajoorWaldi f6c0765205 Refactor and enhance various components and backend features
- Update .gitignore to prevent tracking of local directories and accidental files.
- Improve installation instructions in INSTALLATION.md for faster dependency resolution using `uv`.
- Replace regex-based string replacement with safer `replaceAll` in i18n.js to mitigate ReDoS risks.
- Add documentation for global state key registry in runtimeState.js.
- Prevent timer leaks in toast.js by stopping the cleaner timer when no active toasts remain.
- Use replaceChildren instead of innerHTML for safer DOM manipulation in Viewer_impl.js.
- Update FloatingViewer.js to improve icon handling and enhance generation time display.
- Implement JSON sanitization for NaN/Infinity values in utils.py to ensure valid JSON output.
- Adjust mypy configuration to target Python 3.10.
- Update requirements.txt to specify compatible versions for pywin32.
- Add comprehensive tests for environment variable helpers in test_config.py.
2026-03-01 21:59:44 +01:00
MajoorWaldi ad7678ccab feat: enhance WebGL video processing and output directory management
- Updated WebGL context creation to preserve the drawing buffer for frame export functionality.
- Added new CSS styles for sampler, scheduler, CFG, step, and genTime fields in the theme-comfy stylesheet.
- Implemented output directory override restoration on startup in the settings service.
- Introduced functions to collect distinct sampler configurations and checkpoints from multiple sinks and chained sampler passes.
- Enhanced prompt tracing and sampler name resolution to handle advanced sampler configurations.
- Added support for filtering by tags in the search functionality, including validation and sanitization of tag inputs.
- Updated search query sanitization to include tag handling and adjusted valid sort keys.
- Improved filesystem listing handlers to accommodate new workflow type filters and ensure proper filtering logic.
- Enhanced health check routes to manage output directory settings and cache invalidation.
- Added tests to verify new filtering capabilities and ensure functionality remains intact.
2026-03-01 20:08:43 +01:00
Ewald ALOEBOETOE d54f5f950f Update publish-node-action to use version tag 2026-02-28 22:43:17 +01:00
Ewald ALOEBOETOE 8022950eca Update publish-node-action to use version tag 2026-02-28 22:40:29 +01:00
MajoorWaldi c87aae35d3 fix: update action-gh-release to use stable version v1 2026-02-28 22:08:14 +01:00
MajoorWaldi 1379d8f8b0 fix: update action version in nightly workflow and improve error handling in asset metadata processing
feat(viewer): enhance FloatingViewer with pan/zoom functionality and metadata display
refactor: streamline database maintenance status emission and improve error handling
2026-02-28 13:20:16 +01:00
Ewald ALOEBOETOE c05306e37e Update checkout action version in nightly workflow 2026-02-27 21:05:16 +01:00
MajoorWaldi 08e07b5312 fix: replace silent catches with debug logging across multiple files
- Updated error handling in videoProcessor.js, videoProcessorWebGL.js, videoSync.js, viewerInstanceManager.js, and various utility files to log caught exceptions using console.debug.
- Introduced a new script to automate the replacement of silent catch blocks with logging statements.
- Enhanced safety checks in the database schema and transaction manager to prevent SQL injection vulnerabilities.
- Added regex patterns for validating column definitions and executable names in the ExifTool adapter.
- Improved error handling in health and filesystem routes to ensure better feedback on invalid inputs.
- Added tests to cover new error handling and validation logic.
2026-02-27 21:00:17 +01:00
MajoorWaldi 239a92cbc7 fix: update dependencies in compat-smoke workflow for improved testing 2026-02-27 12:28:15 +01:00
MajoorWaldi 2cbcbed431 chore(deps): bump actions/setup-python from 5.3.0 to 6.2.0
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.3.0 to 6.2.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/0b93645e9fea7318ecaed2b359559ac225c90a2b...a309ff8b426b58ec0e2a45f0f869d46889d02405)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 11:19:46 +00:00
Ewald ALOEBOETOE cc6f5461d0 Merge pull request #17 from MajoorWaldi/dependabot/github_actions/actions/checkout-6.0.2
chore(deps): bump actions/checkout from 4.2.2 to 6.0.2
2026-02-27 12:18:56 +01:00
MajoorWaldi c98e8435a0 fix(workflows): update action versions for nightly and publish workflows 2026-02-27 10:45:24 +01:00
MajoorWaldi 9df209664d chore(deps): bump actions/checkout from 4.2.2 to 6.0.2
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to 6.0.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/11bd71901bbe5b1630ceea73d27597364c9af683...de0fac2e4500dabe0009e67214ff5f5447ce83dd)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.2
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 09:10:40 +00:00