Extend the submission contract to accept a `systemInfo` object and persist it with each submission, including deep-copy support for `extra` metadata.
Also update client-facing docs and HTTP examples (JSON and multipart) and document that the schema is available at `GET /api/schema`, so clients can reliably implement the updated payload format.feat(api): support optional systemInfo in submissions
Extend the submission contract to accept a `systemInfo` object and persist it with each submission, including deep-copy support for `extra` metadata.
Also update client-facing docs and HTTP examples (JSON and multipart) and document that the schema is available at `GET /api/schema`, so clients can reliably implement the updated payload format.
Introduce a `sort` query parameter in submission search paths and pass it into
store search logic. Matching results can now be ordered by `newest`, `oldest`,
`score_desc`, `score_asc`, `mops_desc`, or `mops_asc`, with invalid values
safely defaulting to `newest`.
Update README and HTTP examples to document the new sort behavior and usage so
clients can control result ordering server-side without extra post-processing.feat(search): add configurable sorting for submission results
Introduce a `sort` query parameter in submission search paths and pass it into
store search logic. Matching results can now be ordered by `newest`, `oldest`,
`score_desc`, `score_asc`, `mops_desc`, or `mops_asc`, with invalid values
safely defaulting to `newest`.
Update README and HTTP examples to document the new sort behavior and usage so
clients can control result ordering server-side without extra post-processing.
Add platform handling to submissions and persist a normalized value (`windows`, `linux`, `macos`) with a default of `windows` when omitted.
Extend search/index filtering to support `thread`, `platform`, `intensity`, and `durationSecs` alongside existing text/CPU token matching, and wire these params through request parsing, page data, and navigation URLs.
Update API/README docs and examples to reflect the new submission inputs and search capabilities so users can run more precise queries.feat(search): support platform and benchmark config filters
Add platform handling to submissions and persist a normalized value (`windows`, `linux`, `macos`) with a default of `windows` when omitted.
Extend search/index filtering to support `thread`, `platform`, `intensity`, and `durationSecs` alongside existing text/CPU token matching, and wire these params through request parsing, page data, and navigation URLs.
Update API/README docs and examples to reflect the new submission inputs and search capabilities so users can run more precise queries.
Replace the Docker availability check with an installation step in the
docker publish workflow. This ensures image builds can run on runners
where Docker is not preinstalled.ci(workflow): install Docker before Docker image build
Replace the Docker availability check with an installation step in the
docker publish workflow. This ensures image builds can run on runners
where Docker is not preinstalled.
Replace the outdated top-level file tree with a package-focused code structure
section that reflects the current `lib/*` layout and responsibilities.
Add a Gitea workflow section describing tagged Docker publish behavior, image
tags, test step, and runner requirements so release automation is clear and
repeatable.docs(readme): document new code structure and CI publish
Replace the outdated top-level file tree with a package-focused code structure
section that reflects the current `lib/*` layout and responsibilities.
Add a Gitea workflow section describing tagged Docker publish behavior, image
tags, test step, and runner requirements so release automation is clear and
repeatable.
Replace in-file bootstrap logic with package-level constructors in `run`:
- use `config.Load()` instead of local env parsing/AppConfig helpers
- use `store.Open()` and `web.New()` for persistence and app wiring
- rename local store variable to `benchmarkStore` for clarity
This centralizes startup concerns in dedicated modules, reducing `main.go` boilerplate and improving maintainability.refactor(main): delegate setup to config, store, and web packages
Replace in-file bootstrap logic with package-level constructors in `run`:
- use `config.Load()` instead of local env parsing/AppConfig helpers
- use `store.Open()` and `web.New()` for persistence and app wiring
- rename local store variable to `benchmarkStore` for clarity
This centralizes startup concerns in dedicated modules, reducing `main.go` boilerplate and improving maintainability.