feat(dashboard): add search, filtering, and sorting for runs - #319
Closed
luyiqian9 wants to merge 10 commits into
Closed
feat(dashboard): add search, filtering, and sorting for runs#319luyiqian9 wants to merge 10 commits into
luyiqian9 wants to merge 10 commits into
Conversation
added 10 commits
July 28, 2026 15:24
- Extend Job.to_summary_json() with algo, ckpt, dataset_path, duration_s - Add _parse_time and _duration_seconds helpers for timestamp/duration calc - Add frontend toolbar with search, state/type/algo filters, sort options - Persist filter/sort state in URL query parameters with visible reset - Add CSS styles for toolbar (jobToolbar, jobSearch, jobFilters) - Add CPU tests for new summary fields and edge cases - Rebuild dashboard dist assets Closes inclusionAI#263
- Add docs/cli/dashboard.rst with search/filter/sort guide and minimal example - Add scripts/seed_dashboard.py for testing with synthetic run data - Update docs/index.rst to include dashboard doc in toctree
CLI-registered jobs store launch config as sections arrays, not flat dicts. Add _launch_value helper to read from both formats. Update seed script to generate mixed-format synthetic data.
The lockfile was corrupted by a local pnpm install --update-checksums that replaced debug@4.4.3's integrity hash with a value from a different registry mirror. Restore the original hash from main.
- _duration_seconds now takes status: running jobs use now() - created_at (keeps growing), terminal jobs use updated_at - created_at (fixed at completion). Fixes incorrect duration from registry scans updating updated_at on every poll for exited jobs. - scan_registered_jobs preserves created_at from the registry item instead of using dashboard discovery time. - scan_registered_jobs only updates updated_at for running jobs or status transitions, not for already-terminal jobs. - Add tests for running vs terminal duration calculation.
- Seed script merges synthetic jobs into existing state by default, preserving real jobs. Use --replace to discard existing data. - Seed emits ISO-8601 timestamps instead of epoch floats, avoiding TypeError in list_jobs sort when mixed with real jobs. - list_jobs sorts by _parse_time(created_at) instead of raw value to handle any str/float mixture safely. - Update docs to reflect merge mode and --replace flag.
…ge clamp - _launch_value now guards against sections=None and items=None instead of raising TypeError on malformed nested structures - URL enum params (state/type/sort) validated against known values, invalid values fall back to defaults instead of producing empty results or broken sort - URL page param validated: rejects negative, Infinity, NaN, non-numeric - Page clamp effect now waits for jobList to load before clamping, preventing restored page=2 from being wiped to 1 on initial render - Add 3 tests for malformed sections (sections=None, items=None, sections as non-list) - Rebuild dashboard dist
- Sort imports alphabetically in test file - Expand multi-line dict/list to satisfy ruff-format - Use double quotes consistently in seed script - Add trailing newline to both files - Remove extra blank line after import in seed script
Integrate upstream dashboard redesign (table layout, runtime-repair filter, jobPageSize=3) with our search/filter/sort toolbar. Keep our URL parameter validation, enum guards, and page clamp fixes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Title
feat(dashboard): add search, filtering, and sorting for runsDescription
Closes #263
Changes
Backend (
areno/dashboard/server.py)Job.to_summary_json()withalgo,ckpt,dataset_path, andduration_sfields_parse_time/_duration_secondshelpers for timestamp/duration calculation_launch_valuehelper that reads from both flat dict and sections-format launch configs (CLI-registered jobs use sections arrays, dashboard-launched jobs use flat dicts)Frontend (
dashboard/src/main.jsx,dashboard/src/styles.css)q,state,type,algo,sort,page)Tests (
tests/test_dashboard_runs_cpu.py)_parse_time,_duration_seconds,_launch_value(both formats),to_summary_jsonnew fields, edge cases (None/empty/corrupted launch_config, sections format, serve jobs with model_path)Docs (
docs/cli/dashboard.rst)Seed script (
scripts/seed_dashboard.py)Verification
vite buildpasses (1830 modules transformed)