- Implemented question auto-close scheduling with configurable enablement, delay, and scan interval.
- Added reaction lookup and issue-close operations across backend, proxy, and client APIs.
- Extended host tools and app server wiring to append auto-close suffixes, run scheduler, and cancel closures.
- Updated documentation and env examples with question-autoclose settings and behavior notes.
- Added pending_closures persistence and lifecycle handling to claim, finalize, requeue, and cancel rows.
- Added tests covering scheduler, DB, proxy, server, and host-tool cancellation scenarios.
- Added a Bun/Vite dashboard frontend with App views for status, issues, events, logs, triggers, and working queue.
- Added dashboard backend support by mounting `/static`, serving package assets, and injecting replay config into `index.html`.
- Added client API/state modules for polling, retry, cancel, browse filtering, and config validation in the SPA.
- Replaced `justfile` task orchestration with bun scripts, updating README/AGENTS and command docs.
- Added Docker, Bun config, and ignorefiles to build web assets, copy them into runtime static data, and prune artifacts.
- Added webhook ping helper plus dashboard test fixtures for bootstrap HTML and replay-token substitution.
- Updated the dashboard retry click handler to bind on document.querySelector("main") instead of the "$" helper.
- Expanded pi staging rsync exclusions to omit generated OS, profiling, and host-specific artifacts to keep the build context stable.
- Adjusted dashboard tests to assert the new main selector binding and the removal of the previous "$\"main\".addEventListener" usage.
- Expanded server tests to verify the dashboard HTML includes retry-related text.
- Adjusted the retry-by-issue test to require a retrieved event before asserting its queued state.
- Skipped triage_issue processing for first-time issues already linked to an open closing PR.
- Allowed triage to continue when list_closing_pull_requests raised a transient GitHubError.
- Skipped repeating closing-PR timeline checks for issues already present in the database.
- Added list_closing_pull_requests tests for connected/disconnected/closed timeline filtering.
- Added triage_issue tests for skip, proceed, error fallback, and repeat-no-requery paths.
- Added async issue-closing PR lookup across backend, client, and /gh/v1/closing_prs with auth and errors.
- Added GitHub timeline parsing to track PR link events and return sorted open linked PR IDs.
- Added batched 500-size processed key lookups and applied returned keys to issue browse payloads.
- Added a hide-processed browse mode with row highlighting and updated empty/count messaging.
- Added worktree-aware bad-ref cleanup to remove owning worktrees before deleting refs.
- Added tests for processed-key queries, browse-flag refresh on cache hit, and bad-ref cleanup.
- Routed PR conversation and review-comment webhooks to `issue_key(repo, pr_number)` when origin mapping was missing.
- Added PR-origin context via `origin` in persona outputs for `followup_comment` and `directive`.
- Updated directive and follow-up prompt templates to use `origin.description` when origin issue is unavailable.
- Added `ROBOMP_TASK_TIMEOUT_HARD_GRACE_SECONDS` and `Settings.task_timeout_hard_grace_seconds` with a 60s default.
- Updated triage/replay to await terminal completion, default `--wait-timeout` from timeout+grace, and return timed_out JSON.
- Added hard-timeout worker handling with per-slot TMPDIRs and RPC stop on expiry to avoid stuck runs.
- Added SlotPool `slot_uids` exposure and queue/sandbox cleanup to reap configured or stale slot processes before release.
- Added tests for new timeout parsing, manual triage waits, queue slot reaping, sandbox process cleanup, and worker hard-timeout behavior.
- Added async issue-browse cache with fetch metadata to reuse normalized issue payloads.
- Updated /api/issue/browse to return cached issues, honor `refresh=1`, and expose cache timing metadata.
- Updated dashboard loadBrowse flow with `forceRefresh`, refresh-button binding, and age-based status text.
- Added test helpers and cache-behavior tests for forced refresh, reuse, and webhook updates.
- Added SlotPool initialization to queue test helpers to align WorkerPool fixtures with slot-aware execution.
- Updated cancellation and shutdown queue tests with slot_uid-aware _dispatch stubs.
- Added sandbox tests covering _chown_workspace root/non-root and Linux/non-Linux behavior.
- Added ensure_workspace test coverage that it forwards slot_uid into _chown_workspace calls.
- Expanded _run_rpc_blocking tests to verify HOME/token env handling and slot_uid user/group mapping.
- Added pragma parsing to strip command lines and preserve cleaned directive bodies in event routing and payloads.
- Added pragma override resolution for model and thinking level aliases, applying overrides during task execution.
- Added delivery_id propagation across queue/task flows and persisted event model data for running-event tracking.
- Added inbound thread context to persona directives and comment tools, defaulting comments to inbound thread unless overridden.
- Added dashboard and running-event fields for model and last-tool info, and rendered new columns for running rows.
- Added tests covering pragma parsing, resolution precedence, thread defaults, and event tracking behavior.
- Added cancellation context helpers and hooks to track current events and safely arm/disarm handlers.
- Added cancel hooks and pre-cancel semantics in `WorkerPool` to execute cancel actions and mark canceled runs failed.
- Added dashboard cancel controls and `/api/cancel` endpoint with token validation and failure handling for bad deliveries.
- Updated gh_open_pr guidance and implementation to run `bun run fix`, commit style diffs, then `bun check`, and retry as needed.
- Added tests for gh_open_pr fix/check behavior and queue cancel edge cases, including pre-arm and unknown-delivery cases.
- Added configurable `reviewer_bots` handling from `ROBOMP_REVIEWER_BOTS`, normalized and injected into app creation.
- Changed event routing so configured reviewer-bot comments are treated as directives without requiring `@bot` mentions.
- Added a pre-PR `bun check` gate in `gh_open_pr`, including script detection, failure checks, and retry guidance.
- Added GitHub client models and list endpoints for review comments and PR reviews with fallback field normalization.
- Added maintainer directive flow with config fields, mention parsing, and directive prompt templates.
- Propagated directive payloads into webhook handling, tasks, and worker prompts for triage/review actions.
- Added admission/dedupe caps and `INACTIVE_EVENT_STATES` checks to prevent duplicate or active-event requeue/retry conflicts.
- Refactored push/PR host tooling to use guarded branch checks and reject unsafe identity or ancestry mismatches.
- Added a justfile with stage/build/dev and maintenance recipes for container, compose, and local workflows.
- Removed the Makefile and migrated README startup and recovery guidance from make targets to just.
- Added Docker and entrypoint cache/setup changes for CARGO, CARGO_TARGET, rustup, bun cache, and paths.
- Added tests for GitHub issue browse behavior, including allowlist filtering, ordering, PR exclusion, and error responses.
- Added manual issue-reference validation and manual triage enqueueing for stable replayable payloads.
- Added dashboard controls and a `POST /api/trigger` path to queue triage/retry actions with a replay token.
- Added per-submitter submission tracking and rate limits, including trusted allowlist and association exemptions.
- Added configurable model pools and defaults, and switched worker dispatch to random model selection per request.
- Updated CLI pre-push and PR-open checks to enforce clean trees, formatter runs, and required issue-closure keywords.
- Validated gh_push_branch commits against configured bot author identity and rejected mismatches.
- Added ROBOMP_GIT_AUTHOR_NAME and ROBOMP_GIT_AUTHOR_EMAIL defaults and documented required workspace identity.
- Propagated author_name/author_email into ToolBindings and worker task calls for push preflight setup.
- Added tests for wrong-identity rejection and server dashboard/status/log edge-case behavior.