feat(studio): data-repo registry — lab repo picker, "Rig id", no default repo (v0.72) - #178
Open
mbreiser wants to merge 2 commits into
Open
feat(studio): data-repo registry — lab repo picker, "Rig id", no default repo (v0.72)#178mbreiser wants to merge 2 commits into
mbreiser wants to merge 2 commits into
Conversation
…ult repo (v0.72)
Generalizes the CSHL course-repo pipeline into a data-repo pipeline the lab can
use daily, without changing behavior for configured course benches.
- NEW js/studio-data-repos.js (classic dual-export): DATA_REPOS registry
(reiserlab/cshl-2026-course · public · "Bench id"; reiserlab/arena-experiments
· private · "Rig id"), shared parseRepo(owner/name), findRepo, repoLabel,
idLabel, idPlaceholder, sharedLabel. Loaded classic in the Studio, Pattern
Designer and dashboard.
- Studio File ▾ GitHub block: Repo is a <select> (— none — / registry entries /
Other… → free-text #ghRepoInput, still the value of record, validated by
StudioUrlState.isSafeRepo). NO default repo on a fresh browser (saves go to
local files) — DEFAULT_COURSE_REPO removed. The id row's label/placeholder/
title follow the repo ("Bench id" for the course repo, "Rig id" otherwise);
#ghBenchId gets a <datalist> fed by the repo roster (people rig_ids + a new
optional top-level rigs: list, whose mac also drives the connect-time MAC
cross-check). localStorage keys unchanged (studio_gh_repo, studio_bench_id).
- Copy sweep through Studio.dataRepoLabel()/idLabel()/sharedLabel(): save
labels, destination line, quick links, Open-from-repo headers ("This rig —",
"Shared protocols (lab-wide)"), promote / upload / run-log banners, sign-in
remember prompt, lock titles, ? help texts. Internal course* identifiers are
deliberately kept (tests anchor on them).
- Studio.dropInvalidToken(): a 401 on the run-log commit clears the stored
token and says why (was: only "saved locally"). #ghWho shows "@login → repo".
- Pattern Designer: repoSettings() uses the shared parser + idLabel copy.
Dashboard: DEFAULT_REPO from the registry, repo <datalist>, neutral strings.
- scripts/seed-data-repo.sh (dry-run default, idempotent) — creates/seeds a
data repo in the expected layout. docs/development/data-repo-setup.md (new);
proposal status, course test plan P3, github-overview, CLAUDE.md updated.
- Tests: tests/test-studio-data-repos.js (registry, parser, labels, HTML
wiring — 48 checks) in the pixi chain; test-studio-github anchor updated.
Footer v0.72 + release notes.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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.
Summary
PR 2 of the data-repo work: generalizes the CSHL course-repo pipeline so the lab can use the new private
reiserlab/arena-experimentsday-to-day, with no behavior change for configured course benches.What changes for users
roster.yaml(peoplerig_ids + optional top-levelrigs:list; a station'smacalso drives the connect-time MAC cross-check when no person is bound to that rig).Design
js/studio-data-repos.js(registry +parseRepo+ label helpers);Studio.courseSettings()uses it with an inline regex fallback so connect/run-log commit survive a failed script load.Studio.dataRepoLabel()/idLabel()/sharedLabel(); internalcourse*identifiers and localStorage keys are unchanged (tests anchor on them).scripts/seed-data-repo.sh(dry-run default, idempotent) reproduces the lab-repo skeleton;docs/development/data-repo-setup.mdis the operator guide.Verification
pixi run testgreen incl. newtests/test-studio-data-repos.js(48 checks: registry, parser, labels, HTML wiring). Prettier clean on touched JS.e.g. 3e229-g6a/"Save → Reiser lab experiments"/quick links; course → "Bench id"/e.g. bench03; Other → input shown, invalidowner/namerejected with banner and reverted, valid one stored; none → local file, quick links hidden; re-lock disables the select.api.github.com: roster withrigs:fills the rig-id datalist, station MAC mismatch shows the chip, experimenter list from the lab roster; Open-from-repo lists "This rig — 3e229-g6a" and "Shared protocols (lab-wide)".Follow-up (next week)
scripts/migrate-data-repo-dirs.sh— movebench00/01/02+bench02-ilfolders from the public course repo into the lab repo (plan step 12).🤖 Generated with Claude Code