Repository navigation
v2.0.0: labs from the online library, clean first start, labs kept on update
Updating from 1.7.x-1.9.x: Settings > Updates > Install update (patch, 180 KB). Your labs, results, walkthrough
progress, snapshots and faults are kept; the formerly built-in labs are copied from the old program files on the first
start (no network needed). After a full download they are restored from the lab library automatically.
New installs start with no labs and a short welcome screen: one click installs the recommended starter set.
The app now ships without labs; every lab comes from the online lab library. This is a behaviour change for new
installs (a first start has no labs), hence 2.0.0. Existing users keep everything, and the runtime is unchanged, so
1.7.x-1.9.x installs update in place with the small patch.
Changed
- No labs in the downloads. The 19 former built-in labs (including the EVPN walkthrough) moved from
encorlab/labs/tolabsrc/and are published as packs in the lab library (labs/, with sha256, size, version, RAM
estimate and a recommended starter set inlabs/index.json). The Windows zip, Linux tar.gz, .deb and patch contain no
labs, and the example packs folder (example-packs/) is gone from the downloads too.- Honest numbers (1.9.0 -> 2.0.0, bytes): Windows zip 26,577,567 -> 26,489,377 (-86 KB, -0.3%), Linux tar.gz
33,453,768 -> 33,398,858 (-54 KB, -0.2%), .deb 27,876,152 -> 27,824,844 (-50 KB, -0.2%), patch 276,109 -> 184,693
(-89 KB, -33%). The labs were only ~300 KB uncompressed; the downloads are dominated by the Python runtime and
libraries. The big win is a clean start: a new user picks what they want instead of facing 19 labs at once.
- Honest numbers (1.9.0 -> 2.0.0, bytes): Windows zip 26,577,567 -> 26,489,377 (-86 KB, -0.3%), Linux tar.gz
- Courses list library labs instead of relying on built-in ones. Install all (library) installs a course plus every lab
it lists that you don't have; importing a course file does the same when online. - Delete lab keeps the lab's results history by default (it links up again when you re-install the lab); the UI asks
whether to delete the history too (DELETE /api/user-labs/<id>?clear_history=true). - The library accepts plain http only for a library on localhost (for local mirrors and testing); https elsewhere.
Added
- A clean welcome screen on the first start (no labs yet): three choices side by side. Start with the basics
(recommended) lists the six starter labs with their RAM estimate and total download size, and installs them in one
click with Install recommended starter set. Follow a course opens Browse library & courses, and Got a lab
file? imports a .encorlab file. Empty filters are hidden, and a hint points to Settings while no CML server is set.
When the library can't be reached, a plain "can't be reached right now" note offers Try again (technical details below
it); everything else keeps working offline. - Library view: sizes, RAM estimates (red RAM heavy tag), starter and installed vN tags, Install starter set,
per-course Install all (N labs), and Update available / Update to vN / Update all when the library has a newer
lab version (version:in lab.yaml, compared numerically). The lab list and lab page show update available too. - Settings > Library URL (
library_url,ENCOR_LIBRARY_URL); empty means this repository. - Keeping the labs 1.x bundled (
encorlab/migrate.py): on the first start of 2.x an existing installation gets
every formerly bundled lab back under the same id.- Updated by patch: copied from the old program files still on disk (the runtime's bundled 1.x app code or an
installed 1.x patch, newest copy wins). Works offline. - Updated by full download: installed from the library in the background. Until then a banner offers Restore now /
Dismiss (CLI:encorlab library restore). - History, reports, walkthrough progress, snapshots, faults and exams are never touched, and an existing lab folder is
never overwritten. Fresh installs are detected and skip all of this.
- Updated by patch: copied from the old program files still on disk (the runtime's bundled 1.x app code or an
- CLI:
library install --starter | --all | --updates,library restore;library listshows size, RAM, installed /
update and the starter set;liston an empty install explains how to get labs. - API:
POST /api/library/install-set(starter / ids / updates),GET /api/migration,POST /api/migration/restore,
POST /api/migration/dismiss;/api/labsaddsversion,library,update_availableandmigration. packaging/build_library.pyvalidates every lab strictly, writes versions and the starter set (labsrc/library.yaml)
and refuses a changed lab pack whoseversion:was not raised.- Tests: first run, starter set, course Install all, offline, updates, version ordering, delete-keeps-history, every
library pack installs and validates, and migration (patch, bundled runtime copy, full download, offline, broken
source lab, never overwriting, background restore, dismiss). The smoke test now starts with no labs and installs the
starter set and a course from a library served on 127.0.0.1. A newpackaging/migration_test.pyruns both update
paths against the real 1.9.0 and 2.0.0 builds (passed on Linux and on Windows under Wine). - Developers:
ENCOR_BUILTIN_LABS_DIR=labsrcuses the lab sources in place (the test suite does this).
Docs
- README (first start, library, updating from 1.x), lab authoring guide (
version:, publishing in the library, courses
with library labs), AI prompt (version:guidance) and the JSON Schema (versiondescription).