[Production] Release 2026-07-10 - #133
Merged
Merged
Conversation
The docs site now serves under /docs on the product's domain via Vercel Microfrontends, so move all references off the old arcadia-data-hub-docs.vercel.app deployment. - Swap the docs-site host in the READMEs, AGENTS.md, developer-docs, and the watcher package metadata to https://datahub.arcadiascience.com/docs. - Source the docs origin from NEXT_PUBLIC_DOCS_BASE_URL so it inlines into the client bundle: the Docs link in the sidebar user menu is a Client Component, where the old non-public DOCS_BASE_URL resolved to undefined and silently fell back to the hardcoded URL. - Add DOCS_URL (<origin>/docs) for the bare "Docs" links, which otherwise pointed at the product root after the domain move, and fix the login page's Quickstart link to /docs/quickstart (getting-started doesn't exist). Co-authored-by: Cursor <cursoragent@cursor.com>
* Add admin retire flow for instruments with status tabs Retiring soft-sets an instrument to `inactive` (surfaced as "Retired") and always deregisters its watchers so agents stop heartbeating and pending uploads drain. Reactivating sets it back to `active`. The /instruments page now splits into Active / Pending / Retired tabs, and row actions move into a three-dot menu (View details, Edit, Retire/Reactivate) with an inline Confirm for pending rows. Co-authored-by: Cursor <cursoragent@cursor.com> * Sync web lockfile so npm ci works The committed package-lock.json was missing esbuild's optional per-platform binaries and had stale emnapi entries, so `npm ci` failed with an out-of-sync error. Regenerated via `npm install` (Node 24 / npm 11), which adds the missing optional platform packages while keeping all versions within their existing ranges — @biomejs/biome and ultracite stay pinned so lint behavior is unchanged. Co-authored-by: Cursor <cursoragent@cursor.com> * Scope dashboard to active instruments; drop View details menu item The dashboard runs-table instrument dropdown and the stat cards now only consider active instruments (the instruments table was already active-only), so retired/pending instruments no longer appear as filter targets or inflate the KPI counts. `getInstruments` gains an opt-in `activeOnly` flag so the MCP resource still lists all instruments. Also removes the redundant "View details" item from the instrument row menu (rows remain clickable). Co-authored-by: Cursor <cursoragent@cursor.com> * Hide retired instruments in sidebar and notifications settings The sidebar's client-side "recently viewed" list wasn't status-aware, so a retired instrument the user had visited kept showing. The layout now passes the set of active instrument IDs down to the nav, which prunes recently-viewed to active instruments only. The notifications settings page also now lists active instruments only via a new opt-in `activeOnly` flag on `listInstrumentSubscriptions` (the /instruments notify column is unchanged). Co-authored-by: Cursor <cursoragent@cursor.com> * Keep watcher link on retired instrument header Resolve the canonical watcher from soft-deleted rows when no live watcher remains, and show the Retired lifecycle badge instead of "No Watcher". Co-authored-by: Cursor <cursoragent@cursor.com> * Show Deregistered badge for watcherless instruments Distinguish an instrument whose watcher was deregistered from one that never had a watcher, in both the instrument header and the /instruments table, and keep linking to the deregistered watcher. Also tidy up the row-action labels, skeleton row count, and drop the actions-column skeleton on /instruments. Co-authored-by: Cursor <cursoragent@cursor.com> * Add Edit/Retire actions to instrument header Reuse the instruments-table admin actions on the detail page via a shared InstrumentActions component (menu vs expanded variants), move the status badge into the metadata row, and turn the notifications control into a click/hover-friendly labelled pill. Also darken the Retired badge for contrast. Co-authored-by: Cursor <cursoragent@cursor.com> * Fix runs-table z-index over sidebar; tidy deregistered watcher header Isolate the runs-table stacking context so row cells no longer paint over the sidebar, and stop fading the deregistered watcher header (drop the opacity/dashed border, match the Deregistered badge size). Co-authored-by: Cursor <cursoragent@cursor.com> * Show lifecycle/deregistered badge in search results Mirror the instruments table in the global search palette: render the Retired/Pending lifecycle badge for those instruments and a deregistered-aware watcher badge for active ones, instead of always showing watcher connectivity. Co-authored-by: Cursor <cursoragent@cursor.com> * Trim over-verbose comments to follow code-comments rule Co-authored-by: Cursor <cursoragent@cursor.com> * Make retire atomic and address review feedback - Wrap the instrument status flip and watcher teardown in one transaction via a threaded `DbExecutor`, so a failed teardown can't strand watchers. - Hide the notifications pill on non-active instruments. - Memoize the instruments-view row-actions renderer. - Give `getInstruments` a primitive `activeOnly` arg for reliable cache dedup. - Drop the sidebar recents active-instrument filter to avoid a layout-wide query. Co-authored-by: Cursor <cursoragent@cursor.com> * Record and display who retired/deregistered Add nullable `retired_by`/`retired_at` on instruments and `deregistered_by` on watchers (FK to user, set null on delete), captured from the acting session/PAT user in the instrument PATCH and watcher DELETE flows. Surface the actor with an avatar in the instrument and watcher headers. Co-authored-by: Cursor <cursoragent@cursor.com> * Regenerate web lockfile on Linux so npm ci works `npm ci` on the ubuntu CI runner kept failing with "Missing: @emnapi/runtime@1.11.2 / @emnapi/core@1.11.2 from lock file" because the lockfile was previously regenerated on macOS, where npm prunes the emnapi peer deps that the Linux WASM-fallback path (@napi-rs/wasm-runtime) needs. Regenerated via `npm install --package-lock-only` in a node:24 Linux container (matching CI), then confirmed the cross-platform union is stable with per-platform passes. Net effect: adds the two required @emnapi nodes, drops 26 stale phantom vitest/@esbuild binaries, and changes no resolved versions. Verified npm ci passes for linux and darwin targets. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com>
* Add run status filter to instrument runs Derive run status from raw-file aggregates and expose it as a multi-select filter on the instrument page, dashboard, REST run-list endpoints, and the MCP search_runs tool. Filtering uses priority- exclusive EXISTS/NOT EXISTS predicates so the pagination count query stays index-backed without a schema change. Reorder RunStatusIcon to Failed > Pending > Uploaded > Processing > Completed > Empty, add a dedicated empty state, and drive both the icon and the SQL from a single shared run-status table. Co-authored-by: Cursor <cursoragent@cursor.com> * Align run-status filter URL key with REST/MCP `status` Rename the frontend nuqs key from `run_status` to `status` so the shareable dashboard/instrument URL matches the REST `?status=` param and the MCP `status` arg. The internal `RunListFilters.statuses` array stays. Co-authored-by: Cursor <cursoragent@cursor.com> * Drop unused fileCount from deriveRunStatus input `empty` is derived as the fall-through when every status bucket is zero, so the `fileCount` field was never read. Remove it from `RunStatusCounts` and the icon call site. Co-authored-by: Cursor <cursoragent@cursor.com> * Add tests for derived run status filter Unit tests cover `deriveRunStatus` priority ordering and `parseRunStatusParam` parsing (repeated/comma-separated, unknown-drop, dedup). Integration tests assert the `?status=` filter and pagination total match the priority-exclusive SQL on both run-list endpoints. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com>
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
No description provided.