magdicom/nova-visible-password
A Laravel Nova field that adds a password input with a show/hide visibility toggle, making password editing in Nova resources clearer and more user-friendly with minimal setup.
What it is. A Laravel Nova custom field that extends Nova's Password field and ships a small compiled Vue component to toggle the input between type="password" and type="text". Integration surface is one Field class, a service provider for asset registration, and one front-end component. No migrations, routes, config, or middleware.
Architecture fit. Clean fit for admin panels already on Laravel Nova — it plugs into the standard field contract and inherits Nova's validation/rules behavior. It is inapplicable outside Nova (Filament, Backpack, custom Inertia admin), which bounds the addressable footprint to teams holding a Nova license. Because Nova itself is a commercial dependency, this package is a second-order dependency on a paid platform — vetting must include the Nova version, not just PHP/Laravel.
Integration feasibility. composer require plus one ::make() call per resource. Effort is measured in hours, not days. The gating question is version compatibility, not effort.
Technical risk.
| Risk | Severity | Notes |
|---|---|---|
| Abandonment | High | Last release 2022-11-17; single maintainer; 3 stars; 0 dependents; no visible CI/tests. Nova 4 and Nova 5 both shipped in that window and Nova 5 changed asset tooling. |
| Compatibility | High | Nova 5 compatibility unverified; a compiled Vue component built against an older laravel-nova runtime may silently fail to register. |
| Information disclosure | Medium | Must confirm the toggle only reveals unsaved user input and never hydrates a stored hash into the DOM on index/detail views. |
| Supply chain | Low | MIT, tiny, no exotic transitive deps; lockfile pinning + composer audit is sufficient. |
| Performance/scaling | Negligible | Client-side toggle, one asset in the Nova bundle, zero server cost. |
| Bus factor | High | No upstream support channel, no community corpus to fall back on. |
Key questions to resolve before adoption. Which Nova major versions are supported (3/4/5)? Is the Vue component compiled against laravel-nova (requiring rebuilds per Nova upgrade) or standalone? Does it behave correctly on create forms, update forms, and inside Action modals? Does it respect hideFromIndex() / hideFromDetail()? Is the revealed value ever the persisted hash rather than the in-flight input?
Position. Low value as a long-lived dependency, real value as a pattern reference. Given the code volume, the honest comparison is "take a 3-star, three-year-stale dependency" versus "own ~100 lines." Ownership wins on every axis except the first hour.
Stack fit. Laravel + Nova only. Confirm the pinned Nova major in composer.json first — this single check decides fork-vs-reimplement.
Path.
app/Nova/Fields (or a private VCS repo) and own it. With zero dependents and no maintainer response path, the maintenance burden is yours either way — take the code.resolve/fill behavior.Compatibility checklist. Nova major; PHP and Laravel versions; Vite vs. Mix and the laravel-nova npm package if the fork needs rebuilding; whether the published release ships pre-compiled assets (if so, add a rebuild step to CI).
Sequencing. Do not run this as a standalone initiative. Bundle it with the next Nova upgrade window so the compatibility question is answered once, in a change that is already touching admin assets. Ship behind the admin-only surface — no customer-facing blast radius — and record it in the dependency register with an owner and a review date tied to the next Nova major.
Maintenance. Near-zero steady state if forked and untouched; ~0.5 day per Nova major to rebuild and re-verify the component. Consumed as-is, the burden is identical but without the ability to patch.
Support. No upstream channel and effectively no community corpus. Internal support is trivial: the observable failure is "toggle does nothing," and the fix is a rebuild or a version bump.
Scaling. Not a factor. One asset in the Nova bundle, no queries, no jobs, no external calls, no infra. Throughput and latency are unchanged.
Failure modes.
hideFromIndex() / hideFromDetail() at the field or resource level; add a DOM assertion to the smoke test.Ramp-up. Under an hour for a mid-level Laravel developer. No specialized knowledge beyond Nova's field and asset APIs, which the team needs regardless of this package.
TPM read. The value is the UX pattern, not the artifact: a reveal toggle measurably reduces provisioning typos and "I mistyped the password" admin tickets. Capture that value with an owned 1–2 day implementation, using this repo as the reference. Priority: low, cheap to build, cheap to own, disproportionately expensive to depend on.
How can I help you explore Laravel packages today?