SylentID

"Built by an artist for artists — Protect your work with invisible, reliable watermarking that stays with your images through every edit, export, and workflow."

Protect Your Images With Invisible Precision

sylentID is a professional digital-watermarking plugin for Photoshop that embeds invisible ownership data directly into your images. Using advanced steganography and industry-standard metadata techniques, it safeguards your creative work without altering how it looks — giving you silent, reliable protection in every file. sylentID – User Manual

Two Systems, One Secure Identity

sylentID combines robust pixel-based watermarking (DCT, LSB, or Combined) with XMP metadata injection to create a dual-layer protection system. Your ownership details, image IDs, timestamps, URLs, and optional cryptographic signatures are securely embedded and remain attached through editing, exporting, and cross-platform workflows. sylentID – User Manual

Built for Professional Photoshop Workflows

Designed as a streamlined UXP panel, sylentID integrates naturally into your existing process: embed watermarks with a single click, manage copyright registration data, preview changes, process multiple images at once, and configure your preferred defaults. Batch tools, timestamp options, and flexible sensitivity controls allow you to tailor protection for any project. sylentID – User Manual

Reliable, Consistent, and International

With full support for multi-language interfaces, metadata standards, and cross-platform operation, sylentID ensures your embedded information travels safely wherever your images go. Licence verification, local settings storage, and optional cryptographic signatures deliver a secure and dependable experience for professional creators.

  • Invisible DCT/LSB/Combined steganography — professional-grade pixel watermarking
  • Dual-layer protection — pixel watermark + XMP metadata fields
  • Cryptographic signatures — verify authenticity and detect tampering
  • Copyright registration integration — store official documentation in the file
  • Batch processing — apply watermarks to entire folders or all open documents
  • Adjustable sensitivity — control strength, subtlety, and performance
  • Custom defaults — prefill owner details, URLs, embedding mode, registration data
  • Metadata-safe — works seamlessly with Photoshop, Bridge, Lightroom, and XMP tools
  • Real-time preview — adjustable quality for speed or accuracy
  • Multi-language interface — flexible for international creative teams
  • Local storage system — persistent settings for consistent workflows
  • Gumroad licence verification — secure activation and updates

Requirements:

  1. Minimum PS Version: 25.0.0
  2. Internet Connection
  3. Valid Licence Key from Gumroad/Lemon Squeeze or an Adobe Cloud Account

*Please note this plugin has the following built in languages: English, English US, Français, Deutsch, Español, Italiano, Português, Ελληνικά and 日本語

  • There is a projected release date for V.1.0.0 for January 2026.
  • In an incredible series of events and the release of Photoshop 27, there was a break in the code that allowed XMP data to be written from the UXP environment. Mainly due to security and a new pipeline built to deal with Content Credential data. For that reason, the past 3 days has been used to find a solution. Luckily a new more robust data saving XMP engine has been designed and is being deployed into th app. So V 1.1.0 is still set for January release.
Changelog

SylentID - Version History

Version 1.0.14 Bugfix

2026-03-18
  • ### Changed
  • - **XMP Write Pattern — No Dirty Pixel**
  • - Replaced save interception pattern with direct `performXMPFilePatching` call in `lib/core/xmpEngine.js`
  • - XMP now written directly to disk on watermark embed — no invisible pixel, no re-encode
  • - Removed `setupUniversalApp` with `saveInterception: true` from `script.js` init; now calls `registerXMPNamespaces()` only
  • - Added `comprehensiveLogger` null-safe fallback in `psd-metadata-engine.js`
  • - Removed `ensureDocumentNeedsSave()` call from `injectMetadata`
  • - Removed verification block (500ms delay + re-read) from `performXMPFilePatching`
  • ### Files Modified
  • - `lib/core/psd-metadata-engine.js` — logger fallback, removed dirty pixel call, removed verification block
  • - `lib/core/xmpEngine.js` — direct `performXMPFilePatching` pattern
  • - `script.js` — removed save interception init
  • - `manifest.json` — version bumped to 1.0.14
  • - `lib/core/version.js` — version bumped to 1.0.14

Version 1.0.13 Minor

2026-02-20
  • **Process All Open Windows - Fixed ReferenceError**
  • - Fixed critical bug where "Process All Open Windows" failed with `ReferenceError: textLayerGate is not defined`
  • - Removed call to non-existent `textLayerGate()` function from batch processing
  • - Function was previously removed due to batch processing conflicts but code still referenced it
  • - Text layer warning system for single document embedding remains intact and functional
  • **Files Modified:**
  • - `lib/ui/clickHandlers.js` - Removed textLayerGate call from processOpenDocumentsBatch()
  • **Impact:**
  • - ✅ Process All Open Windows now works correctly
  • - ✅ Single document text layer warnings still functional
  • - ✅ Batch folder processing unaffected
  • ### 📚 DOCUMENTATION
  • **Updated Files:**
  • - `lib/core/version.js` - Version bumped to 1.0.13
  • - `manifest.json` - Version bumped to 1.0.13
  • - `_support/docs/claude.md` - Added bug fix documentation
  • - `_support/docs/CHANGELOG.md` - This file

Version 1.0.12 Minor

2026-01-30
  • ### 🛡️ TEXT LAYER PROTECTION
  • **Simple Text Layer Detection System**
  • - Detects text layers before watermark embedding in single-file mode
  • - Uses DOM API (`layer.kind === "text"`) for reliable detection
  • - No batchPlay GET commands (avoids modal state conflicts)
  • - Shows native Photoshop alert with two options:
  • - Cancel: User can flatten document manually first
  • - Proceed Anyway: Continue with embedding despite text layers
  • - Only runs in single-file embed mode (not batch processing)
  • - Silently fails on error (assumes no text layers)
  • **Files Modified:**
  • - Created `lib/core/text-layer-checker.js` - DOM-based text layer detection
  • - `lib/ui/clickHandlers.js` - Added text layer check before single embed
  • **User Benefits:**
  • - Clear warning about potential watermark corruption from editable text
  • - User maintains full control (manual flatten vs proceed)
  • - No destructive automatic changes
  • - Simple, reliable implementation
  • ### 🐛 BUG FIXES
  • **Modal State Error Prevention**
  • - Removed complex batchPlay-based text layer detection
  • - Eliminated "Get command not available" errors
  • - No modal state conflicts during batch processing
  • - Stable and predictable behavior
  • ### 📚 DOCUMENTATION
  • **Updated Files:**
  • - `lib/core/version.js` - Version bumped to 1.0.12
  • - `manifest.json` - Version bumped to 1.0.12
  • - `_support/doc/CLAUDE.md` - Added text layer protection documentation
  • - `_support/doc/CHANGELOG.md` - This file

Version 1.0.11 Minor

2026-01-22
  • ### 🔧 LICENSE SYSTEM CHANGES
  • **Grace Period Removal**
  • - Removed all grace period logic from license system
  • - App now operates on strict "have license or don't use" basis
  • - No more 72-hour offline access after successful validation
  • - Network failures during license recheck now fail immediately (no grace period)
  • - Admin credentials no longer expire (previously 1-year grace period)
  • - Simplified license state structure (removed `graceUntil` field)
  • - Files modified:
  • - `lib/core/license-engine-universal.js` - Core engine grace period removal
  • - `lib/license-config.js` - Removed grace window configuration
  • - `lib/license-providers/gumroad-adapter.js` - Removed graceWindow parameter
  • - `lib/license-providers/lemonsqueezy-adapter.js` - Removed graceWindow parameter
  • - `lib/license-providers/no-license-adapter.js` - Removed grace period from free records
  • - `lib/core/license-engine.js` - Updated old engine for consistency
  • **License Persistence** (unchanged):
  • - Primary storage: UXP file system (`license.json`)
  • - Fallback storage: localStorage
  • - State preserved across app restarts
  • **Error Messages Updated**:
  • - `grace_expired` → Removed (no longer used)
  • - `network_error` → New error for immediate network failure
  • - `admin_expired` → Removed (admin never expires)
  • ### 📚 DOCUMENTATION
  • **Updated Files:**
  • - `lib/core/version.js` - Version bumped to 1.0.11
  • - `_support/doc/CLAUDE.md` - Detailed documentation of grace period removal
  • - `_support/doc/CHANGELOG.md` - This file

Version 1.0.10 Major

2026-01-16
  • ### ✨ NEW FEATURES
  • **Text Layer Protection System**
  • - Automatically detects editable text layers before watermark embedding
  • - Interactive modal dialog for single embed operations with three options:
  • - Skip embedding (cancel operation)
  • - Rasterize text layers only (converts text to pixels, preserves layers)
  • - Flatten entire document (merges all layers)
  • - Auto-rasterization in batch processing (non-interactive mode)
  • - Prevents watermark corruption from text layer edits
  • - Integration in all embedding workflows:
  • - Single file embed: Interactive dialog with user choice
  • - Batch folder processing: Automatic rasterization
  • - All open windows: Automatic rasterization
  • - Files: `lib/core/text-layer-gate.js`, `lib/ui/textLayerDecisionModal.js`, `lib/ui/clickHandlers.js`
  • **Receipt Printing System**
  • - Generate professional PDF receipts for watermark embedding
  • - Legal documentation for copyright protection
  • - Receipt includes:
  • - Receipt number and date
  • - Document information (filename, dimensions, format)
  • - All watermark data (copyright, image ID, URL, timestamp)
  • - Copyright registration details (if provided)
  • - Security features (cryptographic signature, layers, method)
  • - SHA-256 verification hash for receipt integrity
  • - Professional styling matching HTML template design
  • - Print button in control panel (next to refresh button)
  • - Save receipt as PDF with auto-naming: `sylentID-receipt-{imageId}.pdf`
  • - Full internationalization across all 9 languages
  • - Files: `lib/export/receipt-generator.js`, `lib/external/jspdf.min.js`
  • **License System Upgrade**
  • - Switched from basic Gumroad-only license engine to universal multi-vendor system
  • - Supports multiple license providers:
  • - Gumroad adapter
  • - LemonSqueezy adapter
  • - No-License adapter (admin bypass)
  • - License configuration via `lib/license-config.js`
  • - Universal license engine loaded via require() for proper dependency resolution
  • - Files: `lib/core/license-engine-universal.js`, `lib/license-providers/`
  • ### 🎨 UI ENHANCEMENTS
  • **Print Receipt Button**
  • - Added print icon to control panel footer
  • - Positioned between refresh and settings buttons
  • - Tooltip: "Print Embedding Receipt"
  • - Integrated with receipt generator
  • ### 🔧 TECHNICAL IMPROVEMENTS
  • **Text Layer Detection**
  • - Uses batchPlay API to walk layer tree hierarchy
  • - Detects all text layers regardless of nesting depth
  • - Counts text layers and provides interactive/non-interactive modes
  • - Rasterization preserves layer structure (doesn't flatten unless requested)
  • - Modal gate pattern prevents watermark corruption
  • **Receipt Generation**
  • - jsPDF library integration for PDF creation
  • - Professional header with gradient background
  • - Receipt information bar with status indicators
  • - Section-based layout with consistent styling
  • - Security badges for visual trust indicators
  • - SHA-256 hash generation for verification
  • - File system integration with UXP storage picker
  • **License Engine Architecture**
  • - Adapter pattern for vendor-agnostic license validation
  • - License configuration centralized in license-config.js
  • - Proper UXP module loading with require() instead of script tags
  • - Relative path resolution for license provider adapters
  • **Translation System**
  • - Added translations for receipt printing across all 9 languages:
  • - `tooltip.printReceipt`: Button tooltip
  • - `print.success`: Success notification
  • - `print.error`: Error notification
  • - Locales updated: de, el, en, en-GB, es, fr, it, ja, pt
  • ### 🐛 BUG FIXES
  • **License System Loading**
  • - Fixed license-engine-universal.js not loading correctly
  • - Root cause: UXP can't resolve require() dependencies when loaded as `<script>` tag
  • - Solution: Load via require() in script.js instead of HTML script tag
  • - Allows proper relative path resolution for license adapters
  • **Text Layer Corruption Prevention**
  • - Fixed watermarks getting corrupted when text layers are edited post-embedding
  • - Text layer gate now prevents embedding without handling text layers first
  • - User has control over how to handle text layers (skip/rasterize/flatten)
  • ### 📝 FILES MODIFIED
  • **New Files:**
  • - `lib/export/receipt-generator.js` - PDF receipt generation
  • - `lib/external/jspdf.min.js` - jsPDF library
  • - `lib/core/text-layer-gate.js` - Text layer detection and handling
  • - `lib/ui/textLayerDecisionModal.js` - User dialog for text layer options
  • - `lib/core/license-engine-universal.js` - Universal license engine (copied from Noteli)
  • **Modified Files:**
  • - `index.html` - Added jsPDF script, receipt generator script, print button
  • - `script.js` - Updated license engine loading (require instead of script tag)
  • - `lib/license-config.js` - License configuration for universal engine
  • - `lib/ui/clickHandlers.js` - Text layer integration, receipt printing handler
  • - All 9 locale files - Added receipt printing translations
  • ### 🔒 SECURITY
  • **Receipt Verification**
  • - SHA-256 hash of watermark data provides tamper detection
  • - Receipt can verify authenticity of embedded watermark data
  • - Useful for legal disputes and copyright claims
  • ### 📋 DOCUMENTATION
  • **Technical Documentation:**
  • - Text layer protection system architecture documented
  • - Receipt generation workflow documented
  • - License system upgrade details recorded
  • - Integration points for all new features documented

Version 1.0.9 Major

2026-01-16
  • ### 🐛 BUG FIXES
  • **Preview Rendering on Startup**
  • - Fixed preview staying blank when opening sylentID with a document already open
  • - Added document detection during splash screen phase
  • - Automatically triggers preview refresh after initialization if document was detected
  • - Preview now reliably renders within ~7.5 seconds of panel opening
  • - Files: `script.js` (lines 54-77, 932-942), `entrypoints.js` (lines 229-248)
  • **Preview Rendering Improvements**
  • - Added safety checks for canvas and context initialization
  • - Added Unicode-safe error handling for SylentIDSettings
  • - Increased initial render delay from 500ms to 1500ms for better reliability
  • - Added error recovery that shows placeholder on render failures
  • - Files: `lib/ui/previewRenderer.js` (lines 65-75, 131-138), `entrypoints.js` (lines 186-191)
  • **Document Change Detection**
  • - Added detection for documents opened while panel is visible
  • - Preview now auto-refreshes when switching from "no document" to "document exists"
  • - 2-second polling interval reliably detects document state changes
  • - Files: `entrypoints.js` (lines 229-248)
  • ### 🔧 TECHNICAL IMPROVEMENTS
  • **Preview Renderer Safety**
  • - Added fallback for missing SylentIDSettings during early initialization
  • - Preview quality defaults to 'low' if settings not yet loaded
  • - Better error logging throughout preview rendering pipeline
  • - Console logs now track canvas initialization and render attempts
  • **Startup Sequence**
  • - Global flag `wasDocumentOpenOnStartup` tracks document state during splash
  • - Integrates with existing init() workflow without breaking existing code
  • - 500ms delay after init ensures canvas is ready before rendering
  • ### 📝 FILES MODIFIED
  • - `script.js` - Added document detection during splash, preview refresh after init
  • - `entrypoints.js` - Increased initial delay, added document open detection, improved error handling
  • - `lib/ui/previewRenderer.js` - Added safety checks, Unicode-safe settings handling

Version 1.0.8 Major

2026-01-04
  • ### 🐛 BUG FIXES
  • **Translation System**
  • - Fixed country dropdown not updating when language changes (required plugin reload)
  • - Root cause: `loadPanelDefaults()` was overwriting translations
  • - Solution: Added `i18n.applyTranslations()` after default loading
  • - Files: `script.js` (lines 596-598, 638-641)
  • - Fixed License Information heading not translating in Settings > Licence panel
  • - Added missing `data-i18n` tag and translation keys to all 9 locales
  • - Fixed language change alert showing i18n tag instead of translated message
  • - Added `menu.languageChange.message` key to all locale files
  • ### 🔧 TECHNICAL IMPROVEMENTS
  • **UXP Compatibility**
  • - Removed `gap` property from all CSS (not supported in UXP)
  • - Replaced with margin-based spacing in `.two-column-layout`, `.settings-footer`, `.about-links`
  • - Added UXP reflow workarounds for flex layout rendering issues
  • - Force reflow after translations in Settings modal (script.js onOpen)
  • - Force reflow after tab switches (modal-engine.js setupTabSwitching)
  • **Settings Modal Layout**
  • - Simplified translation application logic (removed broken select innerHTML refresh)
  • - Changed `.tab-content` from `height: 100%` to `flex: 1 1 auto`
  • - Changed `.two-column-layout` to `height: auto` for natural content sizing
  • - Added `height: auto` rule for `#defaults .two-column-layout` (matching `#licence`)
  • - Removed restrictive width constraints on columns and form inputs
  • - Added `min-width`/`min-height` to dialog element for size consistency
  • ### ⚠️ KNOWN ISSUES
  • - Settings modal width may vary slightly between languages/tabs
  • - UXP flex layout reflow bug: layouts don't always recalculate after DOM text mutations
  • - Select element display may not immediately update when option textContent changes
  • ### 📝 FILES MODIFIED
  • - `lib/ui/i18n.js` - Simplified translation application
  • - `lib/ui/modal-engine.js` - Added dialog constraints and tab switch reflow
  • - `lib/styles/universal-settings-modal.css` - Removed gap, adjusted flex properties, removed width constraints
  • - `script.js` - Added translation re-application after defaults loading, added reflow in onOpen
  • - All 9 locale files (`locales/*/messages.json`) - Added missing translation keys

Version 1.0.6 Major

2025-12-11
  • ### ✨ NEW FEATURES
  • **Complete Localization System**
  • - 9 languages fully supported: en-GB, en-US, fr, de, es, it, pt, el, ja
  • - 198 translation keys across all languages
  • - Universal UXP i18n engine (portable to other plugins)
  • - British English (en-GB) as default language
  • - CSV-to-JSON conversion workflow for easy translation management
  • - Language selector in settings with both English variants
  • **Menu System Enhancements**
  • - Hamburger menu with 7 items: About, Check for Updates, Settings, Visit Plugin Page, Help & Documentation, Tutorials
  • - Photoshop Plugin menu with command shortcuts
  • - Reload Plugin command for development
  • - All processing commands include validation (Embed, Batch, All Open Windows)
  • - Network links to website and YouTube tutorials
  • **Settings System - Complete Integration**
  • - Auto-Capitalise text inputs (configurable, excludes URLs/IDs)
  • - Timestamp format selection (ISO 8601, UK, US, Unix)
  • - Preview quality control (Low/Medium/High)
  • - Batch processing defaults (suffix, format)
  • - Copyright registration default values
  • - All settings now functional and persistent
  • ### 🎨 UI POLISH
  • **General Improvements**
  • - Reduced top padding and spacing throughout for cleaner look
  • - Added helpful hint text under action bars
  • - Better visual hierarchy with compact spacing
  • - Text truncation with ellipsis for long filenames
  • - 11px info overlay text for readability
  • **Embedder UI**
  • - Batch file list font size reduced to 9px
  • - Batch report styling more compact (5px padding)
  • - Progress section optimized
  • - Card margins reduced (16px → 3px)
  • - Title updated to "Embed Watermark Information"
  • **Reader UI**
  • - Promo text size reduced (12px → 10px)
  • - Results section padding matches embedder
  • - Verification status more compact
  • - Progress section aligned with embedder
  • ### 🔧 TECHNICAL IMPROVEMENTS
  • **Settings Engine**
  • - Universal settings engine portable across all rob art | illustration plugins
  • - Event listener management prevents duplicates
  • - Settings callbacks trigger: panel reload, copyright panel visibility, auto-capitalise, preview refresh
  • - Fixed storage key mismatches (batchFileSuffix vs batchSuffix)
  • - Consistent use of SylentIDSettings getters throughout
  • **Translation Keys**
  • - Added menu item translations (checkUpdates, visitPlugin, helpDocs, tutorials, reloadPlugin)
  • - Added validation messages (fillRequiredFields, needOpenDocuments)
  • - Added About dialog keys
  • - Added Update checker messages with parameter support ({0})
  • - Helpful placeholder examples in all input fields
  • **Localization Architecture**
  • - UXP manifest localization block with two-letter codes only (UXP requirement)
  • - Localization block positioned BEFORE entrypoints (critical for UXP)
  • - entrypoints.js loads from new locale structure
  • - Language change alert guides users to reload plugin
  • - Plugin dropdown menu hardcoded British English (UXP limitation documented)
  • - Hamburger menu translates after plugin reload
  • ### 📋 DOCUMENTATION
  • **Files Created**
  • - `ADOBE-UXP-LIMITATIONS.md` - Complete explanation of UXP localization constraints
  • - `LOCALIZATION-COMPLETE.md` - Implementation summary
  • - `LOCALIZATION-FIXES.md` - Troubleshooting history
  • - `LOCALIZATION-README.md` - Quick reference guide
  • - `locales/README.md` - Locale directory documentation
  • ### 🐛 BUG FIXES
  • - Fixed UXP localization API not loading (invalid regional codes)
  • - Fixed hamburger menu not translating (wrong file structure)
  • - Fixed language change alert not appearing (wrong API syntax)
  • - Fixed missing placeholder translations (removed hardcoded attributes)
  • - Fixed default language reset (en-GB instead of en-US)
  • ### ⚙️ MAINTENANCE
  • **File Cleanup**
  • - Moved documentation to `_support/doc/`
  • - Removed 12 temporary Python fix scripts
  • - Deleted completed TODO files
  • - Main folder now contains only: translations.csv, csv-to-locales.py, LOCALIZATION-README.md
  • **Network Permissions**
  • - Added robsnow.eu domain for update checking
  • - Added YouTube domains for tutorial links

Version 1.0.4 Minor

2025-12-06
  • ### ✨ NEW FEATURES
  • **Hamburger Menu System**
  • - Three-dot panel menu with About, Check for Updates, Settings
  • - CustomEvent dispatch pattern bridges entrypoints.js and script.js
  • - Works in both panel hamburger and Photoshop Plugins dropdown
  • **Update Checking System**
  • - WordPress Plugin Update Manager integration
  • - REST API endpoint: `https://robsnow.eu/wp-json/updates/v1/sylentid`
  • - Semantic version comparison
  • - Update notifications with release notes and store links
  • - Graceful error handling for network failures
  • ### 🎨 SETTINGS MODAL
  • **Universal Modal Engine**
  • - Fully portable, reusable modal system
  • - 600px × 500px dimensions
  • - Three-tab navigation: General | Defaults | Licence
  • - Automatic settings persistence via localStorage
  • - Storage prefix: `sylentID_`
  • **General Tab**
  • - Interface settings (Show Tooltips, Show Notifications)
  • - Language selector (9 languages)
  • - Default: UK English (en-GB)
  • **Defaults Tab**
  • - Default copyright owner and URL
  • - Watermark layers: 1 Layer (Fast) | 3 Layer (Robust)
  • - Embedding mode: DCT | LSB | Combo
  • - Cryptographic signature default (on/off)
  • - Copyright registration defaults (Country, Authority, Registered Name)
  • **Licence Tab**
  • - Email and License Key display
  • - About sylentID version info
  • - Scrollable EULA container (200px height)
  • - Third-party software credits
  • ### 🔧 TECHNICAL
  • **Files Created**
  • - `/lib/styles/universal-settings-modal.css` - Portable stylesheet
  • - `/lib/ui/modal-engine.js` - Universal modal engine
  • - `/lib/ui/README-MODAL-ENGINE.md` - Complete documentation
  • **CSS Features**
  • - Blue tab underline on active tab
  • - Two-column layout with vertical divider
  • - Form styling with dark theme
  • - UXP-compatible native `<dialog>` element

Version 1.0.3 Minor

2025-11-24
  • ### 🎨 UI POLISH SESSION
  • **Spacing Improvements**
  • - Reduced container top padding (16px → 8px)
  • - Reduced title bar top padding (12px → 0px)
  • - Added title bar bottom margin (5px)
  • - Optimized card spacing throughout
  • **Translation Improvements**
  • - Added helpful placeholder examples (e.g., John Doe Photography)
  • - Added character limits to translation file (copyright: 100, imageId: 50, etc.)
  • - Better placeholder text for all input fields
  • ### 📊 FORMAT COMPATIBILITY TESTING
  • **JPEG Quality Requirements**
  • - ✅ Quality 9-12: Watermark preserved
  • - ❌ Quality 8 or below: Watermark FAILS
  • - Documented critical threshold
  • **PNG Reliability**
  • - ✅ Perfect format - survives ALL compression levels (0-9)
  • - Recommended as safest format for watermarking
  • **TIFF Reliability**
  • - ✅ LZW/ZIP compression: Watermark preserved
  • - ✅ JPEG compression Quality 9+: Watermark preserved
  • - Documented compression method compatibility
  • **WebP Limitations**
  • - ❌ Lossy compression loses watermark
  • - ✅ Lossless with metadata: Watermark preserved

Version 1.0.2 Major

2025-11-23
  • ### ✨ BATCH FOLDER PROCESSING
  • **Folder Picker & Scanner**
  • - Select folder containing images
  • - Scans for compatible files (JPG, PNG, TIFF, PSD, WebP)
  • - Auto-skip already watermarked files (configurable suffix)
  • - File size warnings for files >100MB
  • **Batch File List UI**
  • - Checkbox for each file
  • - Filename with file size display
  • - Warning indicators for large files
  • - ⚠️ emoji for files >100MB
  • **File Processing**
  • - Automatic ID counter (prefix-00001, prefix-00002, etc.)
  • - Configurable output suffix (default: _watermarked)
  • - Format preservation (JPEG Quality 12, PNG Compression 6, TIFF LZW)
  • - Comprehensive error handling
  • **Batch Results Report**
  • - Success/failure status per file
  • - Error messages for failed files
  • - Summary: "X/Y successful"
  • **Settings Storage**
  • - `batchFileSuffix`: Default '_watermarked' (user-configurable)
  • - `batchFileSizeWarning`: Default 100MB threshold
  • - Persistent settings via localStorage
  • **Image ID Auto-Formatting**
  • - Spaces automatically converted to hyphens
  • - Real-time formatting as user types
  • - Example: "My Photos" → "My-Photos-00001"
  • ### 🔒 MODAL STATE MANAGEMENT
  • **Multi-Layer Protection System**
  • - Modal state file with hard lock
  • - Atomic writes prevent corruption
  • - In-memory mutex prevents concurrent writes
  • - Prevents Reader from interfering with Embedder batch processing
  • **Protection Layers**
  • - Panel visibility check
  • - Modal state check
  • - Hard lock awareness
  • - Post-modal cooldown (5 seconds)
  • - Debounce window (3 seconds)

Version 1.0.1 Major

2025-11-22
  • ### 🐛 CRITICAL BUG FIX
  • **Reed-Solomon Integration Bug**
  • - Fixed embedder/reader encoding mismatch
  • - Fixed signature encoding incompatibility
  • - Fixed critical Int32Array creation bug in rsDecode()
  • - Fixed GenericGF field creation inconsistency
  • **Root Causes Fixed**
  • - Embedder's `encodeData()` now matches reader (async + signature support)
  • - Both apps use fresh GenericGF instances instead of singletons
  • - rsDecode() now correctly copies Uint8Array elements to Int32Array
  • **Diagnosis Method**
  • - Debug logging compared embedded vs extracted bits
  • - DCT confirmed working correctly
  • - Reed-Solomon decode issue isolated and fixed

Version 1.0.0 Patch

2025-12-29
Bugs

SylentID - Known Issues

  • ✓ Fixed Preview – Preview image doesn't update if an image is already open when plugin starts
  • ✓ Fixed Copyright Office – - Copyright office dropdown list not translated
  • ✓ Fixed License persistence – - check license persistence
  • ✓ Fixed License settings – - Licence Information in Settings Panel is not translated
  • ✓ Fixed All Open Windows issue – All Open Windows warning doesn't close
  • ✓ Fixed Bat/All Open Overlay – Batch and All Open Windows doesn't have overlay at end
  • ✓ Fixed Check all variations – Check all variations for the DCT/LSB/ Combo versions
  • ✓ Fixed Auto-capitalise issue – Auto-capitalise doesn't work

SylentID - Latest Update

v1.0.14 2026-03-18

Release Notes:

Changed

  • **XMP Write Pattern — No Dirty Pixel**
  • Replaced save interception pattern with direct `performXMPFilePatching` call in `lib/core/xmpEngine.js`
  • XMP now written directly to disk on watermark embed — no invisible pixel, no re-encode
  • Removed `setupUniversalApp` with `saveInterception: true` from `script.js` init; now calls `registerXMPNamespaces()` only
  • Added `comprehensiveLogger` null-safe fallback in `psd-metadata-engine.js`
  • Removed `ensureDocumentNeedsSave()` call from `injectMetadata`
  • Removed verification block (500ms delay + re-read) from `performXMPFilePatching`

Files Modified

  • `lib/core/psd-metadata-engine.js` — logger fallback, removed dirty pixel call, removed verification block
  • `lib/core/xmpEngine.js` — direct `performXMPFilePatching` pattern
  • `script.js` — removed save interception init
  • `manifest.json` — version bumped to 1.0.14
  • `lib/core/version.js` — version bumped to 1.0.14

Requires: Adobe Photoshop 25.0.0 or later

Documentation and Tutorials​

Additional Learning Resources

A detailed PDF User Guide is available for download using the link provided below. This document explains all key features and functions of the plugin, helping you become familiar with its tools and workflow so you can make the most of your creative process.

For hands-on demonstrations and walkthroughs, visit our YouTube channel, where a full series of video tutorials cover everything you need to get started with the app. These videos provide visual guidance, practical examples, and helpful tips to ensure a smooth and productive learning experience.

To stay updated with new tutorials, feature overviews, and upcoming releases, subscribe to the channel here: RobArt Illustration

PDF User Manual Link(s) English, English US, Français, Deutsch, Español, Italiano, Português, Ελληνικά and 日本語

copyright © rob art | illustration 2026. all rights reserved.

You cannot copy content of this page