@happyvertical/smrt-education 0.60.0 → 0.60.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -55,6 +55,30 @@ skipped) or `memoryClassCrunchLabsSource(files)`. It never reads video files.
55
55
  - The unit-wide "(all lessons)" combined files repeat the per-lesson files and
56
56
  are large, so they are left out unless `includeUnitWideAggregates` (reported as
57
57
  `aggregate-of-lessons`); the supply list, posters and other extras are kept.
58
+ - Titles (#4642): a material's title is its file name tidied: the letter prefix,
59
+ lesson code (`L02`), unit name, version (`v1.0`, `v.1.1`), `copy` and stray dots
60
+ and underscores are dropped (`A. L01_Teacher Mission Manual_<Unit>_v1.0.pdf` is
61
+ `Teacher Mission Manual`; `... Assessment (Editable)` keeps its qualifier), and a
62
+ trailing ` - detail` becomes `(detail)` (`SQIREL Poster - 8.5x11` is `SQIREL
63
+ Poster (8.5×11)`). Two different files that tidy to one title in the same
64
+ lesson or the course are told apart as `Title (2)`; byte-identical copies are
65
+ already collapsed by de-duplication. A lesson is titled `Lesson N: Name`. The name is, in order: the cover headline of the lesson's
66
+ teacher manual PDF, when the host passes `readFirstPageHeadline({ bytes, kind:
67
+ 'pdf' })` (the most prominent, largest-type text on page 1, lines joined by a
68
+ space; this package has no PDF text reader, so the host supplies one, for
69
+ example from pdfjs; all capitals fold to title case, `WEIGHT & MOTION` is
70
+ `Weight & Motion`; a throw or null is ignored); else the activity of the lesson's
71
+ first (lowest step) `StudentHandsOnExploration` video name, in title case with
72
+ small words lower (`L03.6_Video_StudentHandsOnExploration_PlayWithPlungers` is
73
+ `Lesson 3: Play with Plungers`); else `Lesson N`. Video names are read whether or
74
+ not a playlist matched them, both `L01.4_Video_` and `L01.4 Video_` forms, `-NNN`
75
+ download suffixes dropped, and loose lesson videos at the download's root count
76
+ for the unit their name ends with. Titles are manifest data, so a section or lesson title that differs from
77
+ an already attached part of the same unit is `part-conflict` (see the bundle
78
+ import's shared-placement rules, which are deliberately not relaxed): a unit
79
+ imported before this change keeps its `Lesson N` titles, and getting the new
80
+ titles means importing the unit again into a fresh course (a different course
81
+ id, not `courseId` of the old one).
58
82
  - Lesson pages: the first mission log of a lesson gets a `Mission log` range
59
83
  from `pageCounter` (`createClassCrunchLabsPageCounter({ converter? })` counts
60
84
  PDFs with pdf-lib and Word files by rendering them through the converter).