Commit Graph
26 Commits
Author SHA1 Message Date
copilot-swe-agent[bot]andMajoorWaldi aa9d28bc53 Merge remote-tracking branch 'origin/main' into fix/registry-runtime-hardening
# Conflicts:
#	dist/chunks/FloatingViewer-AB1oLZ0d.js
#	dist/chunks/FloatingViewer-BVmALIs3.js
#	dist/chunks/FloatingViewer-Cg2hGEZM.js
#	dist/chunks/LiveStreamTracker-0EQGV-lK.js
#	dist/chunks/LiveStreamTracker-BUT5H4M5.js
#	dist/chunks/LiveStreamTracker-DdMfL0ro.js
#	dist/chunks/SidebarWorkflowSection-B4wvtrtQ.js
#	dist/chunks/SidebarWorkflowSection-B_P-QZwl.js
#	dist/chunks/SidebarWorkflowSection-DckvqBNY.js
#	dist/chunks/TagsEditor-B8xpRa5e.js
#	dist/chunks/TagsEditor-BHGoWuSC.js
#	dist/chunks/TagsEditor-cUM_tRt-.js
#	dist/chunks/Viewer-DDNDTRcP.js
#	dist/chunks/Viewer-Dzb5KE6D.js
#	dist/chunks/Viewer-GH30s1No.js
#	dist/chunks/ViewerPortal-BAh1499M.js
#	dist/chunks/ViewerPortal-C-GBMubk.js
#	dist/chunks/ViewerPortal-DvYVQ32S.js
#	dist/chunks/floatingViewerManager-5-IYujSt.js
#	dist/chunks/floatingViewerManager-BVG4XDLW.js
#	dist/chunks/floatingViewerManager-Bnd82Qrd.js
#	dist/chunks/genInfo-Bq-kF66o.js
#	dist/chunks/genInfo-CV-v139t.js
#	dist/chunks/genInfo-CwY4j1FN.js
#	dist/chunks/mjr-primevue-C955bvXT.js
#	dist/chunks/mjr-primevue-DtKnnCVn.js
#	dist/chunks/mjr-primevue-n1rsQYJg.js
#	dist/chunks/mjr-vue-vendor-BU1tBlvz.js
#	dist/chunks/mjr-vue-vendor-CF0zsqr1.js
#	dist/chunks/mjr-vue-vendor-D2GeV7Qd.js
#	dist/chunks/openMajoorSettings-CHrLP8DR.js
#	dist/chunks/openMajoorSettings-DU4OegtI.js
#	dist/chunks/openMajoorSettings-JYq392b-.js
#	dist/chunks/viewerOpenRequest-C4hEgmOj.js
#	dist/chunks/viewerOpenRequest-CzyrZA71.js
#	dist/chunks/viewerOpenRequest-DQQY02Vk.js
#	dist/chunks/viewerRuntimeHosts-CIiyEfr6.js
#	dist/chunks/viewerRuntimeHosts-CuR8T4j6.js
#	dist/chunks/viewerRuntimeHosts-DC1iA_jY.js
#	dist/entry.js
#	mjr_am_backend/features/index/vector_service.py
#	mjr_am_backend/routes/core/request_json.py
#	mjr_am_backend/routes/core/security_proxies.py
#	mjr_am_backend/routes/core/security_tokens.py
#	mjr_am_shared/version.py

Co-authored-by: MajoorWaldi <129623145+MajoorWaldi@users.noreply.github.com>
2026-09-26 17:40:42 +00:00
Ewald 9c5078d174 fix: harden registry packaging and runtime boundaries
Exclude development-only content from Registry packages while retaining runtime
docs and vendor assets. Centralize environment access and media process execution,
validate filesystem inputs, and restrict nested media protocols.

Route update checks through the backend GitHub boundary and read version metadata
without spawning Git. Preserve annotated-tag priority over lightweight nightly
tags, including packed refs, with regression coverage. Rebuild the frontend bundle.

Validation: Python tests with coverage, JS tests, targeted media/version regression
tests, and the canonical Python quality gate.
2026-09-26 19:21:04 +02:00
Ewald 94f212a261 fix(backend): log the remaining silently-swallowed exceptions (batch 5/final)
Completes the except Exception: pass -> observable-debug-log sweep.
This batch covers the ~26 files that had no module-level logger yet:
adds `logger = get_logger(__name__)` (mjr_am_backend.shared, or
mjr_am_shared.log for files inside mjr_am_shared itself) alongside
the existing import block, then applies the same pass -> logger.debug
substitution as the earlier 4 batches. __init__.py and nodes.py
already had a differently-named logger (_logger / _log) and just
needed the substitution.

mjr_am_shared/log.py is the one true special case: its silent except
lives inside _ensure_correlation_filter(logger), which already takes
the target logger as a parameter -- logging through that same
parameter instead of adding a redundant module logger.

Ran `ruff check --fix` after each batch to normalize import ordering,
then verified every touched module still imports cleanly (import
smoke test) in addition to the full pytest suite (1846 passed).

This closes out the backend "silent exception" audit finding: every
`except Exception: pass` in the codebase that could reasonably get a
logger now has one.
2026-09-12 00:14:02 +02:00
Ewald 08c643c87d fix: address deep audit findings (backend/frontend/docs conventions)
Docs:
- Fix stale version/date banner in docs/DOCUMENTATION_INDEX.md (2.4.9 -> 2.5.1)
- Normalize CHANGELOG.md section headers to plain text (strip inconsistent
  emoji prefixes used in older entries)
- Add missing diacritics in French command labels (locales/fr/commands.json)
- Add ToC anchors for nested Installation subsections in README.md

Backend:
- Document the comfy_entrypoint() wrapper's rationale in __init__.py

Frontend:
- Wire tsconfig.strict.json into an actual npm script (typecheck:js:strict,
  now part of quality:strict) instead of leaving it dead/unenforced
- Fix the 8 strict-mode type errors this surfaced across
  comfyWorkflowParser.ts, canvasLoaderNode.ts, FloatingViewer.impl.ts and
  workflowGraphMapActions.ts
- Rebuild dist/ to match source

Deferred (too large/risky to blind-fix in this pass):
- ui/vue/** ESLint+Vue+TS linting: typescript-eslint currently has no
  compatible release for this repo's typescript@7.0.2, so adding
  eslint-plugin-vue/typescript-eslint is blocked upstream
- Converting all 44 .vue SFCs to lang="ts" with typed defineProps
- Eliminating the ~230 any/as any occurrences under ui/vue
- Auditing/reducing the ~1082 except Exception: blocks repo-wide
2026-09-11 19:14:28 +02:00
EwaldandClaude Sonnet 5 815993aae0 feat(nodes): migrate to ComfyUI Nodes V3 API
MajoorGenInfoOverride/MajoorSaveImage/MajoorSaveVideo now use
comfy_api.latest.io.ComfyNode (define_schema/execute) exposed via
comfy_entrypoint(), replacing the legacy NODE_CLASS_MAPPINGS dict style.
node_id values are unchanged so existing saved workflows keep resolving
to the same node classes.

Also bumps @comfyorg/comfyui-frontend-types to 1.54.3 (was pinned to
1.47.12) so JS typechecking matches the frontend versions ComfyUI
actually ships.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 19:44:28 +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 db88ad982a feat: add MajoorSaveImage & MajoorSaveVideo nodes, generation_time_ms extraction, topbar MFV button announcement
- nodes.py: MajoorSaveImage (PNG with generation_time_ms in text chunks) and MajoorSaveVideo (MP4 via PyAV, GIF, WebP with metadata persistence)
- extractors_png.py: read generation_time_ms from PNG text chunks
- extractors.py: extract generation_time_ms from merged EXIF data into metadata dict
- extractors_video.py: extract generation_time_ms from ffprobe format tags
- messageCenter.js: add generation-time-persistence tip and topbar MFV button announcement
- CHANGELOG.md: document topbar MFV button and custom nodes
- README.md: add Custom Nodes section with input tables
- docs/CUSTOM_NODES.md: full node reference and extraction pipeline docs
- docs/DOCUMENTATION_INDEX.md: add CUSTOM_NODES.md entry
2026-04-12 19:16:07 +02:00
Ewald f56d6284da fix: MFV popup dark theme, gen info panel, reset zoom + popout polish
- FloatingViewer.impl.js: add missing _resetMfvZoom() method (was called
  from floatingViewerLoader/Mode but never defined on the class)
- viewerShell.js: return genInfoTitle + genInfoTitleLeft from createViewerStageShell
- ViewerRuntime.js: destructure genInfoTitle + genInfoTitleLeft (were undefined
  => gen info body was never populated)
- floatingViewerPopout.js: inject document.documentElement.style.cssText as
  :root{...} in popup head so ComfyUI CSS vars are available; set body
  background to #0d0d0d; remove broken history.replaceState (Chrome blocks
  it from about:blank)
- __init__.py: remove unused FailureSeverity/StageStatus imports
2026-04-11 19:06:23 +02:00
Ewald f5917eef6e feat(execution): implement idle grace period and enhance asset handling
- Add EXECUTION_IDLE_GRACE_MS config to control post-execution delay
- Implement post-execution work scheduling to optimize resource handling
- Enhance asset upsert logic for live assets during stack finalization
- Add runtime status synchronization to backend
- Improve execution start/end handling with new job ID tracking
- Refactor live asset event processing to reduce complexity
- Optimize imports and event handling in various modules
2026-04-09 01:55:32 +02:00
MajoorWaldi 2fa41a0e76 feat: add useGridState and useVirtualGrid composables for asset management
- Implemented useGridState to manage grid state, including asset selection and loading states.
- Created useVirtualGrid to centralize virtualization helpers for improved performance.
- Added createVueApp for isolated Vue 3 + Pinia application instances.
- Introduced Vite configuration for building the ComfyUI-Majoor-AssetsManager with external dependencies.
2026-04-03 11:04:55 +02:00
MajoorWaldi 459b12ac39 feat(viewer): add 3D model viewing support
- Implement basic 3D model thumbnail rendering with fallback icon
- Update viewer mode selection logic to handle 3D models
- Add checks for 3D model interactions in the viewer
- Extend drag & drop support to include 3D model assets
2026-03-16 23:47:08 +01:00
Your Name 934f10b58a Refactor imports and improve type hints across multiple modules
- Organized and grouped import statements for better readability in health.py, metadata.py, releases.py, scan.py, search.py, version.py, viewer.py, and registry.py.
- Updated type hints to use the new union syntax (e.g., str | None) for better clarity in scan.py, settings.py, tool_detect.py, and result.py.
- Enhanced the handling of optional types in various functions to ensure more robust type checking.
- Removed unnecessary blank lines and improved formatting for consistency.
- Adjusted the logic in several test files to ensure compatibility with the updated import structure and type hints. (See <attachments> above for file contents. You may not need to search or read the file again.)
2026-02-20 19:13:15 +01:00
Your Name ce96e466e3 feat: enhance sidebar functionality and settings management
- Added sidebar width configuration to settings, allowing users to customize the sidebar width (240-640px).
- Implemented logic to apply sidebar width settings dynamically.
- Updated sidebar rendering to respect the new width settings.
- Modified grid view settings to improve layout and responsiveness.
- Enhanced security settings to restrict remote write access by default.
- Updated asset management routes to include rename functionality.
- Improved error handling and logging for asset classification and write access checks.
- Refactored background scan worker for better shutdown handling.
- Added tests to ensure write access restrictions are enforced correctly.
2026-02-20 07:45:33 +01:00
Your Name f38ab4209e Save changes 2026-02-19 22:44:26 +01:00
Ewald b700149b2d feat: Enhance metadata handling and fallback mechanisms
- Introduced fallback readers for metadata extraction when ExifTool/ffprobe are unavailable, utilizing Pillow and hachoir for images and media files respectively.
- Added settings for metadata fallback preferences, allowing users to toggle image and media fallback options.
- Implemented route collision logging to prevent overlapping API paths.
- Added middleware for authentication on sensitive routes, ensuring secure access.
- Updated API documentation to reflect new endpoints and settings.
- Enhanced unit tests for metadata handling, case sensitivity in file paths, and fallback mechanisms.
- Removed compatibility shims for shared modules, consolidating imports under mjr_am_shared.
2026-02-13 16:37:44 +01:00
Ewald 00ee7806f7 feat: Add tool detection helpers for ExifTool and FFprobe
- Implemented caching for tool availability and versions.
- Added functions to check for ExifTool and FFprobe availability.
- Included version satisfaction checks against minimum required versions.
- Created utility functions for parsing boolean and float values from environment variables.
- Introduced shared utilities for error message sanitization and logging with emoji indicators.
- Established a Result pattern for error handling without exceptions.
- Added scan throttling helpers to manage background scans efficiently.
- Implemented time utilities for timestamps and performance measurement.
- Defined shared types, enums, and constants for consistent error handling and file classification.
- Created version management utilities to retrieve version information from pyproject.toml.
- Developed installation script for runtime dependencies.
- Added tests for ExifTool batch processing and various configuration scenarios.
- Implemented tests for version route aliases and runtime output root configuration.
2026-02-12 17:55:28 +01:00
Your Name ebd633bc87 commit nightly 2026-02-06 23:54:28 +01:00
Ewald 640eccf422 chore: save workspace changes 2026-02-06 21:17:46 +01:00
Your Name d96ee2f96d Add aiosqlite as a dependency and implement async DB operations 2026-01-16 11:13:31 +01:00
Your Name 1f67ea7104 Add batch zip download feature and collection service tests and more 2026-01-15 14:33:04 +01:00
Your Name 338c37bdfe v2.0 Architecture Refactor 2026-01-08 02:21:14 +01:00
Your Name 720587b3ee Update metadata extraction and add file watcher 2025-12-26 03:40:02 +01:00
MajoorWaldi 3ff7eb674a major: Refactor and enhance UI and server functionality 2025-12-13 22:01:43 +01:00
Ewald 639c80f60a Add files via upload 2025-12-10 14:58:21 +01:00
Ewald dedfdca3d9 Add files via upload 2025-12-09 17:50:24 +01:00