[//]: # (This file is auto-generated by bin/refresh_remote_content) [//]: # (Do not edit manually - changes will be overwritten) # Karafka Web Changelog ## Karafka Web Changelog / 1.1.0 (Unreleased) - **[Feature]** Add a **Publish message** capability to the Explorer (Pro) to produce new messages with an optional key, headers and a typed, uploaded or tombstone payload. Gated by the new `#publish?` policy, enabled by default (#956). - **[Feature]** Aggregate the Health views per topic with drill-down to partitions, so they stay usable at scale. Thresholds are configurable under `config.ui.health.lags` (#112). - [Enhancement] Produce scheduled-message cancellations with `acks: 1` so the broker confirms receipt. - [Enhancement] Produce consumer commanding requests with `acks: 1` so the broker confirms receipt, and add a `Karafka::Web.producers` facade (#1241). - [Enhancement] After republishing, redirect to the partition that received the copy (#1239). - [Enhancement] Add `Karafka::Web.producer.acked`, an `acks: 1` producer variant, so user-initiated produces report the assigned offset (#956). - [Enhancement] Add a per-broker partition **Distribution** view to the Cluster section (Pro) that flags over and under-loaded brokers (#962). - [Enhancement] Inject Web UI kafka settings through `Karafka::Web::Config::DefaultsInjector`, following the Karafka pattern (#653). Requires karafka-core `>= 2.6.3`. - [Enhancement] Read the Pro commands and scheduled-messages topics with the same Web UI kafka settings as the rest of the UI. - [Enhancement] Tighten compaction on the `karafka_consumers_states` and `karafka_consumers_metrics` topics so superseded versions are removed sooner. - [Maintenance] Fix a recurring `/topics` link-validator flake in specs. - [Maintenance] Reorganize the Pro UI `Lib` pipelines into domain namespaces. No behavior change. - [Maintenance] Extract the consumer commanding forms into `Lib::Commands` and validate offset and pause values server-side (#1241). - [Maintenance] Extract the topic configuration edit flow into `Lib::Configuring` and reject empty values (#1241). - [Maintenance] Extract topic creation and repartitioning into `Lib::TopicCreation` and `Lib::Repartitioning` with server-side validation (#1241). - [Maintenance] Extract the Explorer republish flow into `Lib::Republishing` and validate the form before producing (#1244). - [Maintenance] Retry transient 5xx responses in the test link validator. - [Maintenance] Update the vendored `AirDatepicker` CSS to `3.6.0` to match the JS. - [Fix] Log consumers reporter dispatch failures instead of crashing the process when `produce_many_sync` times out (#1336). - [Fix] Sort Hash elements by key value even when the key name matches a `Hash` method. - [Fix] Reject a new partition count that is not greater than the current one with a form error instead of a broker error (Pro). - [Fix] Enrich each subscription group only once per consumer report. - [Fix] Reject seek offsets and pause durations that overflow librdkafka limits instead of crashing the running consumer. - [Fix] Return 403 for partition and topic commanding requests when commanding is disabled. - [Fix] Render tombstone messages on Web UI topics as a placeholder instead of failing the view. - [Fix] Render foreign or malformed messages in the Errors views as a placeholder instead of failing the view (#1243). - [Fix] Raise the `retention.ms` floor on the compacted consumer states and metrics topics to 1 month, so brokers that apply retention to compacted topics (e.g. Redpanda) keep the latest record. - [Fix] Stop live polling from overwriting an unsubmitted search or filter input. - [Fix] Report malformed partition count, replication factor and repartition values as form errors instead of truncating them. - [Fix] Show admin client configuration errors in the topic creation and configuration forms instead of returning a 500. - [Fix] Reject the reserved topic names `.` and `..` in the topic creation form (Pro). - [Fix] Reject a `config.ui.health.lags.skew_threshold` of `1` or less. - [Fix] Correct the republish form label for the source-headers checkbox (Pro). - [Fix] Hide internal topics from the per-topic config, distribution and removal pages when `internal_topics` visibility is off (Pro). - [Fix] Refresh the Health topic partition count after a repartition. - [Fix] Compare schema versions as semantic versions when running migrations. - [Fix] Rebuild the Web UI producer variants after a fork. - [Fix] Log producer tracking errors through the Karafka logger instead of printing them to stdout. - [Fix] Flag Health lag skew against the average of a topic's other partitions, so small topics can be flagged too. This is more sensitive at the same `skew_threshold` (Pro). - [Fix] Return 404 for unknown recurring tasks on trigger, enable and disable (Pro). - [Fix] Stop the Explorer search "latest" start offset from collapsing to the beginning of the topic (Pro). - [Fix] Return no results for an Explorer search scoped only to partitions that don't exist, instead of searching partition `0` (Pro). - [Fix] Report the Health per-topic lag trend as N/A instead of `0` when a topic has no measurable partitions, so sorting by Trend no longer intermixes no-data topics with real zero trends (Pro). ## Karafka Web Changelog / 1.0.1 (2026-08-24) - **[Feature]** Add a keyword filtering box to the data-heavy Web UI listings, with a field selector on flat listings (Pro) (#1073). - [Enhancement] Track producer errors from every WaterDrop producer, not only the Karafka and Web UI ones, without double-counting (#952). - [Enhancement] Show which listeners and jobs were still active in the error details of a `ForcefulShutdownError` (#979). - [Enhancement] Show replica and in-sync (ISR) broker ids instead of counts in the cluster and topic replication views, highlighting out-of-sync replicas (#1084). - [Maintenance] Bump `simplecov` to `1.1.1` and stop parallel test workers from overwriting each other's coverage results (#1214). - [Maintenance] Split `ApplicationHelper` into focused helper modules. - [Fix] Force `border-collapse` on the data tables so their 1px cell borders no longer render as a doubled 2px border under daisyUI 5.7 (which switched `.table` to `border-collapse: separate`). - [Fix] Make columns with a sort link actually sortable in the cluster replication, Pro broker config and health views. ## Karafka Web Changelog / 1.0.0 (2026-08-05) - **[Breaking]** Namespace the commanding pause configuration under `config.commanding.pause`: `config.commanding.pause_timeout` is removed in favor of `config.commanding.pause.timeout`. - [Enhancement] Link the topic, partition and offset in the Explorer's single-message metadata table to the Explorer, matching the Errors detail view (#1179). - [Enhancement] Link topics, partitions and offsets in the Errors detail view and Search results metadata to the Explorer (#1179). - [Enhancement] Make `assert_ok` surface the actual captured exception (class, message, backtrace) on a 500 instead of the generic error page body, making rare CI-only controller flakes diagnosable. - [Enhancement] Remove the "support Karafka Pro" banner from OSS Web UI pages. - [Enhancement] Declare the Web UI topics with Karafka's standalone `Karafka::App.declaratives.draw` API. - [Enhancement] Add `Warning.process` block to the test helper to turn Ruby warnings originating from the project code into test failures. - [Enhancement] Enable all opt-in Ruby warning categories in the test helper. - [Enhancement] Estimate the errors count with a constant number of Kafka roundtrips instead of one per partition. - [Enhancement] Allow for zero value in number of workers to support dynamic scaling of Karafka workers. - [Enhancement] Show the live worker count from `Karafka::Server.workers.size`, reflecting dynamic thread pool scaling. - [Enhancement] Track `poll_interval` (`max.poll.interval.ms`) per subscription group alongside `poll_age`. Consumer schema version bumped to 1.7.0. - [Enhancement] Replace token-based CSRF protection with header-based `Sec-Fetch-Site` protection. - [Enhancement] Include a spec file hash in generated test topic names (`it-{hash}-{uuid}`) for traceability. - [Enhancement] Add a standardized `empty_state` helper (icon, message, optional description and call-to-action) and use it in place of the ad hoc "There are no X" alerts across every empty-list view. - [Enhancement] Expand the internal `/ux` style-guide page to cover every UI component and add a reusable `ModalOpener` JS component. - [Enhancement] Add an `assert_ok` test helper that prints the actual status and a body excerpt on failure. - [Change] Require Karafka `>= 2.6.0.rc2` (was `>= 2.6.0.beta1`), which ships the nested `pause` routing DSL and the removal of the flat per-topic pause setters. - [Change] Require Roda `>= 3.100` (previously `~> 3.69`). - [Change] Use Karafka 2.6's group-type-agnostic `#group`/`group_id` accessors to prepare for share groups (KIP-932). Closes #1022. - [Fix] Land the Explorer time-based lookup on the latest page for a time beyond the last message. - [Fix] Declare the Web UI consumer topic pause strategy with the nested `pause(...)` routing DSL required by Karafka `2.6`. The custom backoff now applies only on Pro. - [Fix] Link the committed offset in the global Jobs view to the Explorer (#1179). - [Fix] Fix precision errors in process eviction timing and average utilization. - [Fix] Fix intermittent CI-only Pro Explorer spec failures caused by a Ruby object-shape warning. - [Fix] Harden the `wait_for_offset_visible` test helper to also poll the Web UI's own read path, not just the admin watermark offset, which alone did not guarantee the Web UI could read that offset. - [Fix] Fix two more flaky Pro Explorer `#recent` specs by replacing a fixed `sleep(0.1)` before the second produce with a `wait_for_message` poll on its offset, matching the sibling spec. - [Fix] Wrap long page titles and breadcrumbs instead of forcing horizontal scrolling. - [Fix] Stop long, unbreakable flash messages from overflowing their alert box; the message now sets `overflow-wrap: anywhere` and `min-width: 0` so it wraps inside the alert. - [Fix] Wrap long topic-tile names in the Pro Explorer, DLQ and Topics views and show the full name on hover. - [Fix] Make the `create_topic` test helper wait until partitions are readable, removing a flaky spec 404. - [Fix] Stop the array paginator from offering a "Next" link to an empty page when the last page is exactly full; it now reports the last page based on whether a further slice actually exists. - [Fix] Compute the dashboard average batch size with float division so it is no longer floored (e.g. 1000 messages over 47 batches now charts as `21.28`, not `21`). - [Fix] Include `waiting` jobs in the dashboard "Pending" counter. - [Fix] Remove the `:performance` object-shape warning from `Status::Context`. - [Fix] Silence the Ruby 3.4 `strict_unused_block` warning on delegated producer calls. - [Fix] Remove `cgi` as no longer needed. - [Fix] Exclude `test/` directory from gem releases to reduce package size. - [Fix] Update LinksValidator regexes to match the new `it-{hash}-{uuid}` test topic naming format, fixing test-order dependent failures in explorer controller specs. - [Fix] Fix alerts formatting for the distribution view. - [Fix] Show the raw payload with a warning instead of a 500 in the Pro Explorer when a JSON payload contains invalid UTF-8. - [Fix] Return 404 instead of a 500 from the Pro Explorer JSON export when a payload cannot be serialized, and hide the export button for such messages. - [Fix] Fix a batch of styling inconsistencies found in the #906 audit. - [Fix] Align the Health, Recurring Tasks and Scheduled Messages tabs and headings with the shared styles (#906). - [Fix] Replace the last `.row-table` with the standard `.data-table` and remove the unused CSS. - [Fix] Fix unreadable active outline buttons, such as the dashboard time-range selector, in both themes. - [Fix] Fix a flaky Pro Explorer spec by replacing the `produce` helper's fixed `sleep(0.1)` wait for a transactional commit control record with a `wait_for_offset_visible` poll. - [Fix] Render Pro-gated elements in OSS as disabled buttons with an "Available in Karafka Pro" tooltip instead of navigating to the upsell page. Closes #1106. - [Fix] Add `rel="noopener noreferrer"` to every `target="_blank"` link, closing a reverse tabnabbing vector. - [Fix] Fix a flaky Pro Explorer `#recent` spec. ## Karafka Web Changelog / 0.11.6 (2026-02-01) - **[Feature]** Pause or resume all partitions of a topic at once across all consumer processes from the Health Overview page (Pro). - [Enhancement] Speed up the partition command tracker during rebalances on topics with many partitions. - [Enhancement] Report and display the `group.instance.id` (static membership ID) per subscription group. Consumer schema version bumped to 1.6.0. - [Enhancement] Show `min.insync.replicas` and fault tolerance warnings on the topic replication page (Pro). - [Enhancement] Add `.options` CSS class for table columns containing action buttons, providing consistent `width: 1%; white-space: nowrap` styling to prevent column width fluctuation. - [Enhancement] Add commands topic presence status check for Pro users. Warns when the `karafka_consumers_commands` topic is missing, which is required for commanding features (pause, resume, trace). - [Enhancement] Disable "Quiet All" and "Stop All" buttons when only swarm or embedded consumers are running (Pro). These commands only work on standalone consumer processes. - [Enhancement] Use a fire-and-forget (`acks: 0`) producer variant for Web UI reporting, falling back to the original producer when it is idempotent or transactional. - [Refactor] Split the Status model into individual check classes with declared dependencies. - [Fix] Fix session keys to use strings instead of symbols for compatibility with Roda's session management. - [Fix] Fix actions and selector alignment in explorer and errors views by wrapping col-span elements in proper grid container. ## Karafka Web Changelog / 0.11.5 (2025-11-14) - [Enhancement] Utilize newly released Roda session management `:env_key` to isolate Karafka Web session from the main application session. ## Karafka Web Changelog / 0.11.4 (2025-11-01) - [Enhancement] Show placeholder rows for partitions with no data during rebalances in health view. The UI now displays all topic partitions (0 to N-1) with "No data available" indicators for partitions currently being rebalanced, preventing confusion from disappearing partitions. Consumer reports now include `partitions_cnt` field extracted from librdkafka statistics. Consumer schema version bumped to 1.5.0 (breaking change). - [Enhancement] Track and report UI errors originating from Roda/Puma web processes directly to Kafka errors topic for visibility and debugging. UI errors are dispatched asynchronously from web processes using a dedicated listener. - [Enhancement] Require Karafka 2.5.2 at minimum and migrate from string-based execution mode comparisons to the new ExecutionMode object API. - [Enhancement] Increase Web UI processing consumer backoff time to 30 seconds when encountering incompatible schema errors to prevent error spam during rolling upgrades. - [Enhancement] Add unique `id` field to error reports to track duplicate error occurrences. Error schema version bumped to 1.2.0 while maintaining backward compatibility with older error formats (1.0.0, 1.1.0) in the Web UI. - [Enhancement] Add container-aware metrics collection for Docker/Kubernetes environments. The Web UI now reports accurate container memory limits from cgroups (v1 and v2) instead of misleading host metrics, while maintaining full backward compatibility with non-containerized deployments. - [Enhancement] Add per-message report migration system to handle schema evolution for consumer reports. This allows transparent migration of old report formats (e.g., schema 1.2.x using `process[:name]`) to current expectations (schema 1.3.0+ using `process[:id]`), ensuring backward compatibility with reports from older karafka-web versions (≤ v0.8.2) that may still exist in Kafka topics. - [Change] Reduce `max_messages` for consumer reports processing from 1000 to 200 to prevent excessive memory usage in large-scale deployments. Processing 1000 messages at once can impact memory consumption significantly in big systems, while 200 messages provides better memory efficiency with negligible impact on throughput. - [Refactor] Extract metrics collection logic from monolithic Sampler into focused, single-responsibility classes (Metrics::Base, Metrics::Os, Metrics::Container, Metrics::Network, Metrics::Server, Metrics::Jobs) and consumer groups enrichment into dedicated enricher (Enrichers::Base, Enrichers::ConsumerGroups) for improved maintainability and testability. - [Testing] Add Docker-based integration tests for container metrics collection. Tests verify cgroup v1/v2 detection, memory limit reading, and fallback behavior across multiple containerized scenarios with different resource constraints. - [Fix] Fix "OS memory used" metric on Linux reporting same value as RSS instead of system-wide memory usage. The metric now correctly sums memory usage across all processes (or all container processes when running in Docker/Kubernetes) to match macOS behavior and original design intent. - [Fix] Fix crash when processing old consumer reports from schema versions < 1.3.0 (karafka-web ≤ v0.8.2) that used `process[:name]` field instead of `process[:id]`. The error `undefined method 'to_sym' for nil` would occur when these old reports were encountered during upgrades. Reports are now automatically migrated in-place to the current schema format. ## Karafka Web Changelog / 0.11.3 (2025-09-29) - [Enhancement] Upgrade DaisyUI to 5.1. - [Change] Remove Ruby `3.1` support according to the EOL schedule. - [Change] Normalize how libs and dependencies are required (no functional change for the end user) - [Fix] Fix a case where the states JSON would contain multiple entries for the same processes causing `JSON.parse` with `allow_duplicate_key: false` to fail. - [Fix] Fix incorrect reference to `IncompatibleSchemaError`. ## Karafka Web Changelog / 0.11.2 (2025-08-18) - [Enhancement] Make sure that TTL counters related `#inspect` are thread-safe. - [Change] Add new CI action to trigger auto-doc refresh. - [Change] Update daisyUI to `5.0.50` ## Karafka Web Changelog / 0.11.1 (2025-06-23) - [Fix] Extremely high error turnover from hundreds of partitions can cause a deadlock in the reporter for transactional Web producer. ## Karafka Web Changelog / 0.11.0 (2025-06-15) - **[Feature]** Provide ability to pause/resume partitions on running consumers via the UI (Pro). - **[Feature]** Provide ability to edit offsets of running consumers (Pro). - **[Feature]** Support consumers that have mismatching schema in the Status page. - **[Feature]** Provide ability to navigate to a timestamp in the Explorer (Pro). - **[Feature]** Provide ability to create and delete topics from the Web UI (Pro). - **[Feature]** Provide ability to manage topics configuration from the Web UI (Pro). - **[Feature]** Provide ability to manage topics partitioning from the Web UI (Pro). - **[Feature]** Provide ability to inject custom CSS and JS to adjust the Web UI. - [Enhancement] Support KIP-82 (header values of arrays). - [Enhancement] Include crawl-based link validator to the CI to ensure no dead links are generated. - [Enhancement] Allow for custom links in the navigation (Pro). - [Enhancement] Optimize topic specific lookups (Pro). - [Enhancement] Replace simple in-process metadata cache with user tracking version for multi-process deployments improvements. - [Enhancement] Move web ui topics configuration into config. - [Enhancement] Upgrade DaisyUI to 5.0 and Tailwind to 4.0. - [Enhancement] Make consumer sampler/stats gathering compatible across debian/alpine/wolfi OSes (chen-anders) - [Enhancement] Promote consumers lags statistics chart to OSS. - [Enhancement] Promote consumers RSS statistics chart to OSS. - [Enhancement] Remove state cache usage that complicated ability to manage topics. - [Enhancement] Improve flash messages. - [Enhancement] Improve handling of post-submit redirects. - [Enhancement] Provide better support for fully transactional consumers. - [Enhancement] Error out when `#setup` is called after `#enable!`. - [Enhancement] Use more performant Kafka API calls to describe topics. - [Enhancement] Inject `.action-NAME` and `.controller-NAME` body classes for usage with custom CSS and JS. - [Enhancement] Improve error handling in the commanding iterator listener (Pro). - [Enhancement] Introduce `trace_id` to the errors tracked for DLQ correlation (if in use) (Pro). - [Enhancement] Normalize how topics with partitions data is being displayed (`topic-[0,1,2]` etc). - [Change] Do not fully hide config-disabled features but make them disabled. - [Change] Remove per-consumer process duplicated details from Subscriptions and Jobs tabs. - [Change] Move to trusted-publishers and remove signing since no longer needed. - [Refactor] Make sure all temporary topics have a `it-` prefix in their name. - [Refactor] Introduce a `bin/verify_topics_naming` script to ensure proper test topics naming convention. - [Fix] Closest time based lookup redirect fails. - [Fix] Fi incorrect error type in commanding listener from `web.controlling.controller.error` to `web.commanding.listener.error` (Pro). - [Fix] Topic named messages collides with the explorer routes. - [Fix] Fix a case where live poll button enabling would not immediately start refreshes. - [Fix] Fix negative message deserialization allocation stats. - [Fix] Fix incorrect background color in some of the alert notices. - [Fix] Support dark mode in error pages. - [Fix] Fix incorrect names in some of the tables headers. - [Fix] Normalize position of commanding buttons in regards to other UI elements. - [Fix] Fix incorrect indentation of some of the info messages. - [Fix] Fix tables headers inconsistent alignments. - [Fix] Fix incorrect warning box header color in the dark mode. - [Fix] Fix missing breadcrumbs on the consumers overview page. - [Fix] Fix a case where disabled buttons would be enabled back too early. - [Fix] The recent page breadcrumbs and offset id are not refreshed on change. - [Fix] Direct URL access with too big partition causes librdkafka crash. - [Fix] Fix incorrect breadcrumbs for pending consumer jobs. - [Fix] Allow for using default search matchers in Karafka Web UI topics including Errors. - [Fix] Ensure that when flashes or alerts are visible, pages are not auto-refreshed (would cause them to dissapear). - [Fix] Time selector in the explorer does not disappear after clicking out. - [Fix] Tombstone message presentation epoch doesn't make sense. - [Fix] Fix incorrectly displayed "No jobs" alert info. - [Fix] Previous / next navigation in the explorer does not work when moving to transactional checkpoints. - [Fix] Errors explorer does not work with transactional produced data. - [Fix] Errors explorer in OSS does not have pagination. - [Maintenance] Require `karafka-core` `>= 2.4.8` and `karafka` `>= 2.4.16`. - [Maintenance] Update `AirDatepicker` to `3.6.0`. ## Karafka Web Changelog / 0.10.4 (2024-11-26) - **[Breaking]** Drop Ruby `3.0` support according to the EOL schedule. - [Enhancement] Extract producers tracking `sync_threshold` into an internal config. - [Enhancement] Support complex Pro license loading strategies (Pro). - [Enhancement] Change default `retention.ms` for the metrics topic to support Redpanda Cloud defaults (#450). - [Enhancement] Include subscription group id in the consumers error tracking metadata. - [Enhancement] Collect metadata details of low level client errors when error tracking. - [Enhancement] Collect metadata details of low level listener errors when error tracking. - [Fix] Toggle menu button post-turbo refresh stops working. ## Karafka Web Changelog / 0.10.3 (2024-09-17) - **[Feature]** Introduce ability to brand Web UI with environment (Pro). - [Enhancement] Provide assignment status in the routing (Pro). - [Enhancement] Support schedule cancellation via Web UI. - [Enhancement] Rename "probing" to "tracing" to better reflect what this commanding option does. - [Fix] Fix not working primary and secondary alert styles. ## Karafka Web Changelog / 0.10.2 (2024-09-03) - **[Feature]** Support Future Messages management (Pro). - [Enhancement] Do not live-reload when form active. - [Fix] Undefined method `deep_merge` for an instance of Hash. - [Fix] Prevent live-polling on elements wrapped in a button. - [Fix] Fix errors extractor failure on first message-less tick / eofed ## Karafka Web Changelog / 0.10.1 (2024-08-23) - **[Feature]** Support Recurring Tasks management (Pro). - [Enhancement] Optimize command buttons so they occupy less space. - [Enhancement] Improve tables headers capitalization. - [Enhancement] Prevent live-polling when user hovers over actionable links to mitigate race conditions. - [Fix] Fix partial lack of tables hover in daily mode. - [Fix] Fix lack of tables hover in dark mode. - [Fix] Normalize various tables types styling. - [Fix] Fix ranges selectors position on wide screens. ## Karafka Web Changelog / 0.10.0 (2024-08-19) - **[Breaking]** Rename and reorganize visibility filter to policies engine since it is not only about visibility. - **[Feature]** Replace Bootstrap with with tailwind + DaisyUI. - **[Feature]** Redesign the UI and move navigation to the left to make space for future features. - **[Feature]** Support per request policies for inspection and operations limitation. - **[Feature]** Provide Search capabilities in the Explorer (Pro). - **[Feature]** Provide dark mode. - [Enhancement] Set `enable.partition.eof` to `false` for Web UI consumer group as it is not needed. - [Enhancement] Allow for configuration of extra `kafka` scope options for the Web UI consumer group. - [Enhancement] Support Karafka `#eofed` consumer action. - [Enhancement] Provide topics watermarks inspection page (Pro). - [Enhancement] Use Turbo to improve usability. - [Enhancement] Round poll age reporting to precision of 2 reducing the payload size. - [Enhancement] Round utilization reporting to precision of 2 reducing the payload size. - [Enhancement] Validate states materialization lag in the status view. - [Enhancement] Promote topics data pace to OSS. - [Enhancement] Rename and normalize dashboard tabs. - [Enhancement] Enable live data polling on the first visit so it does not have to be enabled manually. - [Enhancement] Allow disabling ability to republish messages via policies. - [Enhancement] Display raw numerical timestamp alongside message time. - [Enhancement] Support `/topics` root redirect. - [Enhancement] Prevent explorer from displaying too big payloads (bigger than 1MB by default) - [Enhancement] Include deserialization object allocation stats. - [Enhancement] Improve how charts with many topics work. - [Enhancement] Count and display executed jobs independently from processed batches. - [Enhancement] Prevent karafka-web from being configured before karafka is configured. - [Enhancement] Use `ostruct` from RubyGems in testing. - [Enhancement] Indicate in the status reporting whether Karafka is OSS or Pro. - [Enhancement] Ship JS and CSS assets using Brotli and Gzip when possible. - [Enhancement] Introduce a `/ux` page to ease with styling improvements and components management. - [Enhancement] disallow usage of `