dexterm

Changelog

What changed in dexterm, by day, written by hand from the app's git history.

Human-written from the git log of dexterm/app (84 commits, 2026-10-05 to 2026-10-09). Hashes are the merge or lane commits on main. The app is version 0.0.1 throughout; there is no public release yet.

2026-10-09#

  • Keyless social layer (87b598f, merge of ce99a04): a TRENDING IN THE SPACE board on T ranked from public lists (Jupiter trending and organic score, GeckoTerminal trending pools, CoinGecko trending; DexScreener paid boosts weighted against a coin), narratives, and a NEWS column from CoinDesk, Cointelegraph, The Block and Decrypt official RSS; a SOCIAL panel on the token screen (s); KOL lists on K and dexterm kol, with hash-locked packs that are refused when tampered. Every post and headline passes a prompt firewall, near-duplicates collapse, account bursts are marked spam, and instruction-like posts never reach the model. No X API, no scraping, no login: in live mode the panel shows on-chain rows only.
  • History recorder (4b082fd, merge of e3f5fd6): on by default in live mode, it keeps material changes per coin, feed membership and code-only outcome labels (1 h to 72 h) in the local database, with low-priority DexScreener re-checks capped at 6 a minute and 1,500 a day. Nothing is uploaded. Measured at about 100 MB per 8-hour day and no CPU cost above noise; --no-recorder or DEXTERM_RECORDER=0 turns it off, and dexterm recorder stats|label|prune|export reads it.
  • Coin images (0560b6e … 3f8648e): the coin's picture on every row, the token screen, the spotlight and the popup header; real pixels over kitty, iTerm2 and sixel, half-block art everywhere else including Terminal.app; one fetch per coin through a local cache; --no-images to turn it off.
  • Popup chart v2 (242863e, merge of b5016be): TradingView Lightweight Charts 5.2.1 vendored and served same-origin on one exact route; a native wry window docked beside the terminal that follows it; the chart's own six timeframes answered from the terminal cache with zero fetches; EMA, VWAP, volume MA, tape markers, drawings, live/stale badge; the paper position drawn as an entry line, fills and a row. Fixed on the way: malformed WebSocket close frames, a ×100 bug on the 24h change in popup pages, unknown popup events echoed back, and install.sh never linking the popup package. A 50-probe attack suite runs against the in-app server.

2026-10-08#

  • AI scan mode (be92898): an observe-only watcher with six triggers, a no-hop lock, cost caps, a WHY strip, Z/R keys, --scan flags and /scan commands. Four structural layers keep the scan session from ever taking a UI action; measured zero extra requests and no idle-CPU cost in calm mode.
  • UX round 3 (bfdf2f7): the screener paints in under a second from a cached snapshot or skeleton rows (was 17.5 s cold); the chart gets limiter priority over background work so a cold timeframe lands in ~250 ms (was 15 s); hover prefetch of candles; the analyst answers in 3–6 decided lines with long form only on request; a position row under the chart; the buy/sell flow panel replaces the tape by default (F toggles).
  • Idle throttle and quit (67f5a74, 770d096, 44e8206, 1082dc0): the full look while you type, 8 fps ambient rain after 5 s idle; quit under a second by wiring the shutdown signal through the transport and cancelling parked limiter waits; measured startup and RSS.
  • Popup host hardening (87b79f1, d49f330): navigation pinned by parsed origin (closes a userinfo bypass), crash-safe close, loopback-only enforcement for remote content, a README for the openPopup interface and security model.
  • Analyst prompt order fix (e9d7cba): keep the skill invocation first so the CLI expands it.
  • Merge of analyst round 2, speed and the LARP detector (b7f5804).

2026-10-07#

  • LARP detector (85e1bbf … 0882e59): advertised-link classification, an SSRF-safe page fetch (DNS validated in the socket, robots.txt honoured, bodies capped), RDAP domain age, GitHub activity, four MCP tools, the larp-check skill with a structured verdict, V/W/X/T/L keys, a verdict badge only for coins you vetted, an end-to-end prompt-injection fixture, and the RDAP +json content-type fix that had silently dropped every real RDAP body.
  • Analyst round 2 (4f86b50, be0f882): the analyst knows the hovered coin and the visible rows every turn; a split coin-list view on the analyst tab; a token-authenticated UI-action channel re-validated by the app; plain-language filters; coin-list answers that jump.
  • Speed (b01e236): 5m/15m derived from 1m and 4h/1d from 1h so a switch is milliseconds; a one-call get_dossier; the MCP server shares the terminal's on-disk cache; sonnet as the default analyst model; partial verdicts with missing_data instead of false INSUFFICIENT_DATA.
  • PAPER trading T0 (8513485): the ticket, the simulated wallet in SQLite, the positions screen, the confirm gate, a TradeExecutor boundary with no signing library anywhere.
  • Two-speed feed (2e804e3, a718670, da197c3): on-chain curve price over one WebSocket for the open token and the watchlist, LIVE/POLL badges, a cap of 24 subscriptions, calm-mode budget.
  • QA batches (72f57d7, a605325, 3e71858, 063ad59, 7fb51cc): chat focus model (i/⏎ to type, q never quits mid-question), copy CA, the trench feed as default, no auto-dossier on ⏎, mint-pinned selection on new pairs, scrollable answers, the ~9 s quit hang from WebSocket reconnect backoff.
  • FREE-FOREVER data layer (0d276be): an RPC pool that rotates by health and pauses on 429, the keyless holder aggregate, a request budget meter, a keyless smoke script.
  • Installable and self-explaining (07e42e9): install.sh, dexterm doctor, the welcome card, the ? help overlay, graceful states for every missing thing.
  • Pacing and idle CPU (aa83124, f5cd0cd, 0d803c9, 8badf3f): DexScreener wide pool paced to ≤30 req/min, idle CPU to ≤12%, a feed switcher, hundreds of coins in the pool, doubled analyst answers fixed, the first-test fixes.

2026-10-06#

  • The Claude analyst wired into the app (be39d04, d654559): a rug-checks the selected row, ⏎ opened a dossier (later made explicit), the decrypting answer, the cost caption.
  • The cyberspace look ported onto live data (c35ae07, 946000e): rain made of your own tickers, two masks on the cell buffer, pump/dump colouring from the data, boot sequence, blink transitions, intensity tiers.
  • Live data (18f55ad): Helius RPC with a credit meter, live token screen, PumpPortal new pairs, the watchlist, GoPlus.
  • Screener on the data store (f5e395d, d5d5354): the filter grammar, the sort menu, presets through the health registry, the spotlight, --record/--replay.

2026-10-05#

  • Data layer (ea4d5ba, b5e28de): the limiter, the health registry, the SQLite cache, fixtures, DexScreener and Jupiter adapters; GeckoTerminal candles, Solana RPC mint and holders, the RugCheck summary.
  • The TUI and the CLI (6c7fb97, 8dbdd59): the cell-buffer renderer extracted from the prototype, the five screens on fixtures, snapshot tests, the monorepo scaffold and the normalized model.