@jamestesting888/tum-mcp 0.14.1 → 0.15.0

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,66 @@
1
1
  # Changes
2
2
 
3
+ ## 0.15.0 — 2026-10-31
4
+
5
+ - The managed block in a course project's `AGENTS.md` is now an agent guide. It tells the
6
+ agent that it works for a student of the course, which skill handles which kind of
7
+ request (and how to answer "what should I do now?" with a dated plan), how to read short
8
+ requests such as "this week" or "the exam", where each kind of course information lives,
9
+ and how to answer as a tutor. `study sync` and `study upgrade` replace an outdated guide
10
+ and keep the student's own text; an edited guide is kept and reported.
11
+ - `tum-mcp study find PROJECT "words"` lists the pages of stored sources that mention every
12
+ word, with a snippet each, and names the sources it could not search. Without words it
13
+ lists every source with its key, title, file and status.
14
+ - New course handbooks have a Conventions section for the textbook, notation, terms and
15
+ answer format the course expects.
16
+ - Agents look at the slide and sheet pages they rely on instead of trusting extracted text,
17
+ which drops figures and scrambles tables and formulas. `study text --images` renders up to
18
+ 12 pages to PNGs for hosts that cannot open PDFs (such as Codex), and `study find` and
19
+ `study text` name the PDF file so hosts that can (such as Claude Code) open the page
20
+ directly. The agent guide, the skills and the Moodle and Artemis read tools say so; the
21
+ unused PDF page reader in the extraction worker became this renderer.
22
+ - One unreadable page no longer fails a whole PDF. When pypdf rejects a page (for example a
23
+ slide beyond its parsing limits) or the whole file (a damaged cross-reference table), PDFium
24
+ reads it instead; a page neither can read is listed as needing a visual check. This covers
25
+ `study text`, `study find`, `study import` and Moodle and Artemis material text. `study find`
26
+ also matches words printed with ligatures, so "first" finds "first".
27
+ - Course content can use heading levels 1 to 3 in Study, Exercises, Exam and Lecture.
28
+ A block without a title continues the section above it, so a table or answer frame
29
+ no longer needs a heading of its own. The page outline nests subsections.
30
+ - A multi-part exercise shows one guide per part. The Guide, Solution and "Try another"
31
+ buttons share one row under the problem, and the redundant list of part numbers is gone.
32
+ - `study report` flags a flat Study outline of four or more units, multi-part exercises that
33
+ share one guide, and exercise passages that set assumptions or sources apart.
34
+ - review-course also scores organization and redundancy for each unit and exercise, and the
35
+ course as a whole: the order of its units and groups, what repeats across units and
36
+ workspaces, and, when Exercises, Exam or Lecture sit beside Study, how they
37
+ link to the passages that teach what they need (integration). `study report --section
38
+ structure` prints a course map and flags terms used before they are taught, odd groups,
39
+ repeated passages and practice, and missing links. Each lost point names its rubric
40
+ check, and the report counts the checks that fail most. An existing `review.json` still
41
+ loads and lists the dimensions it lacks.
42
+ - PDF text extraction works for agents running in a macOS sandbox such as Codex's
43
+ `workspace-write`: its memory limit no longer needs to list every process on the machine,
44
+ which the sandbox forbids, so `study text` no longer fails on uncached PDFs there.
45
+ - The skills group Study units by lecture, fold assumptions into the problem statement,
46
+ give verdicts with the source's definitions, cover every presented part of the chosen
47
+ sheet, and take the newest sheet stamped for the current semester when no release date
48
+ is shown.
49
+ - Campus tools that only read from Moodle, Artemis or Zulip and save local files or
50
+ checkpoints (`moodle_download_material`, `moodle_refresh`, `artemis_get_attachment`,
51
+ `zulip_save_checkpoint`) are now marked read-only, so agents that ask before
52
+ non-read-only tools no longer prompt for downloads. Sign-in, sign-out and cache
53
+ clearing keep their warnings.
54
+ - `tum-mcp doctor --live` saves each campus check with its time, and `doctor` and the
55
+ `login` selector show that result for 12 hours instead of "Not verified". Signing in
56
+ again or logging out clears it; only the result, its time and file metadata are stored.
57
+
58
+ ## 0.14.2 — 2026-10-30
59
+
60
+ - TUMonline login keeps its browser open when an unauthenticated session refresh
61
+ returns an empty HTTP 204, allowing sign-in to finish instead of reporting
62
+ `INVALID_RESPONSE`.
63
+
3
64
  ## 0.14.1 — 2026-10-30
4
65
 
5
66
  - TUMonline login keeps waiting while sign-in is incomplete. An empty HTTP 200
@@ -26,7 +87,7 @@
26
87
  - Drawings keep 12 px text on a phone: graphs and UML diagrams shrink only that far and
27
88
  scroll sideways beyond it; plots redraw at their real width.
28
89
  - `tum-mcp study visuals PROJECT` measures every drawn visual of lessons, practice
29
- questions, exercise steps and Exam Prep at 390, 600 and 1280 px (lines through nodes,
90
+ questions, exercise steps and Exam at 390, 600 and 1280 px (lines through nodes,
30
91
  clashing labels, small or clipped text, drawings that differ from their block), writes
31
92
  contact sheets to `.tum-mcp/visuals/` and records the result; `study report` gains a
32
93
  render section that lists missing, stale and failing checks.
@@ -65,8 +126,8 @@
65
126
  graph. **Compare** is now the only reveal: hints stop after the last one, a step
66
127
  without a check is compared too, and an explanation may not repeat its model answer.
67
128
  - **Review** beside a prerequisite opens that Study passage next to the exercise without
68
- losing your place; a unit links its Lecture Notes, the exercises that build on it and
69
- the Exam Prep patterns that cite it, and Lecture Notes link back. In the local
129
+ losing your place; a unit links its Lecture, the exercises that build on it and
130
+ the Exam patterns that cite it, and Lecture link back. In the local
70
131
  preview, a citation opens the stored course file at the cited page.
71
132
  - A new `review-course` skill scores each Study unit and exercise from 1 to 3 on
72
133
  correctness, clarity, cognitive load, representation, practice and coverage, saves the
@@ -99,11 +160,11 @@
99
160
 
100
161
  ## 0.11.0 — 2026-10-28
101
162
 
102
- - Add the base `prepare-exams` workflow and the local **Exam Prep** workspace: a
163
+ - Add the base `prepare-exams` workflow and the local **Exam** workspace: a
103
164
  cheatsheet with a semester map you can pan, zoom and open full screen, exam patterns
104
165
  with solving workflows and a worked practice question each, guided past papers, and
105
166
  practice exams with a solution under every question. Statistics, map layout,
106
- blueprint and novelty checks are derived by code. Exam Prep is never published.
167
+ blueprint and novelty checks are derived by code. Exam is never published.
107
168
  - Add `tum-mcp study exam-report`, `study text` (page text extracted once per file),
108
169
  `study import` (private local files such as past exams you hold) and
109
170
  `study duplicates` (identical and near-duplicate copies across Moodle, Artemis,
@@ -131,7 +192,7 @@
131
192
  - A page whose sections all cite the same sources shows one citation beside its title
132
193
  line, and a cheatsheet section whose entries share sources cites them once; exam
133
194
  pages mention past exams only when there are some. Lines that only described a page
134
- or told students to compare (such as the Exam Prep summary) are gone, and the skills
195
+ or told students to compare (such as the Exam summary) are gone, and the skills
135
196
  ask for text that teaches.
136
197
  - A new `tree` block draws hierarchies such as file structures, object trees and call
137
198
  trees with icons, connector lines and optional notes.
@@ -190,9 +251,9 @@
190
251
  - Improve detail: readable graph edges, fitted phone diagram labels, word-wrapped
191
252
  boxes, no dark-mode flash, steady flashcard layout, labelled reset and in-app
192
253
  confirmation for deleting comments, and neutral page copy on published sites.
193
- - Lecture Notes: recording times open from the sources of each passage and figure
254
+ - Lecture: recording times open from the sources of each passage and figure
194
255
  instead of appearing in the text, and the sidebar lists lectures only.
195
- - Add a Contents button to Study, Exercises and Lecture Notes. It lists the page's
256
+ - Add a Contents button to Study, Exercises and Lecture. It lists the page's
196
257
  headings and follows your reading; wide screens can keep it docked beside the
197
258
  text. The home resume button shows a play icon with the topic name.
198
259
  - Keep queued Contents updates from a previous view from hiding the current
@@ -227,7 +288,7 @@
227
288
  `tum-mcp install studocu`. Preserve originals, course bindings and recovery
228
289
  history; supplementary personal-use sources are excluded from publication.
229
290
  - Add optional `tum-mcp install lecture` and Prepare Lecture for timestamped
230
- Lecture Notes in the existing course app. Prefer transcripts and supplied
291
+ Lecture in the existing course app. Prefer transcripts and supplied
231
292
  materials, skip whole-silent recordings, preserve original-time coverage and
232
293
  request only critical video frames. Publication remains an explicit opt-in.
233
294
  - Support isolated, pinned CPU recognition on Windows x64, Intel Mac and supported
package/README.md CHANGED
@@ -51,7 +51,7 @@ Run `tum-mcp install` to choose extensions, then reload your client.
51
51
 
52
52
  | Extension | Skill added | What it offers |
53
53
  | --- | --- | --- |
54
- | `lecture` | `prepare-lecture` | Lecture Notes with the professor's extra explanations, timestamps and selected critical visuals. Prefers transcripts and slides; local recognition is optional. |
54
+ | `lecture` | `prepare-lecture` | Lecture with the professor's extra explanations, timestamps and selected critical visuals. Prefers transcripts and slides; local recognition is optional. |
55
55
  | `audio-notes` | `audio-notes` | Turn prepared Study lessons into concise audio tracks, with resumable generation and coverage tracking. Voice setup happens when used. |
56
56
  | `video-notes` | `video-notes` | Turn prepared Study topics into short narrated, animated explainers that play inside the local app, with checked sync, captions and layout. The render runtime installs when first used. |
57
57
 
@@ -69,11 +69,11 @@ After initialization, a course project looks something like this:
69
69
  course/
70
70
  AGENTS.md Course instructions and inventory
71
71
  materials/ Course content, exams, exercises and other sources
72
- app/ Study, Exercises, Exam Prep and optional Lecture Notes website
72
+ app/ Study, Exercises, Exam and optional Lecture website
73
73
  content.json Study lessons, flashcards and practice
74
74
  exercises.json Guided exercise content
75
- exam.json Exam Prep: cheatsheet, exam patterns, practice exams (local only)
76
- lectures.json Optional: Lecture Notes
75
+ exam.json Exam: cheatsheet, exam patterns, practice exams (local only)
76
+ lectures.json Optional: Lecture
77
77
  lecture-assets/ Optional: selected lecture figures
78
78
  .tum-mcp/ Private course state, comments and lecture evidence
79
79
  audio/ Optional: scripts, tracks and chapters for Audio Notes
@@ -28,6 +28,41 @@ Set `TUM_MOODLE_SYSTEM_KEYRING=1` for a unique synthetic native-store round trip
28
28
  The ordinary campus runtime uses encrypted local files and owner-restricted keys.
29
29
  Set `TUM_MCP_BROWSER_INTEGRATION=1` to include the real HTTP static-export browser
30
30
  check locally; CI enables it. Set environment variables using your shell's syntax.
31
+ Consumer checks default to full study journeys on every discovered browser.
32
+ CI sets `TUM_MCP_STUDY_BROWSER_JOURNEYS=primary`: the first browser on each desktop
33
+ OS and WSL engine runs the full installed study journey; every additional browser
34
+ runs a short installed UI check. All browsers retain real pipe transport, synthetic
35
+ cookie and encrypted-session checks. The shorter journey covers module loading,
36
+ content/flashcard/practice views, saved progress after reload, keyboard navigation,
37
+ theme switching and phone/desktop overflow under a project URL prefix. Consumer
38
+ JSON names each browser's `studyCoverage` and records `studySeconds`. Unset the
39
+ variable or use `all` for a browser-specific investigation; other values fail
40
+ before consumer installation.
41
+
42
+ Owned loopback browsers use `launch_loopback_browser`, including local visual
43
+ checks and Windows browsers launched through WSL. On Windows it disables
44
+ Chromium's `TcpPortRandomizationWin`, which can fail local module requests with
45
+ `ERR_NO_BUFFER_SPACE` even when socket resources are available
46
+ ([upstream issue](https://issuetracker.google.com/issues/572515601)). The launcher
47
+ reads and preserves Playwright's default disabled features before adding this
48
+ opt-out. A native browser regression checks the effective arguments, and installed
49
+ consumer checks verify that the option reaches Windows browsers through WSL.
50
+
51
+ The broad checkout study journey runs on Linux. macOS and Windows deselect only
52
+ `tests/integration/test_study_browser.py::test_study_website_journeys_pass_in_the_checkout`;
53
+ their full installed journeys still exercise that fixture. Other source tests and
54
+ native checks keep their existing coverage. Package builds, upgrades and lifecycle
55
+ tests continue in all five environments. Ruff lint/format runs once on Linux, after dependency
56
+ installation. The existing five exact-revision GitHub checks remain required.
57
+
58
+ During development, run affected tests and focused regressions. Reuse applicable
59
+ passing results instead of running a complete local suite immediately before the
60
+ same required CI suite. Full integration/release coverage may come from that
61
+ exact-revision CI run; a local pass never substitutes for pending or failed native
62
+ checks. Relevant source, test, dependency or environment changes invalidate earlier
63
+ results. `AGENTS.md` is local and ignored; this tracked document carries the policy
64
+ to other checkouts.
65
+
31
66
  Verbose test IDs, immediate first-failure output, slowest-test timings and a stack
32
67
  dump after 60 seconds make a stalled boundary visible. The dump is diagnostic;
33
68
  it does not skip a slow test or extend the CI deadline.
@@ -108,7 +143,7 @@ tag and artifact integrity before pushing the release documentation.
108
143
  | `src/tum_mcp/client_*.py` | Host-specific configuration and managed skill installation |
109
144
  | `src/tum_mcp/study_*.py` | Course snapshots, teaching, build, preview and project-local passage comments |
110
145
  | `src/tum_mcp/bundled/skills/` | Canonical versioned source of reading, study, audio and video skills and their references/assets |
111
- | `src/tum_mcp/exam_*.py` | Exam Prep contracts, derived statistics, report and map layout; never published |
146
+ | `src/tum_mcp/exam_*.py` | Exam contracts, derived statistics, report and map layout; never published |
112
147
  | `src/tum_mcp/study_text.py`, `study_import.py`, `study_duplicates.py` | Page-text cache, private local imports and cross-provider duplicate reports |
113
148
  | `src/tum_mcp/video_*.py`, `bundled/video_runtime/` | Video Notes contracts, lint, media checks, orchestration and the isolated render worker |
114
149
  | `npm/` | Private-runtime installation, updates, integrity and cleanup |
@@ -139,7 +174,11 @@ regressions. The preparation skills describe content and point to the app instea
139
174
  of restating its styling, so app changes need no skill edits unless an authored field
140
175
  or its meaning changes. Remove a template file by moving it to
141
176
  `RETIRED_TEMPLATE_FILES`: builds then delete unedited copies and publication removes
142
- them from managed sites. The shipped component preview is deliberately minimal;
177
+ them from managed sites. The shipped component preview demonstrates the three
178
+ heading levels, untitled continuations and guides placed beneath their own exercise
179
+ parts using validated `part_blocks` anchors. Include the optional Lecture
180
+ workspace with `tum-mcp study demo PROJECT --lectures` after selecting the Lecture
181
+ extension. The preview remains deliberately minimal;
143
182
  richer learning pilots live in `tests/fixtures/course_app/`. Local agent notes and
144
183
  screenshots belong in ignored `docs/local/` or `.omo/`. Keep real course projects,
145
184
  session files, databases, downloads and environment files out of artifacts.
@@ -183,3 +222,20 @@ unmeasured until genuine fresh-session trial records exist. Default tests use
183
222
  synthetic media and course data. `test:consumer` and `test:upgrade` exercise optional
184
223
  install/update/export/removal from an actual local npm artifact. Never publish or
185
224
  stage npm as a test.
225
+
226
+ ## Explore maintenance boundary
227
+
228
+ `ExploreMaterial` uses existing safe blocks and its own versioned sources. Empty
229
+ `Unit.explore` is omitted for legacy serialization; `unit_revision` excludes it to
230
+ preserve core progress. Full teaching/render reviews include it. The private ledger
231
+ records source-backed enrichment classification and separate pending work; classification
232
+ changes invalidate course-review structure identity. Default global definitions,
233
+ prerequisite maps, Revision and audio/video inputs stay core-only.
234
+
235
+ `explore.mjs` is a packaged template asset. Routes, tab sets, reading outlines and
236
+ comments must be checked with and without optional items. Explore anchors use comment
237
+ schema v4 without rewriting legacy files on read. Keep export source/asset closure
238
+ complete while removing private paths and classification reasons. Extend the existing
239
+ installed browser journey, rather than adding a platform matrix. Focused regressions
240
+ live in `test_study_explore.py` and `test_study_explore_browser.py`; run them plus affected
241
+ study/course-app/exercise tests and installation/migration checks for integration.
@@ -1,4 +1,4 @@
1
- # Lecture Notes
1
+ # Lecture
2
2
 
3
3
  Install the optional extension only when needed:
4
4
 
@@ -13,14 +13,14 @@ tools. Base setup keeps its five skills and existing services. Removing the opti
13
13
  with `tum-mcp uninstall lecture` preserves course notes, evidence, sessions,
14
14
  model caches and customizations. Reinstalling can reuse them.
15
15
 
16
- Ask: “Prepare Lecture Notes from this recording and these slides, focusing on
17
- what the professor explains beyond the material.” It adds Lecture Notes to the
16
+ Ask: “Prepare Lecture from this recording and these slides, focusing on
17
+ what the professor explains beyond the material.” It adds Lecture to the
18
18
  same course app, alongside Study and Exercises. Notes have coherent explanations,
19
19
  examples, important qualifications, formulas and selective source images. The
20
20
  sources of each passage and figure open the recording at the measured time, so the
21
21
  text carries no timestamps, and the Contents button lists the lecture's sections. Attribution
22
22
  review stays private, so the reading flow is clean.
23
- Lecture Notes has no quizzes or flashcards; broader teaching/practice stays in Study.
23
+ Lecture has no quizzes or flashcards; broader teaching/practice stays in Study.
24
24
 
25
25
  ## Processing order and cost
26
26
 
@@ -136,12 +136,13 @@ receipt/image updates. Local comments support `--view lectures --lecture KEY`.
136
136
 
137
137
  Open with `tum-mcp study` from the course folder. For a credential-free synthetic
138
138
  preview after installing the extension, use `tum-mcp study demo PROJECT --lectures`.
139
- The default demo still has only Study and Exercises. Synthetic teaching/timestamps
139
+ The default demo includes Study, Exercises and Exam. The Lecture option
140
+ adds a synthetic recording, source image and nested heading examples. Synthetic teaching/timestamps
140
141
  exercise the product and do not establish real lecture accuracy.
141
142
 
142
143
  ## Publication
143
144
 
144
- Lecture Notes is excluded from publication by default, including old saved
145
+ Lecture is excluded from publication by default, including old saved
145
146
  configurations. After reviewing public exposure, use the existing publish-course
146
147
  workflow with `--include-lectures`; Exercises has a separate choice. Exclusion
147
148
  removes lecture text, lecture-only sources/math and referenced images from exports,
package/docs/study.md CHANGED
@@ -4,8 +4,8 @@ Six base skills cover source reading, course sync, Study preparation, Exercises
4
4
  preparation, exam preparation and publishing. They run in your local agent, using the connected
5
5
  MCP tools to read course sources. The CLI validates and stores the resulting local
6
6
  files; it does not run an AI model.
7
- The optional `prepare-lecture` skill adds a Lecture Notes workspace; install it with
8
- `tum-mcp install lecture`. See [Lecture Notes](lecture-notes.md).
7
+ The optional `prepare-lecture` skill adds a Lecture workspace; install it with
8
+ `tum-mcp install lecture`. See [Lecture](lecture-notes.md).
9
9
  The optional `audio-notes` skill turns prepared lessons into spoken tracks; install
10
10
  it with `tum-mcp install audio-notes`. The optional `video-notes` skill turns prepared
11
11
  topics into short narrated explainer videos; install it with `tum-mcp install video-notes`.
@@ -29,7 +29,7 @@ retrieved source is recorded as a gap rather than an empty course.
29
29
 
30
30
  ```text
31
31
  pse-ws26/
32
- AGENTS.md Course knowledge and current inventory
32
+ AGENTS.md Managed agent guide, then your own rules
33
33
  materials/
34
34
  content/ Lectures, slides and reading
35
35
  exams/ Available revision material
@@ -39,17 +39,26 @@ pse-ws26/
39
39
  course.md Cited course structure, logistics, rules and unknowns
40
40
  state.json Course binding, source versions and coverage
41
41
  notes/ Detailed course/agent notes when needed
42
- app/ Shared Study, Exercises, Exam Prep and optional Lecture Notes website
42
+ app/ Shared Study, Exercises, Exam and optional Lecture website
43
43
  content.json Optional source-backed Study content
44
44
  exercises.json Optional prepared exercise guidance
45
- exam.json Optional Exam Prep content (local only)
45
+ exam.json Optional Exam content (local only)
46
46
  audio/ Optional category audio derived from the prepared website
47
47
  videos/ Optional explainer videos derived from the prepared website
48
48
  ```
49
49
 
50
- `AGENTS.md` retains user rules and points agents to `.tum-mcp/course.md`. That short
51
- handbook explains the course's goals, lectures/tutorials, weekly work and platforms,
52
- assessment/bonus conditions, communication and preparation map. Claims carry source
50
+ `AGENTS.md` starts with a managed agent guide; keep your own rules and standing
51
+ preferences outside it. The guide tells the agent that it works for a student of this
52
+ course, which skill handles which kind of request, how to read short requests such as
53
+ "this week" or "the exam", where each kind of course information lives, and how to
54
+ answer as a tutor: from the course's own sources and notation, with the next step
55
+ before a full solution. `study sync` and `study upgrade` replace an outdated guide and
56
+ keep the rest of the file; an edited guide is kept and reported for review.
57
+
58
+ The guide sends the agent to `.tum-mcp/course.md` first. That short handbook explains
59
+ the course's goals, lectures/tutorials, weekly work and platforms, assessment/bonus
60
+ conditions, conventions (textbook, notation, answer format), communication and
61
+ preparation map. Claims carry source
53
62
  links/locators and checked dates; unknowns and conflicting announcements stay visible.
54
63
  Detailed source content remains in materials/. All TUM MCP course state, plans and
55
64
  agent notes live under .tum-mcp/.
@@ -68,7 +77,8 @@ comments, publication settings and the full old root instructions as
68
77
  `.tum-mcp/legacy-AGENTS.md`. Course identity, materials and browser progress stay the
69
78
  same. Existing legacy state remains readable until upgrade; two state folders are
70
79
  a conflict to reconcile, never silently merged. This differs from the web-folder
71
- upgrade below.
80
+ upgrade below. In a project that already uses `.tum-mcp/`, `study upgrade` only
81
+ refreshes the agent guide in `AGENTS.md`.
72
82
 
73
83
  ## State-based workflow
74
84
 
@@ -136,7 +146,7 @@ until you choose) and can focus on cards marked Again and questions you missed.
136
146
  question you missed stays there after **Try again**; it leaves once you answer it
137
147
  correctly from a fresh start. Revision reuses the original items and progress, so
138
148
  changing the topic selection never clears results, and it remembers your selection
139
- for this course. A unit's header links the Lecture Notes, exercises and Exam Prep
149
+ for this course. A unit's header links the Lecture, exercises and Exam
140
150
  patterns that build on it. In the local preview, a citation opens the stored course
141
151
  file at the cited page. Formulas and inline
142
152
  notation such as `\(v_i\)` compile locally to native MathML; code and dollar signs
@@ -150,18 +160,36 @@ and reported, so the agent must review compatibility when extending them.
150
160
 
151
161
  ```sh
152
162
  tum-mcp study inspect ./pse-ws26
163
+ tum-mcp study find ./pse-ws26 "observer pattern" # stored pages that mention every word
164
+ tum-mcp study text ./pse-ws26 --key KEY --pages 3-5 --images # page text plus a PNG of each page
153
165
  tum-mcp study build ./pse-ws26
154
- tum-mcp study report ./pse-ws26 # review flags and what the sources leave uncovered
166
+ tum-mcp study report ./pse-ws26 # review flags, the course map and what the sources leave uncovered
155
167
  tum-mcp study visuals ./pse-ws26 # measure every drawn visual and draw contact sheets
156
168
  ```
157
169
 
170
+ Slide text finds and quotes a page, but it drops figures and scrambles tables and
171
+ formulas, so the agent looks at every slide or sheet page it relies on. Hosts that
172
+ display PDFs, such as Claude Code, open the page directly; for the others, such as
173
+ Codex, `study text --images` renders up to 12 pages to PNGs under `.tum-mcp/cache/`,
174
+ once per file version, without Poppler or any other system tool.
175
+
158
176
  The agent records what each lecture states students should learn, and which sheet
159
177
  problems are prepared, in `.tum-mcp/coverage.json`. `study report` lists outcomes
160
178
  that are not yet taught, sources not yet read and problems still pending, so a request
161
179
  to cover a whole course is judged against the course's own outcomes.
162
180
 
163
- `study visuals` opens every lesson, practice question, exercise step and Exam Prep
164
- visual in an installed Chrome, Edge or Chromium at phone (390 px), narrow (600 px) and
181
+ The Study overview shows known core gaps under **Not prepared yet**, including outcomes
182
+ that are partly prepared. Unknown source coverage and optional reading backlog stay
183
+ in the local agent report. They do not create learner-facing panels or count as prepared.
184
+ The core list updates on build after the agent reviews and updates the ledger; it does
185
+ not track the student's progress. Exercises uses the same expandable presentation for
186
+ pending sheets. Hosted Study queues include
187
+ only sources referenced by the published Study units; the local coverage report keeps
188
+ the full preparation inventory.
189
+
190
+ `study visuals` opens every lesson, practice question, exercise step and Exam
191
+ visual, including exercise Solution, Compare and transfer-answer blocks, in an installed
192
+ Chrome, Edge or Chromium at phone (390 px), narrow (600 px) and
165
193
  desktop (1280 px) width. It reports lines through nodes, labels that overlap or sit on a
166
194
  line, text under 12 px, clipped text and drawings that differ from their block, writes
167
195
  contact sheets to `.tum-mcp/visuals/` and records the result in
@@ -169,15 +197,29 @@ contact sheets to `.tum-mcp/visuals/` and records the result in
169
197
  and `study report` lists items whose check is missing, stale or failing.
170
198
 
171
199
  Ask `review-course` to score the lessons and exercises the way a student meets them.
172
- It reads each item in five passes (logic, text, visuals, interaction and intuition) and
173
- gives each unit and exercise 1 to 3 points for correctness, clarity, cognitive load,
174
- representation, practice, coverage and intuition. Each drawn visual gets its own score
175
- from the contact sheets for fidelity, form, layout, legibility, focus and convention,
176
- calibrated against a gallery of rated examples (`study visuals --gallery`). The agent
177
- names what costs each point, saves the scores in `.tum-mcp/review.json`, then fixes the
178
- findings and scores again.
179
- Editing a unit or exercise makes its score stale, so `study report` lists what needs a
180
- new review and what is still below the bar. The scores are not shown in the app.
200
+ It reads each item in six passes (logic, text, visuals, interaction, intuition and
201
+ structure) and gives each unit and exercise 1 to 3 points for correctness, clarity,
202
+ cognitive load, representation, practice, coverage, intuition, organization and
203
+ redundancy. Each drawn visual gets its own score from the contact sheets for fidelity,
204
+ form, layout, legibility, focus and convention, calibrated against a gallery of rated
205
+ examples (`study visuals --gallery`). A course pass then scores the course as a whole:
206
+ the order of its units and groups, what repeats across units and workspaces, and, when
207
+ Exercises, Exam or Lecture are prepared beside Study, how well they link to
208
+ the passages that teach what they need. `study report --section structure` gives that
209
+ pass a course map and flags terms used before they are taught, odd groups, repeated
210
+ passages and practice, and missing links. The agent names the rubric check behind each
211
+ lost point, saves the scores in `.tum-mcp/review.json`, then fixes the findings and
212
+ scores again.
213
+ Editing a unit or exercise makes its score stale, and so does changing the course's
214
+ units, groups or links for the course score, so `study report` lists what needs a new
215
+ review and what is still below the bar. A scorecard saved under an earlier rubric still
216
+ loads; the report lists the dimensions it lacks. The scores are not shown in the app.
217
+
218
+ Workspace profiles keep the shared dimensions but tailor their evidence: exercise
219
+ reviews preserve released statements and assess each part's guide and answer rather
220
+ than requiring a second lesson. Exam checks distinguish cheatsheets, patterns and papers;
221
+ Lecture checks recording fidelity and added explanation without requiring quizzes.
222
+ Exam and Lecture findings currently belong to the course pass, not separate item scores.
181
223
 
182
224
  ## Preview the app
183
225
 
@@ -201,7 +243,7 @@ locally. Nothing is published by these commands.
201
243
 
202
244
  ## Passage comments
203
245
 
204
- Select text in Content, Flashcards, Practice, Exercises or Lecture Notes, then click
246
+ Select text in Content, Flashcards, Practice, Exercises or Lecture, then click
205
247
  **Comment** to record what is unclear. You can also use Ctrl/Command+Alt+M after
206
248
  selecting text. The local preview saves notes in `.tum-mcp/comments.json`, separately
207
249
  from learning progress. Click a numbered marker or highlighted text to open its notes
@@ -223,13 +265,16 @@ at the bottom of the outline switches between them and remembers your place; on
223
265
  it sits inside the open outline. The exercise list groups exercises by sheet and shows
224
266
  each sheet's summary and due date when the sources provide them.
225
267
 
226
- Each exercise shows the original statement and subparts first. Work on paper, open the
227
- solution directly (one short answer per part, as a table, graph, formula or code), or
228
- open **Guidance** for the exercise's goals and one step at a time with optional hints.
268
+ Each sub-question keeps its statement, supporting blocks, Guide and Solution together.
269
+ Shared givens come first. Work on paper, open that question's Solution directly (as a
270
+ table, graph, formula or code), or use its guide for one step at a time with optional
271
+ hints. Solutions open independently and reveal only their own question's answer;
272
+ shared solution notes appear once after the questions.
229
273
  Multiple-choice steps are checked; for every other step you work on paper and press
230
274
  **Compare**, the one place that shows the answer, its reasoning and a hint for the
231
275
  likeliest mistake. **Review** beside a prerequisite opens the Study passage next to
232
- the exercise without losing your place. A sheet whose problems are not all prepared
276
+ the exercise on desktop, or as a full-page view on mobile. Closing it returns to the
277
+ same step and scroll position. A sheet whose problems are not all prepared
233
278
  says which ones are still missing. Code steps open the function skeleton in a small editor and
234
279
  show the model answer as code; code is never run, and nothing is graded by keywords.
235
280
  Finishing the last step marks the exercise completed in the outline; you can also
@@ -245,7 +290,7 @@ use the existing private comment service; hosted exports do not expose it.
245
290
 
246
291
  ## Prepare for exams
247
292
 
248
- Ask `prepare-exams` to build the **Exam Prep** workspace from the course's past exams,
293
+ Ask `prepare-exams` to build the **Exam** workspace from the course's past exams,
249
294
  exercises and materials. Past exams come from `materials/exams` (Moodle) or files you hold yourself:
250
295
 
251
296
  ```bash
@@ -270,7 +315,7 @@ different places count once.
270
315
 
271
316
  Right-click any entry in the sidebar, in any workspace, to mark it as completed.
272
317
 
273
- Statistics such as "seen in 4 of 6 exams" are history, never a prediction. Exam Prep
318
+ Statistics such as "seen in 4 of 6 exams" are history, never a prediction. Exam
274
319
  always stays local: it is never published.
275
320
 
276
321
  Existing `study/` projects continue to work. New projects use `app/`. To upgrade a
@@ -311,7 +356,7 @@ Study is the default hosted workspace, including for old settings. Exercise
311
356
  statements, hints and full solutions need explicit `--include-exercises` on the
312
357
  publish command after reviewing their public exposure. `--exclude-exercises`
313
358
  removes Exercises from subsequent eligible exports, using the same repository and URL. An
314
- Exercises-only site also requires explicit inclusion. Lecture Notes separately requires
359
+ Exercises-only site also requires explicit inclusion. Lecture separately requires
315
360
  `--include-lectures`; old settings default to exclusion. `--exclude-lectures` also removes
316
361
  previously managed lecture images. A notes-only export with notes excluded is refused.
317
362
 
@@ -492,7 +537,7 @@ Imported files stay private: they are never published.
492
537
 
493
538
  The shared course app is packaged in `bundled/course_app/site/`, separately from the
494
539
  skill instructions. It owns layout, styling and interaction for Study, Exercises and
495
- Lecture Notes. Agents author only course content; `study build` installs the app,
540
+ Lecture. Agents author only course content; `study build` installs the app,
496
541
  preserves customized files and checks sources, so courses gain app improvements
497
542
  without rewriting content. `tum-mcp study template` shows the bundled files and
498
543
  their combined revision for reproducible development.
@@ -505,8 +550,10 @@ tum-mcp study serve ./component-preview
505
550
  ```
506
551
 
507
552
  The demo creates one small Study unit and one exercise covering prose, code, tables,
508
- formulas, graphs, UML diagrams, a flowchart, plots, cards and response controls. It is a format
509
- reference, not necessarily a good teaching or question-authoring example; actual
553
+ formulas, graphs, UML diagrams, a flowchart, plots, cards and response controls.
554
+ It also includes pending Study topics and exercise sheets, plus private report examples
555
+ of unknown coverage and optional backlog. It is a
556
+ format reference, not necessarily a good teaching or question-authoring example; actual
510
557
  course authoring follows reviewed sources and the preparation skills. Rich learning
511
558
  pilots stay in private test fixtures. It uses no campus account, and an existing
512
559
  edited demo is preserved.
@@ -527,3 +574,20 @@ Import paths are confined to the snapshot directory. Data is stored under the
527
574
  bound project; credentials and unrelated personal records must never enter it.
528
575
  Keep real course projects private and out of package artifacts. Uninstalling the
529
576
  package preserves projects; remove your own project directory separately when wanted.
577
+
578
+ ## Optional Explore reading
579
+
580
+ Prepared topics can include an **Explore** tab after Practice for useful supporting
581
+ context and further reading. It appears only when that topic has authored material
582
+ and opens directly on the reading. Core Content stays sufficient for the course tasks.
583
+ Explore has no required completion, cards, questions or minutes, and Continue/Next
584
+ keeps the core learning sequence.
585
+
586
+ Authors classify passages against course outcomes and task dependencies, using the
587
+ bundled prepare-study `references/explore.md` policy and private coverage ledger.
588
+ Core gaps, optional backlog and unrecorded coverage remain separate in agent reports;
589
+ only known core gaps appear on the learner overview. Optional items
590
+ carry their own source versions and stable keyed blocks. Changes still need source,
591
+ teaching and visual review but preserve saved core practice progress. Local passage
592
+ comments remain item-scoped; published sites include optional reading with Study and
593
+ exclude private comments/classification reasons. `study demo PROJECT` shows an example.
package/docs/tum-mcp.md CHANGED
@@ -191,7 +191,13 @@ The tools resolve one exact mapping; ambiguity never grants broader access.
191
191
 
192
192
  `doctor` reads local configuration and checks runtime prerequisites. It does not
193
193
  open a browser, contact campus services, decrypt sessions, or read native stores.
194
- Saved sessions are **Not verified** until checked. Git and Docker are not
194
+ Saved sessions are **Not verified** until checked. Live campus results are saved
195
+ locally with a timestamp and reused by `doctor` and the `login` selector for
196
+ 12 hours. Expiry means verification is stale, not that the session is disconnected.
197
+ A fresh live check replaces the previous result, including failures. Replacing
198
+ credentials or logging out invalidates their saved verification. Only the result,
199
+ timestamp and file metadata are recorded, not credentials or campus responses.
200
+ Git and Docker are not
195
201
  prerequisites. Client registration is distinguished
196
202
  from activation; the host must confirm a running MCP connection after setup.
197
203
 
@@ -208,7 +214,7 @@ in JSON for troubleshooting. Default diagnostics do not create state folders.
208
214
  uses read-only local status to initialize an explicitly chosen available course or
209
215
  reconcile an existing project. Incomplete state is preserved for recovery.
210
216
  `prepare-study` authors lessons; `prepare-exercises` authors guided released sheets
211
- and `prepare-exams` builds a local Exam Prep workspace in the same app. See the
217
+ and `prepare-exams` builds a local Exam workspace in the same app. See the
212
218
  [study guide](study.md) for examples, state structure and helper commands.
213
219
 
214
220
  One project holds one course. Source revisions, coverage and course knowledge
@@ -1,5 +1,5 @@
1
1
  {
2
- "wheel": "tum_mcp-0.14.1-py3-none-any.whl",
3
- "wheelSha256": "d634fd64fe6d6c058866a4b952e901c6eadb55809cca531f123bd144959294e0",
2
+ "wheel": "tum_mcp-0.15.0-py3-none-any.whl",
3
+ "wheelSha256": "5b63831a3518b0896ec1cd6722faea01cf856c71c2ffde8aab703b30f3fe49ae",
4
4
  "requirementsSha256": "39a401b6e606d3292eb91b8fe9ef60367d4852f203eb409dc52f38b76e513ccf"
5
5
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jamestesting888/tum-mcp",
3
- "version": "0.14.1",
3
+ "version": "0.15.0",
4
4
  "description": "Read-only TUM campus tools and source-backed study, exercise and lecture workflows",
5
5
  "license": "MIT",
6
6
  "type": "module",