Skip to content

Releases: kOlapsis/ackify

Ackify v1.3.5

14 Mar 17:54

Choose a tag to compare

Bug Fixes

Fix

  • Resolve signing deadlock when document URL is inaccessible from the server (local network, private IPs) — backend now automatically forces external read mode
  • Smart ReadMode deduction when not explicitly set: URLs and uploaded files default to integrated, simple references default to external

Chore

  • Bump GitHub Actions to v6 (checkout, setup-node, setup-go, artifacts)
  • Add unit and e2e tests for inaccessible URL fallback, fix existing e2e tests

Fixes #25

Ackify v1.3.4

12 Mar 10:12

Choose a tag to compare

SMTP plain text fix (port 25)

Fixed a bug preventing email delivery through internal SMTP servers without TLS (typically port 25). The mail library was attempting TLS negotiation even when both ACKIFY_MAIL_TLS and ACKIFY_MAIL_STARTTLS were set to false, causing certificate validation errors.

Ackify CE v1.3.3

11 Mar 20:13

Choose a tag to compare

Release featuring server-side aggregate statistics, email domain restriction, improved signature counting, and migration to the Kolapsis organisation.

⚠️ Breaking Change

Organisation & Package Migration

The project has been migrated from btouchard/ackify-ce to kolapsis/ackify. This impacts:

  • GitHub: The repository is now at github.com/kolapsis/ackify
  • Docker Hub: The Docker image is now kolapsis/ackify (previously btouchard/ackify-ce)
  • Go module: The Go module is now github.com/kolapsis/ackify

Action required: Update your docker-compose.yml files to point to the new image:

# Before
image: btouchard/ackify-ce:latest

# After
image: kolapsis/ackify:latest

New Features

Organisation Domain Restriction

  • New ACKIFY_ORGANISATION_DOMAIN variable: Restricts document creation to users whose email matches the organisation domain (e.g., @company.com)
  • Admins bypass this restriction
  • Empty value preserves current behavior (all users allowed)
  • Configurable via admin UI and install script

Server-Side Aggregate Statistics

  • New statistics endpoint: Pending/completed document counts computed directly in SQL via GetAggregateDocumentStats
  • Replaces client-side computation with an optimized server query
  • Statistics returned in API response metadata for admin dashboard and "my documents" page

Pending Documents for Signers (#18)

  • New "Awaiting your confirmation" section on the "My Signatures" page: users can now see documents assigned to them that they haven't signed yet
  • One-click navigation to the document to sign
  • Counter indicator in the page statistics
  • New API endpoint: GET /api/v1/users/me/pending-documents

Total Signature Count

  • Display total signature count including unexpected signers
  • Fixes misleading "0 signatures" when only unexpected signers had signed
  • Status badge now shows 4 cases: no signers, free signers, progress with optional +N pill, and complete with optional +N pill

Bug Fixes

  • RLS for workers: Fixed RLS policies on queue tables for background workers (email, webhook)
  • CI: Go 1.26.0 alignment, covdata fix, and setup-go v5 upgrade

Migrations

New Migrations

Migration Description
0020_fix_queue_rls_for_workers Fixes RLS policies on queue tables to allow background workers to process items

Configuration

New Environment Variables

# Restrict document creation by email domain (optional)
ACKIFY_ORGANISATION_DOMAIN=@company.com

Useful Links

Upgrading from v1.3.x

⚠️ This version contains a breaking change, see the dedicated section above.

1. Update the Docker Image

The image name has changed. Update your docker-compose.yml:

# Before
image: btouchard/ackify-ce:latest

# After
image: kolapsis/ackify:latest

2. Apply the Update

Via the installation script (recommended)

bash <(curl -fsSL https://raw.githubusercontent.com/kolapsis/ackify/main/install/install.sh)

The script automatically detects the existing installation and performs the upgrade.

Manually with Docker Compose

docker compose pull
docker compose up -d

3. Post-Update Checks

  • Migration 0020 runs automatically at startup
  • New optional variable: ACKIFY_ORGANISATION_DOMAIN restricts document creation by email domain

Ackify CE v1.3.2 - Owner Management & Security Improvements

05 Feb 23:40

Choose a tag to compare

Feature release adding document owner management, container healthcheck, and several security and compatibility fixes.

⚠️ Important: Query Parameter Renamed (refdoc) (#19)

The ref query parameter used to reference documents (e.g. https://your-instance.com/?ref=my-doc) has been renamed to doc.

Browser privacy extensions (ClearURLs and similar) were silently stripping the ref parameter from URLs, as it is commonly associated with referrer tracking. This caused documents to fail to load for affected users.

New format: https://your-instance.com/?doc=my-doc

Backward compatible: The old ?ref= parameter is still accepted as a fallback, so existing integrations and external tools will continue to work. However, we recommend updating your links to use ?doc= to avoid issues with privacy extensions.

New Features

Owner-Based Document & Signers Management (#16, #17)

Non-admin document owners can now manage their own documents and expected signers without requiring admin privileges (when ACKIFY_ONLY_ADMIN_CAN_CREATE=false).

New endpoints for document owners:

  • POST /api/v1/users/me/documents/{docId}/signers - Add an expected signer
  • DELETE /api/v1/users/me/documents/{docId}/signers/{email} - Remove an expected signer

Also includes:

  • New CanManageDocument method on the Authorizer interface for ownership checks
  • Properly quoted PostgreSQL identifiers in migrations to support database names containing special characters (e.g. hyphens)
  • Returns 403 Forbidden on owner routes when ACKIFY_ONLY_ADMIN_CAN_CREATE=true

Docker Healthcheck Support (#21)

The container image now includes a built-in healthcheck for better orchestration support.

  • New health subcommand on the ackify binary for HEALTHCHECK usage
  • HEALTHCHECK directive added to the Dockerfile
  • Healthcheck configuration added to all compose files
  • Supports custom port via ACKIFY_LISTEN_ADDR

Bug Fixes

Signature List Visibility Restricted to Owner/Admin (#20)

Previously, any authenticated user could see all signatures on a document. The signatures endpoint now enforces proper access control:

  • Owner/Admin: can see all signatures
  • Other users: can only see their own signature (if they signed)
  • signatureCount is now included in the FindOrCreateDocument response so the frontend can display the total count without exposing individual signatures

Signature Count Not Updated After Signing

The frontend did not refresh the signature count after a user signed a document. Also, the embed page relied on signatures.length instead of the API-provided signatureCount, which was incorrect under the new visibility model.

Fixed: HomePage.vue now updates signatureCount after signing, and EmbedPage.vue uses the API value.

Documentation

  • Created comprehensive API documentation (docs/en/api.md, docs/fr/api.md)
  • Documented Docker healthcheck in deployment guides
  • Documented signature endpoint access control rules
  • Fixed MagicLink auto-detection description in READMEs

Useful Links

Upgrading from v1.3.1

This version includes a new database migration (owner management). The migration runs automatically on startup.

Query parameter rename: The ?ref= parameter is now ?doc=. The old ?ref= still works as a fallback, but we recommend updating your integrations to use ?doc= to avoid privacy extension issues.

New environment variable behavior: When ACKIFY_ONLY_ADMIN_CAN_CREATE=true, owner-based management routes return 403 Forbidden.

Update

Via the installation script (recommended)

bash <(curl -fsSL https://raw.githubusercontent.com/btouchard/ackify-ce/main/install/install.sh)

The script automatically detects the existing installation and performs the upgrade.

Manually with Docker Compose

docker compose pull
docker compose up -d

Ackify CE v1.3.1 - Bug Fixes

22 Jan 20:23

Choose a tag to compare

Ackify CE v1.3.1 - Bug Fixes

  • #15 Document upload options not saved
  • #14 OnlyAdminCanCreate setting ignored
  • Image upload content type detection fallback

Ackify CE v1.3.0 - Integrated Reader, Storage & New Design

21 Jan 11:02

Choose a tag to compare

Major release introducing an integrated document reader, native file storage and a complete user interface redesign.

What's New

Integrated Document Reader

  • Direct viewing: intelligent reader allowing document reading without leaving the application (PDF, Markdown, HTML (sanitized))
  • Smart read tracking: Automatic detection of complete document reading with scroll tracking
  • Integrity verification: Checksum validation on each load to guarantee document authenticity
  • Configurable reading options:
    • Read mode: integrated (embedded reader) or external (link to external URL)
    • Download authorization (enabled/disabled per document)
    • Full read required before signing (optional)

Document Storage

  • Native file upload: Direct upload of PDFs and other documents (in addition to existing URLs)
  • Storage providers: S3 support (MinIO compatible) and local storage
  • Automatic S3 bucket creation: Bucket is automatically created if it doesn't exist
  • Automatic MIME detection: Extended support including ODF formats (LibreOffice/OpenOffice)
  • Automatic checksum calculation: SHA-256 computed on upload to guarantee integrity

New "Technical Trust" Design

  • Complete interface redesign: Modern design system with a professional visual identity
  • IBM Plex fonts: Technical typography optimized for readability
  • Slate palette: Professional and sober colors
  • Dark mode: Native dark theme support
  • New logos and icons: Renewed visual identity with PWA icons

Tenant Configuration via Admin Interface

  • Admin settings page: Runtime configuration without application restart
  • SMTP configuration: Integrated connection test to validate email settings
  • OIDC/OAuth2 configuration: Endpoint and credential validation
  • S3 configuration: Connectivity test to verify storage access
  • Hot-reload: Apply changes without service interruption
  • Encrypted secrets: Secure AES-256-GCM storage of sensitive information

Anonymous Telemetry (Optional)

  • Usage metrics: Anonymous collection of documents, confirmations, webhooks and reminders count
  • Opt-in only: Disabled by default, enable via ACKIFY_TELEMETRY=true
  • SHM SDK integrated: Integration with SHM metrics service

Migrations

New Migrations

Migration Description
0017_add_reader_fields_to_documents Adds reader configuration fields (read_mode, allow_download, require_full_read, verify_checksum)
0018_add_storage_fields_to_documents Adds storage fields (storage_key, storage_provider, file_size, mime_type, original_filename)
0019_add_tenant_config Creates tenant_config table for dynamic per-tenant configuration

Configuration

New Environment Variables

# Telemetry (optional, disabled by default)
ACKIFY_TELEMETRY=false

# S3 Storage (optional)
ACKIFY_STORAGE_PROVIDER=s3          # 's3' or 'local'
ACKIFY_STORAGE_S3_ENDPOINT=...      # S3 Endpoint (e.g., minio.example.com)
ACKIFY_STORAGE_S3_BUCKET=...        # Bucket name
ACKIFY_STORAGE_S3_ACCESS_KEY=...    # S3 Access key
ACKIFY_STORAGE_S3_SECRET_KEY=...    # S3 Secret key
ACKIFY_STORAGE_S3_REGION=...        # Region (optional)
ACKIFY_STORAGE_S3_USE_SSL=true      # Use HTTPS (default: true)

# Local Storage (optional)
ACKIFY_STORAGE_LOCAL_PATH=/data     # Local storage path

Useful Links

Upgrading from v1.2.8

This version is 100% backward compatible with v1.2.8. Existing documents continue to work in external URL mode.

Update

Via the installation script (recommended)

bash <(curl -fsSL https://raw.githubusercontent.com/btouchard/ackify-ce/main/install/install.sh)

The script automatically detects the existing installation and performs the upgrade.

Manually with Docker Compose

docker compose pull
docker compose up -d

Migrations are applied automatically at startup:

  • Existing documents default to integrated mode (transparent behavior)
  • New storage columns remain null for existing URL documents
  • The tenant_config table is created for runtime configuration

Enable File Storage

To allow document uploads instead of just URLs:

Option 1: S3 Storage (recommended for production)

ACKIFY_STORAGE_PROVIDER=s3
ACKIFY_STORAGE_S3_ENDPOINT=s3.amazonaws.com
ACKIFY_STORAGE_S3_BUCKET=ackify-documents
ACKIFY_STORAGE_S3_ACCESS_KEY=your_access_key
ACKIFY_STORAGE_S3_SECRET_KEY=your_secret_key

Option 2: Local Storage (development)

ACKIFY_STORAGE_PROVIDER=local
ACKIFY_STORAGE_LOCAL_PATH=/app/data/uploads

Enable Telemetry (optional)

ACKIFY_TELEMETRY=true

Telemetry helps me understand Ackify usage to improve the product. NO PERSONAL DATA IS COLLECTED.

Fixed authentication issue

18 Dec 12:02

Choose a tag to compare

🐛 Bug Fixes

Issue fixed: Magic Link authentication broken - "provider is disabled" on fresh install.

Fix Magic Link authentication failing on MagicLink-only installations - Fixed an issue where Magic Link authentication would fail with "provider is disabled" error when OAuth was not configured.
The SessionService (required for all authentication methods) was previously only initialized when OAuth was enabled. It is now correctly initialized when ANY authentication method is enabled (OAuth or MagicLink). (#12)

Affected Configurations

This bug affected fresh installations using:

  • ACKIFY_AUTH_MAGICLINK_ENABLED=true
  • Without OAuth enabled

Upgrade Notes

No migration required. Simply update to v1.2.8

Close #12

Ackify CE v1.2.6 - Architecture & CI/CD

10 Dec 16:16

Choose a tag to compare

Maintenance release improving internal architecture and CI/CD pipeline stability.

What's New

Enhanced Clean Architecture

  • Strict layer separation: Private interfaces at each layer level
  • Improved dependency injection: Extraction of coreapp packages for better organization
  • Multi-tenant ready: Architecture prepared for multi-tenant support

Email Improvements

  • Internationalized email subjects: Reminder email subjects now respect the configured language (i18n)

Migration System

  • New migration commands:
    • force: Force migration version (for existing databases)
    • goto: Migrate to a specific version
  • Better handling of existing databases: Support for databases without migration schema

Bug Fixes

CI/CD Pipeline

  • Multi-platform build: Added QEMU for Docker build on linux/amd64 and linux/arm64
  • Fixed build paths: Corrected go.mod path in backend folder
  • Stabilized E2E tests: Absolute paths for templates and locales

Tests

  • E2E document creation: Fixed document creation by URL test

Useful Links

Upgrading from v1.2.5

This version is 100% backward compatible with v1.2.5.

Update

docker compose pull
docker compose up -d

No database migration or configuration changes required.


Ackify CE v1.2.6 - Architecture & CI/CD

Version de maintenance améliorant l'architecture interne et la stabilité du pipeline CI/CD.

Nouveautés

Architecture Clean Architecture Renforcée

  • Séparation stricte des couches : Interfaces privées au niveau de chaque couche
  • Injection de dépendances améliorée : Extraction des packages coreapp pour une meilleure organisation
  • Support Multi-tenant : Préparation de l'architecture pour le support multi-tenant

Améliorations Emails

  • Sujet des emails internationalisé : Les sujets d'emails de rappels respectent maintenant la langue configurée (i18n)

Système de Migrations

  • Nouvelles commandes de migration :
    • force : Forcer la version de migration (pour bases existantes)
    • goto : Migrer vers une version spécifique
  • Meilleure gestion des bases existantes : Support des bases de données sans schéma de migration

Corrections

CI/CD Pipeline

  • Build multi-plateforme : Ajout de QEMU pour le build Docker linux/amd64 et linux/arm64
  • Chemins de build corrigés : Correction du chemin go.mod dans le dossier backend
  • Tests E2E stabilisés : Chemins absolus pour les templates et locales

Tests

  • E2E document creation : Correction du test de création de document par URL

Liens Utiles

Migration depuis v1.2.5

Version 100% rétrocompatible avec v1.2.5.

Mise à jour

docker compose pull
docker compose up -d

Aucune migration de base de données ou changement de configuration requis.

🎉 Ackify CE v1.2.5 - Microsoft OAuth Support

01 Dec 14:14

Choose a tag to compare

Patch release adding full support for Microsoft Azure AD / Entra ID as OAuth provider.

🐛 Bug Fixes

🔐 Microsoft OAuth Support (Azure AD / Entra ID)

Issue fixed: Microsoft authentication was failing with "missing email in user info response" error.

Root cause: Microsoft Graph API (https://graph.microsoft.com/v1.0/me) returns user information in different fields than standard OIDC:

  • mail instead of email
  • displayName instead of name
  • id instead of sub

Solution: User info parsing now supports multiple formats:

Email (priority order):

  1. email - Standard OIDC (Google, GitHub, GitLab)
  2. mail - Microsoft Graph API
  3. userPrincipalName - Microsoft fallback (UPN format)

Display name (priority order):

  1. name - Standard OIDC
  2. given_name + family_name - OIDC claims
  3. displayName - Microsoft Graph API (camelCase)
  4. cn - LDAP
  5. display_name - Some providers (snake_case)
  6. preferred_username - Fallback

🧪 Tests

  • 3 new test cases for Microsoft Graph API
  • Email field priority validation
  • Complete multi-provider parsing coverage

📚 Impact

  • Microsoft Azure AD: Working authentication
  • Microsoft Entra ID: Full support
  • Backward compatibility: No impact on other providers (Google, GitHub, GitLab, custom)

🔗 Useful Links

📝 Migration from v1.2.4

Version 100% backward compatible with v1.2.4.

Update

docker compose pull
docker compose up -d

No database migration or configuration changes required.

Microsoft OAuth Configuration

To use Microsoft as OAuth provider:

ACKIFY_OAUTH_PROVIDER=""  # Leave empty for custom
ACKIFY_OAUTH_CLIENT_ID="your-client-id"
ACKIFY_OAUTH_CLIENT_SECRET="your-client-secret"
ACKIFY_OAUTH_AUTH_URL="https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize"
ACKIFY_OAUTH_TOKEN_URL="https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token"
ACKIFY_OAUTH_USERINFO_URL="https://graph.microsoft.com/v1.0/me"
ACKIFY_OAUTH_SCOPES="openid,email,profile,User.Read"

Replace {tenant} with your Azure tenant ID or common for multi-tenant.


🎉 Ackify CE v1.2.5 - Support Microsoft OAuth

Version de correction ajoutant le support complet de Microsoft Azure AD / Entra ID comme fournisseur OAuth.

🐛 Corrections

🔐 Support Microsoft OAuth (Azure AD / Entra ID)

Problème résolu : L'authentification Microsoft échouait avec l'erreur "missing email in user info response".

Cause : Microsoft Graph API (https://graph.microsoft.com/v1.0/me) retourne les informations utilisateur dans des champs différents du standard OIDC :

  • mail au lieu de email
  • displayName au lieu de name
  • id au lieu de sub

Solution : Le parsing des informations utilisateur supporte maintenant plusieurs formats :

Email (ordre de priorité) :

  1. email - Standard OIDC (Google, GitHub, GitLab)
  2. mail - Microsoft Graph API
  3. userPrincipalName - Microsoft fallback (format UPN)

Nom d'affichage (ordre de priorité) :

  1. name - Standard OIDC
  2. given_name + family_name - Claims OIDC
  3. displayName - Microsoft Graph API (camelCase)
  4. cn - LDAP
  5. display_name - Certains providers (snake_case)
  6. preferred_username - Fallback

🧪 Tests

  • 3 nouveaux cas de test pour Microsoft Graph API
  • Validation de la priorité des champs email
  • Couverture complète du parsing multi-providers

📚 Impact

  • Microsoft Azure AD : Authentification fonctionnelle
  • Microsoft Entra ID : Support complet
  • Rétrocompatibilité : Aucun impact sur les autres providers (Google, GitHub, GitLab, custom)

🔗 Liens Utiles

📝 Migration depuis v1.2.4

Version 100% rétrocompatible avec v1.2.4.

Mise à jour

docker compose pull
docker compose up -d

Aucune migration de base de données ou changement de configuration requis.

Configuration Microsoft OAuth

Pour utiliser Microsoft comme provider OAuth :

ACKIFY_OAUTH_PROVIDER=""  # Laisser vide pour custom
ACKIFY_OAUTH_CLIENT_ID="votre-client-id"
ACKIFY_OAUTH_CLIENT_SECRET="votre-client-secret"
ACKIFY_OAUTH_AUTH_URL="https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize"
ACKIFY_OAUTH_TOKEN_URL="https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token"
ACKIFY_OAUTH_USERINFO_URL="https://graph.microsoft.com/v1.0/me"
ACKIFY_OAUTH_SCOPES="openid,email,profile,User.Read"

Remplacez {tenant} par votre tenant ID Azure ou common pour multi-tenant.

🎉 Ackify CE v1.2.4 - CSV Signers Import

27 Nov 15:16

Choose a tag to compare

✨ New Features

📄 CSV Import for Expected Signers

Bulk import from CSV file:

  • ✅ CSV file upload directly from admin interface
  • ✅ Data preview before import with validation
  • ✅ Automatic separator detection (comma or semicolon)
  • ✅ Smart column detection (email, name)
  • ✅ Support for files with or without headers
  • ✅ Email validation with detailed error report
  • ✅ Selective import: ability to modify list before confirmation
  • ✅ Configurable limit on number of signers per import

Supported formats:

  • CSV with comma (,) or semicolon (;) separator
  • Recognized columns: email, e-mail, mail, courriel
  • Name columns: name, nom, prénom, firstname, lastname, fullname
  • Automatic detection if no header present

Configuration:

  • ACKIFY_IMPORT_MAX_SIGNERS: maximum signers limit per CSV import (default: 500)

📚 Impact

This feature simplifies expected signers management:

  • 🚀 Productivity: Import hundreds of signers in a few clicks
  • 🛡️ Reliability: Validation and preview before import
  • 🔄 Flexibility: Support for common CSV formats (Excel, Google Sheets, LibreOffice)

🔗 Useful Links

📝 Migration from v1.2.3

Version 100% backward compatible with v1.2.3.

Update

docker compose pull
docker compose up -d

No database migration or configuration changes required.


🎉 Ackify CE v1.2.4 - Import CSV des Signataires

✨ Nouvelles Fonctionnalités

📄 Import CSV des Signataires Attendus

Import en masse depuis fichier CSV :

  • ✅ Upload de fichiers CSV directement depuis l'interface admin
  • ✅ Prévisualisation des données avant import avec validation
  • ✅ Détection automatique du séparateur (virgule ou point-virgule)
  • ✅ Détection intelligente des colonnes (email, nom)
  • ✅ Support des fichiers avec ou sans en-tête
  • ✅ Validation des adresses email avec rapport d'erreurs détaillé
  • ✅ Import sélectif : possibilité de modifier la liste avant confirmation
  • ✅ Limite configurable du nombre de signataires par import

Formats supportés :

  • CSV avec séparateur virgule (,) ou point-virgule (;)
  • Colonnes reconnues : email, e-mail, mail, courriel
  • Colonnes nom : name, nom, prénom, firstname, lastname, fullname
  • Détection automatique si pas d'en-tête

🔧 Améliorations Techniques

Backend :

  • Nouveau service CSVParser pour le parsing robuste des fichiers CSV
  • Tests unitaires complets pour le parser CSV (edge cases, encodages, formats)
  • Endpoints API : POST /api/v1/admin/documents/{docId}/signers/preview-csv et POST /api/v1/admin/documents/{docId}/signers/import
  • Validation et normalisation des emails (lowercase, trim)

Frontend :

  • Interface d'upload drag-and-drop pour les fichiers CSV
  • Modal de prévisualisation avec tableau des signataires valides/invalides
  • Affichage des erreurs de parsing avec numéro de ligne
  • Possibilité de supprimer des entrées avant import final

Configuration :

  • ACKIFY_IMPORT_MAX_SIGNERS : limite maximale de signataires par import CSV (défaut: 500)

📚 Impact

Cette fonctionnalité simplifie la gestion des signataires attendus :

  • 🚀 Productivité : Import de centaines de signataires en quelques clics
  • 🛡️ Fiabilité : Validation et prévisualisation avant import
  • 🔄 Flexibilité : Support des formats CSV courants (Excel, Google Sheets, LibreOffice)

🔗 Liens Utiles

📝 Migration depuis v1.2.3

Version 100% rétrocompatible avec v1.2.3.

Mise à jour

docker compose pull
docker compose up -d

Aucune migration de base de données ou changement de configuration requis.