binarytorch/larecipe-rtl
Adds right-to-left support to LaRecipe documentation pages, adjusting layout, typography and navigation for Arabic, Hebrew and other RTL languages. A small companion package for Laravel projects already publishing docs with LaRecipe.
Architecture fit is unchanged. LaRecipe compiles Markdown into a Vue-driven SPA served from inside a Laravel app; RTL is a presentation-layer concern (dir="rtl", mirrored layout, Arabic/Hebrew/Persian font stacks) and belongs in a thin service provider that publishes a stylesheet and flips a config flag. A v1.0.0 tag does not change what the package has to be, so the architectural judgment stands: this is small, low-coupling code, and the correct question is whether to own it or depend on it, not whether it fits.
What changes is the project-state premise, and it changes in a way that is mostly uninformative. The prior assessment characterized the package as archived with an April 2019 last release and no path to upstream fixes. A v1.0.0 publication falsifies the narrow claim that nothing has been released since 2019, and possibly falsifies the archived claim outright. The release notes — "First Release", two words, no changelog, no compatibility statement — do not tell us which of three things happened: a re-tag of the 2019 tree under a new versioning scheme, a rewrite or fork republished under the same name, or a packaging/CI cleanup with no functional change. Those three have completely different implications for us and are indistinguishable from the release note.
The version reset itself is a signal worth respecting. Resetting to 1.0.0 after a multi-year gap discards lineage: anyone pinning ^1.0 inherits whatever the tag contains, and any prior 0.x references inside our codebase become meaningless. It also means we cannot infer the diff from version numbers — we have to read the tree. A package resurfacing after years under a new tag is precisely the case where provenance must be verified rather than assumed: confirm the Packagist entry and repository ownership have not changed hands, and confirm the tag is not a force-push/re-tag of old content.
Integration feasibility is unchanged in the mechanical sense and still gated on compatibility evidence that the release does not supply. The cheapest discriminator remains the require block in composer.json: if v1.0.0 still pins PHP 7.x and Laravel 5.x/6.x, nothing material has changed and the prior conclusion holds without further work. If it declares PHP 8.1+/Laravel 10+ and targets LaRecipe 2.x selectors, the calculus shifts and adoption becomes a live option rather than a non-starter.
Technical risk is now concentrated in provenance rather than abandonment:
1.0.0 reads as "stable" to a reviewer who does not know the history. That is the most likely way this tag causes harm — not through the code, but through the assumption it invites.Key questions, revised:
v1.0.0 a functional change from the 2019 tree, or a re-tag? What does the commit history between the last old commit and this tag show?require block declare for PHP and Laravel/illuminate versions?Stack fit remains conditional, but the condition is now testable rather than assumed. The release notes assert nothing about PHP 8 or Laravel 10+ support, so we treat support as unproven until we read the manifest. Two branches follow: if constraints are still pinned to the 2019 era, the package remains a poor fit on a modern stack and the "harvest the artifact" path applies unchanged; if constraints are current and selectors target LaRecipe 2.x, we have a legitimate build-vs-adopt decision instead of a foregone one.
Default migration path is still extraction. Pull the v1.0.0 tree, isolate the RTL stylesheet(s) and any direction-flipping logic, commit that CSS into our own asset pipeline alongside our LaRecipe customizations, and replicate only the minimal provider behavior in AppServiceProvider or a small first-party package. Two additions given the version reset: pin to an immutable reference (tag plus commit SHA) and record a checksum of exactly what we vendored, so a future retag of 1.0.0 cannot silently change what "we vendored v1.0.0" means. Provenance note in the repo, as before.
Compatibility work is still a porting exercise, and the 2019→2026 gap is unchanged by a tag. Diff selectors against the DOM our LaRecipe version emits — nav drawer side, code block alignment, table direction, breadcrumb order, search input — and validate with a real Arabic or Hebrew document set, not one smoke-test page. Font loading remains an explicit work item; RTL quality is typographic as much as directional.
Sequencing:
v1.0.0. Stop if ownership is unclear.composer.json constraints and the file inventory. This is a fifteen-minute check that determines whether steps 3–5 are worth running.v1.0.0 tree to establish what is reusable and whether any of it post-dates 2019.composer require.Maintenance is where the release changes the story, but not as much as the version number implies. A single tag is an event, not a cadence. The prior "zero upstream patches" finding should be softened to "one upstream event after a multi-year gap, with no changelog" — which is not a maintenance commitment and does not justify transferring our compatibility risk to a third party. The bar for treating the package as maintained is evidence of routine: CI, changelog discipline, issue response, more than one commit in the last year. We do not have that; we have a tag.
Support is unchanged absent other evidence. Three stars and no dependents still means no community to consult and no useful issue history. The new risk is the inverse: a 1.0.0 badge reads as maturity, so the support burden may land on us anyway after someone assumes the package is healthy and skips the audit. Internal ramp-up remains low — CSS plus a service provider, comprehensible to any Laravel-fluent frontend developer in a day. The residual knowledge risk is coverage, not depth: knowing which screens we failed to check.
Scaling remains benign and unworthy of modeling. Static stylesheets, low-traffic developer-facing SPA, no data, no queue, no external service.
Failure modes, updated:
1.0.0 tag invites adoption without the audit. This is now the likeliest failure, ahead of the CSS issues.1.0.0 with no predecessor changelog means we cannot reason about what changed; only a tree diff answers it.1.0.0 is mutable, "we vendored v1.0.0" is an unstable claim unless we pinned a SHA and checksum.Recommendation: hold, do not adopt on the strength of the tag. The release is a reason to re-run the audit, not a reason to change the conclusion. Verify provenance, read the manifest, and spend the day on the tree; if v1.0.0 turns out to be a genuine modernization with a changelog and an internal owner, adoption as a pinned dependency is defensible. Absent that evidence, extract or rewrite the stylesheet into first-party code, pin it to our LaRecipe version, and add bilingual docs fixtures. The low score and long gap remain accurate signals; the work the package represents is still small enough that ownership is cheaper than adoption.
How can I help you explore Laravel packages today?