Releases: TerrifiedBug/tickerbar
Releases · TerrifiedBug/tickerbar
Release list
v1.5.1
Fixed
- Quotes keep refreshing after a market closes. Timer refreshes were skipped whenever no watchlist session was live, but that decision read the market state cached by the last fetch — and only a fetch could update it. The first closed session therefore froze the app for the rest of its life: it never noticed the market reopening, so the menu bar kept showing a price from hours or days earlier until TickerBar was relaunched. A closed market now only slows the cadence to every 15 minutes rather than stopping refreshes, so reopenings, holidays and half-days are all picked up without help.
- Waking the Mac refreshes straight away, instead of showing the prices from before it went to sleep until the next scheduled tick.
- The watchlist tops up quotes that have aged past one refresh interval as its panel appears, so what you open is not showing stale numbers.
- A failed refresh is retried after 5, 15 and 60 seconds before falling back to the normal cadence. The refresh moments after wake usually fails because the network isn't up yet, and that attempt used to cost a whole interval.
- Refresh and rotation now run in the common run loop modes, so both keep ticking while the watchlist panel is open. Both also carry a wakeup tolerance, letting macOS coalesce them with other timers instead of waking the CPU on their own.
v1.5.0
Changed
- Releases are now signed with an Apple Developer ID certificate and notarized by Apple. macOS no longer blocks the first launch, so the
xattr -dr com.apple.quarantineworkaround is gone. - Signing is now done by
xcodebuildarchive and export instead ofcodesign --deep. Sparkle documents--deepas a common source of signing errors, because the XPC services it bundles have different requirements from the rest of the app. Sparkle's framework, updater and helper tools are now signed inside-out. - The repository moved to
TerrifiedBug/tickerbarand the release asset is nowtickerbar.zip. GitHub redirects the old paths, so existing installs keep updating.
Removed
- Dropped the App Sandbox entitlements and the sandbox-only Sparkle installer service. No released build was ever sandboxed, because the old ad-hoc signing step applied no entitlements at all. Signing correctly would have switched the sandbox on for the first time and moved preferences into
~/Library/Containers, losing every existing watchlist, holding and alert. TickerBar ships through Developer ID rather than the App Store, where the sandbox is optional.
v1.4.1
Fixed
- Display-name editing now stays inside the menu-bar panel, so its controls respond to mouse clicks instead of dismissing the panel.
v1.4.0
Added
- Custom display names for watchlist stocks, replacing ticker and currency symbols in the menu bar and watchlist for more discreet tracking.
- Optional live pre-market, after-hours, and overnight prices with extended-session sparklines, compact watchlist indicators, and labeled details when Yahoo provides the data.
- Expandable portfolio summaries now show grouped position values and returns, while each stock’s details include its individual purchase and RSU lots.
Fixed
- Stock-row detail chevrons now have a larger click target, so expanding a row no longer requires pixel-perfect accuracy.
- The “Markets Closed” banner now remains visible during pre-market, after-hours, and overnight sessions, even when live extended-hours prices are enabled.
v1.3.1
Fixed
- In-app updates now work for Homebrew installs too. Previously the app disabled the Sparkle updater whenever it detected a Homebrew install and told you to "update with
brew upgrade"; now "Check for Updates" and automatic checks always work.
Changed
- Distribution moved to the shared
terrifiedbug/tapHomebrew tap:brew install --cask --no-quarantine terrifiedbug/tap/tickerbar. The cask setsauto_updates trueso Homebrew defers to the in-app updater.
v1.3.0
Added
- Multi-lot holdings — track multiple RSU (vested, value-only) and purchase lots per stock; add via "Add RSUs…" / "Add Purchase…" in the right-click menu. Cost basis is now optional, so awarded stock can be tracked for value without a purchase price
- Export & import of your watchlist, holdings, alerts, and base currency as JSON (Settings ▸ Backup)
- Percent-change and recurring price alerts, alongside the existing absolute-price one-shot alerts
- Expandable watchlist rows showing 52-week range, pre/post-market, and day range inline (previously hover-only)
- Home-screen WidgetKit widget showing live prices
- Notice when a holding is excluded from the portfolio total because its exchange rate hasn't loaded yet
LICENSEfile (MIT)
Fixed
- Yahoo Finance requests are now built with
URLComponents, fixing intermittent authentication failures when the session crumb contained a+, and allowing index symbols such as^GSPCto resolve - A missing exchange rate no longer silently values a foreign holding 1:1 (e.g. a JPY holding counted ~150× too high) — such holdings are excluded from the total with a notice instead
- Market-hours detection now accounts for the Tokyo and Hong Kong/Shanghai lunch breaks, and prefers Yahoo's reported market state when available
- The rotating menu-bar item now stays in sync with the rotation index
- Corrected the README build command and removed a stale settings entry
Changed
- Refresh now uses two batched requests (quote + spark) instead of one request per symbol, falling back to the per-symbol path when needed
- Internal:
StockServicesplit into focused units (networking, portfolio math, currency), with tests isolated from real preferences and CI running build + tests on every change
v1.2.3
Fixed
- Dropdown no longer leaves a large empty space after collapsing the inline Settings panel — the popover now resizes from the content height SwiftUI has actually committed (via GeometryReader) instead of the host view's lagging
fittingSize, which never updated on collapse
v1.2.2
Fixed
- Menu bar text size now also applies to the compact (two-line) layout, not just normal mode
- Dropdown no longer leaves an empty gap above its content after expanding and collapsing Settings — the popover now re-fits to its content height
v1.2.1
Added
- Menu bar text size setting (normal mode) — choose 10–16pt; defaults to the original 10pt
- Solid dropdown background option for readability over busy wallpapers
Fixed
- Menu bar dropdown no longer floats with an empty gap above its content
- Menu bar text is now legible on light menu bars (Light Mode) — uses adaptive system colors instead of hardcoded white
- Transient Yahoo Finance API errors now auto-retry (re-authenticate) and retain the last known prices instead of blanking the menu bar
v1.2.0
Added
- Portfolio tracking with cost basis — track shares owned and average buy price per stock
- Unified portfolio summary with automatic currency conversion to your chosen base currency
- Base currency setting (USD, GBP, EUR, JPY, CAD, AUD, CHF) in Settings
- Pre-market and after-hours prices via Yahoo Finance v7/quote API
- 52-week high/low data
- Rich tooltips on hover — day range, 52-week range, pre/post market prices, holdings details, market state
- Briefcase icon on stocks with holdings
- Holdings management in right-click context menu (add/edit/remove)
- Exchange rate fetching via Yahoo Finance FX pairs (e.g. GBPUSD=X)
Fixed
- GBX (pence) and ILA (agorot) sub-unit currencies now display correctly in pounds/shekels
- Price alerts use correct display price for sub-unit currencies
- Holdings cost basis defaults to correct display price for sub-unit stocks