Changelog

What's new in
BridgeKit.

All notable changes to the library. Format follows Keep a Changelog.

v1.3.0

Latest April 27, 2026
Added
  • Folder & file treeStorageTreeNode and listTree() on FileStorageInterface, with walk(), toAscii(), JSON serialisation, and the BuildsFileTree trait for all storage services.
  • S3 webUrl — canonical URLs for objects (virtual-host vs path-style) plus getPresignedUrl() for private buckets.
  • SharePointMicrosoftSharePointService via Graph document libraries; sharepoint() on the Microsoft provider, optional listLibraries(), env keys under microsoft.sharepoint.
193
Tests
488
Assertions

v1.2.0

April 4, 2026
Added
  • Webhooks — incoming webhooks for Google, Microsoft, Meta, and X with verification, parsing, and Laravel events (files, social, calendar). Configurable route prefix via bridgekit.webhooks.
  • Token auto-refresh — expired OAuth tokens are automatically refreshed before each API call with a 60-second buffer. Zero configuration, works across all OAuth providers.
  • Retry + Rate limiting — built-in retry with exponential backoff for 429/5xx errors. New RateLimitException with retryAfter property. Configurable via withRetry().
  • Multi-posting — broadcast a SocialPost across Meta, LinkedIn, X in one call via MultiPoster. Auto-adapts content per platform limits (280/3k/63k chars). Returns MultiPostResult with success/failure per provider.
  • Dropbox provider — full OAuth 2.0 + FileStorageInterface. Upload sessions for large files, search, folder creation. 6th storage provider alongside Google Drive, OneDrive, FTP, S3, SFTP.
  • New DTOsMultiPostResult with isFullSuccess(), isPartialSuccess(), getResult(provider), getError(provider).
  • ConnectManager shortcutsdropbox(), multiPost().
Changed
  • HasHttpClient trait now handles retry, rate limiting, and token auto-refresh transparently.
  • BridgeKitServiceProvider registers webhook routes and the webhook processor.
  • Provider count increased from 8 to 9 (Dropbox added).
176
Tests
448
Assertions
9
Providers
5
Major areas

v1.1.0

March 29, 2026
Added

3 New Storage Providers

FTP / FTPS
SSL, passive mode, ftp_mlsd listing
S3
AWS Sig V4, multipart, MinIO/R2/DO compatible
SFTP
Password or SSH key, chunked streaming

Architecture

AbstractStorageProvider — New base class for credential-based providers (no OAuth required)
Provider enum — 3 new cases (Ftp, S3, Sftp) + isStorageOnly(), requiresOAuth() helpers
ServiceType::Storage — New enum case for storage services
ConnectManager shortcuts — ftp(), s3(), sftp() with inline config support
Inline config — All storage providers can be instantiated with a config array — no .env required

S3-Compatible Endpoints

AWS S3
MinIO
DigitalOcean Spaces
Cloudflare R2

Testing

128
Tests passing
322
Assertions

v1.0.0

March 29, 2026
Added

5 OAuth Providers, 15 Services

Google
Drive · Gmail · Calendar · OAuth
Microsoft
OneDrive · Outlook · Calendar · OAuth
Meta
Posts · OAuth
LinkedIn
Posts · OAuth
X
Posts · OAuth

Architecture

6 Contracts — ProviderInterface, OAuthInterface, FileStorageInterface, EmailSenderInterface, PostPublisherInterface, CalendarInterface
6 Typed DTOs — OAuthToken, StorageFile, EmailMessage, CalendarEvent, SocialPost, SocialPostResult — all final readonly
6 Backed Enums — Provider, Visibility, EventStatus, MailFolder, OAuthGrantType, ServiceType
4 Exceptions — BridgeKitException, AuthenticationException, ProviderException, InvalidConfigException
Abstract base classes — AbstractProvider, AbstractService, AbstractAuthService — eliminate boilerplate
HasHttpClient trait — Built-in error handling via Laravel HTTP Client

Performance

Streaming downloads
Zero memory overhead via downloadStream()
Resumable uploads
Chunked, fault-tolerant via uploadLargeFile()
Lazy generators
Memory-efficient pagination via listFilesLazy()

Laravel Integration

BridgeKitServiceProvider — auto-discovery, config merging, singleton binding
BridgeKit facade — static access to ConnectManager
ConnectManager — provider shortcuts + extend() for custom providers
Extensible — register custom providers via extend()
Config publishing via php artisan vendor:publish --tag=bridgekit-config

Testing

76
Tests passing
195
Assertions
Requires PHP 8.3+, Laravel 13, PHPUnit 11, Orchestra Testbench 11