From 318c74937f28e08b30ed29f5b5ced899b9591794 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 17 Dec 2025 20:01:51 +0000 Subject: [PATCH] fix(scm): correct version, metadata, and security checks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - guix.scm: Add SPDX header, update version 0.1.0→3.0.0, fix name capitalization, add proper description, correct URL (github→gitlab), change license to MIT (license:expat) - flake.nix: Update version 1.0.0→3.0.0 to match Cargo.toml - security-policy.yml: Fix HTTP URL detection regex (was incorrectly searching for https:// instead of http://) - ROADMAP.md: Update to reflect v3.0.0 as current, mark completed features, reorganize future versions (v3.x→v5.x), update version support table --- .github/workflows/security-policy.yml | 2 +- ROADMAP.md | 100 +++++++++++++------------- flake.nix | 2 +- guix.scm | 17 +++-- 4 files changed, 63 insertions(+), 58 deletions(-) diff --git a/.github/workflows/security-policy.yml b/.github/workflows/security-policy.yml index 90c2378..c20bbc7 100644 --- a/.github/workflows/security-policy.yml +++ b/.github/workflows/security-policy.yml @@ -17,7 +17,7 @@ jobs: fi # Block HTTP URLs (except localhost) - HTTP_URLS=$(grep -rE 'https://[^l][^o][^c]' --include="*.py" --include="*.js" --include="*.ts" --include="*.go" --include="*.rs" --include="*.yaml" --include="*.yml" . 2>/dev/null | grep -v 'localhost\|127.0.0.1\|example\|test\|spec' | head -5 || true) + HTTP_URLS=$(grep -rE 'http://[^l][^o][^c]' --include="*.py" --include="*.js" --include="*.ts" --include="*.go" --include="*.rs" --include="*.yaml" --include="*.yml" . 2>/dev/null | grep -v 'localhost\|127.0.0.1\|example\|test\|spec' | head -5 || true) if [ -n "$HTTP_URLS" ]; then echo "⚠️ HTTP URLs found. Use HTTPS:" echo "$HTTP_URLS" diff --git a/ROADMAP.md b/ROADMAP.md index df0b3ba..45d32b9 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -5,99 +5,99 @@ This document outlines the planned development direction for Panoptes. -## Current Status: v1.0.0 (Stable) - -The initial stable release provides: - -- **Image analysis & renaming** - JPG, PNG, WebP, GIF, BMP, TIFF -- **Moondream vision model** - Local AI via Ollama (~1.6GB) -- **Graceful operation** - Signal handling, health checks -- **Undo support** - History log with `panoptes-undo` tool -- **Dry-run mode** - Preview changes before committing -- **RSR Gold compliance** - Full documentation suite - -## Immediate Fixes (v1.0.x) - -### v1.0.1 - Polish +## Current Status: v3.0.0 (Stable) + +Panoptes v3.0.0 includes comprehensive file analysis capabilities: + +### Core Features (Completed) +- [x] **Image analysis & renaming** - JPG, PNG, WebP, GIF, BMP, TIFF +- [x] **Moondream vision model** - Local AI via Ollama (~1.6GB) +- [x] **Graceful operation** - Signal handling, health checks +- [x] **Undo support** - History log with `panoptes-undo` tool +- [x] **Dry-run mode** - Preview changes before committing +- [x] **RSR Gold compliance** - Full documentation suite +- [x] **Web UI** - `panoptes-web` binary for browser-based interface +- [x] **PDF processing** - Text extraction via `pdf-extract` and `lopdf` +- [x] **Audio metadata** - ID3 tags, MP3 metadata via `symphonia` +- [x] **Archive inspection** - ZIP, TAR, GZIP support +- [x] **Code analysis** - Tree-sitter parsing for Rust, Python, JavaScript +- [x] **Document parsing** - XML and Excel via `quick-xml` and `calamine` +- [x] **Deduplication** - BLAKE3 hashing for file deduplication +- [x] **SQLite database** - Tags and categories storage + +## Immediate Fixes (v3.0.x) + +### v3.0.1 - Polish - [ ] Improve file stability detection (check file handle locks) - [ ] Add retry logic for transient Ollama failures - [ ] Systemd service file for daemon operation - [ ] Man page generation -### v1.0.2 - Robustness +### v3.0.2 - Robustness - [ ] Better handling of very large files - [ ] Configurable debounce timing - [ ] Log rotation support - [ ] Prometheus metrics endpoint (optional) -## Short-term Goals (v1.x) +## Short-term Goals (v3.x) -### v1.1.0 - PDF Support -- [ ] PDF first-page rasterization via `pdfium` -- [ ] Text extraction fallback via `pdf-extract` -- [ ] Document type detection -- [ ] Configurable page selection for multi-page PDFs - -### v1.2.0 - Extended Image Formats +### v3.1.0 - Extended Image Formats - [ ] HEIC/HEIF support (Apple photos) - [ ] RAW format support (CR2, NEF, ARW, DNG) - [ ] SVG thumbnail generation - [ ] AVIF support -### v1.3.0 - Enhanced AI +### v3.2.0 - Enhanced AI - [ ] Multiple model support (LLaVA, BakLLaVA, Phi-3) - [ ] Model auto-selection based on file size/type - [ ] Custom prompt templates via config - [ ] Confidence scoring (skip low-confidence renames) -### v1.4.0 - Audio Files +### v3.3.0 - Audio Transcription - [ ] Whisper integration for speech-to-text - [ ] Audio file naming from transcription -- [ ] Music file metadata extraction - [ ] Podcast episode detection -## Medium-term Goals (v2.x) +### v3.4.0 - Video Support +- [ ] FFmpeg integration for keyframe extraction +- [ ] Video thumbnail analysis +- [ ] Audio track transcription +- [ ] Scene detection + +## Medium-term Goals (v4.x) -### v2.0.0 - Plugin Architecture +### v4.0.0 - Plugin Architecture - [ ] Trait-based analyzer plugins - [ ] Dynamic plugin loading - [ ] Plugin configuration schema - [ ] Community plugin registry -### v2.1.0 - Multi-Directory & Remote +### v4.1.0 - Multi-Directory & Remote - [ ] Multiple watch directories - [ ] Remote Ollama support (TLS) - [ ] SSH tunnel support - [ ] Configuration hot-reload -### v2.2.0 - Video Support -- [ ] FFmpeg integration for keyframe extraction -- [ ] Video thumbnail analysis -- [ ] Audio track transcription -- [ ] Scene detection - -### v2.3.0 - Documents & Code -- [ ] Office document text extraction -- [ ] Code file analysis via DeepSeek Coder -- [ ] Archive content inspection -- [ ] Email file parsing +### v4.2.0 - Advanced Documents +- [ ] Office document deep extraction (DOCX, PPTX) +- [ ] Email file parsing (EML, MSG) +- [ ] More archive formats (7z, RAR) -## Long-term Vision (v3.x) +## Long-term Vision (v5.x) -### v3.0.0 - Advanced Features -- [ ] Web UI dashboard +### v5.0.0 - Advanced Features - [ ] Category-based organization (auto-folders) -- [ ] Tagging system -- [ ] Duplicate detection +- [ ] Advanced tagging system with hierarchies - [ ] Semantic search over renamed files +- [ ] Machine learning model fine-tuning -### v3.1.0 - Sync & Distribution +### v5.1.0 - Sync & Distribution - [ ] CRDT-based distributed state - [ ] Multi-device synchronization - [ ] Offline-first rename queue - [ ] Conflict resolution UI -### v3.2.0 - Platform Expansion +### v5.2.0 - Platform Expansion - [ ] Native macOS app (FSEvents optimization) - [ ] Windows service - [ ] Mobile companion app @@ -140,7 +140,9 @@ See [CONTRIBUTING.adoc](CONTRIBUTING.adoc) for guidelines. | Version | Status | Support Until | |---------|--------|---------------| -| 1.0.x | **Current** | Active development | +| 3.0.x | **Current** | Active development | +| 2.x | Maintenance | Security fixes only | +| 1.x | Legacy | Unsupported | | 0.x | Legacy | Unsupported | ## Changelog @@ -149,4 +151,4 @@ See [CHANGELOG.md](CHANGELOG.md) for detailed version history. --- -*Last updated: 2025-11-27* +*Last updated: 2025-12-17* diff --git a/flake.nix b/flake.nix index 1f1d0b8..e6c8cf0 100644 --- a/flake.nix +++ b/flake.nix @@ -78,7 +78,7 @@ # Package definition packages.default = pkgs.rustPlatform.buildRustPackage { pname = "panoptes"; - version = "1.0.0"; + version = "3.0.0"; src = ./.; diff --git a/guix.scm b/guix.scm index d8a6fa7..3e7b887 100644 --- a/guix.scm +++ b/guix.scm @@ -1,3 +1,6 @@ +;; SPDX-License-Identifier: MIT +;; SPDX-FileCopyrightText: 2025 Jonathan D. A. Jewell + ;; Panoptes - Guix Package Definition ;; Run: guix shell -D -f guix.scm @@ -10,16 +13,16 @@ (define-public panoptes (package - (name "Panoptes") - (version "0.1.0") - (source (local-file "." "Panoptes-checkout" + (name "panoptes") + (version "3.0.0") + (source (local-file "." "panoptes-checkout" #:recursive? #t #:select? (git-predicate "."))) (build-system cargo-build-system) - (synopsis "Rust application") - (description "Rust application - part of the RSR ecosystem.") - (home-page "https://github.com/hyperpolymath/Panoptes") - (license license:agpl3+))) + (synopsis "Local AI-powered file scanner and renamer") + (description "Panoptes is a local AI-powered file scanner and renamer that uses the Moondream vision model via Ollama to intelligently rename files based on visual content. Supports images, PDFs, audio, archives, code files, and documents.") + (home-page "https://gitlab.com/hyperpolymath/panoptes") + (license license:expat))) ;; Return package for guix shell panoptes