Skip to content

v2026.07.26

Latest

Choose a tag to compare

@github-actions github-actions released this 26 Jul 20:20
dfda02b

TradingGoose Studio v2026.07.26

Release date: 2026-07-26

Features

  • feat(mcp): migrate Copilot endpoint to MCP SDK (ae7a545)
  • feat(mcp): expand local agent setup installer (34e9b56)
  • feat(watchlists): migrate watchlists to saved entity documents (1ef7151)
  • feat(watchlists): model lists as document containers (5ba2f2f)
  • feat(ui): use stable entity icon colors (4df9892)
  • feat(widgets): add contract-driven widget runtime (82e65de)
  • feat(dashboard): persist layouts as saved entities (edb0d42)
  • feat(copilot): add dashboard layout widget tools (390833d)
  • feat(dashboard): drive widgets from live layout documents (dae7850)
  • feat(dashboard): create default layout on demand (050e47d)
  • feat(widgets): respect read-only dashboard access (63c1ed0)
  • feat(copilot-tools): harden dashboard layout persistence (90f0440)
  • feat(widgets): handle unknown widget keys in copilot mutations (7346192)
  • feat(copilot-tools): support member dashboards and watchlists (0407da0)
  • feat(copilot): add watchlist create and rename tools (c3df801)
  • feat(copilot): accept full dashboard layout edit documents (8577504)
  • feat(copilot-tools): split dashboard layout editing into raw structures (90da628)
  • feat(copilot-tools): provision dashboard layouts on page load (95f5254)
  • feat(yjs): lock saved entity lists and redact MCP secrets (df39c6d)
  • feat(workspace): gate workflow variables by permissions (05a13e0)
  • feat(tradinggoose): hide data-chart drawings from Copilot (ee719d1)
  • feat(widget-contracts): tighten widget validation and error reporting (74cd92e)
  • feat(i18n): add catalog scanner for localization coverage (983c73e)
  • feat(i18n-catalog): expand scanner coverage and report controls (#163) (df937de)
  • feat(yjs): sync entity list widgets through realtime snapshots (887a63d)
  • feat(yjs): propagate workflow folder ids through list sessions (9ef293a)
  • feat(naming): generate available default names for new entities (a498eaf)
  • feat(indicators): sync color metadata through Yjs entity lists (f64a683)
  • feat(folders): promote direct children on folder delete (92404e1)
  • feat(workflows): hydrate workflow list from entity metadata (ec73297)
  • feat(editors): default unlinked editors to first entity (5823074)
  • feat(yjs): surface workflow descriptions in entity lists (54d2044)
  • feat(yjs): expose entity descriptions to dropdown search (fa159f0)
  • feat(yjs): sync MCP server metadata in entity lists (eecb620)
  • feat(workflow-list): sort workflows newest-first (70e7d10)
  • feat(skills): support live skill listings (e0aa357)
  • feat(copilot): stage mutation tools for review (4bb55c8)
  • feat(mcp): use personal API keys for device login (12d81b4)
  • feat(editors): back entity editors with Yjs sessions (d7f4850)
  • feat(workflows): export referenced skills from Yjs state (c39cd33)
  • feat(copilot): refresh state after server tool mutations (cce91db)
  • feat(mcp): issue device login keys from approval state (4ba4ee0)
  • feat(copilot): scope environment variable mutations (c2d5b9e)
  • feat(yjs): persist saved entity session edits (f73e357)
  • feat(copilot): support personal scoped credential reads (d812e46)
  • feat(yjs): persist workflow session state through the socket bridge (866dc2a)
  • feat(api-key): remove embedded ids from generated api keys (1fcbbff)
  • feat(auth): simplify MCP device login approval flow (1f4b72c)
  • feat(copilot): improve workflow editing and tool routing (dc709ab)
  • feat(workflows): persist workflow state to normalized tables (b0bb61a)
  • feat(workflows): preserve workflow variables during import and revert (1ee6511)
  • feat(workflow): rename workflow metadata without republishing state (2b2a14c)
  • feat(indicators): carry color through copilot entity documents (599ffd7)
  • feat(mcp-auth): rate-limit device login starts per requester (ef9edee)
  • feat(copilot-mcp): allowlist external server tools (5384643)
  • feat(api): add shared MCP rate limiting (c17de55)
  • feat(api-key): hash stored keys and simplify auth (546049e)
  • feat(auth): bind MCP approval to a user challenge (ecf2fc8)
  • feat(api-key): stop exposing raw API keys in lists (c7b7033)
  • feat(auth): sign MCP device login codes (74bd54e)
  • feat(workflows): load workflow state through the Yjs snapshot bridge (f422fdd)
  • feat(copilot): localize mention labels and mention search (0601a05)
  • feat(function): support workspace-scoped execution (95cce1c)
  • feat(copilot): localize implicit context labels (d5d5b19)
  • feat(navbar): portal header slots into targets (c090fa2)
  • feat(workspace): centralize current-user access checks and locale aut… (04d786b)
  • feat(workspaces): server-side workspace bootstrap (3ee0b85)
  • feat(auth): replace auth error cookie flow with callback route (656902d)
  • feat(global-navbar): add sidebar user menu trigger (ec7e755)
  • feat(i18n): canonicalize locale-prefixed routing (4de6406)
  • feat(nav): support authenticated public navigation (d35e854)
  • feat(workflow): allow editor run to select trigger variants (a958ea5)
  • feat(settings): bootstrap authenticated settings on app load (383d161)
  • feat(tradinggoose): apply preferred locale during bootstrap (6475649)
  • feat(oauth): normalize callback paths across auth flows (84e5d65)
  • feat(workflow): resolve editor trigger input from session snapshot (d6eedfb)
  • feat(workflow): run selected trigger blocks (36c9cd2)
  • feat(workflows): preserve trigger source in queued executions (2f9170c)
  • feat(workflow): unify workflow trigger resolution (d9f952e)
  • feat(workflows): require explicit trigger blocks for workflow runs (f1f1dde)
  • feat(copilot): record local completion usage (6ce007c)
  • feat(copilot): switch workflow edits to graph-only mermaid (ab2b3c1)
  • feat(import-export): bump TradingGoose export envelope to v2 (6ddbec7)
  • feat(copilot): clarify workflow edit topology semantics (5fa4e05)
  • feat(copilot): standardize entity-scoped tool contracts (cd10f30)
  • feat(copilot): persist staged tool review state (dcbde7d)
  • feat(copilot): enhance tool validation descriptions and auto-execute … (5a3debd)

Bug Fixes

  • fix(mcp): resolve TypeScript type conflicts and enhance API key handl… (0d45fe9)
  • fix: update environment variable schemas to enforce string values for… (8ee8626)
  • fix(mcp): enhance API key validation and preserve comments in JSONC c… (8fe6271)
  • fix(dashboard): converge layout list after mutations (da22694)
  • fix(dashboard): protect mutation endpoints (a5cac40)
  • fix(dashboard): project pending tab reorders (549d62b)
  • fix(dashboard): consume layout deep links (39cf927)
  • fix(dashboard): unlock acknowledged layout projections (352dc86)
  • fix(dashboard): enhance layout mutation tests with additional scenari… (748d198)
  • fix(yjs): pause raw socket during upgrade (f2fa7ec)
  • fix(yjs): defer websocket upgrade until session admission (a452ee2)
  • fix(yjs): buffer frames during session admission (a0a9d66)
  • fix(watchlist): refactor dropdown actions and improve accessibility (78f675f)
  • fix(watchlist): enhance table layout with fixed columns and improved … (b38184c)
  • fix(dashboard): route structure mutations through HTTP (9a48e17)
  • fix(dashboard): remove resize persistence error state (edffe95)
  • fix(data-chart): stabilize listing resolution (43f89f7)
  • fix(widget-lists): protect the final saved item (713478c)
  • fix(workflow): keep the node editor above floating controls (6413936)
  • fix(route): handle JSON parsing and add tests for dashboard structure (bf090d9)
  • fix(ws-handler): update message handling to support RawData and enfor… (1c9aa70)
  • fix(yjs): defer admission until websocket upgrade (320305e)
  • fix(yjs): preserve structured dashboard bridge errors (b9ea46d)
  • fix(yjs): preserve final saved entity (e21f0e7)
  • fix(tools): keep watchlist execution server side (484580e)
  • fix(copilot-tools): guard workspace entity deletes in transactions (3b9a348)
  • fix(watchlist): reject stale watchlist ids (bb338f1)
  • fix(watchlist): generate persisted item identities (2c824bb)
  • fix(widgets): preserve linked-field clear intent (0072ecd)
  • fix(widgets): respect entity editor access mode (caf545c)
  • fix(copilot): envelope listing search results (4aa039a)
  • fix(workflow): support reader Yjs sessions (3510750)
  • fix(indicators): stream live entity documents (62c4db9)
  • fix(sortable): derive announcements from item order (3b23e7b)
  • fix(watchlist): move nested listings to root boundary (634e9db)
  • fix(watchlist): persist imported names atomically (6aa90e1)
  • fix(copilot): harden collaborative editing boundaries (a704887)
  • fix(copilot): resolve layout tools by entity scope (2969966)
  • fix(mcp): align shared credential contract (f819e36)
  • fix(dashboard): track linked pair review fields (7571ea5)
  • fix(layout): enforce active layout invariant (9e10430)
  • fix(dashboard): preserve concurrent widget topology (75b5fc7)
  • fix(workspaces): merge invitation permissions atomically (e28760f)
  • fix(entities): make reviewed saves atomic (bdb85e9)
  • fix(watchlists): persist Yjs edits through realtime lifecycle (d5c9252)
  • fix(heatmap): aggregate all workspace watchlists (cd6ef8b)
  • fix(watchlists): allow deleting the final list (1f979f1)
  • fix(helm): enforce singleton realtime deployment (6b57063)
  • fix(yjs): restart disconnected sessions from fresh snapshots (32c7f55)
  • fix(copilot): stage reviewed dashboard edits before commit (21e0042)
  • fix(realtime): drain queued updates before shutdown (0a6dcc2)
  • fix(workflow): disable editing for reader sessions (93ea030)
  • fix(watchlist): persist selection in widget parameters (b30f13a)
  • fix(yjs): reject mutations on detached documents (112b235)
  • fix(dashboard): persist widget edits atomically (8f14b41)
  • fix(yjs): harden collaborative document ownership (f87c393)
  • fix(dashboard-layouts): validate create review base under lock (44af3e7)
  • fix(yjs): reconcile access and drain shutdown docs (10ddfd0)
  • fix(watchlists): remove replaced listing rows before persist (d60a26a)
  • fix(layout): reject invalid structure mutations (84df56d)
  • fix(yjs): preserve live document state during saves (1604c69)
  • fix(copilot): validate accepted creates in transactions (3df511b)
  • fix(dashboard): serialize layout lifecycle mutations (cba8727)
  • fix(watchlists): guard controls until documents are ready (3491a33)
  • fix(copilot): preserve owner scope for entity list reads (33f147c)
  • fix(watchlists): serialize root list mutations (24dffff)
  • fix(yjs): merge concurrent dashboard document updates (a3706bd)
  • fix(yjs): reject invalid dashboard widget updates (c5722e3)
  • fix(yjs): validate dashboard child updates at admission (140a0bb)
  • fix(yjs): flush persistence before document discard (57596ae)
  • fix(dashboard): consolidate layout structure mutations (56dd3fd)
  • fix(workflow-variables): gate variable editing by session permissions (5abd4a2)
  • fix(yjs): serialize forced reconciliation and watchlist validation (c77c179)
  • fix(i18n-catalog): align catalog reports with the default locale (#163) (0c647a1)
  • fix(workflows): make cleanup notifications best-effort (64d0f55)
  • fix(tradinggoose): use DB-backed custom tool and entity updates (1eeb288)
  • fix(workflows): decouple folder changes from metadata sync (3043893)
  • fix(yjs): refresh MCP servers after entity updates (b9dddec)
  • fix(list-mcp): select new servers after entity hydration (690a138)
  • fix(entity-list): keep entity list sessions aligned with db (df26f3e)
  • fix(widgets): remove stale selection reset effects (5f86c90)
  • fix(workflows): sync workflow list members through realtime helpers (6693fa4)
  • fix(yjs): keep workflow mutations durable on socket errors (0871bb1)
  • fix(widgets): validate requested editor entities (aa91d55)
  • fix(yjs): reseed live entity-list sessions on upgrade (e1d97b7)
  • fix(workflow-list): keep widget selection local (bdcb6c1)
  • fix(workflows): require realtime sync for list projections (6fed214)
  • fix(workflows): make live list sync best effort (a758f12)
  • fix(yjs): skip sync wait for read providers (36dabca)
  • fix(widgets): keep requested ids and selections in sync (0d88a3c)
  • fix(execution): respect deployed context for saved entities (517454d)
  • fix(workflows): hydrate and validate active workflow selection (7fbdb00)
  • fix(widgets): handle missing requested editor entities (d713e01)
  • fix(agent): pass deployed context through MCP tool discovery (291420d)
  • fix(workflow): tolerate missing workflow-linked entities (9b2cdcd)
  • fix(workflows): remove stale workflow cache (01538ed)
  • fix(workflows): persist folder metadata through yjs sync (cef60d3)
  • fix(widgets): clear stale selection after list updates (48c5370)
  • fix(mcp): default deployed discover context (fb52fc2)
  • fix(yjs): retry failed entity lists on reopen (441d3c8)
  • fix(folders): apply workflow metadata before delete (fbd0cc7)
  • fix(widgets): stop auto-selecting the first workflow (60dd078)
  • fix(yjs): drop rollback handling for entity publishes (432ece6)
  • fix(yjs): surface realtime-required errors for list refreshes (2ef7999)
  • fix(workflows): search descriptions and preserve duplicate source (d1503cd)
  • fix(workflow-widgets): resolve widget workflows through shared state (7988646)
  • fix(i18n): remove obsolete workflow auth copy (219c44d)
  • fix(ai): mark tool execution as deployed context (4fc63d2)
  • fix(ai): preserve deployed context flag (716946c)
  • fix(mcp): refresh tool list after server edits (92e0cf4)
  • fix(indicator-list): open source session read-only (ad9da06)
  • fix(mcp): invalidate discovery cache on refresh (02d0a99)
  • fix(yjs): enforce access mode on websocket sync (7dcca3c)
  • fix(workflow): preserve color-pair workflow selection default (36b544d)
  • fix(mcp): retry server list and keep selected status (9ef27b7)
  • fix(widgets): clear selection after deleting list items (e57a765)
  • fix(yjs): surface entity-list refresh failures (67376c1)
  • fix(yjs): discard stale entity-list projections (ce6acc3)
  • fix(workflow-list): use shared widget state for routing (8b9baa6)
  • fix(yjs): reopen disposable read sessions (a68e84e)
  • fix(tradinggoose): surface entity lookup failures (0511afe)
  • fix(tradinggoose): queue entity selections until listed (badc792)
  • fix(agent): fail agent blocks when tool hydration fails (94469e9)
  • fix(widgets): keep explicit entity ids exact (9732772)
  • fix(yjs): keep shared sessions retrying until live (a8e2fc6)
  • fix(workflow): stabilize workflow hydration on dashboard load (02ad9ba)
  • fix(yjs): ignore missing saved entities during bootstrap (fbd5b6a)
  • fix(yjs): serialize entity list reseeds (23143e3)
  • fix(workflow): remove registry-backed workflow activation (ef37afe)
  • fix(workflow): source workflow options from entity metadata (db2a179)
  • fix(workflow): sort workflows by newest createdAt (9da06b6)
  • fix(tradinggoose): stabilize MCP and workflow state (ca890fc)
  • fix(yjs): keep read sessions visible while reopening (b9527b0)
  • fix(entity-session): rename seedEntityListSession to replaceEntityLis… (3b9698d)
  • fix(yjs): keep shared session errors visible (d69e52e)
  • fix(mcp): reject reused device login approvals (fb8ff93)
  • fix(workflows): avoid loading deployed workflow variables (a3c4ea1)
  • fix(mcp): authenticate device login API keys (4ca9b51)
  • fix(copilot): apply reviewed tool changes atomically (0835d96)
  • fix(copilot): prevent stale server tool review acceptance (2b94ebe)
  • fix(copilot): handle malformed MCP batch entries (164ee90)
  • fix(copilot): prevent sensitive tool payload exposure (f34626b)
  • fix(copilot): reject empty JSON-RPC batches (3dcf4be)
  • fix(copilot): redact managed review secrets (6cbb24d)
  • fix(mcp): issue device login keys during approval polling (adb0dd4)
  • fix(workflows): preserve deployment metadata from saved state (bdf6e56)
  • fix(mcp): use shared personal api key auth (5a4b50b)
  • fix(workflows): preserve variables during direct yjs persistence (b87fc13)
  • fix(workflows): persist workflow names through Yjs state (4d0241d)
  • fix(copilot): read saved entities from bootstrapped Yjs state (fc436b4)
  • fix(mcp): consume device login approvals when issuing keys (e78ab77)
  • fix(yjs): fall back to direct state persistence on apply errors (d984f06)
  • fix(custom-tools): reject duplicate titles on update (ee6fd42)
  • fix(copilot): omit generated workflow ids from review staging (20ac127)
  • fix(copilot): require workflow variable ids in documents (8dfcd65)
  • fix(copilot): serialize server tool review acceptance (420d525)
  • fix(workflows): persist normalized workflow state (db6b07c)
  • fix(auth): preserve locale on invalid MCP authorization (62580b1)
  • fix(copilot): reject stale accepted server tool reviews (5c7c3c6)
  • fix(yjs): keep saved entity sessions noncanonical (b3f224c)
  • fix(workflows): preserve deployment metadata from live state (2813eda)
  • fix(yjs): separate saved entity draft persistence (ffebf07)
  • fix(workflows): handle missing normalized saved state (e60fe7c)
  • fix(copilot): scope environment variable writes to workspace (abf674f)
  • fix(api-key): require complete key format for lookup (abe9818)
  • fix(copilot): persist accepted reviewed entity updates (e9c16c0)
  • fix(api-keys): bind generated key material to stored id (935c221)
  • fix(copilot): pass workspace context to environment writes (e40590f)
  • fix(mcp): make device login delivery idempotent (f73a113)
  • fix(yjs): persist state before applying document updates (26809fb)
  • fix(yjs): refresh stale saved target snapshots (e8698a9)
  • fix(yjs): make saved entity persistence best effort (7ff5782)
  • fix(copilot): align contracts after staging rebase (127087c)
  • fix(copilot): align indicator runtime contracts (705863c)
  • fix(copilot): preserve MCP server secrets in documents (6d03e1a)
  • fix(yjs): apply snapshots before database persistence (10c32a2)
  • fix(copilot): normalize entity document fields (ce2b89a)
  • fix(mcp): require urls for URL transports (8f957ef)
  • fix(yjs): persist applied snapshots from live documents (24a6c27)
  • fix(api-key): reject malformed keys before lookup (aa089d3)
  • fix(copilot): keep review acceptance bound to the staged execution co… (138ca5b)
  • fix(yjs): stop deleting live sessions during cleanup (f273641)
  • fix(yjs): restore saved entity state from db on materialization failure (c98e8a6)
  • fix(copilot): deny inaccessible workspaces in server tools (2031c81)
  • fix(mcp): limit delivery retries when polling device login (5495906)
  • fix(yjs): restore workflow state after persistence failure (102ed5e)
  • fix(workflows): load normalized workflow state consistently (4bbe32f)
  • fix(yjs): preserve refresh error cause (02f9b0d)
  • fix(mcp): use configured base URLs in installer flows (c02534f)
  • fix(ui): clear help modal scroll timer (e549b39)
  • fix(auth): generate MCP api keys at approval time (26c0803)
  • fix(mcp): scope public MCP login starts to the deployment (421f7aa)
  • fix(mcp): harden device login approval challenge handling (8b9764c)
  • fix(copilot): stabilize mention submenu reload deps and add staging c… (a830a01)
  • fix(custom-tools): treat titles as canonical tool names (effdcaa)
  • fix(executor): resolve dynamic MCP tool ids at runtime (b5b16e6)
  • fix(agent): require exact skill ids for skill loading (1308d70)
  • fix(function): allow workspace-scoped function execution (19fa88c)
  • fix(copilot): resolve custom indicators by runtime id (b9f8653)
  • fix(custom-tools): separate runtime ids from entity ids (b806923)
  • fix(copilot): keep deleted mentions removed (eff1fb9)
  • fix(copilot): normalize final streamed messages (42db0b8)
  • fix(copilot): filter markdown renderer node props (809929e)
  • fix(agent): preserve custom tool display names (6d22b31)
  • fix(copilot): dedupe docs context mentions (ddc1ff7)
  • fix(function-execution): authorize requests by workflow workspace (1e52cbb)
  • fix(mcp): persist canonical tool identifiers (a842394)
  • fix(mcp): use explicit server and tool params for execution (c19d3b8)
  • fix(copilot): treat punctuation as mention boundaries (14add5b)
  • fix(mcp): preserve selected tool IDs for execution (1744f50)
  • fix(copilot): retain contexts for repeated mentions (978fc35)
  • fix(custom-tools): allow updates with existing titles (ffcf698)
  • fix(copilot): reuse mention boundary detection (4d54091)
  • fix(copilot): refresh selected mention contexts (76cd8c9)
  • fix(custom-tools): normalize function schemas (0225d41)
  • fix(custom-tools): normalize API custom tool titles (3a0d91d)
  • fix(copilot): include log triggers in mention search (a2c69bf)
  • fix(agent): preserve custom tool ids with display names (aeaa099)
  • fix(copilot): preserve duplicate mention insertion order (72f9efa)
  • fix(trace-spans): type tool call ids in trace output (2f69886)
  • fix(workflows): reject invalid custom tool runtime ids (8da6e55)
  • fix(function-execute): require write access for workspace execution (2f67321)
  • fix(auth): pass server user into workspace socket provider (446bf56)
  • fix(socket): improve logging for socket authentication errors (033ef6f)
  • fix(workspace): simplify user prop handling in WorkspaceLayoutClient (78406f6)
  • fix(auth): thread authenticated user id through navbar (28a4fc6)
  • fix(auth): use authenticated user id for workspace dialogs (74428e3)
  • fix(workspace-invite): prevent self-invites (a994211)
  • fix(auth): propagate authenticated email through navbar (0bacd78)
  • fix(auth): preserve auth recovery during workspace permissions fetch (7ac3a5f)
  • fix(workspace-permissions): restore current user row in invite modal (01e3acb)
  • fix(auth): wait for client auth before loading workspaces (cda6e54)
  • fix(auth): reset workspace redirect state per user access key (8433541)
  • fix(auth): avoid refetching session-recovery permissions (e699d94)
  • fix(auth): gate auth-dependent queries until session matches user (b338d17)
  • fix(workspace): gate permissions UI on matching session user (c3deb6b)
  • fix(workspace): gate workspace data on client auth (86b9d93)
  • fix(auth): guard workspace data on stable session state (f66e7df)
  • fix(navbar): keep the latest header owner active (5337db1)
  • fix(auth): scope cached billing queries by user id (c6449e6)
  • fix(workspace): use workspace user identity in invite dialogs (e8c66ca)
  • fix(auth): pass workspace user to global navbar (6914ca9)
  • fix(workspace-auth): require inherited workspace sessions in nested p… (0ff8d2c)
  • fix(workspaces): include workspace owners in access flows (6af2500)
  • fix(workspaces): allow same-origin callback URLs (153fa81)
  • fix(auth): scope workspace permissions to the active user (a38c8ec)
  • fix(workspace): derive callback origin from request headers (dd5a3dc)
  • fix(workspaces): require admin access before member deletion (d578cb9)
  • fix(permissions): treat workspace owners as admins (2c44f3f)
  • fix(auth): standardize reauth callbacks and permission state checks (aff9f34)
  • fix(workspaces): roll back failed default workflow seeding (ae08aed)
  • fix(workspaces): align admin access with workspace ownership (036b893)
  • fix(auth): reuse workspace access checks (f58311e)
  • fix(workflows): centralize workflow permission validation (c3c1d75)
  • fix(workspace-permissions): route missing sessions into auth recovery (684e8e3)
  • fix(workspace): redirect workspace roots without bootstrapping (7cecb3a)
  • fix(copilot): treat workspace owners as workflow admins (cc609d1)
  • fix(workspace): bootstrap root workspace on the server (1b73042)
  • fix(auth): normalize login callback URLs from request headers (8670675)
  • fix(auth): add reauth redirect handling for stale session cookies (f13cf41)
  • fix(workspaces): normalize created workspace payloads (b016ba3)
  • fix(workspaces): clean up seeded workflow on create failure (208f27d)
  • fix(workspaces): handle Yjs seeding failures during workspace creation (21b1597)
  • fix(auth): use canonical app session for socket token route (8b4f5ba)
  • fix(auth): simplify unauthorized session handling (9f140d3)
  • fix(auth): block login form until reauth cleanup finishes (e43730b)
  • fix(auth): remove session cookie cache (4bea925)
  • fix(auth): handle failed session creation by forcing reauth cleanup (31ac45c)
  • fix(auth): remove reauth redirect flag and guard cleanup retries (b450439)
  • fix(auth): route session errors through reauth cleanup (1eeb731)
  • fix(auth): route auth provider failures through error flow (98314ea)
  • fix(auth): preserve callback through auth error flows (1c0c60c)
  • fix(auth): handle reauth cleanup and error callback cookies (b0eb4ee)
  • fix(auth): unify session recovery and SSO error handling (4bcd797)
  • fix(auth): route workspace permissions auth failures through recovery (6316b53)
  • fix(auth): handle login reauth cleanup (e3b2790)
  • fix(auth): remove forced uncached session reads (87493a2)
  • fix(auth): use deployment-aware Better Auth cookies (4aa2996)
  • fix(auth): centralize auth cookie cleanup (3508637)
  • fix(auth): route login-page sign-out failures through reauth cleanup (b2d9497)
  • fix(auth): redirect authenticated users from auth entry pages (14a84ea)
  • fix(proxy): let auth entry routes reach their pages (843bc9a)
  • fix(auth): persist locale through signup verification (6239f95)
  • fix(urls): normalize configured app URL helpers (c72eb31)
  • fix(email): preserve transactional text in fallback delivery (85858af)
  • fix: handle proxy auth cleanup and preview base URL fallback (db26952)
  • fix(tradinggoose): remove preview-only base URL fallback (015422a)
  • fix(auth): log fallback sign-out failures (abda5e7)
  • fix(auth): use browser origin for auth client (ed45d06)
  • fix(i18n): add localized not-found route (5cd9085)
  • fix(billing): settle deleted Stripe subscriptions in webhook flow (06ff221)
  • fix(billing): avoid resetting onboarding usage for entitled subscript… (8d8ebad)
  • fix(billing): ignore orphaned deleted stripe subscription events (118f936)
  • fix(db): enforce unique stripe subscription ids (4b9991c)
  • fix(billing): sync usage limits on subscription deletion (4aa8800)
  • fix(db): enforce unique stripe subscription ids (ead4cd1)
  • fix(billing): reject missing and duplicate deleted subscriptions (83263b1)
  • fix(billing): skip deleted subscriptions without local rows (d677b2a)
  • fix(billing): allow duplicate Stripe subscription rows (7be7d2c)
  • fix(billing): settle subscription webhooks by Stripe id (63bf9f4)
  • fix(billing): sync usage limits from settled subscription (620602f)
  • fix(billing): enforce unique Stripe subscription lookup (5a03c10)
  • fix(billing): use atomic upsert for enterprise subscriptions (3205733)
  • fix(subscription): use stripe subscription id for personal upgrades (1918137)
  • fix(workflow): improve workflow summary tooltip rendering (e90271a)
  • fix(workflows): resolve triggers from workflow graph edges (7d29dc8)
  • fix(settings): keep general settings loading state in sync (80bcf4e)
  • fix(i18n): honor stored locale for authenticated locale-prefixed routes (303916a)
  • fix(workflows): ignore chat-only triggers in editor Run (cd5f668)
  • fix(tradinggoose): scope locale and settings state by user (8fb44b9)
  • fix(tradinggoose): keep locale routing aligned with auth state (103027e)
  • fix(workflows): resolve selected trigger configuration errors (7d08dca)
  • fix(auth): preserve callback pathname during recovery flows (f695823)
  • fix(auth): redirect authed users to their preferred locale (83b0a18)
  • fix(socket): keep auth error handling on the latest pathname (8c48579)
  • fix(workflows): preserve input trigger snapshot values (a6c9724)
  • fix(workflow): stabilize workflow test execution (bde5790)
  • fix(workflows): preserve queued trigger types (6b16362)
  • fix(workflows): require live start block for queued webhook and sched… (2084b76)
  • fix(workflows): remove test-input Yjs special case (14d62ec)
  • fix(workflow): block chat-only workflows from editor run (18ca19d)
  • fix(workflows): select trigger branch for editor Run (13cd70f)
  • fix(workflows): resolve queued trigger identity from workflow state (6697e15)
  • fix(workflows): reject chat triggers in editor runs (eacc094)
  • fix(workflows): relax manual queue trigger matching (95520c1)
  • fix(workflows): use editor test trigger for client workflow execution (6e16466)
  • fix(workflow): preserve trigger identity and live run input (74e98db)
  • fix(workflows): align trigger selection with trigger-mode blocks (7f5b2b0)
  • fix(workflows): align run_workflow trigger handling (196ec1a)
  • fix(workflows): handle missing trigger blocks consistently (123de2a)
  • fix(workflows): preserve resolved trigger input for copilot runs (1247ccc)
  • fix(schedules): delete orphaned schedule rows (cb2d7c8)
  • fix(copilot): update context usage handling and remove unnecessary bi… (1313e33)
  • fix(copilot): refactor tool approval logic and update related tests (bb07e1e)
  • fix(copilot): remove local completion billing logic and update contex… (f276f41)
  • fix(copilot): remove color field from indicator and workflow schemas,… (9575a4c)
  • fix(copilot): update copilot usage handling and improve test coverage… (829a404)
  • fix(copilot): introduce workflow graph document format and update rel… (a048520)
  • fix(copilot): enhance edit_workflow tool with semantic validators and… (0aa0573)
  • fix(copilot): update editWorkflowServerTool tests to reflect changes … (00a9286)
  • fix(copilot): enhance editWorkflowServerTool with block position pres… (d6042ce)
  • fix(copilot): update inline tool call tests and logic for review cont… (055e979)
  • fix(copilot): improve subgraph node handling in parseVisibleWorkflowE… (45e35ae)
  • fix(copilot): remove unused color properties from entity types and up… (3b8b321)
  • fix(copilot): update edit_workflow description for clarity on block d… (2901b71)
  • fix(copilot): remove color property from indicators and workflows; up… (c47905b)
  • fix(copilot): remove color property from indicators and workflows; up… (39ae658)
  • fix(copilot): update workflow document formats and descriptions; adju… (879fc59)
  • fix(copilot): enhance workflow validation and update document format … (ff73078)
  • fix(import-export): update export version from 2 to 1 across various … (0f51f24)
  • fix(export): update export version from 2 to 1 in various components (86dc211)
  • fix(copilot): enhance workflow documentation and validation; update t… (ceadc8e)
  • fix(copilot): implement billing completion usage reporting and update… (b9ec108)
  • fix(copilot): enhance completion usage reporting with validation for … (7e0e3ed)
  • fix(import-export): update tests to ignore generated fields in transf… (8389863)
  • fix(copilot): refine workflow graph handling and improve Mermaid docu… (a791d79)
  • fix(copilot): improve error handling in completion usage reporting an… (8a02389)
  • fix(copilot): rename commitLocalCopilotCompletionUsageReports to mirr… (55610d1)
  • fix(copilot): consolidate usage reservation commits (867ac61)
  • fix(workflows): allow condition source handles (32cd19a)
  • fix(copilot): forward workspace id in context usage (c4b707d)
  • fix(copilot): refine tool parameter handling and enhance error messages (e13fdc1)
  • fix(copilot): remove obsolete custom tool schema tests and update str… (1e28ba7)
  • fix(copilot): propagate workspace context through server tools (921f770)
  • fix(copilot): update streaming logic and refine tool execution handling (f44b341)
  • fix(copilot): standardize tool argument handling and remove legacy to… (973b169)
  • fix(copilot): enhance tool argument handling and implement workspace … (3c65932)
  • fix(copilot): update todo execution state handling in tests and state… (3202eb0)
  • fix(copilot): update showPlanTodos logic to reflect only incomplete t… (c5e515c)
  • fix(i18n): update waitlist text and format JSON for consistency (0790dbc)
  • fix(copilot): enhance tool validation and auto-execution logic for ac… (54e77de)
  • fix(copilot): streamline plan todos hydration by filtering for succes… (73da07a)
  • fix(copilot): refactor tool execution logic and enhance message handl… (d1b3edb)
  • fix(copilot): enhance tool call handling by ensuring unique tool call… (3d2a5d3)

Refactors

  • refactor(dashboard): route layout mutations through API (565d357)
  • refactor(dashboard): clarify equal size fallback (fc82229)
  • refactor(watchlists): move document validation contracts (8044cc4)
  • refactor(watchlist): localize params persistence (ceea440)
  • refactor(copilot): pass verified create context to entity creators (7b4ae01)
  • refactor(widgets): remove legacy widget validation layers (386c14e)
  • refactor(copilot-tools): move effective dashboard layout resolution i… (1e694cb)
  • refactor(copilot): canonicalize entity and layout ownership (7f0918f)
  • refactor(layout): normalize dashboard persistence boundaries (da95b43)
  • refactor(copilot): unify dashboard layout tool results (42efd96)
  • refactor(entities): remove obsolete REST save paths (4c6f78b)
  • refactor(watchlists): remove obsolete quote proxy (180f068)
  • refactor(copilot): enforce canonical entity document boundaries (23c8bb3)
  • refactor(listing): remove dashboard hydration helpers (a25b2d1)
  • refactor(layout): remove obsolete inline layout normalizer (cc3b0a7)
  • refactor(dashboard): simplify layout client state (17ef71d)
  • refactor(copilot): scope dashboard mentions to owner list (3ff78c0)
  • refactor(yjs): route workflow edits through session transactions (555e77b)
  • refactor(yjs): centralize saved-entity deletion flows (b70547d)
  • refactor(tradinggoose): simplify entity and copilot access flows (07c0abb)
  • refactor(i18n-catalog): split scanner internals into focused modules … (2d83d1e)
  • refactor(workflow-tree): remove unused folder tree props (1d7e8f4)
  • refactor(mcp): route server renames through saved entity fields (7702e61)
  • refactor(yjs): share entity sessions and simplify editor selection (fcc1bef)
  • refactor(widgets): source editor selectors from yjs entity lists (b165c90)
  • refactor: rename persisted helper APIs (827c9f5)
  • refactor(widgets): simplify workflow list hydration (36f54e6)
  • refactor(workflows): decouple list-member sync from yjs snapshots (aabe204)
  • refactor(yjs): reseed entity lists from db snapshots (d70bc4f)
  • refactor(workflow): simplify workflow session fallback handling (aa0d277)
  • refactor(workflows): remove marketplace publishing state (a997a76)
  • refactor(workflow-selection): remove widget-scoped selection syncing (d7e9aca)
  • refactor(tradinggoose): replace MCP server store with entity list state (292d628)
  • refactor(ui): remove redundant delete selection resets (e529849)
  • refactor(tools): move async tool lookup to package entrypoint (4e5186e)
  • refactor(workflows): resolve workflow state from routed session (0fb4299)
  • refactor(workflows): remove active-workflow coupling (301bc73)
  • refactor(workflows): remove template handling from deletions (b26acc6)
  • refactor(skills): remove the redundant skills store (8c5e816)
  • refactor(tradinggoose): read entity lists from the database (4956a4e)
  • refactor(tradinggoose): remove template subsystem (10dc79c)
  • refactor(yjs): simplify saved entity state sync (321e6c6)
  • refactor(copilot): make MCP tool exposure explicit (6d91300)
  • refactor(operations): prefetch existing workspace entities during upsert (17cff32)
  • refactor(workspace): split entity writes and clean up Yjs sessions (f668a29)
  • refactor(copilot): reuse centralized mention empty states (8afafe8)
  • refactor(mcp): use hyphenated dynamic tool ids (beedc33)
  • refactor(indicators): remove runtime indicator names (7d1b849)
  • refactor(workspace-permissions): thread authenticated user id through… (ff69df9)
  • refactor(workspace-permissions): simplify initial loading fallback (e91f977)
  • refactor(auth): use server-authenticated workspace context (15a4236)
  • refactor(auth): stabilize login reauth callbacks (ea05100)
  • refactor(proxy): use Better Auth session cookies (c11bc64)
  • refactor(tradinggoose): resolve canonical URLs at runtime (301b40d)
  • refactor(billing): centralize Stripe subscription lookup (2620ba0)
  • refactor(environment): simplify environment store state (fc412f0)
  • refactor(workflow): derive run target from awareness (128ce47)
  • refactor(workflows): simplify trigger helpers (94544e4)
  • refactor(workflows): rename workflow start target to trigger target (1c38d7c)
  • refactor(workflow): centralize executable workflow data (504ca5d)
  • refactor(copilot): extract completion billing helpers (94ce3e7)
  • refactor(copilot): remove legacy assistant toolCalls state (068ce4f)
  • refactor(copilot): simplify workflow document validators (bbad92a)

Documentation

  • docs(changelog): document July 24 changes (28ec5c9)
  • docs(changelog): add feat/copilot-tools staging review (16046d5)
  • docs(changelog): document independent layout document owners (c01ac3e)
  • docs(changelog): add staging entry for i18n tooling (#163) (536e0f7)
  • docs(changelog): add July 1 branch summary (e5846de)
  • docs(changelog): document entity selection validation (36cad27)
  • docs(changelog): note shared Yjs and workflow retry behavior (a70c23f)
  • docs(changelog): note workflow list newest-first ordering (24d9788)
  • docs(yjs): clarify live list snapshot freshness (3cfb320)
  • docs(changelog): refresh July 1 entry (15b20fb)
  • docs: update project agent testing guidance (82adab9)
  • docs(mcp): clarify device grant retry window (9d332c6)
  • docs(changelog): add June 24 Copilot MCP branch summary (e5bc23e)
  • docs(api-key): remove API_ENCRYPTION_KEY references (980388e)
  • docs(changelog): add June 23 changelog (73cedfa)
  • docs(changelog): add June 11 2026 branch summary (3f755b0)

Other Changes

  • style(ui): widen API key dialogs (3f43381)
  • test(dashboard): cover layout activation convergence (53aadda)
  • style(watchlist): format list actions trigger (5a40d12)
  • style(widgets): trim legacy test wording and formatting (a934a5b)
  • style(workflow): format identifier validation deps (1b5dbf8)
  • perf(watchlists): bootstrap identities from root rows (65940e0)
  • style(helm): normalize yaml whitespace (c6d830c)
  • test(copilot): align saved entity mutation expectations (95e0f30)
  • test(yjs): consolidate entity apply-state coverage (8390188)
  • test(widgets): consolidate layout widget coverage (5342e57)
  • build(helm): require internal API secret for realtime (9e92671)
  • build(helm): require longer internal api secret (b1049fc)
  • style(i18n): align catalog tooling with biome (9455388)
  • test(yjs): update snapshot bridge failure coverage (8bf246b)
  • style(copilot): wrap copilot registry assertions (560b549)
  • style(mcp): reorder authorize page imports (15af5d3)
  • style(copilot): wrap credential prompt metadata (6bc4146)
  • test(copilot): update test files (8fedcb9)
  • test(copilot): cover entity document normalization (479e585)
  • test(trading): cache the order route handler in the test (52b081a)
  • style(yjs): reformat snapshot bridge import (477e278)
  • build(config): remove API_ENCRYPTION_KEY from deployment samples (893d6a2)
  • style(ui): normalize tool call and copilot route formatting (c5949b4)
  • chore: restore recovered local changes (91d60d0)
  • test(agent): remove stale MCP agent handler coverage (b0c1156)
  • test(custom-tools): reject function names in imported schemas (1554689)
  • test(copilot): align custom tool schema fixture (57bf4b6)
  • test(generic-handler): remove stale mcp id resolution coverage (9268e89)
  • style(custom-tools): format entity state import (360aa97)
  • style(tools): sort utility imports (80ffffa)
  • style: normalize formatting in agent and indicator files (f012aa9)
  • style(indicators): format runtime imports (cb97136)
  • test(custom-tools): align export schema fixture with canonical shape (b78c5de)
  • test(auth): adjust auth error handler workspace permission case (c6dafaa)
  • style(workflow): format edit-workflow-block test (d897f30)
  • test(copilot): stabilize workflow tool suites (1f342d9)
  • test(tradinggoose): update workflow test setup (390bf58)
  • style(sidebar): normalize sidebar formatting (5fea951)
  • test(global-navbar): cover compact avatar trigger outside sidebar (4c6424f)
  • style(tradinggoose): wrap proxy route test case (4c5fa9e)
  • test(tradinggoose): cover authenticated locale routing fallback (44df2e4)
  • style(workspace): format integrations oauth helpers (8c91269)
  • perf(control-bar): memoize workflow run trigger derivation (e74ef77)
  • test(workflows): add coverage for editor trigger resolution (0e55bd8)
  • test(yjs): cover shared workflow session bootstrap loading (c8dc570)
  • style(workflows): reorder accessible reference imports (3f3095a)
  • test(resolver): clarify trigger block alias expectation (17843af)

Contributors