NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #3761 most downloaded on Packagist
Flowforge is a lightweight Kanban board package for Filament that works with existing Eloquent models.
Last release 2 days ago
06 Oct 2026
Ships fairly regularly
a new release about every 3 weeks
Some releases are documented
notes for 27 of 55 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
61 releases · first in 2025
One column per month.
build(deps): bump @nuxt/ui from 4.11.1 to 4.11.2 in /docs in the npm-minor-patch group by @dependabot [bot] in #191
Full Changelog: v4.1.3...v4.1.4
build(deps): bump zizmorcore/zizmor-action from 0.6.3 to 0.6.4 in the github-actions group by @dependabot [bot] in #186
Full Changelog: v4.1.2...v4.1.3
chore(ci): stop persisting checkout credentials in pint and changelog by @ManukMinasyan in #182
Full Changelog: v4.1.1...v4.1.2
chore(ci): pin actions to commit SHAs and add dependabot cooldown by @ManukMinasyan in #168
Full Changelog: v4.1.0...v4.1.1
npm audit --omit=dev now reports zero vulnerabilities.
Two card action fixes and Laravel 13 support. No API changes, no configuration changes.
Supersedes v4.0.15, which shipped the same two fixes a few minutes earlier. Laravel 13 support arrived right after, and a minor is the honest place for it, so upgrade straight to this.
Opening an EditAction from cardActions() whose schema contained a Repeater, then clicking add or remove, closed the modal without applying the change. Afterwards no card action responded to clicks until the page was reloaded.
Filament attaches recordKey to the context of any action that has a record, so a schema component action nested inside a mounted card action inherited the card's record and arrived carrying both recordKey and schemaComponent. BoardResourcePage::resolveActions() checked recordKey first and routed it to the board resolver, which could not find it, silently dropping the mounted entry. The open modal closed, and the orphaned entry left the action stack unusable.
Board detection now runs after schema and table detection, matching the ordering in Filament's own InteractsWithActions::resolveActions(). This also covers the repeater's delete, reorder and clone actions, Select::createOptionAction(), Builder, and nested action modals. BoardPage was never affected.
->cardActions([
Action::make('view')
->url(fn (Task $record): string => TaskResource::getUrl('view', ['record' => $record])),
])
->cardAction('view')Clicking a card did nothing at all: no navigation, no modal, nothing logged. The card blade hardcoded a mountAction() handler, and getCardAction() returns only a name, so the action's url was never read. The same action rendered correctly as a link in the card's actions dropdown.
The card now renders as an anchor when the action has a url, using the same generate_href_html() helper Filament's table rows use for recordUrl, so SPA mode, prefetching, modifier keys and ->openUrlInNewTab() all behave as they do elsewhere in the panel.
The url decides, with no check of the action's modal state. That is Filament's rule: ListRecords::table() has recordAction() skip any action whose getUrl() is filled and recordUrl() take it instead. An action declaring both a url and a modal therefore renders as a link and never opens that modal, in a board card exactly as in a table row. Declare one or the other. Only ->postToUrl() actions stay on the click handler, since a POST needs a form rather than an anchor.
Both bug reports above were filed against Laravel 13, which the dev constraints did not allow, so nothing verified the package there. orchestra/testbench now accepts ^10.11|^11.0 and the Pest packages ^4.0|^5.0, with a Laravel 13 job added to the CI matrix. The suite passes on both: 161 tests on Laravel 12.67 with Pest 4, and on Laravel 13.26 with Pest 5.
The runtime require block is unchanged, so this does not alter what your application needs.
better-sqlite3 was bumped to 13.0.3, because docus declares a 12.x peer and npm ci aborted on ERESOLVE.<0.28.1 (arbitrary file read via the dev server) and sharp <0.35.0 (inherited libvips CVEs). npm audit --omit=dev now reports zero vulnerabilities.composer update relaticle/flowforge. Nothing to change in your board configuration.
Two card action fixes. No API changes, no configuration changes.
Two card action fixes. No API changes, no configuration changes.
Opening an EditAction from cardActions() whose schema contained a Repeater, then clicking add or remove, closed the modal without applying the change. Afterwards no card action responded to clicks until the page was reloaded.
Filament attaches recordKey to the context of any action that has a record, so a schema component action nested inside a mounted card action inherited the card's record and arrived carrying both recordKey and schemaComponent. BoardResourcePage::resolveActions() checked recordKey first and routed it to the board resolver, which could not find it, silently dropping the mounted entry. The open modal closed, and the orphaned entry left the action stack unusable.
Board detection now runs after schema and table detection, matching the ordering in Filament's own InteractsWithActions::resolveActions(). This also covers the repeater's delete, reorder and clone actions, Select::createOptionAction(), Builder, and nested action modals. BoardPage was never affected.
->cardActions([
Action::make('view')
->url(fn (Task $record): string => TaskResource::getUrl('view', ['record' => $record])),
])
->cardAction('view')Clicking a card did nothing at all: no navigation, no modal, nothing logged. The card blade hardcoded a mountAction() handler, and getCardAction() returns only a name, so the action's url was never read. The same action rendered correctly as a link in the card's actions dropdown.
The card now renders as an anchor when the action has a url, using the same generate_href_html() helper Filament's table rows use for recordUrl, so SPA mode, prefetching, modifier keys and ->openUrlInNewTab() all behave as they do elsewhere in the panel.
The url decides, with no check of the action's modal state. That is Filament's rule: ListRecords::table() has recordAction() skip any action whose getUrl() is filled and recordUrl() take it instead. An action declaring both a url and a modal therefore renders as a link and never opens that modal, in a board card exactly as in a table row. Declare one or the other. Only ->postToUrl() actions stay on the click handler, since a POST needs a form rather than an anchor.
composer update relaticle/flowforge. Nothing to change in your board configuration.
build(deps): bump nuxt from 4.4.6 to 4.4.8 in /docs in the npm_and_yarn group across 1 directory by @dependabot [bot] in #136
Full Changelog: v4.0.13...v4.0.14
ci: open changelog PR instead of pushing to protected branch [4.x] by @ManukMinasyan in #125
Full Changelog: v4.0.12...v4.0.13
ci: make release workflow idempotent [4.x] by @ManukMinasyan in #117
Full Changelog: v4.0.11...v4.0.12
Add enum helper to column by @paulhennell in #100
Full Changelog: v4.0.10...v4.0.11
Full Changelog: https://github.com/relaticle/flowforge/compare/v4.0.10...v4.0.11
build(deps-dev): bump follow-redirects from 1.15.11 to 1.16.0 in the npm_and_yarn group across 1 directory by @dependabot [bot] in #111
Full Changelog: v4.0.9...v4.0.10
build(deps): bump dependabot/fetch-metadata from 2.5.0 to 3.0.0 by @dependabot [bot] in #98
Full Changelog: v4.0.8...v4.0.9
Fix nested fi-page-header-main-ctn wrapper causing board page headings to sit lower than resource list pages
fi-page-header-main-ctn wrapper causing board page headings to sit lower than resource list pages?search=) matching existing filter URL persistencegap-x-5 instead of gap-5 on board column containerHeader Toolbar: New headerToolbar() method renders filter/search controls inline with the page title for a compact board layout. Supports Dropdown and
headerToolbar() method renders filter/search controls inline with the page title for a compact board layout. Supports Dropdown and Modal filter layouts. Disabled by default for backward compatibility.fi-ta-ctn) instead of inline JS workaroundTablesRenderHook::FILTER_INDICATORS in header toolbarheaderToolbar() to API reference and customization guideFull Changelog: https://github.com/relaticle/flowforge/compare/v4.0.6...v4.0.7
Nothing published for this version
Cast record ID to string in formatBoardRecord() to prevent JavaScript precision loss with large integer IDs (snowflakes) (#88, #92)
formatBoardRecord() to prevent JavaScript precision loss with large integer IDs (snowflakes) (#88, #92)fix: support standalone Filament usage without panel dependency by @ManukMinasyan in https://github.com/relaticle/flowforge/pull/86
Full Changelog: https://github.com/relaticle/flowforge/compare/v4.0.3...v4.0.4
Nothing published for this version
Fixed card ID attributes not being present for drag operations, preventing potential errors during card moves
Import DB facade for database operations in HasBoardRecords
Filament Version: Now requires Filament 5.x (was 4.x)
See Upgrading Guide for migration instructions from v3.x.
Fixing search and filter styling to match Filament table layouts by @Luckcatcher in #109
Full Changelog: v3.0.6...v3.0.7
Backport scroll improvements to v3 by @cheesegrits in #108
Full Changelog: v3.0.5...v3.0.6
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Position column type changed from VARCHAR to DECIMAL(20,10)
VARCHAR to DECIMAL(20,10)ext-bcmath PHP extension requiredRank.php service (Lexorank algorithm)DecimalPosition service with BCMath-based position calculationsPositionRebalancer service for automatic gap managementMaxRetriesExceededException for conflict handlingflowforge:diagnose-positions command - detect gaps, inversions, duplicatesflowforge:rebalance-positions command - redistribute positions evenlygetKeyName()UPGRADE.md migration guide for v2.x usersflowforgePositionColumn() now creates DECIMAL(20,10)flowforge:repair-positions command now interactive with multiple strategiesRank.php serviceSee UPGRADE.md for detailed migration instructions from v2.x.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
See v2.x branch for v2.x changelog.
See v2.x branch for v2.x changelog.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
### Added - Initial release
Bump dependabot/fetch-metadata from 2.3.0 to 2.4.0 by @dependabot in https://github.com/Relaticle/flowforge/pull/10
Full Changelog: https://github.com/Relaticle/flowforge/compare/0.2.0...0.2.1
Full Changelog: https://github.com/Relaticle/flowforge/compare/0.1.9...0.2.0
Full Changelog: https://github.com/Relaticle/flowforge/compare/0.1.9...0.2.0
Full Changelog: https://github.com/Relaticle/flowforge/compare/0.1.7...0.1.9 Full Changelog: https://github.com/Relaticle/flowforge/compare/0.1.7...0.
Full Changelog: https://github.com/Relaticle/flowforge/compare/0.1.7...0.1.9
Full Changelog: https://github.com/Relaticle/flowforge/compare/0.1.7...0.1.9
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →