@jamestesting888/tum-mcp 0.9.1 → 0.9.3

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,35 @@
1
1
  # Changes
2
2
 
3
+ ## 0.9.3 — 2026-10-27
4
+
5
+ - Simplify the README setup and extension guidance.
6
+
7
+ ## 0.9.2 — 2026-10-27
8
+
9
+ - Combine connection status, extension status and health checks in `doctor`.
10
+ Show only installed or configured clients, including in the setup picker.
11
+ - Rename campus sign-in to `login`, paired with `logout`. Keep `connect` and
12
+ `status` as hidden compatibility aliases, including the previous status JSON.
13
+ - Make the course app consistent across Study and Exercises: one choice style,
14
+ feedback panel, counter format, arrow controls and disclosure chevron. Revision
15
+ covers all topics until you choose, and review links open the view with items.
16
+ - Show exercise goals in Guidance, sheet summaries and due dates in the list, Mark
17
+ reviewed at the end with a visible finish, and a link to the next exercise.
18
+ - Improve detail: readable graph edges, fitted phone diagram labels, word-wrapped
19
+ boxes, no dark-mode flash, steady flashcard layout, labelled reset and in-app
20
+ confirmation for deleting comments, and neutral page copy on published sites.
21
+ - Lecture Notes: recording times open from the sources of each passage and figure
22
+ instead of appearing in the text, and the sidebar lists lectures only.
23
+ - Add a Contents button to Study, Exercises and Lecture Notes. It lists the page's
24
+ headings and follows your reading; wide screens can keep it docked beside the
25
+ text. The home resume button shows a play icon with the topic name.
26
+ - Keep queued Contents updates from a previous view from hiding the current
27
+ page's outline after navigation.
28
+ - Remove unused serif font files. Builds delete unedited copies and publication
29
+ removes them from managed sites; edited copies are kept.
30
+ - Base the study skills on the app: they describe content and checks and point to
31
+ the bundled app instead of restating its styling.
32
+
3
33
  ## 0.9.1 — 2026-10-27
4
34
 
5
35
  - Make Audio Notes an optional `audio-notes` extension. Keep five base skills,
package/README.md CHANGED
@@ -14,20 +14,10 @@ Requires **Node.js 22.14+**, a Chromium browser and your TUM account.
14
14
  ```sh
15
15
  npm install --global @jamestesting888/tum-mcp@latest
16
16
  tum-mcp setup
17
- tum-mcp connect
17
+ tum-mcp login
18
18
  tum-mcp doctor
19
19
  ```
20
20
 
21
- Select `codex`, `claude`, `cursor`, `antigravity` or `generic`, or pass `--client NAME`.
22
- Follow the activation/restart instructions. In `connect`, select services with
23
- **Space**, then **Enter**, and complete sign-in/MFA in the browser. Never paste
24
- credentials into chat. Setup supplies its own Python runtime; Git, Docker and a
25
- native keyring are unnecessary.
26
-
27
- Works on macOS, Windows, glibc Linux x86_64/ARM64 and WSL. For a Windows client
28
- using a WSL backend, add `--host windows` to setup.
29
- [Browser and platform details](docs/setup.md).
30
-
31
21
  ## Read and study
32
22
 
33
23
  Ask your agent to explain course material, find announcements or catch up on a
@@ -62,10 +52,8 @@ Run `tum-mcp install` to choose extensions, then reload your client.
62
52
  | `studocu` | `sync-studocu` | Search and collect selected supplementary PDFs saved in your browser. Personal use only; excluded from published sites. |
63
53
  | `audio-notes` | `audio-notes` | Turn prepared Study lessons into concise audio tracks, with resumable generation and coverage tracking. Voice setup happens when used. |
64
54
 
65
- Use `tum-mcp status` to see installed workflows and `tum-mcp uninstall` to remove
66
- them. Named commands also work, such as `tum-mcp install audio-notes` and
67
- `tum-mcp uninstall lecture`. Existing notes, audio and customizations are retained.
68
- Audio Notes needs no additional campus sign-in. Studocu uses your own browser.
55
+ Use `tum-mcp doctor` to see installed workflows and `tum-mcp uninstall` to remove
56
+ them.
69
57
 
70
58
  [Lecture and recognition](docs/lecture-notes.md) ·
71
59
  [Studocu collection](docs/study.md#studocu-materials) · [Setup details](docs/setup.md)
@@ -127,10 +127,15 @@ native MathML; legacy MathML remains accepted. Unit `path` labels group the outl
127
127
  without changing learning-progress revisions. Shared modules render all units;
128
128
  content changes do not require a framework or per-unit HTML.
129
129
 
130
- Shared renderer assets live in `src/tum_mcp/bundled/course_app/site/`. The shipped
131
- component preview is deliberately minimal; richer learning pilots live in
132
- `tests/fixtures/course_app/`. The distributed design/teaching/verification contracts live under
133
- `src/tum_mcp/bundled/skills/prepare-study/references/`. Local agent notes and
130
+ Shared renderer assets live in `src/tum_mcp/bundled/course_app/site/`; they are the
131
+ source of truth for layout, styling and interaction. Design tokens sit at the top of
132
+ `styles.css`, and the owned-browser fixtures in `tests/integration/` hold the UI
133
+ regressions. The preparation skills describe content and point to the app instead
134
+ of restating its styling, so app changes need no skill edits unless an authored field
135
+ or its meaning changes. Remove a template file by moving it to
136
+ `RETIRED_TEMPLATE_FILES`: builds then delete unedited copies and publication removes
137
+ them from managed sites. The shipped component preview is deliberately minimal;
138
+ richer learning pilots live in `tests/fixtures/course_app/`. Local agent notes and
134
139
  screenshots belong in ignored `docs/local/` or `.omo/`. Keep real course projects,
135
140
  session files, databases, downloads and environment files out of artifacts.
136
141
 
@@ -16,8 +16,10 @@ model caches and customizations. Reinstalling can reuse them.
16
16
  Ask: “Prepare Lecture Notes from this recording and these slides, focusing on
17
17
  what the professor explains beyond the material.” It adds Lecture Notes to the
18
18
  same course app, alongside Study and Exercises. Notes have coherent explanations,
19
- examples, important qualifications, formulas, selective source images and direct
20
- timestamp access. Attribution review stays private, so the reading flow is clean.
19
+ examples, important qualifications, formulas and selective source images. The
20
+ sources of each passage and figure open the recording at the measured time, so the
21
+ text carries no timestamps, and the Contents button lists the lecture's sections. Attribution
22
+ review stays private, so the reading flow is clean.
21
23
  Lecture Notes has no quizzes or flashcards; broader teaching/practice stays in Study.
22
24
 
23
25
  ## Processing order and cost
package/docs/setup.md CHANGED
@@ -14,7 +14,7 @@ Linux needs a graphical desktop for native browser sign-in; WSL can use Windows.
14
14
  ```sh
15
15
  npm install --global @jamestesting888/tum-mcp@latest
16
16
  tum-mcp setup --client codex
17
- tum-mcp connect
17
+ tum-mcp login
18
18
  tum-mcp doctor
19
19
  tum-mcp --help
20
20
  ```
@@ -27,7 +27,7 @@ client afterward. Existing MCP-only setups gain the skills through `tum-mcp upda
27
27
  or another setup run. Generic setup writes configuration for manual installation.
28
28
 
29
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 status`
30
+ extension adds the `sync-studocu` skill and its tools. `tum-mcp doctor`
31
31
  reports the local selection; `tum-mcp uninstall studocu` disables it and
32
32
  preserves course materials and customized files. Generic clients use
33
33
  `tum-mcp skills export DESTINATION` to install the active pack manually.
@@ -40,14 +40,17 @@ Existing course audio is retained when the extension is disabled.
40
40
 
41
41
  ## Terminal output
42
42
 
43
- `tum-mcp status` shows saved connections and optional workflows;
44
- `tum-mcp doctor` also checks clients and prerequisites, including TUMonline.
43
+ `tum-mcp doctor` is the overview for saved connections, optional extensions,
44
+ client setup and runtime health, including TUMonline. Client rows appear only
45
+ for installed clients or existing TUM MCP registrations; unrelated config
46
+ folders do not count as installations. Setup detects the same clients and
47
+ also offers Generic. Use `--client NAME` for an undetected or nonstandard install.
45
48
  Green dots mean ready or enabled, blue means not verified, amber means action
46
49
  needed, red means failed, and muted dots mean inactive. Every dot has a text
47
50
  label. `NO_COLOR` disables color; narrow terminals use stacked rows.
48
51
 
49
52
  Bare `tum-mcp setup`, `tum-mcp install` and `tum-mcp uninstall` share the same
50
- keyboard controls as connect. Nothing is preselected; Ctrl+C cancels. Uninstall
53
+ keyboard controls as login. Nothing is preselected; Ctrl+C cancels. Uninstall
51
54
  also offers **All — TUM MCP**, which removes the package and managed client setup.
52
55
  Personal notes, sessions and customized files are retained. Scripts can name one or both:
53
56
  `tum-mcp uninstall lecture studocu --json`.
@@ -55,13 +58,19 @@ Personal notes, sessions and customized files are retained. Scripts can name one
55
58
  Use `--json` for machine-readable status, named extension removal/installation,
56
59
  skill listing/validation, lecture runtime status or TUMonline permissions.
57
60
  The default human output changed in 0.9.1; scripts that parsed those commands
58
- must add `--json`. The former `extensions` group is removed; use `status` and
61
+ must add `--json`. The former `extensions` group is removed; use `doctor` and
59
62
  `uninstall NAME`. Named client/extension arguments remain suitable for scripts.
60
63
  Data-oriented course authoring commands retain JSON output.
61
64
 
62
- ## Connect
65
+ `login` replaces `connect`, and `doctor` replaces the separate status screen.
66
+ The old command names remain hidden compatibility aliases. `status --json`
67
+ retains its previous configuration format; new integrations should use `doctor --json`.
63
68
 
64
- Run **`tum-mcp connect`**, with no arguments, in an interactive terminal:
69
+ <a id="connect"></a>
70
+
71
+ ## Login
72
+
73
+ Run **`tum-mcp login`**, with no arguments, in an interactive terminal:
65
74
 
66
75
  1. Use up/down to move and Space to select services. Installed Lecture adds TUM-Live;
67
76
  installed Studocu adds Studocu.
@@ -79,11 +88,11 @@ connections that already completed. A dumb terminal uses numbered prompts.
79
88
  Chrome, Edge, Brave, Chromium, Vivaldi and Opera are detected in their standard
80
89
  locations. Selected preview channels and Opera GX are detected where installed.
81
90
  For another Chromium build, set `TUM_MCP_BROWSER` to its executable path before
82
- running connect. Compatible builds must allow Playwright automation. Safari and
91
+ running login. Compatible builds must allow Playwright automation. Safari and
83
92
  Firefox are not supported.
84
93
 
85
94
  After sign-in, Artemis and Zulip can read content available to your campus account.
86
- No local course/channel grants are required. Your agent uses status/discover and
95
+ No local course/channel grants are required. Your agent uses MCP status/discovery and
87
96
  course metadata to find relevant current-semester material, then makes bounded reads.
88
97
  An account ID identifies a saved service connection; it is not your TUM login.
89
98
  TUMonline additionally has a local policy: `tum-mcp manage tumonline --show`
@@ -105,7 +114,7 @@ Both engines have dedicated CI checks on the current WSL 3.x runner image.
105
114
  ```sh
106
115
  npm install --global @jamestesting888/tum-mcp@latest
107
116
  tum-mcp setup --client cursor --host windows
108
- tum-mcp connect
117
+ tum-mcp login
109
118
  tum-mcp doctor
110
119
  ```
111
120
 
@@ -144,7 +153,7 @@ browser discovery still requires functioning interop.
144
153
  `gh auth login --hostname github.com` interactively on the agent's execution host.
145
154
  The [publishing workflow](study.md#publish-a-study-website) uses private repositories
146
155
  with public Pages websites and requires an eligible paid GitHub plan.
147
- - An expired session uses the same `tum-mcp connect` selector. Reconnecting the
156
+ - An expired session uses the same `tum-mcp login` selector. Reconnecting the
148
157
  same identity preserves saved preferences.
149
158
  - If no browser appears, check its installation or `TUM_MCP_BROWSER`. A managed
150
159
  or incompatible Chromium build may prevent automation; try another browser.
package/docs/study.md CHANGED
@@ -10,98 +10,6 @@ The optional `sync-studocu` skill collects selected student-uploaded material se
10
10
  The optional `audio-notes` skill turns prepared lessons into spoken tracks; install
11
11
  it with `tum-mcp install audio-notes`.
12
12
 
13
- ## Studocu materials
14
-
15
- Install the optional extension with `tum-mcp install studocu` and reload your
16
- client. Ask `sync-studocu` to collect materials for a course project. It can
17
- initialize a Studocu-only project with a verified course and semester.
18
- Search is anonymous and bounded; a limited result set is not a complete inventory.
19
- `tum-mcp studocu connect` explains how to sign in to Studocu in your own browser.
20
- The extension cannot infer account entitlement or download original files through
21
- the public MCP. Save an original that your account permits in the browser.
22
-
23
- The skill records a reviewed selection with `tum-mcp studocu plan PROJECT
24
- --selection FILE` and tracks it with `tum-mcp studocu status PROJECT --json`.
25
- Import a selected original with `tum-mcp studocu import PROJECT --document-id ID
26
- --file FILE`. The document-to-file association is user-selected. Originals go to
27
- `materials/studocu/summaries`, `materials/studocu/exams` (including mocks and
28
- solutions), or `materials/studocu/other`. Files remain local and retain their
29
- original bytes. Consult the skill's collection reference for the selection schema.
30
- Exact matches in the same group, type and known year share one original through
31
- a private alias. Each selected document retains its own source identity and URL.
32
- Changing a document's classification or refreshing its original separates aliases
33
- when they no longer match; previous versions remain in private history.
34
- When an existing selection is planned again, unchanged duplicate originals are
35
- consolidated. Edited or missing files are preserved for review.
36
-
37
- Local study material can cite student uploads. Publishing rejects included
38
- Studocu-backed sources; this source check cannot identify uncited copied text or
39
- replace a review of the published content.
40
-
41
- ## Publish a study website
42
-
43
- The `publish-course` skill makes a prepared site accessible from a phone
44
- or another computer. Its GitHub repository is private; the Pages website is
45
- public. An eligible paid GitHub plan is required for Pages from private repositories.
46
- This workflow does not provide private website access. Review lesson text,
47
- quotations and source links for the intended public audience before publishing.
48
-
49
- Install GitHub CLI on the execution host and run `gh auth login --hostname github.com`.
50
- `tum-mcp doctor` checks CLI availability without network access; `doctor --live`
51
- also verifies GitHub authentication. It does not publish anything, open sign-in
52
- automatically, extract tokens, or change Git credential settings.
53
-
54
- ```sh
55
- # Preview the chosen name and hosting requirements without GitHub mutations.
56
- tum-mcp study publish --project PROJECT
57
- # After choosing public website content; the repository stays private.
58
- tum-mcp study publish --project PROJECT --public-site
59
- # Optional account/name override on first setup:
60
- tum-mcp study publish --project PROJECT --public-site --repository OWNER/NAME
61
- ```
62
-
63
- Names use `study-<course>-<semester>` in lowercase with hyphens. A collision gets
64
- a stable course suffix; existing repositories are never made public. Settings in
65
- `.tum-mcp/github.json` bind updates to that course, semester and repository. A
66
- failed setup retries the same saved repository rather than creating duplicates.
67
-
68
- Study is the default hosted workspace, including for old settings. Exercise
69
- statements, hints and full solutions need explicit `--include-exercises` on the
70
- publish command after reviewing their public exposure. `--exclude-exercises`
71
- removes Exercises from subsequent eligible exports, using the same repository and URL. An
72
- Exercises-only site also requires explicit inclusion. Lecture Notes separately requires
73
- `--include-lectures`; old settings default to exclusion. `--exclude-lectures` also removes
74
- previously managed lecture images. A notes-only export with notes excluded is refused.
75
-
76
- Only the selected generated website renderer and data are uploaded. Downloaded
77
- originals, credentials, AGENTS.md, study inventory, passage comments, progress,
78
- audio and arbitrary files stay local. Git itself is not required: the publisher
79
- uses authenticated GitHub API calls through `gh`. Local publication settings do
80
- not contain credentials.
81
-
82
- After setup, successful `tum-mcp study build PROJECT` commands update that same
83
- repository automatically. Unchanged verified exports require no network calls
84
- or commits. The study skills finish related edits in one build. Remote edits
85
- are preserved for review; the publisher never force-pushes.
86
-
87
- ```sh
88
- tum-mcp study publish status PROJECT
89
- tum-mcp study publish sync PROJECT # retry pending/failed deployment
90
- tum-mcp study publish pause PROJECT # pause future automatic uploads
91
- tum-mcp study publish resume PROJECT
92
- tum-mcp study build PROJECT --local-only # skip uploading this build
93
- ```
94
-
95
- Uploads are verified against the Pages build and GitHub checks for the exact
96
- commit. Pending deployment exits with code 2 and is resumable; a successful
97
- repository update alone is not a deployed site. Authentication, plan or network
98
- failures preserve the local build. Polling has a budget of at most 60 seconds,
99
- in addition to bounded API requests.
100
- The `tum-mcp study` launcher prints local, hosted and repository URLs, plus pending
101
- or paused status. Study progress remains per browser; passage comments require
102
- the local preview and are disabled in the hosted export. Device synchronization
103
- and offline support are not included.
104
-
105
13
  ## Start with one course
106
14
 
107
15
  Use `sync-course` for both initial setup and later source updates. For a new project,
@@ -192,63 +100,31 @@ restores files when possible and reports any remaining conflict.
192
100
 
193
101
  ## Prepare the website
194
102
 
195
- Ask `prepare-study` to create or extend the Study workspace in `app/`. Units follow the course's
196
- lecture/week sequence when useful, or use consistent topics. For a single course, use a flat list or one category level followed by topics,
197
- including several topics in one week. Every unit has:
103
+ Ask `prepare-study` to create or extend the Study workspace in `app/`. The agent
104
+ writes `app/content.json` from your stored course material, and `tum-mcp study build`
105
+ installs the shared course app and checks every cited source. Units follow the
106
+ course's lecture or week sequence when useful, or consistent topics, with at most
107
+ one category level. Every unit has:
198
108
 
199
- - A concise explanation with source links, assumptions and worked examples.
200
- - Editable LaTeX formulas and inline variables, diagrams, code or comparison tables where they explain the concept.
201
- - Flip cards with arrow navigation, Space to flip and 1/2 for Again/Got it.
202
- - Practice questions with exactly four options, one justified answer and feedback for every option.
109
+ - Content: a short lesson with objectives, source links, assumptions and worked
110
+ examples, using formulas, tables, code, diagrams or line graphs where they help.
111
+ - Flashcards for recall. On a keyboard, arrows move, Space flips and 1/2 rate a card.
112
+ - Practice questions with plausible options and feedback for every option.
203
113
 
204
114
  The agent uses stored material first, so local content edits work offline. Ask for
205
115
  an upstream refresh when you want new course content; an existing check is reused
206
- within the same request. Unchanged units and reviewed material are retained.
207
-
208
- The skill audits objective coverage, technical accuracy and distractors. Its
209
- STE-inspired English uses short, direct sentences while retaining necessary terms
210
- and conditions. The design contract uses TUM blue/navy with quiet reading surfaces,
211
- local fonts, light/dark themes, keyboard navigation and a phone layout. The outline
212
- collapses using a midpoint boundary arrow revealed on hover or keyboard focus;
213
- touch screens keep a visible control. On phones it opens a viewport overlay from
214
- any reading position, with its own scroll and Escape to close. Theme stays in the
215
- outline; the reset icon is on the course home. A Next link follows the active
216
- activity at the end of each view.
217
-
218
- Revision combines flashcards and practice from topics you select. Open Revision in
219
- the outline, choose topics and collapse the checklist when ready. It reuses the
220
- course's categories; selecting a category includes all its topics, and a mixed
221
- checkbox shows a partly selected category. Revision reuses the
222
- original items, sources and progress; selecting or removing topics never clears
223
- your results. The topic selection is remembered locally for this course.
224
-
225
- The topic picker and its nested categories collapse independently. You can select a
226
- whole category while it is closed; its count and mixed state reflect the selection.
227
- At End of set, outlined question rows include a Review action and chevron. Click
228
- one to review it in a popup. Closing the popup returns
229
- you to the same results row without changing progress.
230
-
231
- The website uses Atkinson Hyperlegible Next for headings, explanations and controls.
232
- Code and mathematical notation retain their specialist fonts. Equations adapt to
233
- their container and keep local horizontal scrolling for indivisible wide expressions.
234
- Use `\(v_i\)` in teaching text for inline variables and short expressions (JSON:
235
- `"Use \\(v_i\\)."`). They compile locally to native MathML, including in tables,
236
- glossaries, cards, questions and feedback. Code and dollar signs stay literal.
237
-
238
- Select text in Content, Flashcards or Practice, then click **Comment** to record what is unclear.
239
- You can also use Ctrl/Command+Alt+M after selecting text. The local preview saves
240
- notes in `.tum-mcp/comments.json`, separately from learning progress. Click a
241
- numbered passage marker or highlighted text to open its notes beside the quote.
242
- Markers sit beside section headings or the current card/question position.
243
- Notes can be edited, resolved or reopened; changed passages retain their original quotes.
244
- Revision notes retain their original topic and card/question identity.
245
-
246
- Tell your agent: **“Address the open comments in this study project.”** The skill
247
- reads the notes, checks the cited material, improves the affected explanation and
248
- verifies the result before recording a resolution. Notes and status changes sync
249
- automatically while the preview is open. Your draft is kept if a note changes
250
- elsewhere; choose Use latest or Keep mine before saving. Reload after the agent
251
- rebuilds the teaching content.
116
+ within the same request. Unchanged units and reviewed material are retained. The
117
+ skill audits objective coverage, technical accuracy and distractors, and writes in
118
+ short, direct sentences that keep necessary terms and conditions.
119
+
120
+ The course home introduces the course, resumes where you left off and lists topics
121
+ with progress. Each view ends with a Next link through cards and practice to the
122
+ next unit. Revision pools cards and questions from the topics you choose (all topics
123
+ until you choose) and can focus on cards marked Again and questions you missed. It
124
+ reuses the original items and progress, so changing the topic selection never clears
125
+ results, and it remembers your selection for this course. Formulas and inline
126
+ notation such as `\(v_i\)` compile locally to native MathML; code and dollar signs
127
+ stay literal. The app has light and dark themes and a phone layout.
252
128
 
253
129
  Content lives in `app/content.json`; shared renderer modules and CSS keep the
254
130
  site extensible. Source hashes identify affected units. A stale source stops a
@@ -261,6 +137,8 @@ tum-mcp study inspect ./pse-ws26
261
137
  tum-mcp study build ./pse-ws26
262
138
  ```
263
139
 
140
+ ## Preview the app
141
+
264
142
  From the course project folder, launch the prepared app with:
265
143
 
266
144
  ```sh
@@ -279,25 +157,39 @@ same-origin endpoint. It makes no campus requests.
279
157
  No course credentials are copied into the website. Browser storage holds progress
280
158
  locally. Nothing is published by these commands.
281
159
 
160
+ ## Passage comments
161
+
162
+ Select text in Content, Flashcards, Practice, Exercises or Lecture Notes, then click
163
+ **Comment** to record what is unclear. You can also use Ctrl/Command+Alt+M after
164
+ selecting text. The local preview saves notes in `.tum-mcp/comments.json`, separately
165
+ from learning progress. Click a numbered marker or highlighted text to open its notes
166
+ beside the quote. Notes can be edited, resolved or reopened; changed passages retain
167
+ their original quotes, and Revision notes keep their original topic and item.
168
+
169
+ Tell your agent: **“Address the open comments in this study project.”** The skill
170
+ reads the notes, checks the cited material, improves the affected explanation and
171
+ verifies the result before recording a resolution. Notes and status changes sync
172
+ automatically while the preview is open. Your draft is kept if a note changes
173
+ elsewhere; choose Use latest or Keep mine before saving. Reload after the agent
174
+ rebuilds the teaching content.
175
+
282
176
  ## Prepare weekly exercises
283
177
 
284
178
  Ask `prepare-exercises` to prepare released weekly sheets in the same app. Study
285
- and Exercises can be prepared in either order. When both exist, a selector at the bottom of the sidebar
286
- switches workspaces and remembers the current place. On phones it lives inside the
287
- open course outline; there is no second switch in the reading area. Exercises are
288
- listed directly under sheets, optionally grouped by category.
289
-
290
- The original statement and subparts come first. Students can solve on paper, mark
291
- an exercise Reviewed, reveal a worked solution directly, or open **Guidance**.
292
- Prepared guidance offers one conceptual step, requested hints and specific repair
293
- feedback. Numeric checks state units/tolerance; choice checks have four options.
294
- Fillable tables check numeric cells and explicit text variants individually. Graph
295
- questions support node/edge selections and ordered paths with a visible diagram.
296
- Line graphs allow sample-point placement, coordinate edits and keyboard adjustment.
297
- Long math and programming work use saved writing areas and prepared rubrics; code
298
- is never executed, and symbolic work, proofs and programs are not automatically
299
- graded. Arbitrary graph drawing can use paper and rubric comparison. Typing, hints and step-by-step guidance are optional. Reviewed records an
300
- action, not mastery or an assessment result.
179
+ and Exercises can be prepared in either order. When both exist, the workspace selector
180
+ at the bottom of the outline switches between them and remembers your place; on phones
181
+ it sits inside the open outline. The exercise list groups exercises by sheet and shows
182
+ each sheet's summary and due date when the sources provide them.
183
+
184
+ Each exercise shows the original statement and subparts first. Work on paper or in
185
+ the app, open the worked solution directly, or open **Guidance** for the exercise's
186
+ goals and one step at a time with optional hints and specific feedback. Checks cover
187
+ numbers with units and tolerance, multiple choice, fillable tables, graph selections
188
+ and paths, and plotted sample points. Long math and programming work use saved drafts
189
+ and prepared rubrics; code is never executed, and symbolic work, proofs and programs
190
+ are not graded automatically. Mark an exercise reviewed when you are done; Reviewed
191
+ records an action, not mastery or an assessment result. A Next link leads to the
192
+ following exercise.
301
193
 
302
194
  Drafts and assistance stay in this browser. Editing a checked answer clears its
303
195
  verdict. Semantic changes start fresh progress for only that exercise, while retaining older
@@ -312,6 +204,70 @@ learning revisions, comments, settings and personal files, and stops on customiz
312
204
  generated files, an occupied backup or two layouts. Repeating a completed upgrade
313
205
  is a no-op. Do not create `app/` alongside an existing `study/` by hand.
314
206
 
207
+ ## Publish a study website
208
+
209
+ The `publish-course` skill makes a prepared site accessible from a phone
210
+ or another computer. Its GitHub repository is private; the Pages website is
211
+ public. An eligible paid GitHub plan is required for Pages from private repositories.
212
+ This workflow does not provide private website access. Review lesson text,
213
+ quotations and source links for the intended public audience before publishing.
214
+
215
+ Install GitHub CLI on the execution host and run `gh auth login --hostname github.com`.
216
+ `tum-mcp doctor` checks CLI availability without network access; `doctor --live`
217
+ also verifies GitHub authentication. It does not publish anything, open sign-in
218
+ automatically, extract tokens, or change Git credential settings.
219
+
220
+ ```sh
221
+ # Preview the chosen name and hosting requirements without GitHub mutations.
222
+ tum-mcp study publish --project PROJECT
223
+ # After choosing public website content; the repository stays private.
224
+ tum-mcp study publish --project PROJECT --public-site
225
+ # Optional account/name override on first setup:
226
+ tum-mcp study publish --project PROJECT --public-site --repository OWNER/NAME
227
+ ```
228
+
229
+ Names use `study-<course>-<semester>` in lowercase with hyphens. A collision gets
230
+ a stable course suffix; existing repositories are never made public. Settings in
231
+ `.tum-mcp/github.json` bind updates to that course, semester and repository. A
232
+ failed setup retries the same saved repository rather than creating duplicates.
233
+
234
+ Study is the default hosted workspace, including for old settings. Exercise
235
+ statements, hints and full solutions need explicit `--include-exercises` on the
236
+ publish command after reviewing their public exposure. `--exclude-exercises`
237
+ removes Exercises from subsequent eligible exports, using the same repository and URL. An
238
+ Exercises-only site also requires explicit inclusion. Lecture Notes separately requires
239
+ `--include-lectures`; old settings default to exclusion. `--exclude-lectures` also removes
240
+ previously managed lecture images. A notes-only export with notes excluded is refused.
241
+
242
+ Only the selected generated website renderer and data are uploaded. Downloaded
243
+ originals, credentials, AGENTS.md, study inventory, passage comments, progress,
244
+ audio and arbitrary files stay local. Git itself is not required: the publisher
245
+ uses authenticated GitHub API calls through `gh`. Local publication settings do
246
+ not contain credentials.
247
+
248
+ After setup, successful `tum-mcp study build PROJECT` commands update that same
249
+ repository automatically. Unchanged verified exports require no network calls
250
+ or commits. The study skills finish related edits in one build. Remote edits
251
+ are preserved for review; the publisher never force-pushes.
252
+
253
+ ```sh
254
+ tum-mcp study publish status PROJECT
255
+ tum-mcp study publish sync PROJECT # retry pending/failed deployment
256
+ tum-mcp study publish pause PROJECT # pause future automatic uploads
257
+ tum-mcp study publish resume PROJECT
258
+ tum-mcp study build PROJECT --local-only # skip uploading this build
259
+ ```
260
+
261
+ Uploads are verified against the Pages build and GitHub checks for the exact
262
+ commit. Pending deployment exits with code 2 and is resumable; a successful
263
+ repository update alone is not a deployed site. Authentication, plan or network
264
+ failures preserve the local build. Polling has a budget of at most 60 seconds,
265
+ in addition to bounded API requests.
266
+ The `tum-mcp study` launcher prints local, hosted and repository URLs, plus pending
267
+ or paused status. Study progress remains per browser; passage comments require
268
+ the local preview and are disabled in the hosted export. Device synchronization
269
+ and offline support are not included.
270
+
315
271
  ## Create and maintain audio notes
316
272
 
317
273
  Install the optional workflow with `tum-mcp install audio-notes`.
@@ -383,30 +339,56 @@ for the updated study website”** to reconcile added, changed, removed or moved
383
339
  material with the previous verified coverage. This is an agent skill, not a new
384
340
  `tum-mcp study` CLI subcommand or a built-in speech service.
385
341
 
386
- ## Packaged app template
342
+ ## Studocu materials
343
+
344
+ Install the optional extension with `tum-mcp install studocu` and reload your
345
+ client. Ask `sync-studocu` to collect materials for a course project. It can
346
+ initialize a Studocu-only project with a verified course and semester.
347
+ Search is anonymous and bounded; a limited result set is not a complete inventory.
348
+ `tum-mcp studocu login` explains how to sign in to Studocu in your own browser.
349
+ The extension cannot infer account entitlement or download original files through
350
+ the public MCP. Save an original that your account permits in the browser.
351
+
352
+ The skill records a reviewed selection with `tum-mcp studocu plan PROJECT
353
+ --selection FILE` and tracks it with `tum-mcp studocu status PROJECT --json`.
354
+ Import a selected original with `tum-mcp studocu import PROJECT --document-id ID
355
+ --file FILE`. The document-to-file association is user-selected. Originals go to
356
+ `materials/studocu/summaries`, `materials/studocu/exams` (including mocks and
357
+ solutions), or `materials/studocu/other`. Files remain local and retain their
358
+ original bytes. Consult the skill's collection reference for the selection schema.
359
+ Exact matches in the same group, type and known year share one original through
360
+ a private alias. Each selected document retains its own source identity and URL.
361
+ Changing a document's classification or refreshing its original separates aliases
362
+ when they no longer match; previous versions remain in private history.
363
+ When an existing selection is planned again, unchanged duplicate originals are
364
+ consolidated. Edited or missing files are preserved for review.
365
+
366
+ Local study material can cite student uploads. Publishing rejects included
367
+ Studocu-backed sources; this source check cannot identify uncited copied text or
368
+ replace a review of the published content.
387
369
 
388
- The shared web-app template is packaged in `bundled/course_app/site/`, separately from skill instructions.
389
- It includes the shell, navigation, flip cards, practice, diagrams and styling.
390
- Agents author course content in `app/content.json`; `study build` installs the
391
- shared template, preserves customized files and checks sources. This keeps new
392
- course sites consistent without rebuilding the interface. `tum-mcp study template`
393
- shows the bundled files and their combined revision for reproducible development.
370
+ ## The course app
394
371
 
395
- ## Try the component template
372
+ The shared course app is packaged in `bundled/course_app/site/`, separately from the
373
+ skill instructions. It owns layout, styling and interaction for Study, Exercises and
374
+ Lecture Notes. Agents author only course content; `study build` installs the app,
375
+ preserves customized files and checks sources, so courses gain app improvements
376
+ without rewriting content. `tum-mcp study template` shows the bundled files and
377
+ their combined revision for reproducible development.
396
378
 
397
- After installing a locally built development artifact:
379
+ To see every component with synthetic data:
398
380
 
399
381
  ```sh
400
382
  tum-mcp study demo ./component-preview
401
383
  tum-mcp study serve ./component-preview
402
384
  ```
403
385
 
404
- This creates one small Study unit and one exercise covering prose, code, tables,
405
- formulas, graph/process diagrams, cards and response controls. It is a reusable
406
- component template, not necessarily a good teaching or question-authoring example.
407
- Actual course authoring follows reviewed sources and the preparation skills. Rich
408
- learning pilots stay in private test fixtures.
409
- It uses no campus account. An existing edited demo is preserved.
386
+ The demo creates one small Study unit and one exercise covering prose, code, tables,
387
+ formulas, graph/process diagrams, cards and response controls. It is a format
388
+ reference, not necessarily a good teaching or question-authoring example; actual
389
+ course authoring follows reviewed sources and the preparation skills. Rich learning
390
+ pilots stay in private test fixtures. It uses no campus account, and an existing
391
+ edited demo is preserved.
410
392
 
411
393
  ## Local helper inputs
412
394
 
package/docs/tum-mcp.md CHANGED
@@ -96,15 +96,15 @@ browser onboarding. See [setup](setup.md) for browser choices and WSL.
96
96
  ## Connections and read access
97
97
 
98
98
  ```sh
99
- tum-mcp connect
100
- tum-mcp status
99
+ tum-mcp login
100
+ tum-mcp doctor
101
101
  tum-mcp discover artemis ACCOUNT_ID
102
102
  tum-mcp discover zulip ACCOUNT_ID
103
103
  tum-mcp --help
104
104
  tum-mcp study build --help
105
105
  ```
106
106
 
107
- `connect` takes no arguments or connection options. Move with up/down, toggle
107
+ `login` takes no arguments or connection options. Move with up/down, toggle
108
108
  services with Space, and press Enter. Choose a browser when more than one is
109
109
  installed. Only selected tabs open in one temporary browser context. Moodle,
110
110
  Artemis, Zulip and TUMonline all follow this flow.
@@ -152,7 +152,7 @@ the command offers a numbered text prompt instead.
152
152
  When multiple accounts exist, add `--account ACCOUNT_ID`. Reconnecting preserves
153
153
  the policy. `tum-mcp manage tumonline --disconnect` removes the local TUMonline
154
154
  credential and retains the policy; it does not revoke remote sessions. An expired
155
- session requires `tum-mcp connect` again. If the policy is missing or corrupt, use
155
+ session requires `tum-mcp login` again. If the policy is missing or corrupt, use
156
156
  `tum-mcp manage tumonline --account ACCOUNT_ID --disconnect` to remove that saved
157
157
  session without resetting permissions or affecting other providers.
158
158
 
@@ -229,8 +229,8 @@ The base pack contains five skills: `read-content`, `sync-course`,
229
229
  `prepare-study`, `prepare-exercises` and `publish-course`. Optional extensions add
230
230
  `prepare-lecture`, `sync-studocu` and `audio-notes`; choose them with `tum-mcp install`.
231
231
  Website-specific retrieval guidance is loaded from references within read-content.
232
- Teaching, schema and design contracts live
233
- with prepare-study; the renderer and synthetic example ship as reusable assets.
232
+ Teaching and content guidance lives with prepare-study; the course app and its
233
+ synthetic example ship as reusable assets and define the site's design.
234
234
  Audio Notes converts prepared content into category tracks and maintains coverage,
235
235
  scripts, voice settings, candidates and archives under the course's `audio/` root.
236
236
  Publish Course uses host GitHub CLI authentication to create a private repository
@@ -320,4 +320,4 @@ course material, local agent notes and screenshots stay under ignored local path
320
320
  Maintainer checks include a reviewed tarball inventory, integrity checks and an
321
321
  isolated consumer install. Never publish or stage npm packages as a test. Registry
322
322
  publication is an explicit maintainer action.
323
- `tum-mcp status` reports registry state as `not_checked`; it reads local configuration.
323
+ `tum-mcp doctor` reads local configuration and does not check the npm registry.
@@ -1,5 +1,5 @@
1
1
  {
2
- "wheel": "tum_mcp-0.9.1-py3-none-any.whl",
3
- "wheelSha256": "69d65afa35c27518f03c95e47ddfc23cc77a3d442853804fcb58c2e78b539fe0",
2
+ "wheel": "tum_mcp-0.9.3-py3-none-any.whl",
3
+ "wheelSha256": "15601cbdc8b931a64a58eac7aca0be0b4bc7c1df63d11f267d11599d48b29ec2",
4
4
  "requirementsSha256": "39a401b6e606d3292eb91b8fe9ef60367d4852f203eb409dc52f38b76e513ccf"
5
5
  }
package/npm/tum-mcp.mjs CHANGED
@@ -22,9 +22,8 @@ try {
22
22
  ['Options', [['--version', 'Show the installed version.'], ['-h, --help', 'Show this help.']]],
23
23
  ['Commands', [
24
24
  ['setup', 'Configure your coding client and managed runtime.'],
25
- ['connect', 'Sign in to selected campus services.'],
26
- ['status', 'Show saved connections and optional workflows.'],
27
- ['doctor', 'Check installation and authentication.'],
25
+ ['login', 'Sign in to selected campus services.'],
26
+ ['doctor', 'Show connections, extensions and relevant client/runtime health.'],
28
27
  ['install', 'Choose optional Lecture, Studocu or Audio Notes workflows.'],
29
28
  ['uninstall', 'Choose extensions or All to remove TUM MCP.'],
30
29
  ['manage', 'Manage TUMonline permissions.'],
@@ -38,7 +37,7 @@ try {
38
37
  ['serve', 'Run the MCP server over stdio.'],
39
38
  ['version', 'Show the installed version.'],
40
39
  ]],
41
- ['Get started', [['tum-mcp setup --client codex', 'Prepare the backend and a client.'], ['tum-mcp connect', 'Choose services and sign in.']]],
40
+ ['Get started', [['tum-mcp setup --client codex', 'Prepare the backend and a client.'], ['tum-mcp login', 'Choose services and sign in.']]],
42
41
  ]);
43
42
  } else if (['--version', 'version'].includes(args[0])) {
44
43
  console.log(version);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jamestesting888/tum-mcp",
3
- "version": "0.9.1",
3
+ "version": "0.9.3",
4
4
  "description": "Read-only TUM campus tools and source-backed study, exercise and lecture workflows",
5
5
  "license": "MIT",
6
6
  "type": "module",