Releases: dropdevrahul/nexum
Releases · dropdevrahul/nexum
v0.4.0
Added
- Estimated per-tier usage recording in
/nx-buildso the cost report breakdown is populated with token estimates per execution tier, giving visibility into where the session's cost is incurred. - Per-repo routing calibration that biases
/nx-planfrom historical step outcomes, routing subsequent steps based on learned success rates and execution patterns rather than static tier assignments. - Throttled SessionStart audit nudge (
scripts/audit_nudge.py, SessionStart hook) that checks ignore-config rot on session start without spamming the user, surfacing a one-line reminder when the ignore config has actionable findings (missing ignore file, unignored noise dirs, or large/binary files). Throttled to once per repo peraudit_nudge_throttle_hours. Config:audit_nudge_enabled(default true),audit_nudge_throttle_hours(default 24).
Changed
max_steps_per_dispatchdefault lowered 6 → 4. A 6-step grouped Sonnet dispatch stalled the stream watchdog mid-batch (600s no-progress) and lost the whole batch; smaller batches bound both the per-dispatch context and a single failure's blast radius.- Size-aware dispatch batching.
/nx-buildnow partitions a route tier withplan_preview.py --plan … --indices …, which estimates each step's context load (per-step base + declared-file bytes ÷ 4) and bounds each sub-batch by bothmax_dispatch_context_tokens(default 50000) and themax_steps_per_dispatchcount cap — so a few large-file steps split off while a single over-budget step still dispatches alone (steps are never split). Newstore.partition_steps_by_size; configmax_dispatch_context_tokens,dispatch_step_base_tokens. The count-onlystore.py plan-batcheshelper remains for when no plan file is available.
Fixed
- predup freshness guard. A recorded
tool_callsrow only proves an output was injected once, not that it is still in the live context — subagents share the parent's DB, and compaction/resume evicts output while the row persists, so predup could deny a legitimate read whose content was no longer (or never) in context. predup now lets a call through when its prior row is older thanpredup_max_age_seconds(default 900; 0 restores the prior ever-recorded behaviour).
v0.2.1
Added
- Absolute-token compaction trigger:
statusline_compaction_warn_tokens(default 80,000). The⚠ /compactstatus line warning now fires when EITHER the percentage threshold (statusline_compaction_warn_pct) OR the absolute token count threshold is reached. This ensures large context windows (e.g. Opus's 1M-token window) still warn at a meaningful, cost-relevant size rather than waiting until 800k tokens are consumed.
Fixed
/nexum-statuslineand the README now install a version-independentstatusLinecommand (python3 "$(ls -dt ~/.claude/plugins/cache/nexum/nexum/*/scripts/statusline.py | head -1)") instead of a hardcoded${CLAUDE_PLUGIN_ROOT}path, which pointed at the versioned cache dir and broke on every/plugin update. Also documented that a plugin cannot self-register the mainstatusLine(pluginsettings.jsononly supportsagentandsubagentStatusLine).
v0.2.0
Added
- Session-usage status line (
scripts/statusline.py) that displays model, context percentage, token count, cumulative cost, and dedup-hook savings in the Claude Code UI. Wire it with the new/nexum-statuslinecommand, which resolves the absolute path and offers to merge thestatusLinekey into yoursettings.json.
Fixed
- The compaction warning is now driven by Claude Code's real
context_window.used_percentagevia the status line (configurablestatusline_compaction_warn_pct, default 80), replacing the prompt-token estimate that undercounted and rarely fired.
v0.1.1
Fixed
- Hook scripts (
truncate.py,context_watch.py, anddedup.pyvia its import
oftruncate) crashed on Python 3.9 because of PEP 604X | Nonetype
annotations evaluated at runtime. Addedfrom __future__ import annotations
so the documented Python 3.9+ support actually holds. Caught by CI.