Skip to content

Releases: mesilov/bitrix24-php-lib

0.5.2

14 Apr 19:37
4148f07

Choose a tag to compare

BC

  • Journal table namespacing fix#102
    • Table renamed:
      • journal -> b24lib_journal
    • Explicit schema object names renamed:
      • idx_journal_composite -> b24lib_journal_idx_composite
      • idx_journal_created_at -> b24lib_journal_idx_created_at
      • idx_journal_member_id -> b24lib_journal_idx_member_id
    • Existing PostgreSQL installations created from 0.5.0 or 0.5.1 must rename the existing journal table and indexes before the first run on 0.5.2
    • Example SQL:
ALTER TABLE journal RENAME TO b24lib_journal;

ALTER INDEX idx_journal_composite RENAME TO b24lib_journal_idx_composite;
ALTER INDEX idx_journal_created_at RENAME TO b24lib_journal_idx_created_at;
ALTER INDEX idx_journal_member_id RENAME TO b24lib_journal_idx_member_id;

Changed

  • Symfony 8 boot compatibility for consumer applications#106
    • Relaxed doctrine/doctrine-bundle from 3.2.2 to ^3.2.2 || ^3.3@dev
    • Keeps stable installs on 3.2.2 while allowing Symfony 8 consumer applications to opt into the 3.3.x-dev line
    • Documents explicit compatibility with Symfony 8.0.* consumer applications
    • Removes the previously observed Doctrine bundle bootstrap blocker during kernel boot
  • Repository-local maintainer workflow for agents
    • Added .claude/skills/bitrix24-php-lib-maintainer/SKILL.md as the default local skill for issue-driven and maintainer tasks
    • Documented local-skill precedence and project MCP checks in AGENTS.md and CLAUDE.md

0.5.1

13 Apr 20:15
adcd7a5

Choose a tag to compare

Changed

  • Dependency refresh for PHP 8.5 and current QA toolchain
    • Raised root PHP constraint from 8.3.* || 8.4.* to 8.4.* || 8.5.*
    • Allowed giggsey/libphonenumber-for-php ^9 in addition to ^8
    • Updated dev tooling to current major versions: phpstan ^2, phpunit ^13, psalm ^6, rector ^2
    • Expanded Symfony dev constraints to support both ^7 and ^8 for debug-bundle, property-access, stopwatch, and var-exporter
  • Static-analysis compatibility cleanups
    • Narrowed install/account handler internals with explicit assertions and intersection types for aggregate roots that emit domain events
    • Added explicit callback parameter types in ApplicationSettingsListCommand
    • Removed deprecated strictBooleans prepared set from rector.php

Fixed

  • Functional test bootstrap compatibility with Doctrine ORM 3 on PHP 8.4+
    • Enabled Doctrine native lazy objects in test EntityManager configuration
    • Restored successful make test-functional runs with current Symfony var-exporter
  • PHPUnit 13 test-suite compatibility
    • Reworked unit and functional tests to stop using no-expectation mocks where stubs/fakes are more appropriate
    • Removed PHPUnit notices from make test-unit and make test-functional
  • ApplicationSettings repository functional coverage
    • Replaced the previously skipped PostgreSQL unique-constraint test with an assertion of the actual database behavior for duplicate global settings with NULL scope values

0.5.0

13 Apr 18:33
174d759

Choose a tag to compare

Added

  • Journal bounded context (main feature of 0.5.0)#72
    • Added JournalItem aggregate and Context value object for portal technical logs
    • Added Bitrix24\Lib\Journal\Entity\LogLevel enum with PSR-3 compatible levels
    • Added JournalItemRepositoryInterface, DoctrineDbalJournalItemRepository, and JournalLogger
    • Added pagination-aware journal queries by memberId and applicationInstallationId
  • Install-flow documentation
    • Added src/ApplicationInstallations/Docs/application-installations.md with one-step / two-step install contracts, canonical finish-step rules, and corner cases

Changed

  • Application installation flow#90
    • Install now distinguishes one-step installs with applicationToken from UI/two-step installs without token
    • OnAppInstall is now the canonical finish-step for pending installations created without a token
    • Duplicate ONAPPINSTALL events for already active installations are handled as warning no-op calls
  • Domain value object namespace
    • Bitrix24\Lib\Bitrix24Accounts\ValueObjects\Domain moved to Bitrix24\Lib\Common\ValueObjects\Domain
    • Updated install-related commands and tests to use the shared namespace
  • Developer workflow docs
    • Added project-level MCP configuration in .mcp.json
    • Documented MCP checks and mandatory Makefile entrypoints for tests and linters in README.md and AGENTS.md

BC

  • Doctrine schema naming normalization#93
    • Tables renamed:
      • application_installation -> b24lib_application_installations
      • application_settings -> b24lib_application_settings
      • bitrix24account -> b24lib_bitrix24_accounts
      • contact_person -> b24lib_contact_persons
    • Explicit schema object names renamed for b24lib_application_settings:
      • unique_app_setting_scope -> b24lib_application_settings_unique_scope
      • idx_application_installation_id -> b24lib_application_settings_idx_application_installation_id
      • idx_b24_user_id -> b24lib_application_settings_idx_b24_user_id
      • idx_b24_department_id -> b24lib_application_settings_idx_b24_department_id
      • idx_key -> b24lib_application_settings_idx_key
      • idx_status -> b24lib_application_settings_idx_status
    • Existing PostgreSQL installations must rename the existing tables and explicitly named indexes before the first run on 0.5.0
    • Example SQL:
ALTER TABLE application_installation RENAME TO b24lib_application_installations;
ALTER TABLE application_settings RENAME TO b24lib_application_settings;
ALTER TABLE bitrix24account RENAME TO b24lib_bitrix24_accounts;
ALTER TABLE contact_person RENAME TO b24lib_contact_persons;

ALTER INDEX unique_app_setting_scope RENAME TO b24lib_application_settings_unique_scope;
ALTER INDEX idx_application_installation_id RENAME TO b24lib_application_settings_idx_application_installation_id;
ALTER INDEX idx_b24_user_id RENAME TO b24lib_application_settings_idx_b24_user_id;
ALTER INDEX idx_b24_department_id RENAME TO b24lib_application_settings_idx_b24_department_id;
ALTER INDEX idx_key RENAME TO b24lib_application_settings_idx_key;
ALTER INDEX idx_status RENAME TO b24lib_application_settings_idx_status;

Fixed

  • Premature activation during install#90
    • Bitrix24Account and ApplicationInstallation no longer switch to active when Install is called without applicationToken
    • Finish events are no longer emitted before Bitrix24 sends the token-bearing finish step
  • Reinstall handling
    • Reinstall over pending installations now blocks and archives the previous installation pair before creating a new one

0.4.0

04 Mar 21:01
890ff5f

Choose a tag to compare

Added

  • ContactPersons support (main feature of 0.4.0)
    • Added ApplicationInstallations\UseCase\InstallContactPerson\Command / Handler to create and link a ContactPerson to an ApplicationInstallation
    • Added ApplicationInstallations\UseCase\UnlinkContactPerson\Command / Handler to unlink a contact person from an installation
    • Added ContactPersons\UseCase\ChangeProfile\Command / Handler to update FullName, email, and mobile phone
    • Added ContactPersons\UseCase\MarkEmailAsVerified\Command / Handler to confirm email ownership
    • Added ContactPersons\UseCase\MarkMobilePhoneAsVerified\Command / Handler to confirm mobile phone ownership
  • ContactPersonType enum (personal | partner) in Bitrix24\Lib\ContactPersons\Enum

Changed

  • ContactPerson entity
    • Constructor accepts optional $createdAt / $updatedAt parameters so SDK contract tests can assert stable timestamps
    • $isEmailVerified and $isMobilePhoneVerified are initialized from $emailVerifiedAt / $mobilePhoneVerifiedAt in constructor
    • getBitrix24UserId() return type narrowed from ?int to int to match ContactPersonInterface
    • markAsDeleted() now throws InvalidArgumentException (was LogicException) to satisfy the SDK contract
  • ApplicationInstallation entity
    • unlinkContactPerson() and unlinkBitrix24PartnerContactPerson() now return early when the respective ID is already null to avoid unnecessary updatedAt mutation
  • OnAppInstall\Handler
    • Now throws ApplicationInstallationNotFoundException when installation cannot be found by member ID (instead of silent no-op)

Fixed

  • SDK contract compatibility after bitrix24/b24phpsdk update
    • Updated createContactPersonImplementation() signatures in ContactPersonTest and ContactPersonRepositoryTest (int $bitrix24UserId moved to position 5 and made non-nullable)
    • Narrowed ContactPersonBuilder::$bitrix24UserId from ?int to int
    • Restored green unit test suite (170 tests)

New Contributors

0.3.0

25 Nov 15:34
535a2ad

Choose a tag to compare

What's Changed

0.2.0

23 Aug 19:41
7860e4d

Choose a tag to compare

  • Updated application contracts
  • fix minor errors

0.1.0

10 Aug 15:16
c2f0e75

Choose a tag to compare

What's Changed

By @mesilov

  • Add initial project setup with CI configuration — #2
  • Fix incorrect annotation syntax from #[\Override] to #[Override]#3
  • Rename package and namespaces to bitrix24-php-lib#4
  • Add docker structure — #13
  • Add application install — #43

By @KarlsonComplete

  • Add docker containers — #12
  • Add docker structure — #14, #15, #16, #17, #19, #27, #29, #32, #34, #36, #37, #38
  • Added mapping, fixing functional tests — #18
  • Removed attributes in the account — #20
  • Fixed some errors in functional tests — #21
  • Added fetcher test and removed more comments — #22
  • Fixes — #23
  • Fixes for scope — #24
  • Update fetcher and flusher — #25
  • Add application install — #40