anomaly/editor-field_type
An editor field type for the PyroCMS/Streams Platform that adds a rich-text WYSIWYG input to forms and modules, letting users create, format, and manage content directly in the control panel.
Architecture fit
anomaly/editor-field_type is not a standalone Laravel library in the conventional sense—it is a field type addon for the Streams Platform (the data-modeling layer behind PyroCMS/Anomaly CMS). Its job is narrow and well-defined: register a WYSIWYG "editor" field type with the Streams field-type registry so that entries defined in the control panel render a rich-text input and serialize HTML (or editor JSON) into a column. It almost certainly depends transitively on anomaly/streams-platform and on the companion anomaly/editor addon for JS/CSS asset registration and publishing.
That means the fit test is binary, not graded. If the target application is a Streams/PyroCMS installation, this is a legitimate, idiomatic addon that slots into the existing addon loader, service provider bootstrapping, and field-type contract. If the target application is any other Laravel codebase—including a modern Laravel 10/11/12 app—there is effectively no architecture fit at all. This package does not offer a generic "give me a rich text field for my Blade form" API; you cannot meaningfully consume it outside the Streams addon lifecycle.
Integration feasibility
Feasibility is dominated by dependency resolution, not by code complexity. The package is a thin wrapper: a service provider, a field type class implementing Streams' FieldType contract, a form view (likely a Blade partial loading editor JS), and language/publishable assets. The integration work is therefore mostly Composer surgery and asset publishing rather than application code. Expect PHP version constraints that predate PHP 8.1/8.2 hardening and Laravel constraints that will not satisfy current framework releases; an install attempt against a fresh Lumen/Laravel skeleton should be treated as the first, gating experiment, not an afterthought.
Technical risk The material risks are lifecycle and supply chain, not runtime:
anomaly/editor asset addon. Any one of those being unmaintained or unpinned undermines the whole install, and you inherit the aggregate risk of the deepest node.Key questions
composer.json constraints on php, laravel/framework, anomaly/streams-platform, and anomaly/editor, and do they resolve against our PHP runtime?Stack fit Fit is conditional and ecosystem-specific. In a Streams-based CMS the addon is a first-class citizen: it registers through the platform's field-type service provider, appears automatically in the field-type picker, and requires no application-level wiring beyond asset publishing. In a conventional Laravel application (Eloquent models, resource controllers, Blade/Livewire/Filament forms) the package is inert. For those stacks the correct equivalent is a maintained in-application editor component—Filament's RichEditor, a Livewire-bound Trix/CKEditor/TipTap component, or a dedicated sanitization-plus-editor pair—not a CMS field-type addon.
Migration path There is no migration path into this package from a non-Streams application, and that is the central finding. The realistic paths are:
Compatibility
Assume incompatibility with current PHP and Laravel releases until a sandbox install proves otherwise. Check composer.json constraints directly; a php: ^5.6|^7.0 style constraint will hard-fail on PHP 8.2+. Also verify the anomaly/editor asset addon resolves and that its published JS assets are still retrievable—if assets were fetched from a third-party CDN at build time, the field type can render a dead input while remaining "installed."
Sequencing
public/ directory.Maintenance This is a permanent fork obligation, not a dependency you consume. Budget for: annual PHP/Laravel compatibility shims, editor JS upgrades or freezes, and Composer constraint upkeep as the surrounding tree moves. Because the upstream is dormant, "maintenance" here means "ownership"—the package is effectively internal source code with a public origin story. Estimate the ongoing cost as low in hours but non-zero forever, which is often worse organizationally than a large one-time cost.
Support No vendor support, no active issue triage, no security advisory channel. Internal runbooks must cover: where the fork lives, who may bump it, how the editor assets are built and served, and what the sanitization policy is. On-call engineers will not be able to reason about this package from public documentation alone; write the runbook at adoption time or the knowledge will not exist later.
Scaling Runtime scaling is a non-issue: a field type is a form-rendering concern executed on control-panel requests, not on the hot path of a public API. The scaling concerns are data-shaped rather than compute-shaped. Rich-text fields accumulate large HTML payloads per row, inflating table size, backup windows, and replication lag; and they are hostile to full-text search unless the rendered text is separately extracted and indexed. If the field stores editor JSON rather than HTML, plan for a rendering step and a schema-version field, since editor upgrades silently change the document format.
Failure modes
composer update in an unrelated package pulls a constraint that makes the addon uninstallable; the build fails at the worst time.anomaly/editor or the Streams Platform itself becomes the unpatchable node.Ramp-up
For an engineer already fluent in Streams addon conventions—service provider registration, the FieldType contract, asset publishing, control-panel views—ramp-up is a few hours; the code surface is small and the patterns are familiar. For anyone else, the cost is not this package but the platform: understanding Streams' entry/field/assignment model, the addon loader, and the control-panel view layer is a multi-week investment before this addon's behavior is legible. That asymmetry is the practical argument against adoption: you are paying platform-sized onboarding costs to obtain a rich-text input, which is the single most commoditized component in the Laravel ecosystem.
How can I help you explore Laravel packages today?