Skip to content

Releases: OpenTradeOSS/OpenTrade

v0.2.9

Choose a tag to compare

@github-actions github-actions released this 29 Sep 04:58

What's new

  • Unattended runs stay awake. While an agent runs a scheduled task with no window open, OpenTrade now holds a macOS power assertion (pmset -g assertions shows it as OpenTrade: <agent> agent is running a scheduled task) so the Mac doesn't idle-sleep mid-run. Lid close and low battery still sleep the machine. (#32)
  • Honest run outcomes. A run ended by the maximum run time is recorded as a failure ("Hit the max run time") instead of a success. (#32)
  • Sleep-guard health is reported through the app's existing error telemetry. (#32)
  • README: updated Discord invite link. (#33)

Beta users on 0.2.9-beta.1 move to this release automatically.

v0.2.9-beta.1

v0.2.9-beta.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 22 Sep 20:39
0934b63

Beta of the next release.

  • Unattended (headless) agent runs now hold a macOS power assertion so the Mac doesn't idle-sleep mid-run (visible in pmset -g assertions).
  • A run ended by the max-run-time limit is recorded as a failure ("Hit the max run time") instead of a success.
  • Sleep-guard health is reported through the app's existing error telemetry.

v0.2.8

Choose a tag to compare

@github-actions github-actions released this 21 Sep 00:04

What's new

Beta update channel. Settings → About gains a Receive beta updates switch. Installing a beta build turns it on automatically; stable installs never see a beta unless they opt in. Before upgrading an existing database, the app now snapshots it to ~/.opentrade/backups/ so a beta can be rolled back by hand. If you are on v0.2.8-beta.1, this is the stable build of that line and the updater will offer it. (#28)

Wake history shows what actually happened. Monitor tab history rows now record whether a timer or monitor wake succeeded, failed (with the reason — billing, rate limit, auth, network), or was stopped, along with the fire time and the trigger's prompt. A turn that ends in an API error is no longer reported as a success. (#27)

Schedules stay pinned to their timezone. Each cron schedule is stamped with the timezone it was created in, so a system timezone change followed by a restart no longer shifts every timer by hours. Existing schedules are pinned to the machine's current zone on next launch, and the Scheduled view shows the pinned zone. (#26)

Agents schedule their own follow-ups. New agents are told to set a timer or monitor whenever they learn of a future moment that matters — an earnings date, a macro print, a price they are waiting on — instead of assuming they will be woken. Agents created before this release keep their existing instructions until refreshed. (#30)

Other

  • Telemetry: wake_finished replaces headless_run_finished and covers both headless and live-session wakes; feedback diagnostics include seven-day wake counts. (#27)
  • GitHub releases are titled after their tag; the README lists the supported instruments. (#29)

Full changes: v0.2.7...v0.2.8

0.2.8-beta.1

0.2.8-beta.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Sep 21:26
a94b076
Merge pull request #28 from OpenTradeOSS/feat/beta-release-channel

Add a beta release channel with an in-app opt-in and pre-migration DB snapshots

0.2.7

Choose a tag to compare

@github-actions github-actions released this 07 Sep 14:19
v0.2.7

Release v0.2.7

v0.2.6

Choose a tag to compare

@github-actions github-actions released this 01 Sep 00:49

What's new

Options and crypto trading. Agents can now trade options and crypto alongside equities, with the same human approval gate:

  • Approval cards name the actual contract — BUY 1 TLT $86C 11/20/26 to open @ $0.79 limit — est. $79.00 — with the estimated cost including the contract multiplier. Crypto orders show coin quantities and dollar notionals; option exercises get their own priced cards.
  • Option and crypto orders join the order ledger, so fills, cancellations, and rejections reach their terminal state in Activity and fire notifications.
  • The Portfolio tab shows three collapsible sections — Equities, Options, Crypto — and the last column now cycles between P&L, % gain, and market value when you click its header. Hidden balances also mask P&L dollars.
  • Today's account change includes option positions (contract units, shorts inverted) and crypto (against the midnight-ET boundary).

A single source of truth for what requires approval. Every money-moving Robinhood tool — equity, option, and crypto orders plus option exercises — is gated from one audited classification table that both agent harnesses derive their configuration from.

Fixes

  • Terminal: ended the auto-respawn/reattach cascade that could ping-pong spawns after a session exited on launch (#16).
  • Telemetry: updater errors carry a machine code, and headless run failures report a sanitized failure category (#14, #18).

Full changes: v0.2.5...v0.2.6

v0.2.5

Choose a tag to compare

@github-actions github-actions released this 22 Aug 02:50

OpenTrade lives in your menu bar

Agents have always kept running in the background after you close the app — but quitting also killed the only process that could tell you about it. OpenTrade now stays in the macOS menu bar, so "closed" no longer means flying blind.

New

  • A menu bar item shows each agent with its status and when it was last active, how many orders are awaiting your approval (the count also sits beside the icon), and a Recent submenu of the last ten notifications — durable, so it survives restarts and reboots. Clicking an agent opens the app straight to it.
  • ⌘Q now retreats to the menu bar instead of exiting (the Docker Desktop model): the window and dock icon go away, agents keep running, and notifications keep arriving. Quit OpenTrade in the menu exits the app itself; Quit OpenTrade Completely (also available in Settings → General) stops the background agent host too — nothing runs until you reopen.
  • A "Show OpenTrade in the menu bar" setting (General, on by default) turns the whole behaviour off and restores a plain ⌘Q.
  • When an agent has no timers or monitors set up, the Monitor tab now explains what they are and how to ask your agent for one.

Changed

  • Broker errors are diagnosable now: they carry a bounded machine error code and a source-mapped stack fingerprint, and are recorded to a durable local log — still never messages, paths, tickers, or amounts.
  • A slow or dropped Robinhood connection is classified as an outage, not an app error (MCP request timeouts and closed connections join the transient-network list).
  • Telemetry now attaches build metadata (version, platform) to the anonymous install id, so upgrade adoption is visible without collecting anything new.

Upgrade notes

Existing installs upgrade in place: the database migrates additively (a new per-agent "last active" column and a small table for recent notifications) and your Robinhood session is kept.

Full Changelog: v0.2.4...v0.2.5

v0.2.4

Choose a tag to compare

@github-actions github-actions released this 17 Aug 22:21

Quieter, more useful telemetry

A small follow-up to v0.2.3, driven by its first day in the wild. No user-facing behaviour changes.

Changed

  • A laptop sleeping is no longer reported as an app error. When the network drops mid-poll (sleep/wake, a Wi‑Fi handoff, a VPN flap), OpenTrade now records a single broker_offline event when the outage begins and a single broker_online (with how long it lasted and how many polls it cost) when it ends — instead of one app_error per failed poll. Genuine failures still report as app_error, so that signal stays meaningful.
  • Network errors now carry their real code. Node's fetch reports connection problems as a bare TypeError; the actual cause (ENOTFOUND, ECONNRESET, UND_ERR_CONNECT_TIMEOUT, â€Ķ) is now captured — still just a bounded machine code, never a message or path.
  • Connect attempts are counted (broker_connect_started, interactive vs. silent), so a Robinhood connection that never completes can be distinguished from one that was never tried.
  • A browser that fails to open for the Robinhood consent is now reported, rather than being indistinguishable from a consent the user abandoned.

Upgrade notes

No schema or data migration. Existing installs keep their Robinhood session.

Full Changelog: v0.2.3...v0.2.4

v0.2.3

Choose a tag to compare

@github-actions github-actions released this 17 Aug 11:17

Robinhood connection: no more stuck "Connectingâ€Ķ"

This release fixes a class of Robinhood connect failures seen during onboarding, and adds a way out when a consent flow is abandoned.

Fixed

  • Connect could hang forever after closing the Robinhood tab. The OAuth consent waited on a fixed local port with no timeout and no way to cancel; a closed browser tab left the daemon spinning on "connecting" for the life of the process, and every later Connect failed with EADDRINUSE. The loopback now binds an ephemeral port per consent (RFC 8252 §7.3), only proceeds once it is actually listening, and times out after 10 minutes.
  • A second Connect click no longer collides with a pending one — it supersedes it: the abandoned attempt is cancelled and a fresh consent starts, whether the click comes from Onboarding, Settings, or the Portfolio panel.
  • Silent reconnect at launch never opens a browser unprompted, and no longer drops still-valid tokens when a token refresh fails for a transient reason (network / 5xx). You re-consent explicitly via Connect.
  • Bare Error listener failures during connect no longer surface as unhandled rejections.

Added

  • Cancel / Disconnect. While a consent is waiting on the browser, all three Connect surfaces show "Waiting for Robinhoodâ€Ķ" with a Cancel button (including Onboarding, where Settings isn't reachable). Settings → Market data gets a Disconnect button when connected — also how to switch Robinhood accounts.

Telemetry

  • app_error and broker_connect_failed now carry a bounded error_code (e.g. EADDRINUSE, OAUTH_ACCESS_DENIED) — the machine code only, never a message or path — so async Node system errors, whose stacks have no app frames, are diagnosable.

Upgrade notes

No schema or data migration. Existing installs keep their Robinhood session and refresh silently as before.

Full Changelog: v0.2.2...v0.2.3

0.2.2

Choose a tag to compare

@github-actions github-actions released this 17 Aug 06:50
Release v0.2.2

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>