Releases: sunoj/cmview
Releases · sunoj/cmview
Release list
cmview 1.0.19
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
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
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 volume0— 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
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
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
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 siblingForEachs 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
Fixed
- The optional glass UI now renders a real frosted-glass blur instead of plain
see-through transparency. The backdrop'sNSVisualEffectViewwas being given a
sub-1alphaValue, 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
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
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
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.