- Track generatePrevNd per slot instead of global generateMaxDecoded
- Calculate TPS from delta between consecutive polls
- Detect resets when nd drops below previous
- Stall (nd == prev) doesn't end generation, just doesn't update TPS
- Reset tracking when no slot found
- Previously: max stayed stale from previous session, all new values looked like resets
- Now: reset generateMaxDecoded to 0 when no generating slot is found
- Use generateMaxDecoded to track highest n_decoded seen across all polls
- Detect resets when nd drops below max (even if slot disappeared and reappeared)
- Simplified logic: only compare against max, not per-slot baseline
- Removed generateSlotId tracking (no longer needed)
- Any drop in n_decoded means counter reset (cumulative counter)
- Removed arbitrary -5 threshold, now uses delta < 0
- Zero delta now correctly detected as stall
- Detect when n_decoded drops significantly (counter reset) and treat as new baseline
- Previously: reset caused negative deltas, TPS stalled at 0
- Now: reset counter, restart tracking from new baseline
- Replace metrics-based TPS with slot n_decoded tracking during generation
- Add generation tracking state (generateSlotId, generateCapturedDecoded, generateStartAt)
- Poll interval reduced from 2s to 500ms to catch shorter prefill/generation events
- AVG now uses session average from message events (cumulative tokens/duration)
- Remove unused fetchMetrics, formatRate, formatTtft functions
- TPS: slot-based (shows for all generation including files)
- AVG: session average (cumulative across messages)
- Fix PP calculation: use per-slot n_prompt_tokens during prefill state
instead of global llamacpp:prompt_tokens_total from /metrics
- Add isPrefilling flag and prefill tracking state (slotId, capturedTokens, startAt)
- Add dedicated formatters: formatPps, formatTps, formatAvg, pad4
- Replace formatRate suffixes with raw number formatters
- Display: PP | TPS | AVG with fixed-width 4-char padding
- Slot polling every 2s with model query parameter
- Debug logging to /tmp/oc-ls-stats-debug.log
- Add .npmignore, TUIPLUGIN.md, test-debug-log.jsonl
- Update AGENTS.md with slot state phases, PP calculation docs