Windows AME uses AMEEncodingLog.txt in the version directory.
macOS AME uses Adobe Media Encoder Log.txt in the logs subdirectory.
Updated readAMELogs() to check for both naming conventions:
1. First tries Windows filenames (AMEEncodingLog.txt)
2. Falls back to macOS filenames (Adobe Media Encoder Log.txt)
This allows the job manager to work with either platform.
Also updated docstring to document platform differences in both
log file locations and encoding (Windows uses UTF-16 LE, macOS uses UTF-8).
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Windows Adobe Media Encoder writes AMEEncodingLog.txt as UTF-16 LE with
BOM. The parser was reading files as UTF-8, producing garbled output where
every character had a null byte between it — causing all regex matching
to fail silently and return zero parsed entries.
Added readFileAutoEncoding() that detects UTF-16 LE/BE BOM and converts
to UTF-8 before parsing. Also handles BOM-less UTF-16 by checking for
null byte patterns.
Additionally improved parser to handle Windows AME log format:
- "File Encoded with warning" status lines (not just "Status: Done")
- "Queue Started/Stopped" lines are now skipped
- "Log File Created" header lines are skipped
- Separator lines (dashes) are skipped
- Offline media warnings and missing asset lines are captured
- "warning" status counts as success in stats
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace /logo.png with /logo.jpg (user's custom logo)
- Update header subtitle to 'Made By an Exhausted Zac Gaetano'
- Copy images.jpg from project folder to public/logo.jpg
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Explain the host-level SMB mounting approach:
- Why we mount SMB on the host, not in the container (security, reliability)
- Why we bind specific subdirectories instead of the root share (avoid ephemeral volumes)
- How the separation of concerns improves operations and portability
Add troubleshooting section covering:
- Files not appearing on SMB share after upload
- SMB mount failures on host
- Container startup issues
- Step-by-step verification commands
Document the .prproj path remapping rationale and AMPP proxy workflow context.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Previously, /mnt/smb-ame was mounted as /smb-share in the container, but
/watch, /output, and /ame-logs were separate Docker volumes, causing
uploaded files to be stored in ephemeral volumes instead of the SMB share.
Now bind each SMB subdirectory directly to its corresponding container path:
- /mnt/smb-ame/Watch → /watch
- /mnt/smb-ame/Output → /output
- /mnt/smb-ame/Logs → /ame-logs
This ensures uploaded .prproj files appear on the SMB share where AME can
access them from the watch folder.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
closeModal() was setting pendingFile = null, then confirmSubmit()
was trying to append the now-null pendingFile to FormData, causing
'No file uploaded' error on every submission.
Fix: capture pendingFile into fileToSubmit before calling closeModal().
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Docker-compose already handles the bind-mounts via volumes config
- Entrypoint now just creates subdirectories and verifies access
- Removes 'Could not bind' warnings that were noise
- Cleaner startup logs
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Mount /mnt/smb-ame as /smb-share in container
- Entrypoint creates watch/output/logs subdirectories if missing
- Creates bind-mounts from /smb-share/watch to /watch, etc.
- Graceful fallback if SMB share not mounted on host
- Works without pre-existing subdirectories on SMB server
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Remove container-level CIFS mounting (requires SYS_ADMIN capability)
- Use docker-compose.yml bind-mounts from host (/mnt/smb-ame/*)
- Simplify entrypoint.sh to just verify mount points exist
- Include mount command in comments for host setup
- More reliable and doesn't require Docker capability grants
To use:
1. Mount SMB on host: sudo mount -t cifs //172.18.210.5/ame /mnt/smb-ame \
-o username=smb,password=Production2020!,uid=1000,gid=1000,file_mode=0755,dir_mode=0755,vers=3.0
2. Update /etc/fstab to persist mount across reboots
3. Start container: docker compose up -d
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- credentials read from settings first
- env vars override settings
- embedded defaults (smb/Production2020!) used if nothing configured
- allows immediate SMB mount on container startup without config
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Create entrypoint.sh to handle SMB mount on container startup
- Read credentials from settings.json and mount //172.18.210.5/ame
- Bind-mount subdirectories (watch, output, logs) to container paths
- Update Dockerfile with cifs-utils and entrypoint script
- Update docker-compose.yml with SYS_ADMIN capability for mounting
- Add comprehensive SMB configuration section to README
- Include troubleshooting guide and alternative approaches
- Maintain backward compatibility with local volumes
- Never expose passwords to browser (server-side storage only)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>