HERMES-GIELIE/api
nanw 161e4173c2 fix(sessions): prune index-only ghost sessions (#5331)
Phase 2 of cleanup now sweeps _index.json for stale entries with no
backing file and no in-memory session, removing them regardless of
title (catches multi-language 'Untitled' variants). Phase 3 only
deletes the index when Phase 1 removed files AND Phase 2 couldn't
run, fixing the cache-busting on every cleanup call.

Fix two phase-interaction bugs flagged by Greptile review:
- Track phase1_removed_ids to prevent Phase 2 double-counting
  sessions already removed from disk by Phase 1.
- Track phase2_rewrote_index so Phase 3 skips deletion when
  Phase 2 already cleaned the index in-place.

Adds test_issue5331_index_only_ghost_cleanup.py with 12 test cases.
2026-07-01 17:41:31 +08:00
..
__init__.py
agent_health.py fix(agent_health): read cross-container gateway runtime status from gateway_state.json (#5065) 2026-06-27 19:54:50 +00:00
agent_sessions.py fix(#5307): root-fix subagent classification + GET serialization (Codex round 7) 2026-07-01 08:10:24 +00:00
auth.py fix(auth): keep OIDC startup warnings off the optional crypto path (#3825) 2026-06-29 22:31:45 -04:00
auth_oidc.py fix(#3825): harden oidc endpoint and claim validation 2026-06-30 20:59:19 -04:00
background.py
background_process.py fix(webui): render a server-initiated turn that finished during an SSE gap on a visible tab 2026-06-30 17:13:45 +00:00
clarify.py
commands.py feat(moa): route /moa through WebUI via server-resolved MoA config (#5070, #5057) 2026-06-28 00:23:51 +00:00
compression_anchor.py
config.py Fix composer control reorder rebase collision 2026-06-30 21:11:54 -05:00
dashboard_probe.py
extensions.py fix(extensions): keep settings-only installs canonical (#5094) 2026-06-28 18:25:47 -04:00
gateway_chat.py fix(#5092): continue WebUI goals after gateway turns 2026-06-30 05:04:32 +00:00
gateway_restart.py fix(health): preserve restart failure contract and proofs (#5156) 2026-06-29 03:44:06 +00:00
gateway_watcher.py
goals.py
helpers.py fix(redaction): memoize deterministic API response redactor 2026-06-29 18:22:18 +00:00
kanban_bridge.py
metering.py
models.py Merge #4988 (enihcam prune orphan zero-msg sessions) into stage 2026-07-01 00:19:56 +00:00
oauth.py
onboarding.py fix: harden None providers config across onboarding/providers/routes (salvage of #3967) 2026-06-28 08:57:39 +00:00
passkeys.py
paths.py
plugin_providers.py
plugins.py
profiles.py
providers.py Merge #5120 (rodboev budget limit) into stage 2026-06-30 21:28:51 +00:00
request_diagnostics.py fix(#4973): replace per-request diagnostics Timer with a process-global watchdog thread 2026-06-26 07:58:13 +00:00
rollback.py
route_approvals.py fix(#5000): relay mirrored gateway approvals after stream loss 2026-06-27 06:03:24 +00:00
route_session_list_cache.py feat: add Webhooks sidebar filter parity 2026-06-30 17:06:31 +00:00
routes.py fix(sessions): prune index-only ghost sessions (#5331) 2026-07-01 17:41:31 +08:00
run_journal.py
runner_client.py
runtime_adapter.py
session_discoverability.py
session_events.py
session_lifecycle.py
session_ops.py fix(session): preserve kept tool rows on ambiguous truncate (#5134) 2026-06-30 01:40:07 +00:00
session_recovery.py fix(anchor): preserve settled mixed content order (#4958) 2026-06-27 22:54:29 +00:00
skill_usage.py
sse_chunked.py
startup.py
state_sync.py
streaming.py stage #5024 2026-07-01 06:49:44 +00:00
system_health.py fix: keep psutil optional for system health 2026-06-26 20:49:13 +00:00
terminal.py
todo_state.py
turn_journal.py
updates.py fix(updates): resolve git under macOS launchd (#5175) 2026-06-29 04:22:51 +00:00
upload.py fix(auth): enforce active-profile session IDs 2026-06-30 04:28:15 +00:00
usage.py
webui_session_db.py
workspace.py fix(profiles): use profile-scoped resolver for /api/profile/active default_workspace (Codex gate #5169) 2026-06-29 01:45:17 +00:00
workspace_git.py
worktrees.py