Changes
This release adds MessagePack serde support, Swagger UI for API documentation, consumer lag live updates, CSV export, and connector consumer group integration.
It also brings OAuth2 improvements for Schema Registry and proxies, ACL enhancements, and numerous UX and performance improvements.
This release is sponsored by Exness — thank you for supporting our recent development!
Thanks to all contributors and sponsors for supporting this release.
If your team relies on kafbat ui, consider sponsoring to help sustain ongoing work.
⚙️Features
- Serde: Support MessagePack @YeeaaahMan (#1741)
- Implement Swagger UI for API documentation @Rupa-421 (#1607)
- Implement consumer lag live updates @Leshe4ka (#1595)
- Implement CSV export for tables @Leshe4ka (#1495)
- KC: Display connector consumer group in grid @Leshe4ka (#1708)
- KC: Expose connector consumer group @germanosin (#1670)
🪛Enhancements
- Perf: Speed up consumer group list method @germanosin (#1790)
- Auth: Add OAuth2 support for Schema Registry @KyriosGN0 (#1645)
- Auth: Add OAuth2 proxy support for authentication requests @joshuaNathaniel (#1540)
- Auth: Implement custom field name for cognito authority extractor @Haarolean (#1459)
- ACL: Display ACLs per topic @germanosin (#1667)
- ACL: Add connector-level permissions for Kafka Connect @joshuaNathaniel (#1541)
- Serde: Impl Avro type for timestamp-nanos and local-timestamp-nanos logical types @wernerdv (#1620)
- Serde: Pass record headers to key deserializer @Ra9huvansh (#1768)
- Serde: Show null values and fully qualified names for avro messages @joshuaNathaniel (#1639)
- SR: Add support for publishing messages using all subject strategies @joshuaNathaniel (#1650)
- SR: Provide schema registry topic info @germanosin (#1671)
- SR: Expose subject names in messages @germanosin (#1668)
- SR: Add skip SSL option @germanosin (#1518)
- SR: Use getAllVersionsById for Karapace compatibility @joshuaNathaniel (#1702)
- Messages: Add relative timestamp config @germanosin (#1660)
- Messages: Add timeAgo function for relative timestamp display @amareshb (#1578)
- Audit: Strict mode for audit initialization @wernerdv (#1631)
- Audit: Add backoff retries during AuditService init @timchenko-a (#1598)
- Config: Hide exception stacktraces in web responses @Haarolean (#1461)
- Topics: Add additional fields to CSV export @germanosin (#1737)
- Brokers: Add cluster controller type + fix active node id for KRaft @Haarolean (#1586)
- UX: Per partition lag support, fix consumer group details link @Leshe4ka (#1750)
- UX: Add link to schema registry @Vixtir (#1746)
- UX: Add CG filter by state @Haarolean (#1693)
- UX: Improve accessibility of default dropdown button @Dugong42 (#1635)
- UX: Do not redirect users to error pages @Leshe4ka (#1674)
- UX: Display serde as link for SchemaRegistry @Vixtir (#1690)
- UX: Add host filter to ACL @Vixtir (#1661)
- UX: Change CEL filter managing logic @Vixtir (#1603)
- UX: Add DurationFormatted component for Topic configs @amareshb (#1625)
- UX: Align resource filter behaviour @Vixtir (#1600)
- UX: Enhance SendMessage component with KeepContents feature @HurSungYun (#1574)
- UX: Update TopicsCell styling in connectors @HurSungYun (#1525)
- UX: Kafka Connect instances search @Vixtir (#1519)
🔨Bug Fixes
- Messages: Fix infinite re-read loop when messagesPerPage is zero @Haarolean (#1706)
- Messages: Set max.poll.records=limit for message browsing consumers @Haarolean (#1699)
- Messages: Correctly delete active filter from locale storage @Vixtir (#1738)
- Messages: Fix cel on submit filter validation @Vixtir (#1709)
- SR: Support SR vendor-specific content-types @Haarolean (#1697)
- ACL: Impl principal validation @RotemCDos (#1688)
- RBAC: Fix unclear required access level for the audit topic @wernerdv (#1623)
- RBAC: Show connect cluster when user has connector permissions @joshuaNathaniel (#1621)
- Auth: Route JWKS requests through proxy for OIDC authentication @joshuaNathaniel (#1618)
- Auth: Add delegating auth manager to manage oidc and oauth2 @joshuaNathaniel (#1636)
- Auth: Make oauth2 field in config optional @germanosin (#1551)
- Auth: Fix getSubject is not supported @germanosin (#1547)
- KC: Prevent TypeError when config is undefined on Connect Config page @joshuaNathaniel (#1649)
- KC: Fix UI crash when connectors fail @mprusakov (#1647)
- Topics: Fix connectors tab permissions @germanosin (#1517)
- Topics: Fix 404 for Connectors tab @Leshe4ka (#1499)
- Topics: Fix consumer topics sorting when partitions are duplicated @Leshe4ka (#1729)
- Topics: Fix topic partitions grouping @germanosin (#1739)
- Topics: Fix analysis view rendering for empty topics @tmchow (#1781)
- Internal: Initialize topicIndex in ScrapedClusterState to prevent NPE @Haarolean (#1698)
- Internal: Fix prometheus endpoint and warn on label duplicates @germanosin (#1546)
- UX: Fix message row height shift on hover @HurSungYun (#1784)
- UX: Fix dark mode style issues @Leshe4ka (#1777)
- UX: Dont show brokers loader while refetching @Leshe4ka (#1747)
- UX: Break consumer id column text @Vixtir (#1682)
- UX: Cluster menu collapsed upon page refresh @JacksonJang (#1605)
Security
- Remove jackson overwrite @yeikel (#1772)
- Overwrite jackson core temporarily @yeikel (#1736)
- Fixes vulnerabilities on base docker image @kadirtaskiran (#1666)
- Configuration to hide exception stacktraces in web responses @Haarolean (#1461)
Contributors
@Dugong42, @Haarolean, @HurSungYun, @JacksonJang, @KyriosGN0, @Leshe4ka, @Ra9huvansh, @RotemCDos, @Rupa-421, @Vixtir, @YeeaaahMan, @amareshb, @dependabot, @dependabot[bot], @germanosin, @joshuaNathaniel, @kadirtaskiran, @mprusakov, @timchenko-a, @tmchow, @wernerdv and @yeikel