Skip to content

Releases: sunoj/cmview

cmview 1.0.19

Choose a tag to compare

@sunoj sunoj released this 25 Jun 08:35

Added

  • Data source picker (Settings → Data): public Pyth Hermes (default) or the
    hosted keyed channel. Hosted streams real-time from hermes-api.mings.work and
    loads chart history from pyth-benchmarks.mings.work (a drop-in benchmarks with
    the TradingView shim), both Bearer-authenticated. Paste an existing key, or
    request a free one in-app by email; a "+" renews it.
  • Product icons in the menu-bar dropdown rows (brand-color text tiles).
  • The menu-bar dropdown now shows the current symbol at the top (under
    "Current") when it isn't already a favorite.

Changed

  • Icon fallback is now a brand-color tile: the real image is preferred (bundled
    crypto coin art, a stock's network logo, or an FX flag); when none exists it
    falls back to a tile — crypto a circle with a brand glyph (₿ Ξ ◎ ◆ …), stocks a
    rounded square with the company initial, else a colored letter tile.

Auto-update: Sparkle 2.6.4 embedded.

cmview 1.0.18

Choose a tag to compare

@sunoj sunoj released this 25 Jun 06:22

Added

  • Product icons across the watchlist, chart header, and grid panes.
  • Crypto uses the bundled coin logo set (spothq/cryptocurrency-icons, CC0); FX
    shows currency flags; stocks load company logos on demand (cached); anything
    without an icon falls back to a colored letter monogram.

Fixed

  • Dragging the sidebar divider no longer flickers: the overlay-scroller styler
    only applies once instead of every frame, and the chart redraws cleanly during
    live resize (layerContentsRedrawPolicy = .duringViewResize).

Auto-update: Sparkle 2.6.4 embedded.

cmview 1.0.17

Choose a tag to compare

@sunoj sunoj released this 25 Jun 05:21

Added

  • Multi-chart layout: view 1, 2, or 4 product charts in one window (toolbar
    layout buttons). Each pane has its own symbol picker; the active pane is
    highlighted and the sidebar/selection target it. Layout + per-pane symbols
    persist. All panes share the timeframe and chart options. Add a symbol to the
    grid from the watchlist via right-click → "Add to Multi-Chart" or the quick
    button that appears on row hover (grows the grid 1→2→4 and focuses it).
  • The sidebar width is now adjustable — drag the divider between the watchlist
    and the chart; the width is remembered.
  • Multiple windows: ⌘N (or the title-bar button) opens additional independent
    chart windows that share live data but track their own symbol/timeframe.
  • The header change % is now switchable between rolling 24h and today's open —
    click it to toggle; the current basis label shows on hover. Sidebar rows and
    grid panes follow the same setting.

Changed

  • The change % now defaults to rolling 24h (was "since today's open"). It was
    previously a calendar-day change whose window grew from 0 to 24h over the day.
  • Double-clicking an empty area of the title bar now zooms the window (fills the
    screen), matching standard macOS behaviour.

Fixed

  • Sidebar: the watchlist scrollbar is now a thin auto-hiding overlay (was a
    thick legacy bar). Symbol/name column grows with the sidebar so full names
    show when widened. Resizing the sidebar is smooth (no longer writes to disk on
    every drag delta) and the divider shows a subtle bar that thickens on hover.

Removed

  • The volume bars (and the "Vol" toggle / volume-spike markers). Pyth is a price
    oracle and reports no trading volume — its history returns volume 0 — so the
    bars shown were synthetic. All fabricated volume has been removed; event
    markers and AI captions no longer reference volume.

Auto-update: Sparkle 2.6.4 embedded.

cmview 1.0.16

Choose a tag to compare

@sunoj sunoj released this 24 Jun 07:58

Fixed

  • The main chart no longer flickers or "breathes" (stretches vertically) under
    real-time updates. The Y-axis auto-range was recomputed from the live data
    every frame, so each tick nudged it and remapped the whole plot; the range is
    now quantized to gridline-step boundaries and only changes when price actually
    crosses a step, so the chart holds still while the forming candle updates.

Changed

  • The sidebar sparklines now show a fixed last-24-hour price line for every
    symbol, independent of the selected chart timeframe. Previously each row's
    mini-line tracked the chart's timeframe history (or, for unselected symbols,
    only ticks accumulated since launch), so the lines were inconsistent. They now
    load a dedicated 24h hourly series, refresh every 20 minutes, and the live
    price nudges the final point.

Auto-update: Sparkle 2.6.4 embedded.

cmview 1.0.15

Choose a tag to compare

@sunoj sunoj released this 24 Jun 07:38

Fixed

  • The price chart no longer flickers under real-time updates. It was repainting
    every frame at 30fps regardless of whether anything changed, plus a forced
    repaint on each ~5fps UI pump — on the layer-backed (glass) view this shimmered
    constantly. The chart now repaints only when the displayed candles/confidence
    actually change (or on hover/zoom/pan), so live ticks update smoothly.

Auto-update: Sparkle 2.6.4 embedded.

cmview 1.0.14

Choose a tag to compare

@sunoj sunoj released this 24 Jun 07:22

Added

  • Real-time price streaming over Pyth Hermes Server-Sent Events
    (/v2/updates/price/stream). Prices now update sub-second via server push
    instead of the previous ~3s HTTP polling. Polling is kept only as a fallback
    that fires when the stream goes quiet, and the stream auto-reconnects on drop.

Changed

  • Removed all simulated/synthetic price generation. Prices, candles, and
    sparklines now come exclusively from real Pyth data. Until a real tick (and
    real history) arrive, the UI shows a loading state; when the network is
    unreachable the last real value simply holds instead of drifting.

Fixed

  • A newly favorited symbol now shows its star immediately. The sidebar's
    favorite and class groups are sibling ForEachs keyed by symbol, so moving a
    symbol between them collided on SwiftUI identity and reused the stale row;
    rows are now identified per-group so the star renders without a hover/relaunch.

Auto-update: Sparkle 2.6.4 embedded.

cmview 1.0.13

Choose a tag to compare

@sunoj sunoj released this 10 Jun 09:39

Fixed

  • The optional glass UI now renders a real frosted-glass blur instead of plain
    see-through transparency. The backdrop's NSVisualEffectView was being given a
    sub-1 alphaValue, which makes it see-through and disables the material blur;
    it's now kept fully opaque so the frost comes from the material itself.

Auto-update: Sparkle 2.6.4 embedded.

cmview 1.0.12

Choose a tag to compare

@sunoj sunoj released this 10 Jun 05:11

Changed

  • Release builds are now notarized and stapled by Apple, so CMView opens with a
    normal double-click instead of the "Apple could not verify…" Gatekeeper block.

Auto-update: Sparkle 2.6.4 embedded.

cmview 1.0.11

Choose a tag to compare

@sunoj sunoj released this 10 Jun 04:24

Added

  • Added optional glass transparency for the main window and settings panels.
  • Added price-axis interactions: drag the right price axis to adjust vertical
    scale and drag inside the chart vertically to pan the visible price range.

Changed

  • The chart now keeps a default 10% right-side future area on first launch.
  • The right price axis now sizes itself for large price labels.

Fixed

  • Fixed WTI/USD live pricing by resolving it through Pyth's USOILSPOT feed.
  • Fall back to local/live candles when historical candles are unavailable so
    switching symbols no longer leaves the chart stuck behind a loading overlay.
  • Clip candlesticks, indicators, volume, and event markers to the chart plot
    area while preserving axis labels.

Auto-update: Sparkle 2.6.4 embedded.

cmview 1.0.10

Choose a tag to compare

@sunoj sunoj released this 09 Jun 10:33

Fixed

  • Prevent simulated fallback ticks from mutating loaded historical candles or
    day-range state before the first real Pyth price arrives. This removes
    spurious ETH fallback highs from intraday charts.

Auto-update: Sparkle 2.6.4 embedded.