• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

source-academy / frontend / 29626747677
42%

Build:
DEFAULT BRANCH: master
Ran 18 Jul 2026 02:19AM UTC
Jobs 1
Files 465
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

18 Jul 2026 02:16AM UTC coverage: 42.299% (-0.06%) from 42.354%
29626747677

push

github

web-flow
Add Dynamic Tab and Plugin Loading (#3977)

* feat: add tab manager

* feat: load external plugins from plugin directory

* feat: add react konva and konva to require provider

* feat: provide konva and react-konva via require provider

* feat: add module loader

* feat: add new module feature flag

* feat: add module to public flags

* feat: add module registry

* fix: remove automatic lang directory URL change

* Focus and auto-redirect dynamically-loaded module side content tabs

showTab() only added a tab to the visible list without ever focusing
it, so a module's tab (e.g. sound's) would appear in the tab bar but
never become the active view. Focus it on show, since a module
deciding to show its tab means it wants it looked at now.

Also generalize the evaluation-error tab redirect: it only reverted to
the Introduction tab for the hardcoded Stepper/CSE Machine tab ids, so
any other dynamically-registered module tab was left showing a dead
view on error. Check against sideContentManager's currently registered
tabs instead of hardcoding ids.

* Fix review comments on #3977: worker leak, unpublished dep, subscribe churn

- evalCode.ts: evalCodeConductorSaga's finally block never terminated
  the consumed conductor, despite getPreparedConductorSaga's own
  contract that the caller does so - every Run leaked its Worker
  instead of shutting it down.
- package.json: @sourceacademy/web-module-loader was pinned to a
  relative file:../plugins/src/web/module-loader path, which only
  resolves with a sibling plugins checkout next to frontend (breaks
  for anyone else, including CI). Switched to the published npm
  version (^0.0.2) - verified byte-identical to the relative path's
  current content before switching.
- SideContentManager.ts/SideContentProvider.tsx: subscribe was a plain
  method, so passing it to useSyncExternalStore needed .bind() on
  every render (a new function reference each time), causing
  unsubscribe/resubscribe on every render. Made ... (continued)

2743 of 7549 branches covered (36.34%)

Branch coverage included in aggregate %.

7 of 32 new or added lines in 9 files covered. (21.88%)

10 existing lines in 4 files now uncovered.

6443 of 14168 relevant lines covered (45.48%)

28.09 hits per line

Uncovered Changes

Lines Coverage ∆ File
11
4.69
-0.48% src/commons/sagas/helpers/conductorEvaluatorCache.ts
5
32.82
-0.07% src/commons/sagas/WorkspaceSaga/helpers/evalCode.ts
4
23.73
-2.27% src/commons/sideContent/SideContentManager.ts
2
0.0
0.0% src/features/conductor/createConductor.ts
1
0.68
0.0% src/commons/sagas/AchievementSaga.ts
1
0.0
-3.13% src/features/conductor/importExternalWebPlugin.ts
1
66.67
src/features/directory/flagDirectoryModulesUrl.ts

Coverage Regressions

Lines Coverage ∆ File
5
4.69
-0.48% src/commons/sagas/helpers/conductorEvaluatorCache.ts
3
33.65
-1.44% src/commons/sideContent/content/SideContentCseMachine.tsx
1
32.82
-0.07% src/commons/sagas/WorkspaceSaga/helpers/evalCode.ts
1
0.0
-3.13% src/features/conductor/importExternalWebPlugin.ts
Jobs
ID Job ID Ran Files Coverage
1 29626747677.1 18 Jul 2026 02:19AM UTC 465
42.3
GitHub Action Run
Source Files on build 29626747677
  • Tree
  • List 465
  • Changed 9
  • Source Changed 0
  • Coverage Changed 9
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 626c69c8 on github
  • Prev Build on master (#29548347284)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc