This repository was archived by the owner on Jul 6, 2026. It is now read-only.
Releases: ar-gen-tin/odds
Releases · ar-gen-tin/odds
Release list
v1.0.2 — Icons + Price Alerts + Dynamic Menubar
odds v1.0.2
Icons Restored
- App Icon: #6C Cyber Matrix 3×3 (color SVG + .icns)
- SVG Assets: color, mono-dark, mono-light, menubar template, full logo
- AppIcon.icns bundled in SupportFiles/
New Features
- Dynamic menu bar icon — color-coded triangle reflecting market trend (green=bullish, red=bearish, orange=neutral, gray=offline)
- Price alert system —
AlertManager+PriceAlertmodel, fires macOS notifications when market crosses threshold - Hide from Dock —
NSApp.setActivationPolicy(.accessory)via AppDelegate - Makefile —
make run(dev build),make release(signed),make dmg(distributable) - Info.plist — LSUIElement, bundle ID, ATS config
Tech
MenuBarIcon.swiftrenders dynamic NSImage with NSBezierPathPriceAlert.swiftmanages persistent alerts with UNUserNotification- Zero new dependencies
v1.0.1 — Team Review Polish
odds v1.0.1
8-agent parallel code review — 18 issues fixed across security, design, UX, and code quality.
Critical Fixes
- NSCursor stack corruption — hover on rows without tap handler would corrupt cursor state
- Timer thread safety — search typing indicator mutated @State off main thread
- Silent add failure — search results showed success checkmark even when add was rejected
Design Improvements
- WCAG AA contrast —
text3lightened from #3D3D50 to #52526A (~3.5:1 ratio) - Column alignment — header and row columns now share theme tokens, stay aligned when sparklines toggled
- Spacing system — ExpandedAreaView padding aligned to 12px system
- Unused tokens removed —
limeDim,redDim,footerSmall,buttonSmallcleaned up
Code Quality
- Unified API parser — merged duplicate
eventToMarket/parseEventDictinto singleparseEvent - @mainactor on MarketStore — compile-time enforcement of main-thread mutations
- Removed duplicate formatDelta — consolidated to
Fmt.delta() - DateFormatter cached — no longer recreated on every settings render
UX Polish
- Full i18n coverage — empty states, footer "NO DATA" now localized (EN/中/日)
- Footer ticker deduplication — watchlist items no longer appear twice in ticker
- searchError clears properly — error message dismisses when query shortened
v0.1.0 — Initial Release
odds v0.1.0
A terminal-styled prediction market tracker living in your macOS menu bar.
Features
- Live feed — real-time Polymarket data with configurable refresh (10s / 30s / 60s)
- Watchlist — save markets, persisted across launches
- Search — debounced Polymarket API search with
[+ ADD]button - 5 tabs — ALL / TRENDING / POLITICS / CRYPTO / WATCH
- Expandable detail — sparkline, volume, 24h delta, action buttons
- Terminal aesthetic — IBM Plex Mono, dot leaders, ASCII sparklines
- 3-language i18n — English / 中文 / 日本語
- Settings — price format, sparklines, refresh rate, language
- Footer ticker — scrolling market tape with edge-fade masks
- Onboarding — boot-sequence animation
Design Details
- LIVE indicator with breathing pulse animation
- Smooth hover transitions on all interactive elements
- Pointer cursor on clickable rows
- Button hover feedback (primary: fill inversion, secondary: highlight)
- Edge-fade masks on scrolling ticker
- Tab hover states
- Search auto-focus with animated typing indicator
Tech
- Swift 5.9 / SwiftUI / macOS 14+
- 22 source files, ~2,400 lines
- Swift Package Manager build
- Zero dependencies (system frameworks only)
Requirements
- macOS 14.0 (Sonoma) or later