Renames the addon from zammad-addon-media-verify to zammad-addon-proofmode
and removes all cdr_ prefixes from file names and class names per project
naming convention.
- Package: @link-stack/zammad-addon-proofmode (displayName: Proofmode)
- Classes: ProofmodeVerify, ProofmodeVerifyJob
- Files: proofmode_verify.rb, proofmode_verify_job.rb
- Settings: proofmode_verify_enabled
- Migration dir: db/addon/proofmode/
https://claude.ai/code/session_01GJYbRCFFJCJDAEcEVbD36N
Introduces a new zammad-addon-media-verify package that uses the proofmode
Ruby gem (built from proofmode-rust) to verify media attachments on tickets
for C2PA content credentials and ProofMode cryptographic proofs.
The addon runs as a Zammad scheduled job that:
- Scans incoming ticket articles for media attachments (images, video, audio, PDFs, ZIPs)
- Calls proofmode check_files() to verify C2PA manifests, PGP signatures,
OpenTimestamps, and EXIF metadata
- Posts a human-readable verification report as an internal note on the ticket
- Tracks checked articles via preferences to avoid duplicate processing
Also restores the zammad-addon-common package (previously removed in repo cleanup)
to share build tooling (ZPM builder and migration generator) between addon packages,
keeping things DRY. The link addon now imports from common instead of inlining these.
Docker integration:
- Dockerfile updated to install proofmode gem from docker/zammad/gems/
- setup.rb updated to handle MediaVerify package lifecycle
https://claude.ai/code/session_01GJYbRCFFJCJDAEcEVbD36N
Combines Signal split/merge improvements with keycloak auth,
baileys-7 updates, and signal notifications support.
Resolved conflicts:
- Kept LID user ID support in bridge-whatsapp
- Kept bridge-dev.yml docker compose addition
- Used 3.5.0-beta.1 version from split-signal-improvements
Baileys 7 uses LIDs (Linked IDs) instead of phone numbers in remoteJid for
some messages. This caused messages to be matched to wrong tickets because
the LID was used as the sender identifier. This commit adds proper support
for both phone numbers and user IDs across WhatsApp and Signal channels.
Changes:
Database:
- Add migration for whatsapp_user_id and signal_user_id fields on users table
Zammad controllers:
- Update user lookup with 3-step fallback: phone → dedicated user_id field →
user_id in phone field (legacy)
- Store user IDs in dedicated fields when available
- Update phone field when we receive actual phone number for legacy records
- Fix redundant condition in Signal controller
Bridge services:
- Extract both phone (from senderPn/participantPn) and LID (from remoteJid)
- Send both identifiers to Zammad via webhooks
- Use camelCase (userId) in bridge-whatsapp, convert to snake_case (user_id)
in bridge-worker for Zammad compatibility
Baileys 7 compliance:
- Remove broken loadAllUnreadMessages() call (removed in Baileys 7)
- Return descriptive error directing users to use webhooks instead
Misc:
- Add docs/ to .gitignore