Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
117 commits
Select commit Hold shift + click to select a range
1966535
Serve the chartable gateway networks to the trade panel
cardosofede Aug 11, 2026
9dbc772
Make DEX connectors first-class in the trade panel
cardosofede Aug 11, 2026
58d2bb7
Resolve the pool a DEX pair trades in, and whether it can take an LP …
cardosofede Aug 11, 2026
1822a1e
Create and draw an LP position from the trade panel
cardosofede Aug 11, 2026
5e16abb
(arch) normalize backtest sides server-side, drop the TypeScript copy…
cardosofede Aug 11, 2026
476764a
Serve venue traits instead of a CEX/DEX binary
cardosofede Aug 11, 2026
5cc1fb3
Decide the trade panel from venue traits, not from DEX-ness
cardosofede Aug 11, 2026
3fa941f
(style) mechanical format sweep: isort then black over the Python tree
cardosofede Aug 11, 2026
4fbd322
Skip the format sweep in git blame
cardosofede Aug 11, 2026
4c43a25
(fix) survive an executor whose config is null instead of 502ing the …
cardosofede Aug 11, 2026
d57d205
(fix) fail closed when the executor pair validation itself breaks (CO…
cardosofede Aug 11, 2026
138dab7
(sec) four more route modules fail without naming the backend (SEC-130)
cardosofede Aug 11, 2026
5096c16
Let an install opt in to telling us how it is used (FEAT-023)
cardosofede Aug 11, 2026
5412f80
Tap the seams that already exist, instead of every call site (FEAT-023)
cardosofede Aug 11, 2026
e9e9361
Say plainly what telemetry collects, and prove it in tests (FEAT-023)
cardosofede Aug 11, 2026
a4e5f48
Accept an envelope from an install, once and only once (FEAT-024)
cardosofede Aug 11, 2026
b355097
Answer the five questions from tables that outlive the raw events (FE…
cardosofede Aug 11, 2026
6d47a19
Make the collector deployable, and prove it holds under a hostile POS…
cardosofede Aug 11, 2026
34e4ad5
Move the telemetry collector to its own repo (condor-telemetry-server)
cardosofede Aug 11, 2026
4f455e3
(feat) add tools to create strataegies at agent level
cardosofede Aug 11, 2026
be0613b
(feat) add tools to create strataegies at agent level
cardosofede Aug 11, 2026
e62cd46
(feat) add github issue template
cardosofede Aug 11, 2026
4eecf43
(feat) add issue erpoting
cardosofede Aug 11, 2026
0323ae1
(feat) add strategy builder skill
cardosofede Aug 11, 2026
244b404
(docs) readme: web trade panel, agents, issue reporting
cardosofede Aug 11, 2026
d667abc
(feat) improve timeouts
cardosofede Aug 12, 2026
53462be
(feat) improve front wallet
cardosofede Aug 12, 2026
e5c4835
(feat) add runtime
cardosofede Aug 12, 2026
9a57bdf
(feat) add gateway wallet
cardosofede Aug 12, 2026
6a91de7
(feat) candles: pin a chart to one DEX pool
cardosofede Aug 13, 2026
f35d4ef
(feat) dex: pool discovery behind one server-scoped route
cardosofede Aug 13, 2026
8d90422
(feat) dex: a page where the pool is the unit
cardosofede Aug 13, 2026
86c27a4
(feat) trade: CLOB-only, gateway networks go to /dex
cardosofede Aug 13, 2026
ec93cc1
(feat) dex: liquidity bins over a server-scoped route
cardosofede Aug 13, 2026
22fb45d
(feat) chart: lend the price axis to a sibling
cardosofede Aug 13, 2026
ad92bd1
(feat) dex: liquidity depth beside the pool chart
cardosofede Aug 13, 2026
07beac4
(feat) dex: draw the configured range across the depth column
cardosofede Aug 13, 2026
0fd2cf9
(feat) add support verification
cardosofede Aug 13, 2026
f9f1cc4
(feat) default gateway to development
cardosofede Aug 13, 2026
65cca40
(feat) default gateway to development
cardosofede Aug 13, 2026
c287423
(feat) fix oneway
cardosofede Aug 13, 2026
3f71750
(feat) improve frontend
cardosofede Aug 13, 2026
7bc76e7
(feat) fix default wallet
cardosofede Aug 13, 2026
4954789
(feat) add fav tab
cardosofede Aug 13, 2026
9836002
(feat) improve dex view
cardosofede Aug 13, 2026
f3528e6
(feat) render ```chart fences as interactive charts in the webchat
cardosofede Aug 13, 2026
e633be0
(feat) teach both web chat paths the chart fence
cardosofede Aug 13, 2026
4f7929f
(feat) improve charting
cardosofede Aug 13, 2026
4e1a4ef
(feat) improve dex data
cardosofede Aug 13, 2026
9e2d775
Merge branch 'main' into feat/trade-panel-dex
david-hummingbot Aug 17, 2026
73b1f12
(feat) run_code: run a snippet where a routine runs
cardosofede Aug 13, 2026
613e68f
(feat) run_code: hand the scratchpad to the assistant
cardosofede Aug 13, 2026
e45c3e0
(fix) route bound_agent_context through the runtime client facade
cardosofede Aug 14, 2026
db012df
(refactor) agents: drop the inert inject_directive mechanism
cardosofede Aug 14, 2026
6252e48
(refactor) server_data_service: drop the dead stale_threshold knob
cardosofede Aug 14, 2026
d99cad4
(fix) keep a kill-switched session dead past the tick that killed it
cardosofede Aug 14, 2026
b44ab0e
(fix) cancel the turn at the agent when the prompt times out
cardosofede Aug 14, 2026
33cdf86
(perf) fan out the per-server status fetch on GET /servers
cardosofede Aug 14, 2026
6a91da2
(fix) gate agent strategy start on server access
cardosofede Aug 14, 2026
ccb417f
(fix) gate routine instance endpoints on ownership
cardosofede Aug 14, 2026
9e97880
(fix) SEC-151: gate /code/run behind admin or an explicit grant
cardosofede Aug 14, 2026
c192b9a
(refactor) ARCH-146: one historical-candles ladder in the fetcher layer
cardosofede Aug 14, 2026
90692c0
(refactor) ARCH-148: one atomic file write for the whole codebase
cardosofede Aug 14, 2026
9d81d6b
(fix) SDS: track subscriber callback tasks (CORR-141)
cardosofede Aug 14, 2026
b328783
(fix) routine_store: bound the results dict and drop it with its inst…
cardosofede Aug 14, 2026
e30346c
(fix) delegate: bound the registry and the retained event stream
cardosofede Aug 14, 2026
b898f3c
(perf) executor pre-fetch: transform each page once, not the whole list
cardosofede Aug 14, 2026
d0ecf7a
(perf) coalesce concurrent REST candle fetches
cardosofede Aug 14, 2026
8736594
(refactor) journal: drop dead JournalManager API surface
cardosofede Aug 14, 2026
90f06ac
(fix) SEC-153: credential add/delete requires server owner
cardosofede Aug 14, 2026
445312d
(refactor) move the portfolio-history poll into ServerDataService
cardosofede Aug 14, 2026
e854452
(refactor) SDS listeners get the typed CacheKey (ARCH-155)
cardosofede Aug 14, 2026
5199efb
(perf) PERF-138: replay reads the transcript's tail, not the whole file
cardosofede Aug 14, 2026
010c926
(refactor) SEC-147: the server-access check is a dependency, not 89 c…
cardosofede Aug 14, 2026
a335584
(fix) scope routine hooks to their owner
cardosofede Aug 14, 2026
66fbb84
(fix) SEC-159: gate routine field options on server access
cardosofede Aug 14, 2026
28888be
(refactor) archived_pnl: extract the shared per-trade loop from both …
cardosofede Aug 14, 2026
9f031aa
(perf) PERF-136: bound journal.md and write it once per tick
cardosofede Aug 14, 2026
7b9468e
(fix) CORR-171: a null trade timestamp must not kill the whole PnL re…
cardosofede Aug 14, 2026
997f47f
(fix) CORR-160: backtest_store and the telemetry outbox wrote through…
cardosofede Aug 14, 2026
18b2705
(fix) CORR-161: give new_run_id 64 bits of entropy instead of 16
cardosofede Aug 14, 2026
fbaac0e
(fix) SEC-167: respawn checks the caller's server access, not the own…
cardosofede Aug 14, 2026
29cc807
(fix) CORR-168: one malformed candle row must not 500 the whole chart
cardosofede Aug 14, 2026
26ea738
(fix) CORR-175: a mis-called hook dispatch must not look like a delivery
cardosofede Aug 14, 2026
6c7947f
(perf) PERF-173: batch the winddown's journal writes
cardosofede Aug 14, 2026
069a4bd
(refactor) READ-172: drop the dead `email` block from routine hook co…
cardosofede Aug 14, 2026
efb5191
(fix) CORR-163: bound the routine store's instance dict
cardosofede Aug 14, 2026
66fae09
(fix) CORR-165: a Telegram-started routine belongs to the user who st…
cardosofede Aug 14, 2026
e4c42dd
(refactor) ARCH-162: one shared tracker for fire-and-forget tasks
cardosofede Aug 14, 2026
cb33ff7
(perf) PERF-174: poll each portfolio-history range at its own TTL
cardosofede Aug 14, 2026
d1e8c66
(perf) PERF-170: bound transcript.jsonl and archive the overflow
cardosofede Aug 14, 2026
58a4d91
(fix) SEC-176: stop offering credential add/delete to non-owner traders
cardosofede Aug 14, 2026
026570f
(feat) ARCH-177: an admin API for the code_run grant, and make it sur…
cardosofede Aug 14, 2026
91d7596
(fix) SEC-166: gateway container, wallet and network mutations are ow…
cardosofede Aug 14, 2026
515534a
(fix) SEC-164: strategy start resolves servers for its subject, not f…
cardosofede Aug 14, 2026
99c426c
(fix) CORR-181: a missing trade timestamp charts nothing, like a null…
cardosofede Aug 14, 2026
5e1d845
(fix) SEC-179: stop offering owner-only gateway mutations to traders
cardosofede Aug 14, 2026
d917dbd
(feat) ARCH-177: an admin panel control for the code_run grant
cardosofede Aug 14, 2026
9a5bd0c
(fix) SEC-180: the MCP argv and env agree on who owns an ownerless se…
cardosofede Aug 14, 2026
3faf211
(fix) SEC-178: a session's server is held to the caller's reach, not …
cardosofede Aug 14, 2026
ab32d6f
(fix) CORR-182: routine jobs resolve their instance by owner, not by …
cardosofede Aug 14, 2026
3348e1e
(fix) every GeckoTerminal caller draws on the shared budget
cardosofede Aug 17, 2026
cbdb5ab
(feat) Orca is its own pool source, not Gateway's proxy of it
cardosofede Aug 17, 2026
2ea6ab8
(feat) pick LP bounds off the chart, and price a DEX pair by its symbols
cardosofede Aug 17, 2026
7562d3d
(test) guard tests for shipped behaviour that had none
cardosofede Aug 17, 2026
6bb8083
(chore) CI runs lint, imports, tests and the frontend build
cardosofede Aug 17, 2026
411b115
(feat) three new agents: Backpack MM, Brigado, Orca LP Expert
cardosofede Aug 17, 2026
be792d2
(refactor) ARCH-144: pool_data is core data, not a Telegram handler
cardosofede Aug 17, 2026
7b59aa1
(perf) PERF-169: one gecko request per candle window, whoever asks fo…
cardosofede Aug 17, 2026
8a04b75
(feat) improve dex viz and failing tests
cardosofede Aug 17, 2026
9b10e73
(feat) update front
cardosofede Aug 17, 2026
84cb729
(feat) add linting
cardosofede Aug 17, 2026
db5c44d
(feat) add components
cardosofede Aug 17, 2026
4a75bad
(feat) fix order placement
cardosofede Aug 18, 2026
4758503
(feat) adapt to telemetry
cardosofede Aug 18, 2026
7ea0efc
(feat) add dex compoennets
cardosofede Aug 18, 2026
b83f3b2
(fix) label DEX chart interval/window controls, hide contradictory em…
fengtality Aug 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Revisions listed here are skipped by `git blame`.
# Enable locally with:
# git config blame.ignoreRevsFile .git-blame-ignore-revs
#
# (style) mechanical format sweep: isort then black over the Python tree (READ-133)
3fa941fa3e49fb647b94916b92d11e481e7b7fdd
106 changes: 68 additions & 38 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -1,40 +1,70 @@
name: Bug Report
description: Create a bug report to help us improve
title: "Bug Report"
labels: bug
description: Something in Condor does not work the way it should
title: "[Bug] "
labels: [bug]
body:
- type: markdown
attributes:
value: |
## **Before Submitting:**

* Please edit the "Bug Report" to the title of the bug or issue
* Please make sure to look on our GitHub issues to avoid duplicate tickets
* You can add additional `Labels` to support this ticket (connectors, strategies, etc)
* If this is something to do with installation and how to's we would recommend to visit our [Hummingbot docs](https://hummingbot.org/docs/) and [Discord server](https://discord.gg/hummingbot)
- type: textarea
id: what-happened
attributes:
label: Describe the bug
description: A clear and concise description of the bug or issue. Please make sure to add screenshots and error message to help us investigate
placeholder: Tell us what happened?
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Steps to reproduce
description: A concise description of the steps to reproduce the buggy behavior
value: |
1.
2.
3.
validations:
required: true
- type: textarea
id: attachment
attributes:
label: Attach required files
description: Please attach your config file and log file located on the "../gateway/logs/" folder. It would be really helpful to triage the issue.
validations:
required: false
- type: markdown
attributes:
value: |
Thanks for taking the time to report this.

**Before you file:** search the [open issues](https://github.com/hummingbot/condor/issues?q=is%3Aissue) first — a duplicate splits the discussion in two.

**Never paste secrets.** API keys, wallet private keys, seed phrases, your `.env` or an unredacted `config.yml` do not belong in a public issue. If the dashboard filled in the "Environment" box below, read it before you submit.

- type: dropdown
id: area
attributes:
label: Area
description: Where in Condor did this happen? (The dashboard preselects this for you.)
options:
- Agents & chat
- Portfolio
- Bots & controllers
- Trading & executors
- Routines & reports
- Settings & connections
- Dashboard (other)
- Telegram bot
- Gateway / DEX
- Not sure
validations:
required: true

- type: textarea
id: what-happened
attributes:
label: What happened
description: What you expected, and what you got instead. Screenshots help.
placeholder: The portfolio chart stays blank after I switch servers, but the balances table updates.
validations:
required: true

- type: textarea
id: reproduce
attributes:
label: Steps to reproduce
description: The shortest path from a fresh session to the bug.
value: |
1.
2.
3.
validations:
required: true

- type: textarea
id: attachment
attributes:
label: Environment
description: |
Condor version, page, browser and recent errors. The dashboard's "Report an issue" button (🐛, top right) fills this in automatically; otherwise paste the output of `git rev-parse --short HEAD` and how you run Condor (source, Docker).
validations:
required: false

- type: textarea
id: logs
attributes:
label: Logs
description: Relevant lines from the bot log or the browser console. Redact keys, hosts and wallet addresses first.
validations:
required: false
89 changes: 56 additions & 33 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -1,35 +1,58 @@
name: Feature request
description: Suggest an idea that will improve the Hummingbot codebase
title: "Feature Request"
labels: enhancement
name: Feature Request
description: Suggest something Condor should be able to do
title: "[Feature] "
labels: [enhancement]
body:
- type: markdown
attributes:
value: |
## **Before Submitting:**
- type: markdown
attributes:
value: |
Thanks for the idea.

* Please edit the "Feature Request" to the title of the feature
* Please make sure to look on our GitHub issues to avoid duplicate tickets
* You can add additional `Labels` to support this ticket (connectors, strategies, etc)
* If this is something to do with installation and how to's we would recommend to visit our [Discord server](https://discord.gg/hummingbot) and [Hummingbot docs](https://hummingbot.org/docs/)
- type: textarea
id: feature-suggestion
attributes:
label: Feature Suggestion
description: A clear and concise description of the feature request. If you have looked at the code and know exactly what code changes are needed then please consider submitting a pull request instead.
placeholder: How you want to achieve the desired behavior
validations:
required: true
- type: textarea
id: feature-impact
attributes:
label: Impact
description: A succinct description of why you want the desired behavior specified above.
placeholder: The desired behavior will allow me to..
validations:
required: true
- type: textarea
id: feature-additional-context
attributes:
label: Additional context
description: Add any other context or screenshots about the feature request here (optional)
**Before you file:** search the [open issues](https://github.com/hummingbot/condor/issues?q=is%3Aissue) — someone may already be arguing for it, and a second voice on one thread carries further than a second thread.

If you already know what the change looks like in code, a pull request is welcome instead.

- type: dropdown
id: area
attributes:
label: Area
description: Which part of Condor would this touch? (The dashboard preselects this for you.)
options:
- Agents & chat
- Portfolio
- Bots & controllers
- Trading & executors
- Routines & reports
- Settings & connections
- Dashboard (other)
- Telegram bot
- Gateway / DEX
- Not sure
validations:
required: true

- type: textarea
id: feature-suggestion
attributes:
label: What should it do
description: Describe the behavior you want, not the implementation.
placeholder: Let me filter the executors table by connector, the way the bots table already filters by status.
validations:
required: true

- type: textarea
id: feature-impact
attributes:
label: Why it matters
description: What this would let you do that you cannot do today, and how often you hit it.
placeholder: With 40 executors open I scroll past everything to find the two on Hyperliquid.
validations:
required: true

- type: textarea
id: feature-additional-context
attributes:
label: Additional context
description: Mockups, links, the workaround you use today, or the version you are on.
validations:
required: false
103 changes: 103 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
name: CI

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
backend-lint:
name: Backend Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: astral-sh/setup-uv@v4
with:
version: "latest"

- uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install dependencies
run: uv sync --dev

- name: Check formatting with black
run: uv run black --check .

- name: Check import sorting with isort
run: uv run isort --check .

backend-import-check:
name: Backend Import Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: astral-sh/setup-uv@v4
with:
version: "latest"

- uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install dependencies
run: uv sync

- name: Verify main modules import without errors
run: |
uv run python -c "
import config_manager
import handlers
import utils
print('All core modules imported successfully')
"

backend-tests:
name: Backend Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: astral-sh/setup-uv@v4
with:
version: "latest"

- uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install dependencies
run: uv sync --dev

- name: Run tests
run: uv run pytest --tb=short -q

frontend-build:
name: Frontend Build & Lint
runs-on: ubuntu-latest
defaults:
run:
working-directory: frontend
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
cache-dependency-path: frontend/package-lock.json

- name: Install dependencies
run: npm ci

# Gates on *new* errors against eslint-baseline.json rather than on the
# 76 that predate this workflow -- see frontend/scripts/lint-baseline.mjs.
- name: Lint
run: npm run lint:ci

- name: Build
run: npm run build
Loading
Loading