| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| opensparrow-4.0.zip | 2026-10-06 | 3.8 MB | |
| opensparrow-4.0.zip.sha256 | 2026-10-06 | 86 Bytes | |
| README.md | 2026-10-05 | 3.9 kB | |
| Totals: 3 Items | 3.8 MB | 0 | |
Added
- JSONB column type — the admin schema editor offers
jsonbalongside the existing column types; JSON entered into such a column is validated before save (validate_jsonb_column), the value is stored via a::jsonbcast, and workflow form template fields support the new type. Existing tables gain the type per column on demand from the schema editor — no migration is needed. - Public read-only table sharing — admins can expose one table through a public link (
public/share.php?t=<token>): the token is matched against theshared_tablesconfig key, hidden, system and owner-restricted tables are refused, stale tokens are pruned, subtables/many-to-many/images are stripped from the shared schema, and the page sendsX-Robots-Tag: noindex, nofollow. - Many-to-many editing on the grid — a popover picker edits M2M relations in place, backed by the new
m2m_syncandm2m_optionsAPI actions (m2m_optionsgatesother_tableaccess; relation changes go through the record audit log). - Backup Tables management in Global Settings — retention settings, a list of stored backups with row counts and on-demand cleanup; retention is applied automatically after each backup (
backup_apply_retention). - Calendar month/week view toggle — the week view renders an hourly grid with an all-day bar; events can be moved in both views.
- Multi-column sorting on the grid — up to three sort rules with
timer_Npriority icons; combined with column filters in the server-side mode and repeated by "Load more" chunks. - Conditional icons for virtual columns and type/item icons on the admin config bars.
Changed
- Grid performance refactor — the default row cap is lowered to 1000 (per-table
initial_limitoverrides it), the four auxiliary loaders (comment counts, subtable counts, m2m rows, images) are served from a per-page-signature cache, cell saves update the row in place instead of reloading the table, and truncated tables switch to server-side search/sort/filters with one combined request per change. - Config autosave — the admin panel saves configuration automatically with optimistic versioning; the manual "Save config" button is gone.
- Schema and Views admin editors restyled — section cards, badges and shared helpers matching the rest of the admin panel.
- The m2m and image preview popups share a consistent 1-second hover delay.
Removed
- The legacy Cypress E2E suite — the
cypress/tree,cypress.config.jsandpackage-lock.jsonare dropped together with the npm tooling; end-to-end coverage is now manual, followingdocs/TESTING_GUIDELINES.md. The vanilla-only CI contract already forbade runtime dependencies.
Fixed
- Boolean column filters coerce values correctly instead of leaking
true/falsestrings into SQL. - Column filter types are validated before they reach SQL — a mismatch now answers
400with a message instead of a500from a failed cast. m2m_optionscan no longer be pointed at an unrelated table throughother_table.- Mojibake in the CRM demo texts (Polish characters in deal/status names) and refreshed demo deal close dates.
Upgrade notes
- No database migration is required and no configuration keys are removed by this release. The jsonb column type is added per table from the schema editor whenever it is first used.
- The release migration for 4.0 removes the legacy Cypress test tree and npm lockfile residues; on a fresh install they are absent anyway.
- Shared table links are configured in Admin → Sharing; only non-hidden, non-system, non-owner-restricted tables can be shared.
Full changelog: https://github.com/wrobeltomasz/OpenSparrow/compare/3.9...4.0