Commit Graph

3338 Commits

Author SHA1 Message Date
Arthur Parienté
5572b42fc9
feat(fares): expose auto-price fields in the admin UI
Add base_price/per_nm/multiplier to the fare form, the subfleet fares
relation manager (toggleable, shown when auto pricing is on and hidden
otherwise, with the static price column inverted), and the low_cost toggle
to the airline form. Round-trip the new columns through the fare
importers/exporters.
2026-06-16 22:17:40 +02:00
Arthur Parienté
1eef92c9a8
feat(fares): compute PIREP fare price from distance, category and airline
Add FareService::getAutoPrice() — (base + distance_nm * per_nm) * multiplier
* low_cost_factor, clamped to >= 0 — and apply it in saveToPirep() when
fares.auto_price is enabled. Distance is the great-circle nm between the
PIREP airports (new GeoService::airportDistance()), falling back to the
PIREP's stored distance, so it works for scheduled and free flights.
2026-06-16 22:17:23 +02:00
Arthur Parienté
91ed476cd8
feat(fares): add auto-pricing settings
Seed fares.auto_price (opt-in toggle, default off) and
fares.low_cost_multiplier, with an idempotent data migration for existing
installs. Render float-typed settings as numeric inputs on the Settings page.
2026-06-16 22:16:54 +02:00
Arthur Parienté
a0444e4fcb
feat(fares): add auto-price columns to fares, subfleets and airlines
Add base_price, per_nm and multiplier to fares (overridable per subfleet
via the subfleet_fare pivot) and a low_cost flag to airlines, with model
fillable/casts and factory defaults.
2026-06-16 22:14:05 +02:00
Nabeel S.
cd84110ddb
[8.x] fix(vite): stop dev-server deadlock by running vite under node (#2236)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Chores**
* Migrated frontend tooling commands from npm/npx to Bun/Bunx for
version bumping, setup, and development.
* Updated build/test scripts to run Vite directly and adjusted asset
build invocation to use Bun tooling.
  * Bumped Vite from 8.0.10 to 8.0.16.
* Updated the release workflow to set up Bun and use Bun for installs
and front-end builds.
* **Documentation**
* Revised Sail command examples to use `bun run dev` instead of `npm run
dev`.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-14 18:56:33 -05:00
Arthur Pariente
9b83494a22
chore(tooling): use bun in release CI and drop package-lock.json
- run release workflow asset build through bun (setup-bun + bun install/build)
- update Sail README example to bun run dev
- remove stale package-lock.json now that bun.lock is authoritative
2026-06-14 13:28:10 +02:00
Arthur Pariente
5fa6866b74
chore(tooling): run dev scripts through bun instead of npm/npx 2026-06-14 12:10:10 +02:00
Arthur Pariente
9fc7f6fc50
chore(deps): bump vite to 8.0.16 for stable rolldown 2026-06-14 12:08:58 +02:00
Arthur Pariente
4701482613
fix(vite): run vite under node, not the bun runtime (rolldown deadlock) 2026-06-14 12:07:36 +02:00
Nabeel S.
154b7c81f9
Addons re-implementation (#2231)
Just the groundwork

- If not installed, runs a scan of the filesystem, creates
`bootstrap/cache/addons.php`, with all addons enabled == true
- If phpvms is installed:
  - bootstrap cache holds the paths, continues to load
- still does a filesystem scan (we maybe can disable this later -> once
the "install from zip" or "install from registry is enabled"
  - If it detects a new addon -> write to cache, but disabled
- When an addon is enabled/disabled -> write to the database and then
update the cache
- If the cache file is deleted -> it will do a database lookup and
re-build it - **HOWEVER this needs testing** if DB access is available
at that time
- They need to be in the bootstrap cache -> addons need to have their
status available at `register()` time - otherwise, filament hooks won't
run for the admin panel, and other service provider registrations might
not run properly

Additionally:

- Moved a lot of bootstrap standard stuff into the addon's service
provider contract - so the new modules/addons can be pretty thing
- Support the "old" style addon root == namespace, or the newer `/app`
== namespace (see the sample addon in tests)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* New addon management system with boot-cache, discovery, DB sync,
Filament resource support, and public asset linking
  * Addons admin page for enable/disable/delete
  * Console commands to prime addon cache and rebuild asset links

* **Bug Fixes**
  * Simplified and more reliable module/addon activation flow

* **Chores**
* Removed legacy modules dependency and migrated helpers/controllers and
Sample module

* **Documentation**
  * Added addon implementation guide and workflow docs

* **Tests**
* Extensive feature/unit tests covering addon lifecycle, loading, and
tooling
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-13 15:45:38 -05:00
Nabeel Shahzad
404e5b7fd9
mremove tests that rely on real modules 2026-06-13 03:06:46 -05:00
Nabeel Shahzad
61e543e5eb
fix tests (2) 2026-06-13 02:38:34 -05:00
Nabeel Shahzad
0219909ec3
fix tests 2026-06-13 01:57:44 -05:00
Nabeel Shahzad
376456efb1
stupid pint errors 2026-06-13 00:40:11 -05:00
Nabeel Shahzad
bf3da72bcb
fmt update 2026-06-12 15:59:48 -05:00
Nabeel Shahzad
2e9609b000
merge 2026-06-12 15:14:45 -05:00
Nabeel Shahzad
dac17da65f
remove junk 2026-06-12 15:07:40 -05:00
Nabeel Shahzad
86aa5b8689
more refinement around the uninstall/removal process, added sample in for easier testing 2026-06-12 15:07:38 -05:00
Nabeel Shahzad
846308ecc9
feat(addons): refactor module links and improve addon handling
- Removed legacy sidebar rendering for module links in favor of native Filament sidebar items.
- Backfilled `addons.name` column using data from `module.json` or fallback derivation logic.
- Enhanced compatibility for Octane by ensuring idempotent handling of legacy admin links.
- Introduced `addon_vite` helper for rendering Vite tags from addon manifests.
- Updated `AddonAssetLinker` to ensure consistent handling of lower-cased paths for addon symlinks.
- Added extensive unit and feature tests for addon navigation, asset linking, and legacy handling.
- Updated configuration and boot cache logic to support test isolation and improved flexibility.
2026-06-12 15:04:38 -05:00
Nabeel Shahzad
39c08ee835
feat(flights): integrate ACARS addon check and update dependencies - minimum PHP version is n ow 8.4. A lot of fixes, verified the boot cache db upsert, etc 2026-06-12 15:04:38 -05:00
Nabeel Shahzad
3818559b96
feat(addons): implement addon installation, update, and validation workflows
- Introduced `AddonSource` interface and concrete `UrlSource` and `ZipSource` implementations for handling addon payloads.
- Added `AddonValidator` for extracting and validating addon manifests and autoload paths.
- Implemented `install` and `update` methods in `AddonRegistry` to support lifecycle management.
- Integrated Octane worker reloading functionality via `OctaneReloader`.
- Added unit and feature tests for installation, update handling, validation, and new behavior.
2026-06-12 15:04:37 -05:00
Nabeel Shahzad
f72bf460c4
feat(addons): introduce AddonAssetLinker and addons:relink command
- Added `AddonAssetLinker` to manage public asset symlinks for addons.
- Introduced the `addons:relink` Artisan command to rebuild asset links for enabled addons.
- Updated `AddonRegistry` to support asset linking/unlinking functionality.
- Adjusted configuration to set `addons.paths.assets` to `public/ext`.
- Added unit and feature tests for `AddonAssetLinker` and the new command.
2026-06-12 15:04:37 -05:00
Nabeel Shahzad
3ebb6beef7
refactor(helpers): remove unused NWIDART Module facade import 2026-06-12 15:04:37 -05:00
Nabeel Shahzad
d0cf54c3de
refactor(addons): remove Module shim, legacy NWIDART bindings, and update controllers/tests
- Removed `Module` and `ModuleRepository` compatibility shims.
- Replaced NWIDART `Module` facade usages with the new `AddonRegistry`.
- Updated frontend controllers to use `AddonRegistry` for module handling.
- Added new feature tests to cover `AddonRegistry` lifecycle and rebuild cases.
- Updated bootstrapping logic and service bindings to drop NWIDART dependencies.

# Conflicts:
#	app/Models/Flight.php
#	app/Support/Utils.php
2026-06-12 15:04:35 -05:00
Nabeel Shahzad
282a485fef
feat(addons): add AddonNotFoundException 2026-06-12 14:58:44 -05:00
Nabeel Shahzad
0e5ee9773a
feat(addons): add path helpers to Addon model 2026-06-12 14:58:44 -05:00
Nabeel Shahzad
90ac2a6616
feat(addons): add fromManifest method to Addon model
- Introduced `fromManifest` method to create `Addon` instances from manifest data.
- Added PHPDoc annotations for improved type documentation and clarity.
2026-06-12 14:58:44 -05:00
Nabeel Shahzad
b29dc1e5b7
refactor(addons): remove AddonRegistry, refactor boot cache handling, and update tests
- Removed the obsolete `AddonRegistry` class and associated tests.
- Simplified addon boot cache logic by consolidating responsibilities into `BootCache`.
- Updated service bindings to align with the new architecture.
- Refactored tests for Filament, ModuleShim, and addon discovery to reflect the changes.
2026-06-12 14:58:44 -05:00
Nabeel Shahzad
ab4734e38f
refactor(addons): rename AddonRuntime to AddonBootCache and ManifestData to AddonManifest
- Updated class names across models, services, and related files to improve clarity.
- Adjusted type hints, annotations, and method signatures to reflect the renames.
- Improved code consistency and alignment with updated naming conventions.
2026-06-12 14:58:44 -05:00
Nabeel Shahzad
822524626f
refactor(addons): remove deprecated tests, update service bindings, and improve addon handling
- Removed outdated AddonsTableTest and related assertions.
- Unified service namespaces: migrated support classes to `Support` and service classes to `Services`.
- Added `name` column to the `addons` table and updated related models, migrations, and seeders.
- Replaced `AddonBootService` references with `AddonRuntimeService` throughout tests and codebase.
- Updated Rector configuration and Mago schema, improving import handling and schema validation.
- Simplified addon discovery logic, enhancing boot cache performance.
- Removed unused methods and adjusted runtime behavior for stricter validation and consistency.
2026-06-12 14:58:44 -05:00
Nabeel Shahzad
82153796e7
refactor(addons): update config paths and enhance ManifestParser schema handling
- Renamed `addons.base_path` to `addons.paths.base` in configuration files.
- Added `schema_version` handling to `ManifestParser` to improve compatibility.
- Updated documentation with detailed addon implementation and boot process.
- Removed deprecated and unused configuration entries from `composer.json`.

Signed-off-by: Nabeel Shahzad <99736+nabeelio@users.noreply.github.com>
2026-06-12 14:58:44 -05:00
Nabeel Shahzad
482ea45aba
refactor(addons): rename PrimeService to AddonRuntimeService and improve functionality
- Renamed `PrimeService` to `AddonRuntimeService` for clarity and alignment with functionality.
- Introduced a new `discoverNewAddons()` method for identifying and handling unregistered addons.
- Updated test cases, services, and commands to use the new service class.
- Improved addon discovery logic and boot cache handling.
- Replaced `registry_id` uniqueness constraint with nullable definition to allow legacy addons.

Signed-off-by: Nabeel Shahzad <99736+nabeelio@users.noreply.github.com>
2026-06-12 14:58:44 -05:00
Nabeel Shahzad
92648bdbe4
Remove the nwidart library 2026-06-12 14:58:44 -05:00
Nabeel Shahzad
69e0ded644
Addons self-boot proof of concept 2026-06-12 14:58:44 -05:00
Nabeel Shahzad
ee152e2753
Was accidentally removed - addons use it (at least vmsacars does)
Signed-off-by: Nabeel Shahzad <99736+nabeelio@users.noreply.github.com>
2026-06-12 14:58:44 -05:00
Nabeel Shahzad
eb39a432ec
fix(addons): keep ModuleService working post-nwidart
- Add getStudlyName() to ModuleShim (fixes BadMethodCallException at
  ModuleSetupFilament:106 where $module->getStudlyName() is called)
- Remove Artisan::call('module:migrate', ...) from updateModule()
  (fixes CommandNotFoundException on admin enable — nwidart command
  gone; enable/disable lifecycle owned by setActive() + PrimeService)
- Remove unused Artisan import from ModuleService
- Add getStudlyName() assertion to ModuleShimTest
- Add ModuleServiceShimTest proving update/delete flows don't crash

feat(sample): add Filament resource + prove discovery

feat(addons): retire nwidart loader; wire engine

feat(addons): add Module facade shim

feat(addons): add base addon service provider

feat(addons): add FilamentPanelExtender

feat(addons): add runtime AddonLoader

feat(addons): boot-cache schema v2 + filament probe

feat(01-05): add phpvms:addons-prime console command

- Attribute-based: #[AsCommand] + #[Signature] (no $signature property)
- handle(PrimeService $prime): int — DI via handle()
- --force: calls prime->run() (always rebuilds); default: calls primeIfNeeded()
- components->task() for visual feedback, components->info() when cache present
- Returns self::SUCCESS / self::FAILURE with components->error() on exception
- AddonBootTest: command writes cache, Addon count>0, --force is idempotent

feat(01-05): add AddonServiceProvider and register in boot order

- AddonServiceProvider extends Illuminate\Support\ServiceProvider
- register() binds BootCache, ManifestParser, AutoloadGuard, AddonRegistry, PrimeService as singletons
- boot() skips guard+prime in console context (D-17); calls assertRuntimeAutoloadSupported() then primeIfNeeded() at HTTP/Octane boot (D-16, D-09)
- bootstrap/providers.php: AddonServiceProvider slots after ModulesServiceProvider, before AdminPanelProvider
- AddonBootTest: registration-order, provider-loaded, and console-skip (D-17) assertions

feat(01-04): implement PrimeService scan/upsert/cache

- run() scans base_path(modules) and storage_path(app/addons)
- firstOrNew+save upsert preserves operator enabled=false (D-12)
- enabled-only rows written to boot cache after each run (D-13)
- malformed manifests: Log::warning + skip, prime continues (D-15)
- T-04-03 path-traversal guard via realpath containment check
- primeIfNeeded() gates on BootCache::exists() (D-09/D-10)
- storage/app/addons absence treated as zero installed addons

test(01-04): add failing tests for PrimeService

- run() registers bundled modules, is idempotent (D-14)
- preserves operator enabled=false across re-prime (D-12)
- excludes disabled addons from boot cache (D-13)
- skips malformed manifests with Log warning (D-15)
- primeIfNeeded() gates on cache absence (D-09/D-10)
- handles absent storage/app/addons without error

feat(01-04): implement AddonRegistry read API

- enabled(): array → BootCache-sourced hot path (D-10)
- all(): Collection → Addon::query()->get() (no DB::table)
- find(): resolves by registry_id or path, returns null when absent
- Stateless, Octane-safe — no accumulated instance state
- 6 unit tests covering all three behaviors

feat(01-03): implement AutoloadGuard and AutoloadModeException

- AutoloadModeException extends RuntimeException with actionable message
  (names classmap-authoritative mode + composer dump-autoload fix)
- AutoloadGuard.isClassMapAuthoritative(?ClassLoader) checks authoritative mode
- AutoloadGuard.assertRuntimeAutoloadSupported() throws on authoritative loader
- No-arg path resolves via ClassLoader::getRegisteredLoaders() (prefers vendor key)
- Uses Composer\Autoload\ClassLoader — not App\Support\ClassLoader (naming collision avoided)

test(01-03): add failing test for AutoloadGuard

- authoritative loader returns true, non-authoritative returns false
- assertRuntimeAutoloadSupported throws AutoloadModeException for authoritative
- no-throw for non-authoritative loader
- AutoloadModeException message mentions classmap-authoritative and dump-autoload
- no-arg isClassMapAuthoritative() returns bool without error

feat(01-03): implement BootCache atomic boot-manifest read/write

- path() returns base_path('bootstrap/cache/addons.php')
- exists() reflects file presence
- read() requires the PHP cache; returns [] when absent
- write() serializes via var_export (no string interpolation, T-03-01)
- write() uses per-process temp file + rename() for POSIX atomicity (D-14)
- delete() removes file when present

test(01-03): add failing test for BootCache

- exists() returns false/true before/after write
- write() then read() round-trips addon array
- written PHP file passes php -l and require returns array
- no leftover temp files after write
- delete() removes file
- hostile registry_id round-trips via var_export escaping

feat(01-02): implement ManifestParser (lenient module.json + composer.json reader)

- parse() returns null on missing/malformed module.json (D-15, T-02-01)
- All nwidart keys optional with sane defaults (D-01)
- type defaults to 'module' when absent (D-02)
- blank/whitespace registry_id normalised to null (D-03, T-02-04)
- compat stored verbatim, no validation (D-05)
- namespace from autoload.psr-4 first key in composer.json, fallback to Modules\{Name} (D-07)
- version: module.json first, composer.json fallback, null if absent (D-07)
- Stateless class, no mutable instance properties (Octane-safe)
- No filesystem ops on manifest-supplied path/namespace/registryId (T-02-03)

test(01-02): add failing tests for ManifestParser

- Awards: legacy nwidart module, no phpVMS keys, no composer.json
- Sample: composer.json psr-4 dot key, version null
- VMSAcars: psr-4 empty-string key, version from composer.json
- phpVMS keys: type, compat, registry_id, version parsed verbatim
- Malformed JSON returns null, not exception (D-15)
- Missing module.json returns null
- Blank registry_id normalised to null (D-03)

feat(01-02): define ManifestData value-object contract

- Final readonly class in App\Addons namespace
- Constructor-promoted readonly properties: name, alias, type, compat,
  registryId, version, namespace, providers, path, raw
- PHPDoc array shapes for providers (list<string>) and raw (decoded JSON)
- Pure data contract, no Eloquent/Service dependencies
- Identity rules documented per D-03/D-04/MAN-03

feat(01-01): create App\Models\Addon Eloquent model with factory

- extends App\Contracts\Model (integer auto-increment id)
- table addons, fillable for all non-pk columns
- casts(): enabled => boolean, installed_at => datetime
- full $rules for all columns per Invite.php pattern
- full @property PHPDoc for D-06 columns
- HasFactory trait + AddonFactory with sensible defaults

test(01-01): add failing tests for App\Models\Addon

- asserts table name is addons
- asserts enabled cast to bool
- asserts installed_at cast to Carbon
- asserts nullable columns (registry_id, version, installed_at)
- asserts fillable for all non-pk columns

feat(01-01): create addons table migration with DDL and bundled data seed

- addons table with all D-06 columns (registry_id nullable unique, type,
  version, namespace, path, enabled, installed_at, timestamps)
- seeds Awards/Sample/VMSAcars bundled modules with NULL registry_id (D-08)
- namespace derived from composer.json psr-4 first key, fallback nwidart convention (D-07)
- version from module.json then composer.json then null (D-07)
- path sourced only from File::directories() output, not manifest (T-01-03)
- invalid JSON manifests skipped to avoid blocking migrations (D-15/T-01-01)
- idempotency guard: seeds only when table is empty

test(01-01): add failing tests for addons table migration

- asserts addons table with all D-06 columns is created
- asserts 3 bundled modules seeded with NULL registry_id
- asserts Awards namespace and null version
- asserts VMSAcars version 1.1.0
- asserts all bundled rows have type module, enabled true, path in modules/
- asserts down() drops the table
2026-06-12 14:58:44 -05:00
Nabeel Shahzad
c202914b3b
remove junk 2026-06-12 14:33:54 -05:00
Nabeel Shahzad
51a11d9c6b
more refinement around the uninstall/removal process, added sample in for easier testing 2026-06-12 14:33:23 -05:00
Nabeel S.
f54eba3ef0
[8.x] feat: add HasNanoIds trait for Nano ID primary keys (#2233)
Replace the bespoke HashIdTrait with a Laravel-standard HasNanoIds trait
built on HasUniqueStringIds, mirroring HasUuids/HasUlids. Generation and
validation go through new Str::nanoid()/Str::isNanoid() macros (wrapping
hidehalo/nanoid), with the alphabet/length co-located on
App\Contracts\Model.

- Apply HasNanoIds to Pirep, Flight, Acars, File; drop manual $keyType
and the now-redundant #[WithoutIncrementing] attribute
- Deprecate Utils::generateNewId() as a shim over Str::nanoid() and
migrate callers (FlightImporter, Maintenance, RouteForgeService,
FileService, VMSAcars)
- Remove HashIdTrait
- Factories generate nanoid ids so test data matches production
- Fix FlightService::getAccessibleFlightIds() casting nanoid flight ids
to int (0), which broke flight search under rank/typerating
restrictions, and drop matching (int) casts from the affected test
assertions

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Refactor**
* Migrated primary key generation from HashId to NanoId across models
(Acars, File, Flight, Pirep), changing the ID format and generation
mechanism.

* **New Features**
* Added Nano ID validation and generation utilities for string-based
primary keys.

* **Tests**
* Added comprehensive test coverage for Nano ID functionality, including
generation, validation, and model binding behavior.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-06-11 10:35:58 -05:00
Nabeel Shahzad
7dc6908a05
feat(addons): refactor module links and improve addon handling
- Removed legacy sidebar rendering for module links in favor of native Filament sidebar items.
- Backfilled `addons.name` column using data from `module.json` or fallback derivation logic.
- Enhanced compatibility for Octane by ensuring idempotent handling of legacy admin links.
- Introduced `addon_vite` helper for rendering Vite tags from addon manifests.
- Updated `AddonAssetLinker` to ensure consistent handling of lower-cased paths for addon symlinks.
- Added extensive unit and feature tests for addon navigation, asset linking, and legacy handling.
- Updated configuration and boot cache logic to support test isolation and improved flexibility.
2026-06-11 02:12:08 -05:00
Nabeel Shahzad
ef6864402c
feat(flights): integrate ACARS addon check and update dependencies - minimum PHP version is n ow 8.4. A lot of fixes, verified the boot cache db upsert, etc 2026-06-09 19:14:55 -05:00
Nabeel Shahzad
2cae19b25b
feat(addons): implement addon installation, update, and validation workflows
- Introduced `AddonSource` interface and concrete `UrlSource` and `ZipSource` implementations for handling addon payloads.
- Added `AddonValidator` for extracting and validating addon manifests and autoload paths.
- Implemented `install` and `update` methods in `AddonRegistry` to support lifecycle management.
- Integrated Octane worker reloading functionality via `OctaneReloader`.
- Added unit and feature tests for installation, update handling, validation, and new behavior.
2026-06-08 23:45:40 -05:00
Nabeel Shahzad
4f5d7d591b
feat(addons): introduce AddonAssetLinker and addons:relink command
- Added `AddonAssetLinker` to manage public asset symlinks for addons.
- Introduced the `addons:relink` Artisan command to rebuild asset links for enabled addons.
- Updated `AddonRegistry` to support asset linking/unlinking functionality.
- Adjusted configuration to set `addons.paths.assets` to `public/ext`.
- Added unit and feature tests for `AddonAssetLinker` and the new command.
2026-06-08 14:01:02 -05:00
Nabeel Shahzad
4fddb9e82c
refactor(helpers): remove unused NWIDART Module facade import 2026-06-08 12:27:11 -05:00
Nabeel Shahzad
ad40fe0af4
refactor(addons): remove Module shim, legacy NWIDART bindings, and update controllers/tests
- Removed `Module` and `ModuleRepository` compatibility shims.
- Replaced NWIDART `Module` facade usages with the new `AddonRegistry`.
- Updated frontend controllers to use `AddonRegistry` for module handling.
- Added new feature tests to cover `AddonRegistry` lifecycle and rebuild cases.
- Updated bootstrapping logic and service bindings to drop NWIDART dependencies.
2026-06-08 00:10:14 -05:00
Nabeel Shahzad
e7a4f111ef
feat(addons): add AddonNotFoundException 2026-06-07 20:33:04 -05:00
Nabeel Shahzad
4f453323c4
feat(addons): add path helpers to Addon model 2026-06-07 20:31:30 -05:00
Nabeel Shahzad
b8f458d396
feat(addons): add fromManifest method to Addon model
- Introduced `fromManifest` method to create `Addon` instances from manifest data.
- Added PHPDoc annotations for improved type documentation and clarity.
2026-06-07 20:24:30 -05:00
Nabeel Shahzad
45bd2966d3
refactor(addons): remove AddonRegistry, refactor boot cache handling, and update tests
- Removed the obsolete `AddonRegistry` class and associated tests.
- Simplified addon boot cache logic by consolidating responsibilities into `BootCache`.
- Updated service bindings to align with the new architecture.
- Refactored tests for Filament, ModuleShim, and addon discovery to reflect the changes.
2026-06-07 19:01:26 -05:00
Nabeel Shahzad
1d2d02fcaa
refactor(addons): rename AddonRuntime to AddonBootCache and ManifestData to AddonManifest
- Updated class names across models, services, and related files to improve clarity.
- Adjusted type hints, annotations, and method signatures to reflect the renames.
- Improved code consistency and alignment with updated naming conventions.
2026-06-07 16:58:49 -05:00