@jamestesting888/tum-mcp 0.10.0 → 0.13.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,110 @@
1
1
  # Changes
2
2
 
3
+ ## 0.13.0 — 2026-10-29
4
+
5
+ - Lessons read as structure rather than prose: a `text` step or point that opens with a short `Label: ` shows the label in bold, and `study report` flags paragraphs over 45 words or three long sentences (`dense_paragraph`), calculations chained inside a sentence (`prose_calculation`) and mathematics typed as plain characters instead of inline LaTeX (`plain_math`). Arithmetic in inline LaTeX is recomputed like arithmetic in prose. prepare-study's writing guide gains the procedure, worked-example and notation rules behind them.
6
+ - Figures are checked for readable labels at build time: a label that touches a line, sits on a filled shape, overlaps another label or leaves the canvas is rejected with its text named, and the app draws labels on a page-coloured halo at the drawn size. prepare-study's figure guide adopts label and spacing rules from open-source diagram skills.
7
+ - Study lessons gain definitions that sit inside the section introducing them, as the
8
+ term in bold beside its meaning; a `{{term}}` mention anywhere in the app opens the
9
+ definition in place, and blocks can carry a `key` that links lead to.
10
+ - Text sections can give a hard idea as numbered `steps`, and a new `figure` block shows
11
+ a drawing (checked SVG that follows the light and dark theme, cropped to what is drawn)
12
+ or an image from the app's `figures/` folder, in lessons, questions, exercises and
13
+ published sites.
14
+ - Diagram labels never hide behind nodes: a label wider than its edge moves above the
15
+ shapes, and a single picture shows its caption once instead of a description and a
16
+ caption. The exercise outline drops its separators, and the completed mark stays on
17
+ the entry's line.
18
+ - Algorithm traces show the algorithm's state beside the drawing (a queue, the domains),
19
+ mark what changed at each step and highlight the edge being worked on.
20
+ - Practice questions that are about a situation show it (a graph, drawing, table,
21
+ formula or code) beside the question, and a question about a concept may stand alone;
22
+ options appear in a stable shuffled order and a question can offer one optional hint. A
23
+ question missed at the first attempt stays in To review after **Try again** until it
24
+ is answered correctly from a fresh start.
25
+ - Exercise solutions give one short, labelled answer per part, in the form the part asks
26
+ for; model answers can be tables, lists or formulas, and graph answers are drawn on the
27
+ graph. **Compare** is now the only reveal: hints stop after the last one, a step
28
+ without a check is compared too, and an explanation may not repeat its model answer.
29
+ - **Review** beside a prerequisite opens that Study passage next to the exercise without
30
+ losing your place; a unit links its Lecture Notes, the exercises that build on it and
31
+ the Exam Prep patterns that cite it, and Lecture Notes link back. In the local
32
+ preview, a citation opens the stored course file at the cited page.
33
+ - A new `review-course` skill scores each Study unit and exercise from 1 to 3 on
34
+ correctness, clarity, cognitive load, representation, practice and coverage, saves the
35
+ scores with their findings in `.tum-mcp/review.json` (`study schema review`) and fixes
36
+ what falls below the bar; `study report` lists unreviewed, stale and low items.
37
+ prepare-study and prepare-exercises finish with it.
38
+ - `tum-mcp study report` flags dense paragraphs, sections of more than about 90 words of
39
+ prose, sentences about the material instead of the subject ("the lecture groups…"),
40
+ question pictures that repeat the prompt, exercise statements pasted as one block,
41
+ thin lessons, untraced procedures, questions too long for a phone screen, slide
42
+ numbers left in titles instead of `pages`,
43
+ answer tables Compare never answers, wrong arithmetic, large steps with one hint and
44
+ feedback that names no mistake. A coverage ledger (`.tum-mcp/coverage.json`,
45
+ `study schema coverage`) records each source's stated outcomes, sheet problems and
46
+ course state, so the report lists what is not yet taught, read or prepared; learners
47
+ see which problems are not prepared yet. The study skills share one review gate and
48
+ one writing guide (plain, direct sentences after ASD-STE100, without AI phrasing), and
49
+ they show two-input rules as decision matrices and released exercise statements split
50
+ by part with their givens and setting drawn.
51
+ - The exercise outline names a category only when it adds to the set titles, and the
52
+ outline keeps its scroll position when you open a lesson.
53
+ - Codex picks up changed or newly enabled skills: the plugin version follows the
54
+ installed skills, and `tum-mcp doctor` names the refresh step when Codex still loads
55
+ an older copy.
56
+
57
+ ## 0.12.0 — 2026-10-29
58
+
59
+ - Remove the optional Studocu extension, its `sync-studocu` skill and `tum-mcp studocu`
60
+ commands. Download such material yourself and add it with `tum-mcp study import`.
61
+
62
+ ## 0.11.0 — 2026-10-28
63
+
64
+ - Add the base `prepare-exams` workflow and the local **Exam Prep** workspace: a
65
+ cheatsheet with a semester map you can pan, zoom and open full screen, exam patterns
66
+ with solving workflows and a worked practice question each, guided past papers, and
67
+ practice exams with a solution under every question. Statistics, map layout,
68
+ blueprint and novelty checks are derived by code. Exam Prep is never published.
69
+ - Add `tum-mcp study exam-report`, `study text` (page text extracted once per file),
70
+ `study import` (private local files such as past exams you hold) and
71
+ `study duplicates` (identical and near-duplicate copies across Moodle, Artemis,
72
+ Studocu and local files); `study inspect` lists identical copies.
73
+ - Students answer on paper. Only multiple-choice answers are checked; every other step
74
+ offers Compare, which shows one answer, its explanation and a hint for the likeliest
75
+ mistake. Exercises no longer show answer boxes, review buttons or status lines;
76
+ finishing an exercise marks it completed in the outline.
77
+ - Exercises gain code-writing steps that open the function skeleton in an editor and
78
+ show the model answer as code, numbered code blocks and distilled practice for large
79
+ programming tasks; prepare-exercises documents how to distil Artemis programming
80
+ exercises. Text and numeric checks hold a single answer, and authors are told to give
81
+ every question the context its answers use.
82
+ - Authored questions must show code, a diagram, a formula, a table or a plot beside
83
+ their text, and their first sentence says what the student produces. A new `uml`
84
+ block draws UML class, sequence and state diagrams in every workspace, and
85
+ `` `code` `` in text renders as inline code.
86
+ - Code is syntax-highlighted in blocks, editors and model answers. A new `files` block
87
+ shows a small project with a file tree, tabs and editable files kept in the browser;
88
+ steps point at file lines with an "Open in files" jump, code-writing steps edit
89
+ the project file they point at, and the file tree folds away. Distilled exercises no
90
+ longer carry concept tags. Code blocks can carry a step-by-step walkthrough, and
91
+ prepare-study asks for examples shown as a diagram or walkthrough, not only told.
92
+ - Right-click (or Shift+F10) any sidebar entry to mark it completed.
93
+ - A page whose sections all cite the same sources shows one citation beside its title
94
+ line, and a cheatsheet section whose entries share sources cites them once; exam
95
+ pages mention past exams only when there are some. Lines that only described a page
96
+ or told students to compare (such as the Exam Prep summary) are gone, and the skills
97
+ ask for text that teaches.
98
+ - A new `tree` block draws hierarchies such as file structures, object trees and call
99
+ trees with icons, connector lines and optional notes.
100
+ - Cheatsheet entries show their recognition cue and pitfall as labelled rows with icons;
101
+ the semester map has an icon toolbar and an in-canvas legend.
102
+ - Give every skill a Codex display name, so Codex no longer shows "Tum MCP:" prefixes.
103
+ - Pages no longer wait for the local video index; the video panel appears once it loads,
104
+ so a slow preview server cannot drop it.
105
+ - Pages no longer over-scroll: hidden labels cannot stretch the page, and the space that
106
+ keeps step arrows in place goes once you scroll back up.
107
+
3
108
  ## 0.10.0 — 2026-10-27
4
109
 
5
110
  - Add the optional `video-notes` extension (`tum-mcp install video-notes`): short
package/README.md CHANGED
@@ -30,11 +30,14 @@ submissions, posting and exercise execution are unavailable.
30
30
  | `sync-course` | “Set up a project for this course and collect its materials.” |
31
31
  | `prepare-study` | “Build lessons, flashcards and practice in a study website.” |
32
32
  | `prepare-exercises` | “Add guided exercises from this week's released sheet.” |
33
+ | `prepare-exams` | “Make a cheatsheet and practice exams from the past papers.” |
34
+ | `review-course` | “Score my lessons and exercises and fix what is hard to learn from.” |
33
35
  | `publish-course` | “Publish my reviewed study site for phone access.” |
34
36
 
35
37
  Each project holds one course. Run `tum-mcp study` in its folder to open the app.
36
38
  Ask the agent to refresh it when sources change or address comments left in the
37
- app. [Study guide and demo](docs/study.md).
39
+ app. Add files you downloaded yourself, such as past exams from other websites, with
40
+ `tum-mcp study import`. [Study guide and demo](docs/study.md).
38
41
 
39
42
  TUMonline currently provides study names/degrees, public course catalog metadata
40
43
  and partial course curriculum positions. The catalog does not show enrollments.
@@ -49,7 +52,6 @@ Run `tum-mcp install` to choose extensions, then reload your client.
49
52
  | Extension | Skill added | What it offers |
50
53
  | --- | --- | --- |
51
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. |
52
- | `studocu` | `sync-studocu` | Search and collect selected supplementary PDFs saved in your browser. Personal use only; excluded from published sites. |
53
55
  | `audio-notes` | `audio-notes` | Turn prepared Study lessons into concise audio tracks, with resumable generation and coverage tracking. Voice setup happens when used. |
54
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. |
55
57
 
@@ -57,7 +59,6 @@ Use `tum-mcp doctor` to see installed workflows and `tum-mcp uninstall` to remov
57
59
  them.
58
60
 
59
61
  [Lecture and recognition](docs/lecture-notes.md) ·
60
- [Studocu collection](docs/study.md#studocu-materials) ·
61
62
  [Video Notes](docs/study.md#create-and-maintain-video-notes) · [Setup details](docs/setup.md)
62
63
 
63
64
  ## Course project
@@ -68,10 +69,10 @@ After initialization, a course project looks something like this:
68
69
  course/
69
70
  AGENTS.md Course instructions and inventory
70
71
  materials/ Course content, exams, exercises and other sources
71
- studocu/ Optional: summaries/, exams/ and other/ PDFs
72
- app/ Study, Exercises and optional Lecture Notes website
72
+ app/ Study, Exercises, Exam Prep and optional Lecture Notes 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)
75
76
  lectures.json Optional: Lecture Notes
76
77
  lecture-assets/ Optional: selected lecture figures
77
78
  .tum-mcp/ Private course state, comments and lecture evidence
@@ -22,9 +22,8 @@ npm run test:package-lifecycle
22
22
 
23
23
  Python 3.13 is the managed runtime. Install Tesseract for OCR tests. Default tests
24
24
  use synthetic sources and credentials. No language-server installation is needed.
25
- Studocu fixtures must likewise use synthetic documents and local transports, never
26
- browser cookies, personal account details or live downloaded PDFs. The extension
27
- is off by default; validate both selected and unselected skill packs.
25
+ Optional extensions are off by default; validate both selected and unselected skill
26
+ packs.
28
27
  Set `TUM_MOODLE_SYSTEM_KEYRING=1` for a unique synthetic native-store round trip.
29
28
  The ordinary campus runtime uses encrypted local files and owner-restricted keys.
30
29
  Set `TUM_MCP_BROWSER_INTEGRATION=1` to include the real HTTP static-export browser
@@ -109,6 +108,8 @@ tag and artifact integrity before pushing the release documentation.
109
108
  | `src/tum_mcp/client_*.py` | Host-specific configuration and managed skill installation |
110
109
  | `src/tum_mcp/study_*.py` | Course snapshots, teaching, build, preview and project-local passage comments |
111
110
  | `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 |
112
+ | `src/tum_mcp/study_text.py`, `study_import.py`, `study_duplicates.py` | Page-text cache, private local imports and cross-provider duplicate reports |
112
113
  | `src/tum_mcp/video_*.py`, `bundled/video_runtime/` | Video Notes contracts, lint, media checks, orchestration and the isolated render worker |
113
114
  | `npm/` | Private-runtime installation, updates, integrity and cleanup |
114
115
  | `tests/` | Synthetic backend, package and owned-browser checks |
@@ -168,7 +169,7 @@ playback tests also run WebKit when Playwright's WebKit is installed.
168
169
 
169
170
  ## Optional Lecture extension
170
171
 
171
- Base setup exposes five workflows and no `tum_live_*` tools. `install lecture`
172
+ Base setup exposes six workflows and no `tum_live_*` tools. `install lecture`
172
173
  records explicit selection, refreshes managed clients and provisions the optional
173
174
  recognizer only when requested/supported. `--no-asr` keeps captions/imported WebVTT.
174
175
  Heavy recognition dependencies and model weights stay outside the base environment
package/docs/setup.md CHANGED
@@ -26,10 +26,7 @@ Antigravity setup installs all five base skills and MCP configuration; restart e
26
26
  client afterward. Existing MCP-only setups gain the skills through `tum-mcp update`
27
27
  or another setup run. Generic setup writes configuration for manual installation.
28
28
 
29
- Studocu is optional: run `tum-mcp install studocu`, then reload the client. The
30
- extension adds the `sync-studocu` skill and its tools. `tum-mcp doctor`
31
- reports the local selection; `tum-mcp uninstall studocu` disables it and
32
- preserves course materials and customized files. Generic clients use
29
+ Generic clients use
33
30
  `tum-mcp skills export DESTINATION` to install the active pack manually.
34
31
  Setup preserves unrelated settings and refuses to
35
32
  replace customized entries. It does not authenticate or fetch courses.
@@ -44,8 +41,7 @@ Its render runtime (about 320 MB) installs on first use; `tum-mcp video-notes ru
44
41
  status` lists any prerequisite (macOS: `brew install cairo`; Linux/WSL: Cairo and
45
42
  Pango development packages and a C compiler) without installing it. Course videos are
46
43
  retained when the extension is disabled. Clients pinned to a runtime generation older
47
- than this release cannot read the enabled Video Notes setting and would hide Studocu
48
- tools; refresh them with `tum-mcp update` or `setup --client NAME`.
44
+ than this release cannot read the enabled Video Notes setting; refresh them with `tum-mcp update` or `setup --client NAME`.
49
45
 
50
46
  ## Terminal output
51
47
 
@@ -61,8 +57,8 @@ label. `NO_COLOR` disables color; narrow terminals use stacked rows.
61
57
  Bare `tum-mcp setup`, `tum-mcp install` and `tum-mcp uninstall` share the same
62
58
  keyboard controls as login. Nothing is preselected; Ctrl+C cancels. Uninstall
63
59
  also offers **All — TUM MCP**, which removes the package and managed client setup.
64
- Personal notes, sessions and customized files are retained. Scripts can name one or both:
65
- `tum-mcp uninstall lecture studocu --json`.
60
+ Personal notes, sessions and customized files are retained. Scripts can name extensions:
61
+ `tum-mcp uninstall lecture audio-notes --json`.
66
62
 
67
63
  Use `--json` for machine-readable status, named extension removal/installation,
68
64
  skill listing/validation, lecture runtime status or TUMonline permissions.
@@ -81,15 +77,12 @@ retains its previous configuration format; new integrations should use `doctor -
81
77
 
82
78
  Run **`tum-mcp login`**, with no arguments, in an interactive terminal:
83
79
 
84
- 1. Use up/down to move and Space to select services. Installed Lecture adds TUM-Live;
85
- installed Studocu adds Studocu.
80
+ 1. Use up/down to move and Space to select services. Installed Lecture adds TUM-Live.
86
81
  2. Press Enter. If several browsers are installed, choose one and press Enter.
87
82
  3. Complete TUM sign-in/MFA in the opened window. Only selected service tabs open.
88
83
  4. Return to the terminal for the saved-connection result.
89
84
 
90
85
  Campus services use temporary-browser sign-in and encrypted session storage.
91
- Studocu opens your own default browser (the Windows browser from WSL); sign in
92
- there. Its browser session is neither copied nor claimed as verified.
93
86
  No API key or native credential-store prompt is needed. A temporary browser
94
87
  profile keeps the connection separate from your everyday browser. Ctrl+C closes it and preserves
95
88
  connections that already completed. A dumb terminal uses numbered prompts.
package/docs/study.md CHANGED
@@ -1,12 +1,11 @@
1
1
  # Course study projects
2
2
 
3
- Five base skills cover source reading, course sync, Study preparation, Exercises
4
- preparation and publishing. They run in your local agent, using the connected
3
+ Six base skills cover source reading, course sync, Study preparation, Exercises
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
7
  The optional `prepare-lecture` skill adds a Lecture Notes workspace; install it with
8
8
  `tum-mcp install lecture`. See [Lecture Notes](lecture-notes.md).
9
- The optional `sync-studocu` skill collects selected student-uploaded material separately.
10
9
  The optional `audio-notes` skill turns prepared lessons into spoken tracks; install
11
10
  it with `tum-mcp install audio-notes`. The optional `video-notes` skill turns prepared
12
11
  topics into short narrated explainer videos; install it with `tum-mcp install video-notes`.
@@ -40,9 +39,10 @@ pse-ws26/
40
39
  course.md Cited course structure, logistics, rules and unknowns
41
40
  state.json Course binding, source versions and coverage
42
41
  notes/ Detailed course/agent notes when needed
43
- app/ Shared Study, Exercises and optional Lecture Notes website
42
+ app/ Shared Study, Exercises, Exam Prep and optional Lecture Notes website
44
43
  content.json Optional source-backed Study content
45
44
  exercises.json Optional prepared exercise guidance
45
+ exam.json Optional Exam Prep 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
  ```
@@ -109,9 +109,16 @@ course's lecture or week sequence when useful, or consistent topics, with at mos
109
109
  one category level. Every unit has:
110
110
 
111
111
  - Content: a short lesson with objectives, source links, assumptions and worked
112
- examples, using formulas, tables, code, diagrams or line graphs where they help.
112
+ examples, using formulas, tables, code, diagrams, drawn figures or line graphs where
113
+ they help. A hard idea comes as short numbered steps instead of a long paragraph. A
114
+ term to learn appears in bold beside its meaning, inside the section that introduces
115
+ it; a dotted term anywhere in the app opens its definition in place. Algorithm traces
116
+ step through one operation at a time and show the algorithm's state (a queue, the
117
+ domains) beside the drawing, marking what changed.
113
118
  - Flashcards for recall. On a keyboard, arrows move, Space flips and 1/2 rate a card.
114
- - Practice questions with plausible options and feedback for every option.
119
+ - Practice questions with options in a stable shuffled order, an optional hint and
120
+ feedback for every option. A question about a situation shows it (a graph, a
121
+ drawing, a table, a formula) beside the question and states each fact once.
115
122
 
116
123
  The agent uses stored material first, so local content edits work offline. Ask for
117
124
  an upstream refresh when you want new course content; an existing check is reused
@@ -122,9 +129,13 @@ short, direct sentences that keep necessary terms and conditions.
122
129
  The course home introduces the course, resumes where you left off and lists topics
123
130
  with progress. Each view ends with a Next link through cards and practice to the
124
131
  next unit. Revision pools cards and questions from the topics you choose (all topics
125
- until you choose) and can focus on cards marked Again and questions you missed. It
126
- reuses the original items and progress, so changing the topic selection never clears
127
- results, and it remembers your selection for this course. Formulas and inline
132
+ until you choose) and can focus on cards marked Again and questions you missed. A
133
+ question you missed stays there after **Try again**; it leaves once you answer it
134
+ correctly from a fresh start. Revision reuses the original items and progress, so
135
+ changing the topic selection never clears results, and it remembers your selection
136
+ for this course. A unit's header links the Lecture Notes, exercises and Exam Prep
137
+ patterns that build on it. In the local preview, a citation opens the stored course
138
+ file at the cited page. Formulas and inline
128
139
  notation such as `\(v_i\)` compile locally to native MathML; code and dollar signs
129
140
  stay literal. The app has light and dark themes and a phone layout.
130
141
 
@@ -137,8 +148,21 @@ and reported, so the agent must review compatibility when extending them.
137
148
  ```sh
138
149
  tum-mcp study inspect ./pse-ws26
139
150
  tum-mcp study build ./pse-ws26
151
+ tum-mcp study report ./pse-ws26 # review flags and what the sources leave uncovered
140
152
  ```
141
153
 
154
+ The agent records what each lecture states students should learn, and which sheet
155
+ problems are prepared, in `.tum-mcp/coverage.json`. `study report` lists outcomes
156
+ that are not yet taught, sources not yet read and problems still pending, so a request
157
+ to cover a whole course is judged against the course's own outcomes.
158
+
159
+ Ask `review-course` to score the lessons and exercises the way a student meets them.
160
+ It gives each unit and exercise 1 to 3 points for correctness, clarity, cognitive load,
161
+ representation, practice and coverage, names what costs each point and saves the
162
+ scores in `.tum-mcp/review.json`. The agent then fixes the findings and scores again.
163
+ Editing a unit or exercise makes its score stale, so `study report` lists what needs a
164
+ new review and what is still below the bar. The scores are not shown in the app.
165
+
142
166
  ## Preview the app
143
167
 
144
168
  From the course project folder, launch the prepared app with:
@@ -183,22 +207,56 @@ at the bottom of the outline switches between them and remembers your place; on
183
207
  it sits inside the open outline. The exercise list groups exercises by sheet and shows
184
208
  each sheet's summary and due date when the sources provide them.
185
209
 
186
- Each exercise shows the original statement and subparts first. Work on paper or in
187
- the app, open the worked solution directly, or open **Guidance** for the exercise's
188
- goals and one step at a time with optional hints and specific feedback. Checks cover
189
- numbers with units and tolerance, multiple choice, fillable tables, graph selections
190
- and paths, and plotted sample points. Long math and programming work use saved drafts
191
- and prepared rubrics; code is never executed, and symbolic work, proofs and programs
192
- are not graded automatically. Mark an exercise reviewed when you are done; Reviewed
193
- records an action, not mastery or an assessment result. A Next link leads to the
194
- following exercise.
195
-
196
- Drafts and assistance stay in this browser. Editing a checked answer clears its
197
- verdict. Semantic changes start fresh progress for only that exercise, while retaining older
210
+ Each exercise shows the original statement and subparts first. Work on paper, open the
211
+ solution directly (one short answer per part, as a table, graph, formula or code), or
212
+ open **Guidance** for the exercise's goals and one step at a time with optional hints.
213
+ Multiple-choice steps are checked; for every other step you work on paper and press
214
+ **Compare**, the one place that shows the answer, its reasoning and a hint for the
215
+ likeliest mistake. **Review** beside a prerequisite opens the Study passage next to
216
+ the exercise without losing your place. A sheet whose problems are not all prepared
217
+ says which ones are still missing. Code steps open the function skeleton in a small editor and
218
+ show the model answer as code; code is never run, and nothing is graded by keywords.
219
+ Finishing the last step marks the exercise completed in the outline; you can also
220
+ right-click any entry to mark it. A Next link leads to the following exercise. Large
221
+ programming exercises can come with small distilled practice exercises that train one
222
+ idea each and link back to the original.
223
+
224
+ Choices, code drafts, hints and completion marks stay in this browser. Changing a
225
+ checked choice clears its verdict. Semantic changes start fresh progress for only that exercise, while retaining older
198
226
  browser records; source-hash review alone preserves progress.
199
227
  Reset on each workspace home affects only that workspace. Exercise passage comments
200
228
  use the existing private comment service; hosted exports do not expose it.
201
229
 
230
+ ## Prepare for exams
231
+
232
+ Ask `prepare-exams` to build the **Exam Prep** workspace from the course's past exams,
233
+ exercises and materials. Past exams come from `materials/exams` (Moodle) or files you hold yourself:
234
+
235
+ ```bash
236
+ tum-mcp study import ./pse-ws26 --file "Klausur WS23.pdf" --kind exam --title "Endterm WS23/24"
237
+ tum-mcp study duplicates ./pse-ws26 --near # identical and likely duplicate copies
238
+ tum-mcp study exam-report ./pse-ws26 # what the agent reads before authoring
239
+ ```
240
+
241
+ Imported files stay private and survive campus syncs. Copies of the same exam from
242
+ different places count once.
243
+
244
+ - **Cheatsheet**: a semester map of the exam-relevant ideas and one-line entries with
245
+ formulas, triggers and pitfalls; open an entry for details. The map can be dragged,
246
+ zoomed and opened full screen.
247
+ - **Exam patterns**: recurring question types with recognition cues, a solving workflow,
248
+ answer template, marking points, a worked practice that applies each workflow step,
249
+ and drills whose answers you can open at any time.
250
+ - **Practice exams**: work through real past papers question by question with
251
+ guidance, or read a whole paper and open each question's solution to check yourself;
252
+ forecast practice exams follow the real exam's length and weighting with new
253
+ variants and untested topics.
254
+
255
+ Right-click any entry in the sidebar, in any workspace, to mark it as completed.
256
+
257
+ Statistics such as "seen in 4 of 6 exams" are history, never a prediction. Exam Prep
258
+ always stays local: it is never published.
259
+
202
260
  Existing `study/` projects continue to work. New projects use `app/`. To upgrade a
203
261
  verified legacy layout explicitly, run `tum-mcp study build PROJECT --upgrade-layout`.
204
262
  It keeps the original tree at `.tum-mcp/layout-backup/`, preserves the course identity,
@@ -408,33 +466,11 @@ compiler. `runtime status` prints the exact command and never runs it for you.
408
466
  Windows on ARM, Intel Macs, Linux ARM64 and musl Linux are not supported: Manim's
409
467
  OpenGL dependencies publish no wheels there.
410
468
 
411
- ## Studocu materials
412
-
413
- Install the optional extension with `tum-mcp install studocu` and reload your
414
- client. Ask `sync-studocu` to collect materials for a course project. It can
415
- initialize a Studocu-only project with a verified course and semester.
416
- Search is anonymous and bounded; a limited result set is not a complete inventory.
417
- `tum-mcp studocu login` explains how to sign in to Studocu in your own browser.
418
- The extension cannot infer account entitlement or download original files through
419
- the public MCP. Save an original that your account permits in the browser.
420
-
421
- The skill records a reviewed selection with `tum-mcp studocu plan PROJECT
422
- --selection FILE` and tracks it with `tum-mcp studocu status PROJECT --json`.
423
- Import a selected original with `tum-mcp studocu import PROJECT --document-id ID
424
- --file FILE`. The document-to-file association is user-selected. Originals go to
425
- `materials/studocu/summaries`, `materials/studocu/exams` (including mocks and
426
- solutions), or `materials/studocu/other`. Files remain local and retain their
427
- original bytes. Consult the skill's collection reference for the selection schema.
428
- Exact matches in the same group, type and known year share one original through
429
- a private alias. Each selected document retains its own source identity and URL.
430
- Changing a document's classification or refreshing its original separates aliases
431
- when they no longer match; previous versions remain in private history.
432
- When an existing selection is planned again, unchanged duplicate originals are
433
- consolidated. Edited or missing files are preserved for review.
434
-
435
- Local study material can cite student uploads. Publishing rejects included
436
- Studocu-backed sources; this source check cannot identify uncited copied text or
437
- replace a review of the published content.
469
+ ## Materials you download yourself
470
+
471
+ Files from other websites are not downloaded for you. Save them yourself and add them
472
+ with `tum-mcp study import PROJECT --file FILE --kind exam --title TITLE`.
473
+ Imported files stay private: they are never published.
438
474
 
439
475
  ## The course app
440
476
 
package/docs/tum-mcp.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Package: `@jamestesting888/tum-mcp`, CLI: `tum-mcp`, backend: Python 3.13.
4
4
  The package combines read-only course retrieval, managed client installation and
5
- five base course workflows and three optional extensions.
5
+ six base course workflows and three optional extensions.
6
6
 
7
7
  ## Current capabilities
8
8
 
@@ -208,7 +208,7 @@ in JSON for troubleshooting. Default diagnostics do not create state folders.
208
208
  uses read-only local status to initialize an explicitly chosen available course or
209
209
  reconcile an existing project. Incomplete state is preserved for recovery.
210
210
  `prepare-study` authors lessons; `prepare-exercises` authors guided released sheets
211
- in the same local app. See the
211
+ and `prepare-exams` builds a local Exam Prep workspace in the same app. See the
212
212
  [study guide](study.md) for examples, state structure and helper commands.
213
213
 
214
214
  One project holds one course. Source revisions, coverage and course knowledge
@@ -225,9 +225,9 @@ writing files with activation.
225
225
 
226
226
  The Codex adapter uses a contained Node launcher to pin the managed Python in
227
227
  isolated mode; portable stdio manifests require a bare or contained executable.
228
- The base pack contains five skills: `read-content`, `sync-course`,
229
- `prepare-study`, `prepare-exercises` and `publish-course`. Optional extensions add
230
- `prepare-lecture`, `sync-studocu`, `audio-notes` and `video-notes`; choose them with
228
+ The base pack contains seven skills: `read-content`, `sync-course`,
229
+ `prepare-study`, `prepare-exercises`, `prepare-exams`, `review-course` and `publish-course`. Optional extensions add
230
+ `prepare-lecture`, `audio-notes` and `video-notes`; choose them with
231
231
  `tum-mcp install`.
232
232
  Website-specific retrieval guidance is loaded from references within read-content.
233
233
  Teaching and content guidance lives with prepare-study; the course app and its
@@ -1,5 +1,5 @@
1
1
  {
2
- "wheel": "tum_mcp-0.10.0-py3-none-any.whl",
3
- "wheelSha256": "69a13997a3c5630f411e0237f33f7b59224b56d96bbcea07f263b939df1a5eff",
2
+ "wheel": "tum_mcp-0.13.0-py3-none-any.whl",
3
+ "wheelSha256": "8aeaf0c4be57000272f679694d6e9d35b0534efb821c009ab5a5a0d3248a664f",
4
4
  "requirementsSha256": "39a401b6e606d3292eb91b8fe9ef60367d4852f203eb409dc52f38b76e513ccf"
5
5
  }
package/npm/tum-mcp.mjs CHANGED
@@ -24,13 +24,12 @@ try {
24
24
  ['setup', 'Configure your coding client and managed runtime.'],
25
25
  ['login', 'Sign in to selected campus services.'],
26
26
  ['doctor', 'Show connections, extensions and relevant client/runtime health.'],
27
- ['install', 'Choose optional Lecture, Studocu, Audio Notes or Video Notes workflows.'],
27
+ ['install', 'Choose optional Lecture, Audio Notes or Video Notes workflows.'],
28
28
  ['uninstall', 'Choose extensions or All to remove TUM MCP.'],
29
29
  ['manage', 'Manage TUMonline permissions.'],
30
30
  ['skills', 'Inspect and validate workflow skills.'],
31
31
  ['study', 'Prepare, preview and publish a course app.'],
32
32
  ['lecture', 'Prepare lecture recording evidence (optional extension).'],
33
- ['studocu', 'Collect selected supplementary materials (optional extension).'],
34
33
  ['video-notes', 'Render and maintain explainer videos (optional extension).'],
35
34
  ['discover', 'List accessible courses or channels.'],
36
35
  ['update', 'Update the package and configured clients.'],
@@ -43,7 +42,7 @@ try {
43
42
  } else if (['--version', 'version'].includes(args[0])) {
44
43
  console.log(version);
45
44
  } else if (args[0] === 'install' && args.some(arg => ['--help', '-h'].includes(arg))) {
46
- printHelp(version, 'Choose optional workflows to install, or provide their names.', 'tum-mcp install [lecture|studocu|audio-notes|video-notes]... [OPTIONS]', [
45
+ printHelp(version, 'Choose optional workflows to install, or provide their names.', 'tum-mcp install [lecture|audio-notes|video-notes]... [OPTIONS]', [
47
46
  ['Options', [['--asr / --no-asr', 'Provision isolated lecture recognition; models load on demand.'], ['--json', 'Print machine-readable results.'], ['-h, --help', 'Show this help.']]],
48
47
  ]);
49
48
  } else if (['setup', 'update', 'uninstall'].includes(args[0]) && args.some(arg => ['--help', '-h'].includes(arg))) {
@@ -60,7 +59,7 @@ try {
60
59
  },
61
60
  uninstall: {
62
61
  description: 'Remove managed setup while retaining saved user data by default.',
63
- usage: 'tum-mcp uninstall [lecture|studocu|audio-notes|video-notes]... [OPTIONS]',
62
+ usage: 'tum-mcp uninstall [lecture|audio-notes|video-notes]... [OPTIONS]',
64
63
  options: [['(no arguments)', 'Choose extensions or All in the interactive picker.'], ['--client NAME', 'Remove one client registration.'], ['--host local|windows', 'Choose the client host.'], ['--purge-runtime', 'Remove verified runtimes when All is selected.'], ['--forget-credentials', 'Forget saved credentials when All is selected.']],
65
64
  },
66
65
  };
@@ -69,7 +68,7 @@ try {
69
68
  ['Options', [...selected.options, ['-h, --help', 'Show this help.']]],
70
69
  ]);
71
70
  } else {
72
- const hasExtension = args.slice(1).some(arg => ['lecture', 'studocu', 'audio-notes', 'video-notes'].includes(arg));
71
+ const hasExtension = args.slice(1).some(arg => ['lecture', 'audio-notes', 'video-notes'].includes(arg));
73
72
  let packageAction = args[0] === 'update';
74
73
  if (args[0] === 'update') {
75
74
  if (args.length > 2 || (args.length === 2 && args[1] !== '--local')) throw new Error('Usage: tum-mcp update [--local]. Use --help for details.');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jamestesting888/tum-mcp",
3
- "version": "0.10.0",
3
+ "version": "0.13.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",
@@ -58,7 +58,6 @@
58
58
  "zulip",
59
59
  "codex",
60
60
  "tumonline",
61
- "studocu",
62
61
  "lecture-notes"
63
62
  ]
64
63
  }