PackageTrack
Sign in Get early access

damienharper/auditor-bundle

Integrate auditor library in your Symfony projects.

7.2.1 3.3M downloads/mo #2440 most downloaded on Packagist DamienHarper/auditor-bundle

What this package is like to depend on

Last release 5 months ago

16 Mar 2026

Release timing varies

gaps range from 2 weeks to 10 months

Rarely documented

notes for 10 of 74 stable releases

Nothing withdrawn

no release was ever pulled

9 years old

74 releases · first in 2018

9 releases in the last 12 months

see the full history below

Release timeline

74 releases · Jan 2018 to Mar 2026
2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 74
  1. 7.2.1 16 Mar 2026
    Release notes

    auditor-bundle 7.2.1

    What's Changed

    Maintenance

    • chore(deps): bump actions/download-artifact from 8.0.0 to 8.0.1

    Documentation

    • docs: mention code quality checks required before submitting a PR

    References

    Full Changelog: 7.2.0...7.2.1

    Open source →
  2. 7.2.0 14 Mar 2026
    Release notes

    auditor-bundle 7.2.0

    auditor-bundle 7.2 aligns with auditor 4.2 and auditor-doctrine-provider 1.1:
    it tags DoctrineProvider with kernel.reset so that Symfony Messenger workers
    audit every message correctly — not just the first one.


    ✨ What's new

    Support for long-running processes (Symfony Messenger workers)

    DoctrineProvider now implements Symfony\Contracts\Service\ResetInterface (see
    auditor 4.2.0 and
    auditor-doctrine-provider 1.1.0).

    Without the kernel.reset tag on its service definition, Symfony's services_resetter
    never calls reset() between Messenger messages, leaving stale PreparedStatement caches
    and subscriber transaction state that silently break auditing after the first message in
    worker processes.

    The bundle now tags DoctrineProvider with kernel.reset automatically — no configuration
    change is needed.


    What's Changed

    Bug fixes

    • fix: tag DoctrineProvider with kernel.reset for long-running processes by @Spomky in #602

    CI

    • ci: add workflow_dispatch trigger to sync-docs workflow

    References

    Full Changelog: 7.1.0...7.2.0

    Open source →
  3. 7.1.0 10 Mar 2026
    Release notes

    auditor-bundle 7.1.0

    auditor-bundle 7.1 aligns with auditor 4.1: it pulls in
    auditor-doctrine-provider
    as a direct dependency, documents the upcoming DoctrineProvider deprecation, and ships
    a bug fix for zero-result translation handling.


    ✨ What's new

    auditor-doctrine-provider is now a direct dependency

    auditor-bundle now explicitly requires
    damienharper/auditor-doctrine-provider,
    the new standalone package that hosts DoctrineProvider and all related Doctrine classes
    — extracted from damienharper/auditor in 4.1.

    No action required. The bundle wires everything transparently. All existing
    dh_auditor.yaml configurations continue to work without modification.

    Users relying on DoctrineProvider directly (without the bundle) should install it explicitly:

    composer require damienharper/auditor-doctrine-provider

    🐛 Bug fixes

    Zero-result translation crash in the audit viewer (#605)

    Filtering entities in the audit viewer to produce zero results triggered a 500 error when
    using a locale with complex plural rules (e.g. Russian). The plural translation string for
    %formatted_count% did not cover the 0 case, causing Symfony's translator to throw.
    The translation now handles zero correctly across all supported locales.


    🔨 Deprecations

    As of damienharper/auditor 4.1, all classes under DH\Auditor\Provider\Doctrine\ are
    deprecated and will be removed in auditor 5.0. auditor-bundle users are unaffected —
    the bundle handles the transition automatically.

    For users of DoctrineProvider outside the bundle, see
    docs/upgrade/v8.md for the migration path.


    What's Changed

    Features

    • Require auditor-doctrine-provider and document DoctrineProvider deprecation by @DamienHarper in #606

    Bug fixes

    • Fix translations when zero entities are found in the audit viewer by @dmitryuk in #605

    Dependencies


    References

    Full Changelog: 7.0.1...7.1.0

    Open source →
  4. 7.0.1 20 Feb 2026
    Release notes

    What's Changed

    Full Changelog: 7.0.0...7.0.1

    Open source →
  5. 7.0.0 20 Feb 2026
    Release notes

    auditor-bundle 7.0.0

    The biggest release since the bundle's creation, auditor-bundle 7.0 is a full modernization: it drops legacy compatibility layers, embraces PHP 8.4+, Symfony 8, and Doctrine 4/ORM 3 — and ships a completely redesigned audit viewer with a rich new feature set.


    ✨ What's new

    Completely redesigned audit viewer

    The built-in viewer has been rebuilt from scratch. It replaces the Webpack/npm + Bootstrap stack with AssetMapper and Tailwind CSS 4 — no Node.js toolchain required.

    New viewer capabilities:

    • Dark / light mode — toggle persisted in localStorage, follows system preference by default
    • Activity graph — visual sparkline per entity on the home page showing audit activity over the last N days, configurable and cache-backed
    • Action type filter — narrow the entity stream to insert, update, remove, associate, or dissociate
    • User filter — filter by any user who ever made a change, with dedicated support for anonymous entries (blame_id IS NULL)
    • Extra data display — each audit entry now shows its extra_data content when present, with per-key rendering, in all entry types (insert, update, associate, dissociate)
    • IP address and firewall — displayed inline on each entry row when available
    • Cleaner entry layout — operation badge, entity link, entity label, transaction hash, date, user, IP and firewall all arranged for quick scanning

    Activity graph

    Each entity card on the home page shows a sparkline bar chart of audit volume over time.

    dh_auditor:
        providers:
            doctrine:
                viewer:
                    activity_graph:
                        enabled: true
                        days: 30            # 1–30
                        layout: 'bottom'    # 'bottom' or 'inline'
                        cache:
                            enabled: true
                            pool: 'cache.app'
                            ttl: 300

    Cache supports tag-based invalidation (dh_auditor.activity) when your pool implements TagAwareCacheInterface. A dedicated audit:cache:clear console command lets you flush it on demand.

    Extra data — integrated end-to-end

    The new extra_data JSON column introduced in auditor 4.0 is fully surfaced in the viewer. No template override needed: every audit entry automatically renders its extra data, decoded and formatted, in a clearly delimited section below the diff.

    extra_data_provider — global context without boilerplate

    The bundle ships a ready-to-use ExtraDataProvider service that captures the current route name for every audit entry. Opt in with a single config line:

    dh_auditor:
        extra_data_provider: dh_auditor.extra_data_provider

    This stores {"route": "app_order_edit"} in extra_data for every audit entry produced during an HTTP request. Outside HTTP context (e.g. console commands), extra_data remains null.

    You can also plug in any custom service that returns ?array:

    dh_auditor:
        extra_data_provider: App\Audit\MyExtraDataProvider

    The provider runs before the LifecycleEvent is dispatched, so per-entity listeners can enrich or override the global context.

    See extra-data documentation for both approaches and their interaction.


    ⚡ Bundle modernization

    AbstractBundle migration

    The bundle now extends Symfony\Component\HttpKernel\Bundle\AbstractBundle. The Configuration and DHAuditorExtension classes, along with four compiler passes, have been merged into DHAuditorBundle::configure() and DHAuditorBundle::loadExtension(). Services are registered programmatically — no services.yaml.

    PHP 8.4+ attributes throughout

    Class Before After
    ConsoleEventSubscriber EventSubscriberInterface #[AsEventListener]
    ViewerEventSubscriber EventSubscriberInterface #[AsEventListener]
    ViewerController Manual route registration #[AsController] + #[Route]
    TimeAgoExtension Extends AbstractExtension #[AsTwigFilter]
    RoutingLoader Manual tag #[AutoconfigureTag('routing.loader')]
    SecurityProvider Manual constructor injection #[Autowire]

    Final classes

    All bundle classes are now final. Customisation is done through the three provider interfaces (unchanged) and Symfony's service decoration, not inheritance.

    AssetMapper + Tailwind CSS 4

    The frontend toolchain switches from Webpack Encore / npm to Symfony AssetMapper. No node_modules, no build step. Assets are served directly from public/bundles/dhauditor/.


    🔨 Breaking changes

    Updated requirements

    6.x 7.0
    PHP ≥ 8.2 ≥ 8.4
    Symfony ≥ 5.4 ≥ 8.0
    Doctrine DBAL ≥ 3.2 ≥ 4.0
    Doctrine ORM ≥ 2.13 ≥ 3.2
    DoctrineBundle ≥ 2.0 ≥ 3.0
    damienharper/auditor ≥ 3.0 ≥ 4.0
    PHPUnit ≥ 11.0 ≥ 12.0

    Removed classes

    Removed class Replacement
    DH\AuditorBundle\DependencyInjection\Configuration DHAuditorBundle::configure()
    DH\AuditorBundle\DependencyInjection\DHAuditorExtension DHAuditorBundle::loadExtension()
    DH\AuditorBundle\DependencyInjection\Compiler\AddProviderCompilerPass Autowiring
    DH\AuditorBundle\DependencyInjection\Compiler\CustomConfigurationCompilerPass DHAuditorBundle::loadExtension()
    DH\AuditorBundle\DependencyInjection\Compiler\DoctrineProviderConfigurationCompilerPass DoctrineMiddlewareCompilerPass

    Route names

    Before (6.x) After (7.0)
    dh_auditor_show_entity_history dh_auditor_show_entity_stream
    dh_auditor_show_transaction dh_auditor_show_transaction_stream

    Update any route references in your application.

    ConsoleUserProvider

    CLI commands now use the actual command name as the user identifier instead of the generic "command" string.

    Before (6.x) After (7.0)
    blame_id: "command" blame_id: "app:import-users"
    blame_user: "app:import-users" blame_user: "app:import-users"

    Existing audit entries with blame_id = "command" are not migrated automatically.

    Template blocks removed

    Removed block Reason
    navbar Replaced by built-in header
    breadcrumbs No longer used

    Available blocks in 7.0: title, stylesheets, dh_auditor_content, dh_auditor_header, dh_auditor_pager, javascripts.

    Final classes

    The following classes can no longer be extended:

    DH\AuditorBundle\Event\ConsoleEventSubscriber
    DH\AuditorBundle\Event\ViewerEventSubscriber
    DH\AuditorBundle\Twig\TimeAgoExtension
    DH\AuditorBundle\Routing\RoutingLoader
    DH\AuditorBundle\User\UserProvider
    DH\AuditorBundle\User\ConsoleUserProvider
    DH\AuditorBundle\Security\SecurityProvider
    DH\AuditorBundle\Security\RoleChecker
    DH\AuditorBundle\Viewer\ActivityGraphProvider
    

    Use composition and Symfony's service decoration instead.

    ActivityGraphProvider API

    // Before (6.x)
    $provider->getDays();
    $provider->getLayout();
    
    // After (7.0) — PHP 8.4 property hooks
    $provider->days;
    $provider->layout;

    UserProvider

    AnonymousToken handling has been removed (deprecated in Symfony 6.0, gone in Symfony 8.0).

    auditor library changes

    This bundle requires auditor ≥ 4.0, which introduces its own breaking changes:

    Namespace: Annotation → Attribute

    // Before
    use DH\Auditor\Provider\Doctrine\Auditing\Annotation\Auditable;
    use DH\Auditor\Provider\Doctrine\Auditing\Annotation\Ignore;
    
    // After
    use DH\Auditor\Provider\Doctrine\Auditing\Attribute\Auditable;
    use DH\Auditor\Provider\Doctrine\Auditing\Attribute\Ignore;

    Entry model — property hooks (PHP 8.4)

    // Before
    $entry->getId();      $entry->getType();
    $entry->getObjectId(); $entry->getUserId();
    $entry->getUsername(); $entry->getCreatedAt();
    
    // After
    $entry->id;      $entry->type;
    $entry->objectId; $entry->userId;
    $entry->username; $entry->createdAt;

    utf8_convert is now opt-in

    The implicit mb_convert_encoding() pass is disabled by default. Re-enable it if your data sources are not guaranteed to be UTF-8:

    dh_auditor:
        providers:
            doctrine:
                utf8_convert: true

    See the auditor upgrade guide for the complete library changelog.


    🚀 Migrating from 6.x

    A complete step-by-step upgrade guide is available in docs/upgrade/v7.md.

    For most applications, the migration boils down to:

    # 1. Update dependencies
    composer require \
        damienharper/auditor:^4.0 \
        damienharper/auditor-bundle:^7.0 \
        symfony/framework-bundle:^8.0 \
        doctrine/dbal:^4.0 \
        doctrine/orm:^3.2 \
        doctrine/doctrine-bundle:^3.0
    
    # 2. Apply the schema migration (adds extra_data column)
    bin/console audit:schema:update --force
    
    # 3. Update namespace imports: Annotation → Attribute
    # 4. Update route names in your templates and controllers
    # 5. Run your test suite

    The breaking changes are mechanical. No audit data is affected.


    🛠 Developer experience

    • Documentation moved in-repo — all docs live in docs/ and are versioned alongside the code
    • Unified composer setup — replaces the four legacy setup5 / setup6 / setup7 / setup8 scripts
    • PHPStan 2.x, Rector 2.x, PHPUnit 12.x across the board
    • Updated CI matrix — PHP 8.4 and 8.5 × Symfony 8.0 × SQLite / MySQL / PostgreSQL / MariaDB

    What's Changed

    Requirements & infrastructure

    Modernization (PHP 8.4+ / Symfony 8+)

    • Migrate to AbstractBundle, merge Configuration + DHAuditorExtension into bundle class by @DamienHarper in #592
    • Replace EventSubscriberInterface with #[AsEventListener] by @DamienHarper in #592
    • Add #[AsController], #[AsTwigFilter], #[AutoconfigureTag], #[Autowire] attributes by @DamienHarper in #592
    • Mark all bundle classes as final by @DamienHarper in #592
    • Remove AnonymousToken handling (removed in Symfony 8.0) by @DamienHarper in #592
    • ActivityGraphProvider property hooks (days, layout) by @DamienHarper in #592

    New viewer features

    New features (auditor 4.0 integration)

    • Extra Data — display extra_data JSON column in viewer by @DamienHarper in #596
    • extra_data_provider config option — built-in ExtraDataProvider service (route name) and support for any custom callable; complements the existing LifecycleEvent listener approach by @DamienHarper in #594
    • NullFilter integration for anonymous user filtering by @DamienHarper in #591
    • utf8_convert configuration option documented (opt-in, default false) by @DamienHarper

    Bug fixes

    • Fix time_ago filter falling back to a hardcoded US-style Y/m/d g:i:sa format for dates older than one week and future dates — both fallback paths now use IntlDateFormatter and respect the application locale (#359)

    Documentation


    References

    Full Changelog: 6.x...7.0.0

    Open source →
  6. 6.3.0 08 Feb 2026
    Release notes

    What's Changed

    New Contributors

    References

    Official documentation

    Full Changelog: 6.2.3...6.3.0

    Open source →
  7. 6.2.3 17 Nov 2025
    Release notes

    What's Changed

    References

    Official documentation

    Full Changelog: 6.2.2...6.2.3

    Open source →
  8. 6.2.2 17 Nov 2025
    Release notes

    What's Changed

    New Contributors

    References

    Official documentation

    Full Changelog: 6.2.1...6.2.2

    Open source →
  9. 6.2.1 16 Jan 2025
    Release notes

    What's Changed

    New Contributors

    References

    Official documentation

    Full Changelog: 6.2.0...6.2.1

    Open source →
  10. 6.2.0 31 Oct 2024

    Nothing published for this version

  11. 6.1.0 24 Oct 2024

    Nothing published for this version

  12. 6.0.0 10 Sep 2024

    Nothing published for this version

  13. 5.3.0 21 Nov 2025
    Release notes

    What's Changed

    • Enhancement: Use early exit on ViewerEventSubscriber by @mvhirsch in #555

    References

    Official documentation

    Full Changelog: 5.2.6...5.3.0

    Open source →
  14. 5.2.6 11 Sep 2024

    Nothing published for this version

  15. 5.2.5 20 Dec 2023

    Nothing published for this version

  16. 5.2.4 01 Mar 2023

    Nothing published for this version

  17. 5.2.3 01 Mar 2023

    Nothing published for this version

  18. 5.2.2 23 Feb 2023

    Nothing published for this version

  19. 5.2.1 09 Dec 2022

    Nothing published for this version

  20. 5.2.0 26 Nov 2022

    Nothing published for this version

  21. 5.1.1 14 Nov 2022

    Nothing published for this version

  22. 5.1.0 31 Oct 2022

    Nothing published for this version

  23. 5.0.3 07 Aug 2022

    Nothing published for this version

  24. 5.0.2 31 Mar 2022

    Nothing published for this version

  25. 5.0.1 24 Mar 2022

    Nothing published for this version

  26. 5.0.0 05 Mar 2022

    Nothing published for this version

  27. 4.2.0 26 Sep 2021

    Nothing published for this version

  28. 4.1.0 02 Feb 2021

    Nothing published for this version

  29. 4.0.4 25 Jan 2021

    Nothing published for this version

  30. 4.0.3 11 Dec 2020

    Nothing published for this version

  31. 4.0.2 08 Dec 2020

    Nothing published for this version

  32. 4.0.1 07 Dec 2020

    Nothing published for this version

  33. 4.0.0 06 Dec 2020

    Nothing published for this version

  34. 3.4.2 26 Nov 2020

    Nothing published for this version

  35. 3.4.1 27 Apr 2020

    Nothing published for this version

  36. 3.4.0 29 Mar 2020

    Nothing published for this version

  37. 3.3.2 07 Feb 2020

    Nothing published for this version

  38. 3.3.1 06 Feb 2020

    Nothing published for this version

  39. 3.3.0 06 Feb 2020

    Nothing published for this version

  40. 3.2.3 05 Dec 2019

    Nothing published for this version

  41. 3.2.2 03 Dec 2019

    Nothing published for this version

  42. 3.2.1 02 Dec 2019

    Nothing published for this version

  43. 3.2.0 02 Dec 2019

    Nothing published for this version

  44. 3.1.0 21 Nov 2019

    Nothing published for this version

  45. 3.0.0 01 Nov 2019

    Nothing published for this version

  46. 2.5.0 04 Sep 2019

    Nothing published for this version

  47. 2.4.0 19 Aug 2019

    Nothing published for this version

  48. 2.3.2 29 Jul 2019

    Nothing published for this version

  49. 2.3.1 13 Jun 2019

    Nothing published for this version

  50. 2.3.0 18 Apr 2019

    Nothing published for this version

  51. 2.2.0 14 Apr 2019

    Nothing published for this version

  52. 2.1.0 12 Apr 2019

    Nothing published for this version

  53. 2.0.0 22 Mar 2019

    Nothing published for this version

  54. 1.6.0 04 Mar 2019

    Nothing published for this version

  55. 1.5.1 10 Feb 2019

    Nothing published for this version

  56. 1.5.0 06 Feb 2019

    Nothing published for this version

  57. 1.4.0 28 Jan 2019

    Nothing published for this version

  58. 1.3.0 21 Jan 2019

    Nothing published for this version

  59. 1.2.2 15 Jan 2019

    Nothing published for this version

  60. 1.2.1 07 Jan 2019

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive