anomaly/recent_posts_block-extension
An extension for the Recent Posts block in Anomaly's PyroCMS pages module. Editors can drop the block onto any page to surface the latest blog entries, with configurable post limits, category filtering, and layout options, no template changes needed.
Architecture fit. anomaly/recent_posts_block-extension is not a general-purpose Laravel package — it is a PyroCMS 3.x addon (vendor namespace anomaly, the PyroCMS core namespace) that registers a block extension with the Blocks module. Architecturally it is a thin presentation adapter: it implements the BlockExtension contract, exposes a getView() pointing at a Blade partial, and reads from the Posts module's stream/repository to hydrate a collection of recent entries. It assumes the host application is a PyroCMS installation with both anomaly/blocks-module and anomaly/posts-module present and migrated. It will not install meaningfully into a vanilla Laravel app, and it will not work against a custom posts model unless that model is exposed as a Streams stream.
Integration feasibility. Low-to-moderate, and entirely contingent on an existing PyroCMS footprint. If the target application is already PyroCMS 3.x with the Posts module live, this is a composer require plus service-provider auto-discovery (PyroCMS addons are conventionally discovered via composer.json extra.laravel.providers) — a genuinely small change. If the goal is "show recent posts" in a non-PyroCMS Laravel app, this package is the wrong primitive; the equivalent is a Blade component plus a repository query, roughly 40–80 lines of first-party code.
Technical risk. High, and driven by ecosystem rather than code quality:
composer.lock long before it hits this package's own code.streams-platform, blocks-module, and posts-module chain, each of which is independently unmaintained.Key questions for the requester.
Stack fit. Fits only the PyroCMS 3.x lane: Laravel 5.5–6.x, PHP 7.2–7.4, Composer 1/2, and a Streams-driven content model. Treat that as a hard gate, not a preference. The package's value proposition — a prebuilt, admin-configurable block with sensible defaults — is real inside that lane and near-zero outside it.
Migration path. Recommended sequence:
composer require anomaly/recent_posts_block-extension against the actual host. Record the resolved dependency graph and any constraint conflicts. This single step usually decides the question.getSlug, getCategory, getView, plus a repository call) and this removes the third-party dependency entirely while preserving the admin UX.Compatibility. Expect a compatibility matrix of exactly one cell: PyroCMS 3.x + Posts module + PHP 7.4. Any branch that requires PHP 8 or Laravel 9+ should be closed rather than investigated — the constraint chain will not resolve without patching multiple unmaintained transitive packages, which converts a dependency decision into a maintenance commitment.
Sequencing. Do the spike before committing to any UI work that assumes the block exists. The block is trivially replaceable; the design and content-model decisions built on top of it are not. If the spike fails, the fallback should be scoped as a 1–2 day first-party task, not a project.
Maintenance. Effectively unbounded and unreciprocated. With zero dependents and a dormant vendor, there is no upstream to merge fixes from. Any PHP or Laravel upgrade in the host becomes an internal patch exercise on this addon and on the Streams/Posts chain beneath it. Budget it as owned code, not as a dependency — if the team is unwilling to fork and maintain, reject it.
Support. Community-only and likely stale. No vendor SLA, no security disclosure path, no guaranteed response to issues. For a presentation-layer block the security exposure is small (no auth, no user input beyond block config), but the absence of a disclosure channel still matters for compliance review in regulated environments.
Scaling. The block is a per-render query against the posts stream with a limit. Performance is fine at typical CMS traffic; the risks are (a) rendering inside uncached page layouts where the block forces a cache-busting query, and (b) no built-in caching layer in the addon — caching must be added by the host via the page/block cache. At high read volume, put the block behind the CMS's fragment or page cache rather than tuning the addon.
Failure modes. Ranked by likelihood and cost:
composer.json constraints lag the host's, and composer update begins failing on unrelated work; mitigate by vendoring.Ramp-up. Low individual cost, non-trivial organizational cost. A Laravel developer unfamiliar with PyroCMS needs roughly half a day to internalize the block-extension contract, Streams, and the admin block-picker flow — the API is small and idiomatic. The real ramp-up is institutional: the team inherits ownership of a dormant addon and its dormant dependency chain. Recommend a single named owner, a fork under the org namespace, and a one-line smoke test in CI before this goes anywhere near production.
How can I help you explore Laravel packages today?