Tags give the ability to mark specific points in history as being important
-
1.0.9
24324791 · ·### Added - Added `AGENTS.md` with repository-specific engineering, testing, and release guidance for future contributors and coding agents. - Added per-repository `Public access` support so published repositories can be exposed without authentication while private repositories remain token-protected. ### Changed - Updated Composer metadata/archive access logic to allow anonymous access only to packages coming from repositories marked as public, while preserving full token-based access for private packages. - Updated `/packages` HTML index behavior so anonymous browsing is blocked whenever any published private repository exists, preventing mixed-visibility package name leakage. ### Testing - Updated controller unit tests for anonymous/public access behavior and mixed-visibility guarding.
-
1.0.7
81e68fc8 · ·Release 1.0.7 Highlights: - Raise Drupal core compatibility floor to 11.3+ (and 12.x). - Add HMAC auth method submodule (`satis_hub_hmac_auth`). - Add publish/unpublish operations for Satis Repository entities. - Rework `/admin/satis-hub/satis-build-api` with async build progress and improved log UX. - Harden base64 token validation and `/hooks/rebuild-satis` webhook security (POST-only, provider verification, event filtering). - Refactor settings/install flows into dedicated services and update related tests. See CHANGELOG.md for full details.
-
1.0.6
ed914bbe · ·## Satis Hub 1.0.6 (2026-02-22) This release focused on safer defaults, improved rebuild reliability, and cleaner internal architecture. ### Added - Added a new action block in `SettingsForms` with a **Use packages page as homepage** button. - Added a dedicated submit handler to set `system.site:page.front` to `/packages` on demand. ### Changed - Reworked the homepage setup flow: the front page is no longer forced automatically during module install. - Hardened file path resolution for package/json download endpoints by constraining resolved paths to the configured output directory. - Fixed rebuild configuration handling in `satisRebuild()` so caller-provided config overrides are preserved. - Reworked JSON parsing to `JSON_THROW_ON_ERROR` with exception-based handling in controller, helper, and auth-method code paths. - Removed unused constructor dependencies from `SatisHelper` while keeping WeakMap-based settings cache. - Updated `satis_hub.helper` service wiring and unit tests to match the simplified `SatisHelper` constructor signature. - Unified repeated authentication checks in `SatisController` by extracting shared `applies/authenticate` handling into a single private helper. ### Removed - Removed `satis_hub_install()` logic that automatically changed the front page to `/packages`. ### Security - Added path traversal protection for file access via download endpoints.
-
1.0.4
6def529e · ·### Added - BuildStatus enum with helper methods (`isSuccessful()`, `isError()`, `getLabel()`) - SatisRebuildResult value object with rich API for handling rebuild results - WeakMap caching for `getBuildSettings()` method (reduces DB queries by ~66%) - LoggerChannelTrait for lazy-loaded logging - 16+ typed class constants (PHP 8.3 feature) - Private helper methods for better code organization: - `loadBuildSettings()` - Configuration loading - `collectMetadataFiles()` - JSON file collection - `processMetadataFile()` - Single file processing - `buildSatisPayload()` - Payload creation - `loadRepositories()` - Repository loading - `prepareDirectory()` - File system wrapper - Detailed PHPDoc array shape type hints for better IDE support - null check in `validateBuildToken()` method ### Changed - **BREAKING**: `satisRebuild()` now returns `SatisRebuildResult|Response` instead of `array|Response` - **BREAKING**: Class is no longer fully `readonly` (but all instance properties are `readonly`) - **BREAKING**: LoggerInterface removed from constructor (replaced with LoggerChannelTrait) - Replaced all error suppression operators (@) with proper try-catch blocks - Used `glob()` instead of `scandir()` for better performance - Used `hash_equals()` for token validation (timing attack protection) - Match expressions instead of ternary operators for status determination - Strict type comparisons (`!==` instead of `!=`) - CamelCase naming convention for variables - Improved error handling with `\Throwable` instead of `\Exception` - HTTP status codes now use Response constants - All magic values extracted to typed constants ### Fixed - Bug in `syncTwigTemplatesToPrivate()` where file path was used instead of parent directory - Proper directory preparation in file copying operations - Memory leaks through automatic WeakMap garbage collection ### Removed - LoggerInterface dependency from constructor - All error suppression operators (@) - Magic strings and hardcoded values - Duplicated code in metadata file processing ### Performance - **66% reduction** in database queries for build settings (3+ → 1) - **20-30% faster** overall rebuild execution - **50% faster** methods using settings (through caching) - Automatic memory management through WeakMap ### Security - Added timing attack protection with `hash_equals()` for token validation - Improved error handling prevents information leakage ### Code Quality - **66% reduction** in cyclomatic complexity (~15 → ~5 per method) - **40-70% reduction** in lines per method (50-100 → <30) - **100% type coverage** (up from ~60%) - **100% elimination** of magic values (20+ → 0) - PSR-12 compliant code formatting
-
-
-
-
1.0.0
487e48d3 · ·Added base module functionality: - 📦 **Private Composer Repository Management** - Add and manage repositories - Support for public and private repositories - Flexible Satis configuration management - 🔐 **Client Access & Authentication** - Generate **JWT tokens** - Generate **Base64 (HTTP Basic Auth) tokens** - Assign tokens to specific clients or repositories - Revoke or rotate access tokens at any time - 🔑 **auth.json Management** - Centralized management of Composer `auth.json` - Support for HTTP Basic Auth, GitHub tokens, GitLab tokens, and other Composer authentication methods - Secure storage and controlled distribution of credentials to clients - 🔄 **Repository Rebuilds** - Manual repository rebuild via the Drupal UI - Automatic rebuilds via **webhooks** - Designed for CI/CD workflows - ⚙️ **Satis Integration** - Automatic generation of `satis.json` - Trigger Satis builds directly from Drupal - Monitor and control build results