badinansoft/nova-tooltip
A Laravel Nova package that adds tooltips to your admin panel, letting you attach helpful hint text to fields, resources, and metrics so users understand values at a glance without cluttering the interface.
Start with the 1.2.0 changelog line itself: "Fix problem of nova" is a patch-level (semver 1.2.0 is minor, but the content is a bugfix) correction to the package's Laravel Nova integration. Nothing in the release note indicates removed methods, renamed config keys, or changed signatures, so treat this as a safe in-place upgrade — but it is also a signal that Nova is a first-class consumer of this package, and that is the path you should validate first.
Minimal steps:
composer update vendor/package (or composer require vendor/package:^1.2 on a fresh install) and commit the lockfile diff. Confirm the only changed constraint is this package.php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider" --tag=config. Do not blanket-republish if you have local edits — diff instead.php artisan migrate only if the package ships migrations; the note gives no reason to expect schema changes, so a no-op is the expected result.php artisan optimize:clear and, if you run Nova, php artisan nova:publish is not needed for a package upgrade, but php artisan cache:clear is worth doing before you conclude anything is broken.Where to look first in the codebase: the package's service provider (what it registers — Nova tools, cards, resources, fields, or just routes/middleware), then any src/Nova/ or src/Http/Controllers/ directory, then the config file's nova-prefixed keys. If there is a NovaServiceProvider in your app, check whether the package's tool/card is registered there.
Pin the minor version during rollout. Because 1.2.0 is a Nova-targeted fix, run "vendor/package": "1.1.*" on the branch you deploy from until you have verified the Nova surface, then bump to ^1.2. This gives you a trivial rollback if the "fix" changed behavior your Nova resource was implicitly relying on.
Wrap Nova registration behind a conditional. If the package registers Nova tools or cards from its own service provider, guard non-Nova environments so console/queue workers and API-only deployments do not pay the cost:
// app/Providers/NovaServiceProvider.php
public function tools(): array
{
return [
\Vendor\Package\Nova\Tool::make(),
];
}
Keep the registration in your NovaServiceProvider rather than relying on the package's discovery — that is the single most common place Nova-integration bugs get fixed, and owning the call site means a future release cannot silently reorder or duplicate the tool.
Treat Nova resources as a separate integration contract. If the package exposes a Nova Resource (e.g. Vendor\Package\Nova\SomeResource), do not subclass it and override fields() — pin the version and vendor the field list into your own resource. Nova's field API churns between major versions, and the package's fix may well be inside fields() or resolve().
Test the three Nova surfaces explicitly. A Nova "problem" almost always manifests in one of: (a) indexQuery / index listing (filters, sorting, eager loads), (b) fields() / form submission, (c) authorizedToView / policy gating. Add or update a feature test per surface. If you use Pest, a Nova::actingAs()-style authenticated request against /nova-api/{resource} is the cheapest regression net you can build around this package.
Use it as a normal Laravel dependency elsewhere. The Nova fix should be isolated; your HTTP controllers, jobs, and Blade views should keep consuming the package's public API unchanged. If you find yourself needing Nova-specific code anywhere outside app/Nova and NovaServiceProvider, the integration has leaked — refactor before upgrading further.
Upgrade checklist per release: read the diff on GitHub (the one-line note is not enough to assess), grep for @deprecated, run composer outdated --direct, then exercise Nova manually. Nova has no meaningful automated UI tests in most apps, so manual verification of the affected screen is non-optional.
.../compare/1.1.0...1.2.0) and read the actual diff. If the release has no tag diff or no linked issue, upgrade in staging only and file an issue asking for detail.laravel/nova constraint mismatch). Check your composer.json for laravel/nova and confirm the package's own constraints in its composer.json match. A package fix that assumes Nova 5 will silently no-op on Nova 4.nova:publish copies the package's compiled assets and can clobber local customizations. Run it only if the diff touches dist/ or resources/js, and snapshot the directory first.php artisan config:cache can serve a stale config array in Octane/Swoole workers. Restart the workers (php artisan octane:reload) before debugging anything, or you will chase a bug that no longer exists.Policy or Gate, not the package. Check Nova::actingAs() in tests vs. real session auth.boot() to a lazy Nova::tools() hook). If you also register it manually, you can end up with the tool appearing twice in the Nova sidebar — an easy-to-miss, cosmetic-but-suspicious symptom.composer require laravel/nova:... is not the fix — pin vendor/package:1.1.* and open an upstream issue with the Nova version, the resource class, and the exact request/response.1.2.0), not a patch. Semver permits new public API here, so scan the diff for added methods even though the note describes only a fix. New methods are non-breaking, but they often signal a deprecation coming in 1.3.0/2.0.0.How can I help you explore Laravel packages today?