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

source-academy / frontend / 29910200637
42%

Build:
DEFAULT BRANCH: master
Ran 22 Jul 2026 10:02AM UTC
Jobs 1
Files 468
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

22 Jul 2026 10:00AM UTC coverage: 42.325% (+0.03%) from 42.291%
29910200637

push

github

web-flow
fix: stop legacy chap param from shadowing Python share links (#4153)

* fix: stop legacy chap param from shadowing Python share links

playground.context.chapter always holds a real js-slang Chapter value
(defaults to Source 1) regardless of whether a Conductor language
(e.g. Python) is selected, since the two pieces of state are
independent. This meant `chap` was always truthy in the share-link
query string, so Playground.handleHash's `if (chapter) {...} else if
(qs.lang)` always took the legacy branch and the `lang`/`evaluator`
params added in #4152 were never read back on decode.

updateQueryString now only encodes chap/variant when Conductor is
disabled, and only encodes lang/evaluator when it's enabled, so decode
reaches the correct branch.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix: split share-link language ids into language/variant/evaluator, fix directory-load race clobbering restored selection

Two more issues on top of the chap-shadowing fix:

1. Share links exposed the raw compound directory ids as-is (e.g.
   `lang=python2&evaluator=python2Default`), leaking the internal
   id-concatenation convention into the URL. Add languageIdCodec to
   split/join a directory id into its (language, variant) parts and an
   evaluator id into (languageId, evaluatorSuffix), so links now encode
   three clean fields: `language`, `variant`, `evaluator`.

2. `fetchLanguages` runs unconditionally at app boot; its `setLanguages`
   handler unconditionally reset `selectedLanguageId` to the first
   directory language. If handleHash's restore dispatch landed before
   that fetch resolved, its selection got silently overwritten (and
   its evaluator, which requires a loaded languageMap to validate,
   never got resolved at all). setLanguages now re-runs the
   already-pending selection instead of stomping it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>

2757 of 7575 branches covered (36.4%)

Branch coverage included in aggregate %.

11 of 19 new or added lines in 4 files covered. (57.89%)

138 existing lines in 3 files now uncovered.

6466 of 14216 relevant lines covered (45.48%)

28.42 hits per line

Uncovered Changes

Lines Coverage ∆ File
4
53.06
-0.35% src/pages/playground/Playground.tsx
3
45.53
-5.38% src/commons/sagas/PlaygroundSaga.ts
1
58.62
4.3% src/commons/sagas/LanguageDirectorySaga.ts

Coverage Regressions

Lines Coverage ∆ File
98
53.06
-0.35% src/pages/playground/Playground.tsx
28
45.53
-5.38% src/commons/sagas/PlaygroundSaga.ts
12
58.62
4.3% src/commons/sagas/LanguageDirectorySaga.ts
Jobs
ID Job ID Ran Files Coverage
1 29910200637.1 22 Jul 2026 10:02AM UTC 468
42.32
GitHub Action Run
Source Files on build 29910200637
  • Tree
  • List 468
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 28dfdcf2 on github
  • Prev Build on master (#29904561298)
  • Next Build on master (#29978465450)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc