Skip to content

feat(deltasignal): the pathway perturbation UI, behind a per-deployment flag - #202

Merged
adamjohnwright merged 3 commits into
mainfrom
deltasignal-into-main
Sep 14, 2026
Merged

feat(deltasignal): the pathway perturbation UI, behind a per-deployment flag#202
adamjohnwright merged 3 commits into
mainfrom
deltasignal-into-main

Conversation

@adamjohnwright

Copy link
Copy Markdown
Contributor

Brings #155 onto main. The feature is @Chryseisliu's — credited as co-author on the commit. What is added here is the per-deployment flag and the update to current main.

Supersedes #155, which cannot be merged as it stands.

Why this is a transplant rather than a merge

feat/deltasignal-ui was 139 commits behind main. #198 merged main into it and added the flag; merging that as a squash flattened main back out of its history. The content was then correct while the history was not, so a further merge conflicted in six files to no purpose.

So these 23 files are the branch's own diff against main, applied to main. Identical content, reviewable diff, no synthetic conflicts.

.github/workflows/tests.yml was deliberately left behind. The branch still carries actions/setup-node@v4 and upload-artifact@v4; taking it would have silently reverted the two dependabot bumps that landed on main since (#125, #127). Verified: git diff --stat origin/main -- .github/ is empty.

The flag

SiteProfile.deltaSignal  →  SHOW_DELTASIGNAL  →  viewport.showDeltaSignal  →  @if
profile DeltaSignal
production off
beta off
development on
curator / curator-local off

Absent means off, so a new deployment opts in rather than inheriting a research feature. Only development has it on, because /api is routed by proxy.conf.js — the dev server's proxy, which does not exist in a built artifact and which nothing in deploy.yml or the Apache config provides. Turning it on elsewhere would offer a button whose every call fails.

Flipping it for beta is one line in SITE_PROFILES, whenever that is wanted — with the caveat below.

Still open, and not fixed here

The service calls /api/pathways, /api/parse and /api/solve as bare relative paths with no environment indirection, where every other backend in this app goes through a constant (CONTENT_SERVICE, RENDER_SERVICE). On a built site those three reach the origin and get index.html back.

The flag makes that safe rather than fixed: the feature simply is not offered where it cannot work. Giving DeltaSignal a configured backend is what stands between this and it running anywhere but a dev machine.

Verified

  • 210 unit tests, check:types, check:lint 653 and check:dead 146 — both ratchets unchanged
  • e2e/deltasignal-toggle.spec.ts passes in both states, proving the flag from one build via the __APP_ENV runtime override: the Perturb button is absent under production and present under development
  • Production build clean

Once this lands, feat/deltasignal-ui can be deleted and #155 closed as superseded.

🤖 Generated with Claude Code

…nt flag

Brings #155 onto main. The feature is Chryseisliu's; what is added here
is the flag and the update to current main.

Taken as content rather than as a merge. The branch was 139 commits
behind, and #198 -- which merged main into it and added the flag -- was
squashed into it, which flattened main out of its history. The content
was then correct and the history was not, so a further merge conflicted
in six files for no useful reason. These 23 files are the branch's own
diff against main, applied to main.

.github/workflows/tests.yml was deliberately left behind: the branch
still carries actions/setup-node@v4 and upload-artifact@v4, and taking
it would have reverted the two dependabot bumps that landed on main
since (#125, #127).

The flag: SiteProfile.deltaSignal -> SHOW_DELTASIGNAL ->
viewport.showDeltaSignal -> @if around the Perturb button and the panel.
Absent means off, so a deployment opts in rather than inheriting a
research feature. Only `development` has it on, because /api is routed
by proxy.conf.js -- the dev server's proxy, which does not exist in a
built artifact and which nothing in deploy.yml or the Apache config
provides.

Still true, and still the thing between this and a deployed DeltaSignal:
the service calls /api/pathways, /api/parse and /api/solve as bare
relative paths with no environment indirection, where every other
backend here goes through a constant. On a built site those three reach
the origin and get index.html back. The flag makes that safe rather than
fixed -- the feature is not offered where it cannot work.

210 unit tests, check:types, both ratchets unchanged, and
e2e/deltasignal-toggle.spec.ts passes in both states.

Co-authored-by: Chryseisliu <Chryseisliu@users.noreply.github.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
adamjohnwright and others added 2 commits September 14, 2026 16:29
…ly on

DELTASIGNAL_BACKEND defaulted to http://localhost:8080. On the Reactome
dev host 8080 is the Tomcat serving ContentService and AnalysisService,
so /api/pathways, /api/parse and /api/solve went there and came back
404 -- a real server denying a real request, which reads as a broken
feature rather than an unconfigured one.

DeltaSignal's own compose also binds 8080, so the two cannot coexist on
this box. It is published on 8090 here; the container still listens on
8080 inside.

Verified end to end rather than by reading the config: the backend is up
(GET /api/health returns deltasignal-api 0.1.0, Julia 1.10.10), the
Angular dev server proxies /api/pathways to it with a 200, and on the
development profile the Perturb button renders, the panel opens, and it
fetches 200 /api/pathways.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@adamjohnwright
adamjohnwright merged commit 2e09f3b into main Sep 14, 2026
6 checks passed
@adamjohnwright
adamjohnwright deleted the deltasignal-into-main branch September 14, 2026 16:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant