Every release of Knowble, newest first. Knowble follows semantic versioning: a minor release adds features and needs nothing from you, and a major release says what you have to change.
1.6.0 (2026-11-11)
Changed
- Knowble serves its own stylesheet, from
/knowble-assets/knowble.csson each panel page's own domain, with a fingerprint in the address so browsers keep it until it changes. Nothing is published intopublic/, and an app's deploy does nothing for Knowble: a new version arrives with the package.knowble:installno longer publishes a stylesheet.
Upgrading from 1.5
Nothing to do. A copy an earlier version published at public/css/polycode/knowble/ is no
longer used; delete it whenever you like.
1.5.0 (2026-11-11)
Added
Contracts\DescribesCustomers: a host's line about each customer, such as what their plan promises, shown to staff under the customer on the queue and on each request. It works with tiers off.
Fixed
- A page placed in a cluster showed Knowble's "Support" group heading among the cluster's tabs. It now has none unless the app gives it one.
- The line beside Contact support's Send button always said "We'll answer on Your requests and email you". It now names the page as the reader's menu does and mentions email only when one will come, as the message after sending does.
- The tier badge on the queue was grey; it's now coloured, as every badge is.
1.4.0 (2026-11-11)
Added
KnowbleAdminPlugin::tierColumns(): an app's own columns on the support tier list, besidetierFields()on the form.
Changed
- The 1.3.0 audience SQL no longer places the column
AFTER published_at, for hosts whose schema tools refuse an AFTER clause. Where the column sits makes no difference.
1.3.3 (2026-11-11)
Fixed
- 1.3.2 broke padding and borders on every panel page. Its stylesheet named a CSS layer, and
because it loads before the app's theme, that reordered the app's own layers so the theme's base
styles beat every utility. Knowble's rules stay scoped to
.knowblebut sit outside any layer, as before 1.3.2. Don't use 1.3.2.
1.3.2 (2026-11-11)
Fixed
- Knowble's stylesheet overrode the app's own utilities on every page, because its rules sat
outside any layer: in dark mode, an app's
border-gray-200 dark:border-gray-700came out light. Every rule is now scoped to Knowble's own markup (.knowble, on each Knowble view's root), so it never styles the app's screens, and the app's utilities never override Knowble's.
Upgrading from 1.3.1
Skip this release: take 1.3.3. Nothing to do, unless you've published Knowble's views: then add knowble to the class of each
view's root, or its styles won't apply.
1.3.1 (2026-11-11)
Fixed
- An app's own code can set an article's
audience(it was missing from the fillable list). - The 1.3.0 upgrade SQL below is now safe to run twice.
1.3.0 (2026-11-11)
Added
- Articles for some readers only. An article in the content file can name an
audience, such as["nz"], and a host that implementsContracts\HasAudiencessays which audiences the current reader is in. An article for other readers is left out of help home, sections and their counts, search, suggestions on Contact support, the Help button, and its own page.knowble:exportwrites the audience back.
Upgrading from 1.2
Nothing to do unless you use audiences. To use them, add the column first, then implement
HasAudiences on your host:
-- Safe to run twice: adds the column only when it isn't there.
SET @missing = (SELECT COUNT(*) = 0 FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'knowble_articles' AND COLUMN_NAME = 'audience');
SET @statement = IF(@missing, 'ALTER TABLE knowble_articles ADD COLUMN audience JSON NULL', 'SELECT 1');
PREPARE add_audience FROM @statement;
EXECUTE add_audience;
DEALLOCATE PREPARE add_audience;
knowble:import refuses a file that names an audience while the column is missing.
1.2.2 (2026-11-11)
Fixed
- An app that switches
app.timezonefor each business stored each business's times in that business's zone, so staff elsewhere read them hours out, and reports mixed zones. Knowble's tables now keep every time in one zone:storage_timezone, or the app's zone as it starts.
Upgrading from 1.2.1
Nothing to do for new times. Rows written earlier from a business in another zone keep their old offset; shift them with SQL if those times matter to you.
1.2.1 (2026-11-11)
Fixed
- Times show in Filament's time zone (
FilamentTimezone), which an app can set per person, instead of always the server's. - The support report, help engagement and
HelpUsagecount whole days, and "this month", where the reader is. - Month names follow the app's language.
Added
datesin config: the formats dates and times are written in. The defaults are the formats used until now.
1.2.0 (2026-11-11)
Added
wantsMail()on a host (Contracts\NotificationPreferences, inSingleApp), asked before every email to a customer. Contact support's "Sent" message says where to find the answer when no email will come.- Reply-To on staff's emails is the customer (
mail.reply_to_customer). An app can also set Reply-To on a reply to a customer to the staff member who wrote it (mail.reply_to_staff_member, off by default). mail.quote_to_customers: off, a reply email links to the conversation without quoting it.- Each in-app notification also carries its link in
viewData['url']. - Pages can sit in a cluster's tabs (
navigation(..., cluster: ...)), or in the sidebar and the user menu (Placement::SidebarAndUserMenu).paths.sectionnames a section's path. - Code in articles shows in a labelled panel with a copy button, and in the PDF.
- Pictures in a conversation show as thumbnails that open full size.
- Staff screens:
requestActions()adds an app's own actions to a request, a Waiting on us filter, a From and To range on the support report, priority and customer filters and a Resolved column on suggestions, and a tenant filter with a twelve-month trend on help engagement. - Tiers:
tierFields()adds an app's own fields, andContracts\CountsTierTenantsgives a count of customers per tier. HelpUsage, for an app's own reports of reads and ratings per tenant.Requests::raise(), to raise a request for a customer from anywhere in an app.- Factories for every model, with no Faker.
Changed
- Suggestions are written in the rich editor and shown formatted. Older plain-text ones still show as typed.
- The support report opens on this month.
- There's always exactly one default support tier, and it's always offered. The default, or a tier the host says customers are on, can't be deleted.
- The suggestions badge counts new and in-progress suggestions.
Upgrading from 1.1
Nothing to do. Every new setting falls back to Knowble's default when your published config
doesn't have it. If your app has a Content Security Policy, allow img-src data: for picture
thumbnails.
1.1.0 (2026-11-11)
Added
- Notifications in the panels' bells as well as by email: switch on
features.in_app. Each notification's channels are set undernotificationsin config, so one can go to the bell instead of email. A panel with no bell gets one. Contracts\NotifiesInApp, whichSingleAppimplements:staffUsers(),wantsInApp()andnotifyInApp(). A host that extendsSingleApphas them already.Enums\NotificationType, listing every notification with a label, for a preferences screen.knowble:install --in-app, which publishes the notifications table's migration when the app has none.
Upgrading from 1.0
Nothing to do: the bell stays off until you switch it on. To use it, the users need Laravel's
notifications table and the Notifiable trait. A host that implements Contracts\Host
directly, rather than extending SingleApp, needs Contracts\NotifiesInApp too before its bells
get anything; until then it keeps sending email.
1.0.0 (2026-11-11)
The first stable release.
Added
- Knowble runs on Laravel 12 and 13, and is tested on PHP 8.3, 8.4 and 8.5 with both.
- A changelog, a commercial licence and a security contact.
Changed
- Knowble is sold under a commercial licence (LICENSE.md).
Upgrading from 0.6
Require the new version. Nothing else changes:
composer require polycode/knowble:^1.0
0.6.5 (2026-11-11)
- Help's default icon is Knowble's fingerpost,
knowble-fingerpost. An app that set its own Help icon keeps it.
0.6.0 to 0.6.4 (2026-11-11)
- Fixes from a second security review, each pinned by a test.
- Finer feature switches: favourites, feedback, popular, suggest an improvement and request an article each switch off on their own.
- Every field in a modal sits in a section, and buttons that are hidden aren't drawn.
- Staff screen titles are in sentence case.
- A page that is never in a menu keeps its own icon.
0.5.0 to 0.5.4 (2026-11-11)
knowble:install, which publishes and fills in the config, the migrations and an example article, interactively or from options.- Fixes from the first security review, each pinned by a test.
- A compiled stylesheet, so Knowble works on Filament's default theme with no build step.
- The Help button hides from people the host keeps from help.
0.4.0 (2026-11-10)
- Every page's label, icon, group, sort and placement can be set in config or through the plugin.
- The article and category editor is off unless you switch it on.
0.1.0 to 0.3.1 (2026-11-10)
- The help centre: sections and screens, articles, how-tos and questions, search, favourites, "Did this help?", suggestions and Print to PDF.
- Contact support: requests with attachments, conversations, the staff queue, the support report and support tiers.
- Help content loaded from
database/knowble/content.jsonbyknowble:import, with images synced byknowble:sync-images.