Metrix.Bar
Changelog
What's new in each Metrix.Bar release.
0.0.1
- Stop runaway background dashboard scripts and recover workers after execution or memory limits are exceeded.
- Save cleared optional dashboard inputs and preserve them across reloads and restarts.
- Restore the previous installation after a failed update, including removing newly added files.
- Retain loaded Playground sessions when browser storage falls back to memory, with isolated copies of session data.
- Reject non-finite numbers in dashboard input forms before saving.
- Preserve long dashboard refresh intervals after failed requests.
- Keep Linux release builds working with the prepared native tray dependency, including checkout paths with spaces.
- Keep dashboards running when removal cannot be saved, clear saved inputs and credentials when removing broken dashboards, and prevent startup recovery from restoring a removed dashboard.
- Preserve dashboard order when settings, shortcuts, or registry updates are saved concurrently.
- Restore Playground controls after cancelling validation and retain completed terminal file edits when a command is cancelled or times out.
- Enforce distinct IPv6 network origins and keep built-in file reads within their granted directories when parent paths are replaced.
- Keep controls and charts independent across keyed parents and routes, and preserve their state when keyed parents or table rows and columns move.
- Prevent image loading redraw races and release destroyed dashboard resources and dismissed toast handlers.
- Load interactive website gallery previews faster by streaming WASM download, decompression, and compilation in a background Worker.
- Prompt Windows users to quit the running app before reinstalling or upgrading with Setup, and stop silent installs before overwriting files when the executable is in use.
- Allow dashboard scripts to allocate up to 128 MiB per macrotask, up from 32 MiB, for larger workloads.
- Store structured dashboard history in isolated persistent SQLite databases, with multiple named databases, D1-style prepared statements and atomic batches, and verified basic CRUD with Kysely 0.27.6 and kysely-d1 0.4.0.
- Use native D-Bus tray integration on Linux without requiring Ayatana AppIndicator, keep settings accessible when no tray host is available, and report desktop capability limits without crashing.
- Show dashboards as loading instead of needing repair while they start with the app, soften the edge line of screen Sidebars, keep Registries rows steady while a source refreshes, and list Privacy just above About in Settings.
- Start the website Playground terminal and preview in parallel, show loading skeletons with actual startup stages and measurable download progress, and use system fonts in the preview to avoid large font downloads.
- Expand the website Playground to fill the browser window without restarting the terminal or preview, and keep editing responsive with background syntax highlighting and fewer redundant draft saves.
- Show screen Sidebars and metric tooltips as translucent panes in the selected theme, adapting to light, dark, and High Contrast appearances, with a glass lens under hovered icons and gentle entrance motion.
- Choose from six themes that change both the window background and app accent color, with smooth transitions between themes and light or dark appearance.
- Move through the app with one consistent, softer motion: pages switch with a brief fade, menus, dialogs, and dashboard Dialogs ease in, switches stretch while pressed, segmented controls cross-fade, theme and status colors blend without turning gray midway, and glows and area charts fade out without visible edges.
- Keep Windows releases available when signed update history exceeds the system's environment variable size limit, while retaining verified delta updates.
- Receive newer signed app builds of the same version, with full downloads for rebuilds and restart protection across release channel changes.
- Test official dashboard changes through a local development registry with isolated app data and same-version content updates.
- Independently toggle and configure Flyout or Dialog opening modes across five trigger sources (Menu Bar, Left Sidebar, Right Sidebar, Bottom Sidebar, and Keyboard Shortcut) for every dashboard in detail settings, retaining configured modes when an entrance is disabled.
- Toggle Keyboard Shortcuts independently alongside visual entrances in settings, record and clear key bindings on a dedicated Shortcut row, and open panels even when all visual entrances are turned off.
- Slide screen Sidebars in on expand and out on collapse (instant under Reduce Motion), trigger flush against edges with ~100 ms dwell even when the app is in the background, smoothly hide 300 ms after leaving, show single-line core metric tooltips without title headers, and present macOS Flyouts as native Popovers with arrows pointing to clicked icons while keeping the rail open (Windows and Linux use arrowless flyouts).
- Reorder dashboards directly in screen Sidebars by dragging icons while holding the primary platform modifier (Cmd on macOS, Ctrl on Windows and Linux) to update global dashboard order across the home page and other Sidebars, and synchronize dashboard order on macOS after Cmd-dragging menu bar icons upon the next Sidebar expand or main window refresh.
- Center dashboard Dialogs over the current display with a ~12% black high-transparency scrim (~40% in High Contrast), rounded-corner shadowed card, no close button, at least 10% margins on all four sides, internal scrolling, and outside-click or Esc dismissal, while real-device GUI validation on Windows and Linux desktop remains pending.
- Configure entrance placements, default opening mode, and per-source opening modes via local API
PATCH /v0/dashboards/:id/settingswithopen_modesobject replacement,nullor{}reset, and effective resolved modes for all five sources in responses. - Report unavailable screen positioning instead of substituting ordinary windows; Linux support targets X11 and Wayland with working gtk-layer-shell, while Windows and Linux desktop GUI validation remains pending.
- Close dashboard panels on macOS by clicking their menu bar icon or value again.
- Refresh the main window with a gradient backdrop, a floating content card, and redesigned buttons, switches, menus, and fields.
- Browse, review, and add dashboards in one Add Dashboard window that shows the list beside the selected dashboard’s details, lists every source at once or just the one you pick, and works with the arrow keys, Return, and double-click.
- See each dashboard’s value, state, last update, and shortcut at a glance on simpler Overview cards, and get a confirmation when you record or clear a shortcut.
- Copy a fix prompt from any broken dashboard and hand it to your agent, with the error, failing queries, source file, and local API details it needs.
- Toggle dashboard panels with a primary tray click on Linux with Ayatana AppIndicator 0.6.0+, and open panels directly from the tray menu.
- Create and refine dashboards in a browser playground with an fx terminal, interactive previews, web research, and locally saved workspaces.
- Add 29 native loading animations, row and cell selection with table cell menus, persistent tray placement, and Windows tray icons that follow the taskbar appearance.
- Show download progress for app updates and activity indicators while checking updates, adding dashboards, refreshing sources, and testing proxy connections.
- Offer an app restart after saving proxy settings on every platform, and support Windows system PAC/WPAD proxies.
- Keep one app instance, focus it on subsequent launches, and recover the local API after changing an occupied port.
- Align Windows toolbar actions with window controls, show the app brand in the sidebar header, and display local API errors in the sidebar.
- Toggle a fixed-width sidebar from the window toolbar while keeping dashboard selection and search state.
- Load smaller, lossless WebP dashboard previews on the website without reducing screenshot resolution.
- Start the website development server without importing preview metadata from Vite's public directory.
- Create and customize dashboards with an agent-first website and guided app installation, connection, and validation instructions.
- Style native dashboards with dynamic Tailwind-style
twutilities for layouts, typography, colors, states, transforms and shadows, with explicit property overrides and no CSS build step. - Load dashboard sources with extra index or entry fields by ignoring unrecognized metadata.
- Link active accessibility items and horizontally synchronized views by node key, and observe composition, text selection and paste changes in native text editors.
- Keep dashboard choice values distinct when options share the same label, using native MyGO selection behavior.
- Smoothly transition line, area, bar and pie charts between compatible data updates, respecting reduced motion preferences.
- Customize dashboard layouts with percentage splits, layout direction, and gradients.
- Query reduced transparency preferences and match contrast preferences accurately, keeping less and custom queries unmatched when the system cannot report them.
- Show descriptive labels in dashboard settings choices while saving the declared values.
- Duplicate dashboards with self-closing root elements correctly.
- Enable website page transitions before stylesheets load to avoid intermittent navigation animation failures.
- Refresh dashboard rendering and runtime dependencies, keeping analytics controls and short-link actions responsive with Preact 11.
- Use matching bundled Noto font subsets and a consistent default text size in website screenshots and interactive dashboard previews.
- Build Linux dashboard previews without root access by preparing missing text libraries in a verified user cache, including environments without apt or dpkg.
- Browse official dashboards in a grouped gallery with real screenshots, taller preview and source panels, and JavaScript highlighting inside .bar files.
- Prepare and reuse compiled dashboard preview runtimes while the browser is idle, with background decompression and faster interactive startup.
- Keep website canvas backgrounds consistent across fixed and scrolling layers on HDR displays.
- Preload search assets while the browser is idle, search documentation with background indexing, and keep the active section visible in the page outline.
- Hover over gallery cards to interact with dashboard previews, view sharper screenshots, and explore five dashboard categories on the homepage.
- Keep the documentation outline clear of the footer and download buttons consistently sized.
- Read streamlined cross-platform setup and dashboard development guides, an English OpenAPI contract, and a focused agent skill.
- View setup instructions and credential configuration guidance in dashboard catalog details, install sheets, input settings, and local API snapshots.
- Build and validate custom dashboard registries offline using a standalone, dependency-free builder script.
- Discover and inspect setup guidance across official dashboards in the public catalog and agent skill workflows.
- Read external system credentials through exact service/account permissions, with credential selection handled inside each dashboard.
- Shorten URLs from Sink and Dub with a native icon button, copy results and send a system notification; links on the current short-link domain are copied without creating another link.
- Keep dashboard image dimensions stable, use one module CDN per dashboard, and adapt Sink’s monochrome logo to the appearance.
- Load all Preact dashboard dependencies through esm.sh while keeping one pinned Preact instance per dashboard.
- Enlarge the preview heading and match its appearance controls to the rounded toolbar buttons.
- Show a quiet skeleton before the first dashboard preview and retain existing content while refreshing.
- Preserve official product icon artwork and proportions, with theme-aware vector colors.
- Restore saved dashboard inputs in the editor immediately after launch, before the first Worker result arrives.
- Refine main-window Remix icons, hover feedback and shortcut actions, and give new windows more room.
- Keep source checks, proxy saves and app update states in place without shifting nearby controls or content.
- Keep navigation icons visible in the compact sidebar, strengthen card headings and offer System, Light and Dark preview buttons.
- Preserve page and catalog scroll positions, keep refresh controls in place and confirm source removal without shifting the list.
- Restore the hidden 2048 game by activating its Worker when the game window opens.
- Default Crypto Wallet to Satoshi Nakamoto’s Bitcoin genesis address or Vitalik Buterin’s public Ethereum address, based on the selected network.
- Read Claude Code’s default macOS Keychain credentials directly in the background, with system authorization and file or protected-input alternatives.
- Use transparent official product marks that follow the main window’s light and dark appearance.
- Show usage rings at their full size immediately and open the current Codex usage page.
- Put Refresh first in tray menus and close the dashboard panel before opening its settings.
- Keep importing, exporting, input saves, credential checks and settings changes responsive while files, workers or system services are busy.
- Keep dashboard lists and source catalogs responsive during persistence, file checks and source updates, and preserve newer edits when background operations finish.
- Keep input file browsing responsive, restore controls after cancellation or errors, and ignore selections from a previous editing session.
- Launch local macOS builds as an app bundle so the application menu shows Metrix.Bar and metrixbar links have a declared URL scheme.
- Reinstall dashboards from a source after removing them, keeping their previous .bar files in a backup folder.
- Keep dashboard removal responsive with an in-window confirmation, background cleanup, progress and retry.
- Show embedded official product logos in dashboard lists, connection screens and the menu bar, including Sink and Codex.
- Redesign every official dashboard with loading skeletons, inline error recovery and icon-led layouts that follow the light and dark themes.
- Plausible, PostHog, Dub and Sink now share the Umami site view: 24H/7D/30D/90D ranges, comparisons with the previous period, a traffic chart and top pages, sources and countries.
- Weather finds places by city name, shows local times, an hourly curve and a 6-day forecast with temperature ranges.
- GitHub works without a token through the anonymous GitHub API and adds weekly star changes, a commit activity chart, the latest release, and open pull requests and issues.
- Claude Code and Codex show usage as session and weekly rings with per-model limits, extra usage and credits.
- Stocks no longer need an API key: follow up to 8 stocks, ETFs or indices with intraday to yearly charts and candlesticks from Yahoo Finance.
- Crypto Price follows a watchlist of up to 8 coins, and Crypto Wallet adds USD value, recent transactions and copying the address.
- Umami and Rybbit show "!" in the menu bar when sites fail to load instead of zero visitors online.
- Fix button labels that showed their text twice.
- Monochrome icons referenced by name now follow the light and dark themes in panels instead of turning black, and dashboard previews in the main window load named icons and images.
- A response a dashboard never reads no longer blocks its later requests for up to a minute.
- Umami and Rybbit use about 40 MB less memory each.
- Analytics dashboards use the host time zone for server-side chart buckets, including fractional-hour offsets and daylight saving time, without loading Intl or Temporal.
- Keep the last valid analytics snapshot when the service returns missing or invalid metrics.
- Prevent concurrent icon cache writes and late preview image callbacks from racing, and protect active response reads when reclaiming unused fetch slots.
- Contact support and share feedback directly from Settings or the website footer.
- Copy documentation reliably in Safari, retry failed source requests, and clean up copy feedback and download resources when leaving a page.
- Reduce memory use and latency when updating large charts, and keep the main window responsive with many dashboards.
- Initialize dashboard settings in a single atomic write, skip unchanged local storage writes, and keep saved values intact if persistence fails.
- Streamline the official catalog to 13 dashboards, show dashboard updates only when available, and confirm before quitting.
- Refine the main window after Pulse: colored dashboard icons with each dashboard's menu bar value in the sidebar, Overview cards led by that value, a Prompt for Agent card on the Overview, and Registries as its own page. Previews render exactly like the menu bar panel, and scrolling dashboard pages stays smooth.
- Save battery and requests: dashboards with no available entrance, preview, or open panel become idle until needed; configured, available Sidebars keep refreshing while hidden.
- Add dashboard sources on your local network (HTTP allowed for LAN hosts, any port over HTTPS), and reach registries through fake-IP or TUN proxies. The local API now defaults to port 6387.
- Set up network proxies and dashboard sources in clearer labeled forms.
- Browse your dashboards in a redesigned, immersive main window: the desktop shows through the sidebar, an Overview grid of status cards shows what needs attention at a glance, and each dashboard page puts the live preview on a stage beside an inspector for menu bar, shortcut, inputs, data and source. Filter dashboards from the sidebar and use keyboard shortcuts to add, import, refresh and navigate.
- Customize chart appearances with the
themeproperty to set custom color palettes, grid lines, candlestick tones, and entrance and hover animation timings, with automatic theme inheritance and memoized entrance animations. - Inspect data across all seven chart types with unified native floating overlay tooltips that smoothly transition between points, avoid window clipping, and retain accessibility announcements and keyboard navigation.
- Design donut and pie charts with configurable sector gap angles, outer dual-column labels with callout lines, custom tooltip value text, normalized percentage shares, and radial hover lift effects.
- Preserve normalized chart data and MinMax downsampling during translations with layered caching; update appearance in place and reproject official line/area Paths when the origin changes. Dense candlestick bitmaps account for device pixel origin phase.
- Build rich dashboards with native charts featuring legends, interactive tooltips with exact point matching, custom ticks and domains, reference lines, horizontal and rounded bars, category axes, theme-cached drawing for lines, areas, bars, and donuts, and new radar charts, candlestick sessions, pre-laid-out Sankey flows, and configurable entrance animations.
- Open and install dashboards with metrixbar links, including dashboard IDs with dots or Unicode; review permissions and inputs, confirm new or disabled sources, and import HTTPS .bar links with optional SHA-256 verification. Repeated links open matching installations, while changed direct downloads require confirmation with local edit protection and transactional rollback.
- Generate shared native dashboard previews from isolated Worker fixtures, including light and dark PNG screenshots and optional screenshots through the development check API. Replay the same permission-checked image and explicit fixture icon bytes in PNG and WebAssembly previews without live fixture network or cache fallbacks.
- Choose system, direct, or authenticated HTTP/SOCKS5 proxy connections in Settings, and test unsaved proxy settings before restarting to apply them.
- Standardize local API fields and strong ETag updates, return resource locations after creation, and align Web Crypto random values and badge promises with documented contracts.
- Return Bearer authentication challenges, enforce source request media types and body limits, and preserve null bodies for HEAD and bodyless Fetch responses.
- Install dashboards from official and community registries through a unified Add Dashboard modal with source tabs, search, permission and input previews, and cancellable background downloads.
- Group sidebar dashboards by category and sort them alphabetically by title, with fixed bottom access to Agent and Settings independent of dashboard selection.
- Manage dashboard registries in Settings with a permanently enabled official source, optional Awesome community catalog, and custom HTTPS index URLs that keep installed dashboards running when turned off.
- Check enabled registries every 24 hours and apply updates after confirmation, preserving compatible settings, secrets, shortcuts, and menu bar states, with local copy preservation and concurrency checks.
- Browse 16 official dashboards in the web Gallery with static previews, direct downloads, and a link to community dashboards.
- Expand the official collection with weather, crypto prices and wallets, end-of-day stock quotes via Alpha Vantage, generic HTTP endpoints, and custom workers; bundle only the GitHub repository dashboard.
- Track public GitHub repository statistics and releases without a token through UNGH, or configure a token for complete metrics through the official GitHub API.
- Refine Umami and Rybbit panels and add configurable live visitor notifications with background sampling and alerts that reset when traffic returns to the threshold or below.
- Keep menu bar digits evenly spaced on macOS as metric values change.
- Handle dashboard start, stop, expand, and collapse through unified lifecycle events, with a dedicated two-second cleanup budget before shutdown.
- Keep saved dashboard settings unchanged when writing fails, and preserve sidebar order when moving selected dashboards.
- Render Plausible chart dates correctly and accept null options for media-query listeners.
- Validate download release data consistently, show accurate binary file sizes, and keep documentation navigation aligned while scrolling.
- Control each dashboard panel from its script, including dashboards hidden from the menu bar, and exchange permission-scoped local and system text drag data with hover feedback.
- Play permission-scoped audio with per-player controls, exchange ordered clipboard representations with validation, and read immutable preferred-language and application locale snapshots.
- Query displays, desktop preferences, power state, clipboard formats and installed applications through dashboard system commands, with scoped file watches and automatic resource cleanup.
- Build dashboards with native Markdown, rich text editing, editable diffs, navigation history, multi-column table sorting and header menus, blur and scroll-edge materials, and multi-track timelines.
- Preserve editing history during controlled updates, finish queued Markdown images, dismiss custom toasts reliably, handle collapsible panel events, use opaque panels in high contrast mode, clear restored source errors, and include explicit licenses for built-in dashboards.
- Read the operating system’s network connection status through
navigator.onLinewithout probing public DNS servers. - Choose glass or solid dashboard panels with the
.barroot material attribute, preview matching control themes, add local glass materials, and resize split layouts. - Open each dashboard directly with its own global shortcut, including dashboards hidden from the menu bar.
- Toggle tray panels reliably, simplify their menus, keep dashboards when hiding menu bar icons, and browse GitHub repository metrics in a compact panel.
- Switch preview appearance with tabs, keep Umami and Rybbit colors in sync, simplify dashboard settings and footers, and show zero live visitors in the menu bar.
- Open dashboard panels reliably from the tray, keep empty menu bar titles blank, and show current actions on right-click.
- Preserve dashboard content dimensions across panels and scaled interactive previews, with charts filling the available width.
- Keep Umami and Rybbit controls responsive during requests, show an animated refresh indicator, and restore cached time ranges immediately.
- Explore Rybbit traffic with your domain and personal API key, automatically load accessible websites across organizations, and switch between website lists and details with time ranges, comparison metrics, charts, and breakdowns.
- Sign in to self-hosted Umami 2 dashboards with a username and password, alongside existing API key support.
- Download static module dependencies before importing dashboards and reuse permission-checked source caches when starting Workers offline; cache dynamic imports on first use.
- Describe dashboards with icons, descriptions, code versions, developer homepages, and license metadata, available through the local API and public dashboard index.
- Stream HTTP response bodies and upload multipart form data with standard Streams, FormData, and Buffer, with stream cancellation via AbortSignal.
- Verify signatures and generate HMAC digests with Web Crypto, format numbers, dates, and plural rules in English or Chinese using on-demand Intl APIs, and handle timezone-aware date arithmetic and durations with on-demand Temporal APIs.
- Connect directly to TCP and TLS services with Cloudflare Sockets (
cloudflare:sockets) or Node-compatible client modules (node:net,node:tls). - Check dashboard scripts, download TypeScript declarations, and reload dashboards from disk through the local API; failed replacements keep the working dashboard available.
- Check dashboard scripts and component properties from the command line, and export TypeScript declarations for editor hints.
- Reload dashboards on file events with
--watch, support atomic editor saves and automatic watcher recovery, and keep the working dashboard available when a replacement fails. - Restore the original app icon in Finder and the Dock.
- Check for signed updates, choose stable or preview releases, and set how often updates are checked in Settings.
- Store secrets with MyGO’s native credential storage, with a 256-byte escaped key limit and a 2560-byte value limit; keep access scoped to each dashboard’s declared secret inputs and re-enter existing secrets after upgrading.
- macOS menu bar icons no longer have a white background.
- Choose which dashboards appear in the menu bar and assign a global shortcut to each dashboard.
- Browse dashboards from Home and fix broken dashboards with visible errors, source access, and Reload while keeping saved inputs.
- Play 2048 with its original layout scaled to fit the window, and press Space to toggle the performance HUD.
- Keep dashboard node labels and fragments from being overridden by lower-priority component functions, and enforce the render size limit for node keys.
- Build native dashboard views with tree-building APIs from Preact, React, Vue, Snabbdom, and Mithril.
- Reorder items in lists and grid views with drag-and-drop, and build custom row layouts in lists.
- Bind scoped keyboard shortcuts to focused containers to trigger dashboard actions directly.
- Apply vertical gradient fills to chart series and adjust text letter spacing.
- Give picker options their own values with
{ label, value }, soonChangereturns the value instead of the label. - Use standard
Headers,Request,Response,Blob, andAbortSignal.timeout()in dashboard scripts, with correct decoding of non-English response text. - Check
navigator.onLinein dashboard scripts to skip requests while you are offline. - Switching the Umami time range now clears the old breakdowns right away instead of showing stale data.
- Saving only an API key now refreshes the dashboard, and select fields in dashboard settings show their options.
- Duplicating a dashboard no longer overwrites an earlier copy.
- Toggle dashboard panels programmatically from tray menu items or scripts, and inspect the running app version.
- The Umami dashboard now follows uma more closely, with sparklines, light and dark themes, an Open in Umami action, and a refresh whenever you open the panel.
- See and control exactly which local files each dashboard can read with explicit file permission declarations.
- Double-click the version number in Settings for a little surprise.
- Show custom images and user avatars in your dashboard panels using remote https URLs or inline data URIs allowed by network permissions.
- First release of Metrix.Bar, ready-made dashboards for your Mac menu bar: add one, enter a key, and it starts updating, with built-in dashboards for GitHub, Umami, Plausible, PostHog, Rybbit, Sink, Dub, Claude Code, and Codex usage.
- Pin up to 8 dashboards to the menu bar, each showing one or several values side by side or in a compact grid; click to open the panel, right-click to refresh, copy the value, or run the dashboard's own actions.
- Make dashboards interactive with buttons, toggles, pickers and text fields, and get a notification when a metric crosses a threshold you set.
- Open dashboard panels with their assigned shortcuts, and refresh or read dashboards from Shortcuts or
metrixbar://links. - Let your AI agent design dashboards for you through the local API and the skill from
npx skills add https://metrix.bar, and share them as.barfiles you can double-click to import. - New
.barv0 format powered by a JavaScript Worker runtime with scheduled updates and native component tree rendering. - Import standard ESM libraries directly in dashboards to build interfaces with tools like
htm. - Local HTTP API adds an event dispatch endpoint alongside live view snapshots and dashboard source management.
- Your data stays on your Mac, and API keys stay in the Keychain.
- Anonymous usage analytics help improve Metrix.Bar; you can turn them off anytime in Settings → Privacy. The app now ships its built-in dashboards inside the binary, so it works the same wherever you run it.
- Build richer dashboards with native data tables, a syntax-highlighted code editor, resizable split views, trees, and modal dialogs.
- Visualize metrics with donut and pie charts, compact sparklines, smooth curves, and interactive hover inspection.
- Integrate with the desktop using global keyboard shortcuts, native file open and save dialogs, Dock counter badges, and dark mode preference detection.
- Enhance interfaces with smooth transitions, keyframe animations, and hover or focus styling states.
- Customize tray context menus with checkable items, radio groups, keyboard shortcuts, and nested submenus.