Skip to content

Feature/alpha 3 - #13

Merged
tabennett merged 14 commits into
masterfrom
feature/alpha-3
Oct 3, 2026
Merged

tabennett merged 14 commits into
masterfrom
feature/alpha-3

Conversation

@tabennett

Copy link
Copy Markdown
Contributor

No description provided.

Newer Composer blocks PHPUnit releases with security advisories, and the
patched releases require doctrine/instantiator ^1.5, which conflicted with
the ~1.4.0 pin and broke fresh installs in CI. Widen the constraint and
update the lock for PHPUnit 9.6.37 and its dependencies.
…etup

- Remove withCount(), has()/whereHas()/doesntHave(), and constraint-parameter
  docs for APIs that don't exist on master.
- Use store() instead of save() on mappers.
- Fix broken links, the Laravel 12 requirement, and a readme typo.
- Note that the base Mapper does not initialize $instantiator and that
  doctrine/instantiator must be installed by the application.
…or contract

Replace the two incomplete global-scope tests, add BelongsToMany pivot getter
tests, and add characterization tests for the unset-instantiator behavior.
- Disable fail-fast, add job timeouts, least-privilege permissions, and
  PR-only concurrency cancellation.
- Cache Composer downloads, add PHP 8.5 for Laravel 12, and add a job that
  validates and audits composer files.
- Add a Dependabot config for GitHub Actions and narrow .gitignore to the
  Copilot paths so other .github files can be tracked.
- Add AGENTS.md as the canonical source of project commands and development
  rules for coding agents.
- Add CLAUDE.md and .github/copilot-instructions.md as thin entry points that
  defer to AGENTS.md, so each harness reads the same instructions.
- Stop ignoring .github/copilot-instructions.md so all three entry points are
  tracked consistently.
…e app dispatcher

- Fire storing, creating, updating, removing and restoring in halt mode so a
  listener returning false cancels the operation, matching Eloquent's model
  events. The existing === false checks in the mapper now take effect.
- Point mappers at the application's event dispatcher in the service provider
  instead of a fresh Dispatcher instance, so Event::listen() and wildcard
  listeners receive mapper events.
- Add PersistenceEventTest and update the mocked dispatcher expectations in
  MapperTest to expect until() for the before events.
- Rewrite entity caching docs: the cache stores row attributes for change
  detection; it is not an identity map and does not avoid queries.
- Document cancelling operations by returning false, and that mapper events go
  through the application's event dispatcher.
- Fix typed-property examples and legacy factory usage, and remove
  nonexistent events and patterns.
- Correct paginate signatures, builder proxy behavior, and broken anchors.
The lock file pins packages that require PHP 8.4 or newer (symfony/clock,
symfony/translation, doctrine/instantiator), so installing it on PHP 8.3
fails. Use the lowest PHP version that satisfies the lock.
- Bump actions/checkout to v7 and actions/cache to v6, which run on Node 24.
- GitHub is removing Node 20 from Actions runners; setup-php v2 already
  runs on Node 24.
- Add a phpunit.xml coverage block that includes src/ so
  `phpunit --coverage-text` works without extra flags.
- Add a CI job that runs the suite with PCOV on PHP 8.4 and Laravel 12 and
  prints the coverage report in the job log.
- Dispatch persistence events as "holloway.eventName: EntityClass", mirroring
  Eloquent's "eloquent." prefix, so mapper events cannot collide with other
  listeners on the shared dispatcher and "holloway.*" matches all of them.
- Build the name in one helper used by both firing and registering.
- Update tests and docs, and add a wildcard listener test.
Builder has no $loads property; eager loads live on its Tree. Delegate to
the tree so getLoads() returns the relations set via with()/without()
instead of failing with an undefined-property error. Add BuilderTest
covering it.
- Delete the best-practices example page and every testing, best-practices,
  performance, error-handling, and "production application" section. These
  covered Laravel and general architecture rather than Holloway.
- Remove the e-commerce example, services and controllers, anti-pattern
  essays, and the Illuminate query builder walkthroughs (raw queries,
  aggregates, ordering) that duplicated Laravel's own docs.
- Trim the reference implementation pages (entity patterns, base classes,
  hydration, lifecycle, type transformations, value objects) to the Holloway
  contract, keeping the Email and Money value object examples and the
  integration steps.
- Drop sections that duplicated other pages: scopes in mappers and
  query-building, events in persistence, and the architecture overview of
  features documented elsewhere.
- Keep the no-lazy-loading note and the soft-delete entity guidance, rewrite
  marketing-style intros, and fix tables of contents and links after the
  removals.
@tabennett
tabennett merged commit 3550d8f into master Oct 3, 2026
24 checks passed
@tabennett
tabennett deleted the feature/alpha-3 branch October 3, 2026 21:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant