Remove eepsmedia plugin code, leave tombstone (CODAP-1423) - #162
Merged
Merged
Conversation
The eepsmedia plugins (Choosy, scrambler, simmer, testimate) were extracted to concord-consortium/eepsmedia on 2026-07-31 and now deploy directly to s3://codap-resources/plugins/eepsmedia/ via per-plugin git tags. Keeping a second copy here invites divergent commits, so the contents are deleted and replaced by a tombstone README. Earlier history remains in this repo's git log and in the new repo. Deliberately NOT changed: src/data_interactive_map.json and published-plugins.json. Those describe what a CODAP V2 build should contain, and V2 serves plugins from folders co-located with the built application rather than from S3. Delisting them would silently drop the plugins from a future V2 build's menu. Verified that published-plugins.json regenerates byte-identical from the unchanged map. The tradeoff is that a V2 build now needs manual intervention, and nothing fails loudly when it is skipped -- the plugins simply 404 from the plugin menu. So bin/build ends every run with a warning banner spelling out what to copy and where. The banner leads with the server-side copy, done after deploy, which reuses the fallback the codap-v2-build skill already applies to any plugin that fails to build. Copying locally also works but is harder: the folders must land in extn/plugins/eepsmedia/ AFTER codap/bin/makeExtn finishes and BEFORE the zip is sealed, because makeExtn rsyncs into extn/plugins with --delete and bin/build does rm -rf on its own working directory, so neither destination survives an earlier copy. The call chain is codap/bin/makeCodapZip -> codap/bin/makeExtn -> codap-data-interactives/bin/build. - eepsmedia/: 250 files deleted, tombstone README.md added - bin/build: drop from STATIC_PLUGIN_DIRS and HIDDEN_DIRS (dirs no longer exist, rsync would fail); add warnEepsmediaNotBuilt() banner at end of run - bin/update-strings: drop ./eepsmedia/plugins/scrambler from TRANSLATED_PLUGIN_ROOTS - CLAUDE.md, plugins.md: point at the new repo; also drop the stale "Webpack" description of Scrambler/Testimate/Simmer, which never used webpack Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR removes the in-repo eepsmedia/ plugin sources now that they live in concord-consortium/eepsmedia, replacing them with a tombstone README and updating build/docs so the monorepo no longer builds/copies those plugins while still keeping them listed for potential CODAP V2 builds.
Changes:
- Deleted the
eepsmedia/plugin code and addedeepsmedia/README.mdas a tombstone with V2 build copy instructions. - Updated
bin/buildto stop copyingeepsmediaplugins and print a prominent end-of-run warning about manual V2 build steps. - Updated translation/docs references (
bin/update-strings,CLAUDE.md,plugins.md) to point to the new repo and remove stale build/translation info.
Reviewed changes
Copilot reviewed 78 out of 255 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
bin/build |
Removes eepsmedia from build-copy lists and adds a warning banner about required manual V2 steps. |
bin/update-strings |
Drops eepsmedia/plugins/scrambler from translated-plugin roots and documents the move. |
CLAUDE.md |
Updates repo architecture/build/translation docs to reflect the eepsmedia move and tombstone. |
plugins.md |
Updates deployment metadata to indicate eepsmedia plugins now deploy from the new repo. |
eepsmedia/README.md |
Adds tombstone README explaining the move and how to handle CODAP V2 builds. |
eepsmedia/** (deleted) |
Removes the old eepsmedia plugin source tree from this monorepo. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
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.
Removes the eepsmedia plugin code now that it lives in concord-consortium/eepsmedia, and leaves a tombstone in its place. Completes the monorepo-cleanup half of CODAP-1423.
What changed
eepsmedia/README.mdaddedbin/buildSTATIC_PLUGIN_DIRS/HIDDEN_DIRS; added a warning banner at end of runbin/update-strings./eepsmedia/plugins/scramblerfromTRANSLATED_PLUGIN_ROOTSCLAUDE.md,plugins.mdsrc/data_interactive_map.jsonpublished-plugins.jsonThe point of deleting rather than leaving the code in place is to remove the possibility of someone committing plugin changes to the wrong repo and the two copies drifting. Git history preserves the contents in both repos.
Why the plugin map was left alone
CODAP-1423's description says to remove the eepsmedia entries from
src/data_interactive_map.json. That instruction is wrong and this PR deliberately does not follow it.bin/buildgeneratespublished-plugins.jsonfromselect(.isStandard=="true"), and CODAP V2 reads that file as its plugin menu (apps/dg/core.js:191). V2 serves plugins from folders co-located with the built application — it does not read from S3, and having it point at the new S3 locations is explicitly not a goal. So those two files describe what a V2 build should contain.If another V2 build is ever needed, the right fix is to copy the plugin folders in manually. Delisting them instead would make the four plugins silently vanish from that build's menu.
Verified that
published-plugins.jsonregenerates byte-identical from the unchanged map, so this is stable across future builds.The tradeoff
A V2 build now requires manual intervention, and nothing fails loudly if it is skipped — the build succeeds and the four plugins simply 404 from the plugin menu. So
bin/buildends every run with a warning banner spelling out what to copy and where.The banner leads with the server-side copy after deploy, which reuses the fallback the
codap-v2-buildskill already applies to any plugin that fails to build. Copying locally also works but is harder: the folders must land inextn/plugins/eepsmedia/aftercodap/bin/makeExtnfinishes and before the zip is sealed, becausemakeExtnrsyncs intoextn/pluginswith--deleteandbin/builddoesrm -rfon its own working directory — so neither earlier destination survives.Companion PR in the
codaprepo adds this as an explicit step to thecodap-v2-buildskill.Verification
published-plugins.jsonregenerates byte-identical from the unchanged mapbash -n bin/build,sh -n bin/update-stringspass; banner rendered to confirm formattingSTATIC_PLUGIN_DIRS/HIDDEN_DIRS/TRANSLATED_PLUGIN_ROOTSpath existscopyStaticPluginsrsync stage completes with exit 0neilfraser-js-interpreterfiles, deliberately removed under CODAP-1460Not run: a full
bin/build(it wouldnpm ciin four sibling repos), and not a V2 build — the timing rule above was derived from readingmakeExtn/makeCodapZip, not from running one.Known leftovers, intentionally untouched
build/static/js/main.a099b830.chunk.js— checked-in CRA build of the plugin browser with the old map bundled in, sogrep eepsmediastill hits. Regenerated by that app's build.gh-pagesbranch still holds all 250 files. No automated sync exists, so it was unaffected; its plugin-browser links will break whenever it is next regenerated from master.🤖 Generated with Claude Code