From d5310d5a3f960050b897b84a414f98c51f585d78 Mon Sep 17 00:00:00 2001 From: Codex Date: Thu, 24 Sep 2026 12:09:20 +0200 Subject: [PATCH] Update ThothII presentation tour, annotated screenshots and speaker notes --- PROJECT_STATE.md | 41 +++++- docs/operations/presentation-publishing.md | 105 ++++++++++++++ presentation/deck/index.html | 128 +++++++++++++++-- presentation/deck/screenshot-tour.css | 12 +- presentation/deck/screenshot-tour.js | 11 +- .../screenshots/thothii/01-StartingPoint.png | Bin 0 -> 481280 bytes .../thothii/02-Disambiguation01.png | Bin 0 -> 1050253 bytes .../thothii/03-DisambiguationFinal.png | Bin 0 -> 998960 bytes .../thothii/04-SchemaLinking01.png | Bin 0 -> 1161781 bytes .../thothii/05-CloseSchemaLinking.png | Bin 0 -> 982134 bytes .../screenshots/thothii/06-CTEPlanning.png | Bin 0 -> 970937 bytes .../deck/screenshots/thothii/07-CTE01.png | Bin 0 -> 720718 bytes .../deck/screenshots/thothii/08-FinalSQL.png | Bin 0 -> 821375 bytes .../thothii/09-DatamartProduction.png | Bin 0 -> 840136 bytes .../screenshots/thothii/10-MemorySaving.png | Bin 0 -> 947609 bytes .../deck/screenshots/thothii/11-FinalStep.png | Bin 0 -> 724195 bytes .../thothii/12-BackToStartingPoint.png | Bin 0 -> 483645 bytes presentation/presenter/README.md | 3 + presentation/presenter/index.html | 4 +- presentation/presenter/presenter.css | 1 + presentation/presenter/presenter.js | 20 ++- presentation/prototype/deck-overview.html | 1 + presentation/slides/00-outline.md | 133 +++++++++++++----- 23 files changed, 402 insertions(+), 57 deletions(-) create mode 100644 docs/operations/presentation-publishing.md create mode 100644 presentation/deck/screenshots/thothii/01-StartingPoint.png create mode 100644 presentation/deck/screenshots/thothii/02-Disambiguation01.png create mode 100644 presentation/deck/screenshots/thothii/03-DisambiguationFinal.png create mode 100644 presentation/deck/screenshots/thothii/04-SchemaLinking01.png create mode 100644 presentation/deck/screenshots/thothii/05-CloseSchemaLinking.png create mode 100644 presentation/deck/screenshots/thothii/06-CTEPlanning.png create mode 100644 presentation/deck/screenshots/thothii/07-CTE01.png create mode 100644 presentation/deck/screenshots/thothii/08-FinalSQL.png create mode 100644 presentation/deck/screenshots/thothii/09-DatamartProduction.png create mode 100644 presentation/deck/screenshots/thothii/10-MemorySaving.png create mode 100644 presentation/deck/screenshots/thothii/11-FinalStep.png create mode 100644 presentation/deck/screenshots/thothii/12-BackToStartingPoint.png diff --git a/PROJECT_STATE.md b/PROJECT_STATE.md index 8d41e4e4..15c52b8f 100644 --- a/PROJECT_STATE.md +++ b/PROJECT_STATE.md @@ -1,6 +1,6 @@ # ThothII — Project State -Last updated: 2026-09-06. +Last updated: 2026-09-24 (slide 11 PNG numbering aligned with popups). This file is the short operational snapshot. Stable commands and the architecture mental model live in `AGENTS.md`; current design and runtime contracts live under `docs/architecture/`, @@ -12,6 +12,45 @@ Authentik, internal catalog/embedding services, and the PSD workspace repository `docs/operations/server-upgrade-gitea-workspace-v2.md`. Treat its operator gates and rollback requirements as mandatory; do not replace the running server stack in place. +## Presentation publishing + +Presentation PNG source (user instruction, 2026-09-23): all PNGs to import come from +`/Users/mp/Desktop/ScreenshotPresentation/ThothIIScreens/`. This is the verified on-disk +path the user refers to as `desktop/screenshot/presentation/thothIIscreens`. +Copy supplied files unchanged into `presentation/deck/screenshots/thothii/`, preserving +their embedded annotations. The 12 slide 11 PNGs are numbered `01` through `12` in +popup order, in both the source folder and the deck. The first popup uses +`01-StartingPoint.png`; popup 2 uses `02-Disambiguation01.png`. Refresh the image +cache version when replacing a PNG. During the current editing session, refresh both +operational browser windows after every modification, as explicitly requested. +Popup 3 uses `03-DisambiguationFinal.png`, popup 4 uses `04-SchemaLinking01.png`, +and popup 5 uses `05-CloseSchemaLinking.png`. Popups 6–12 are CTE planning, CTE 1, +Final SQL, Datamart, Saving memory, Final step, and Back to start. +The HTML references PNGs by relative URL: they are external static assets, not +compiled or embedded. Keep `presentation/deck/screenshots/thothii/` with the deck; +the Desktop source folder is not a runtime dependency. +On 2026-09-23, the complete source folder was backed up to +`/Users/mp/Desktop/ThothIIScreens-backup-20260923-FkCqV3/` and verified by SHA-256. +The four unused PNGs (original prefixes 02, 05, 09, and 10) were removed from the +source folder and, on 2026-09-24, from the deck after verifying backup equality. +The backup retains all 16 original PNGs under their original names. Renumbering +preserved each file's bytes; the existing Starting point images in the source and +deck differ and were each retained unchanged. +On 2026-09-24, annotated PNGs 08–12 were updated directly in the deck and verified +visually; these deck copies are newer than the Desktop source copies. Preserve +them when importing images. Their image cache version is `v=5`. Presenter notes +for popups 09–12 are also updated in `presentation/deck/index.html`. The two Snagit +comment boxes in PNG 12 share the same horizontal centre (1676.5 px in the +3830 px source image); their text is centred within each box. + +The user confirmed the public AritmoLab presentation and presenter console working on +2026-09-20. Updates use the `feat/ai-etl-presentation` branch on Gitea: commit and push +locally, then the user runs `git pull --ff-only origin feat/ai-etl-presentation` in +`/var/www/aritmolab/presentation` on the remote server. No SSH tunnel is available; +the user can operate an authenticated remote terminal in VS Code. Nginx routes are +already configured, so ordinary slide updates need no Nginx reload. Exact URLs, +paths, checks and cache behavior: [Presentation publishing](docs/operations/presentation-publishing.md). + ## Current product shape ThothII is a human-in-the-loop datamart builder with three independently built layers: diff --git a/docs/operations/presentation-publishing.md b/docs/operations/presentation-publishing.md new file mode 100644 index 00000000..fdc24a45 --- /dev/null +++ b/docs/operations/presentation-publishing.md @@ -0,0 +1,105 @@ +# Updating the AritmoLab presentation + +Last confirmed by the user: 2026-09-20, after deploying commit `5217c574`. +The user reported both the presentation and presenter console working. This is +the static presentation deployment, separate from the ThothII application stack. + +## Locations + +- Local worktree: `/Users/mp/projects/ThothII-presentazione`. +- Source: `presentation/deck/` and `presentation/presenter/`. +- Git remote: `origin`, `https://git.tylconsulting.it/mptyl/ThothII.git`. +- Publication branch: `feat/ai-etl-presentation`. +- Remote checkout: `/var/www/aritmolab/presentation`. + +Presentation: + +```text +https://aritmolab.policlinicosandonato.it/presentation/ +``` + +Presenter console: + +```text +https://aritmolab.policlinicosandonato.it/presentation/presenter/ +``` + +Give these URLs as copyable plain text when providing instructions: the user +reported difficulty clicking Markdown links. + +## Routine update + +1. In the local worktree, review and validate the requested presentation changes, + then commit and push the intended files to `origin/feat/ai-etl-presentation`. + Include new images, styles, scripts and presenter files. A remote pull cannot + receive changes that remain uncommitted or unpushed. Leave unrelated changes alone. +2. The user connects to the remote server and runs: + + ```bash + cd /var/www/aritmolab/presentation + git branch --show-current + git status --short + ``` + + Continue only when the branch is `feat/ai-etl-presentation` and there are no + unexpected local changes. If either differs, inspect before updating; do not + reset, discard files or merge the presentation branch into another branch. + + ```bash + git pull --ff-only origin feat/ai-etl-presentation + git log -1 --oneline + ``` + +3. Refresh both browser windows. Static responses advertise + `Cache-Control: public, max-age=300`, so a browser may reuse assets for five + minutes. Use a hard refresh if the old version remains visible; bump asset + query versions when changing cached JavaScript or CSS. +4. When network access is available, verify the expected version at both URLs, + including screenshots and synchronization of presenter and audience popups. + Distinguish a successful Git push from a completed remote deployment. + +Changes to slides, notes, images, CSS and JavaScript need no build, application +restart or Nginx reload. A reload is necessary only if Nginx configuration changes. + +## Remote access + +The site was reachable from the user's Mac while connected to the VPN. +Do not use SSH tunnels for this deployment. A non-interactive direct SSH attempt +on 2026-09-20 failed authentication. The user offered an authenticated SSH session +inside VS Code, then chose to execute the remote commands personally. The normal +workflow is to push locally and provide the remote pull command to the user; +do not assume autonomous remote access or ask for passwords in chat. + +## Nginx routing already configured + +The existing `/presentation` route redirects to `/presentation/`. +The user supplied the original deck alias and subsequently confirmed successful +setup of the two additional routes for the console: + +| URL prefix | Filesystem alias | +| --- | --- | +| `/presentation/` | `/var/www/aritmolab/presentation/presentation/deck/` | +| `/presentation/deck/` | `/var/www/aritmolab/presentation/presentation/deck/` | +| `/presentation/presenter/` | `/var/www/aritmolab/presentation/presentation/presenter/` | + +These are sibling `location ^~` blocks within the site's `server` block. The +specific `deck/` route supports the console's relative links to fonts and slide +iframes. The configuration filename was not recorded. + +The presentation is intentionally public static content, bypassing Django and +Authentik. Preserve its existing routing and protections: directory listings off, +`index index.html`, GET/HEAD only, five-minute cache, `nosniff`, `SAMEORIGIN`, and +`noindex, nofollow, noarchive`. Do not expose the entire repository or change +unrelated application routes. + +Only if routing needs diagnosis: + +```bash +sudo nginx -T 2>/dev/null | grep -n -A 12 -B 3 '/presentation' +``` + +Only after an intentional configuration edit: + +```bash +sudo nginx -t && sudo systemctl reload nginx +``` diff --git a/presentation/deck/index.html b/presentation/deck/index.html index 22ab1d30..2d7b8134 100644 --- a/presentation/deck/index.html +++ b/presentation/deck/index.html @@ -8,7 +8,7 @@ - +
@@ -508,7 +508,7 @@
The portal, today

AritmoLab — a quick tour

-
+
@@ -602,14 +602,111 @@
ThothII, step by step

From question to datamart — the app

-
-
screenshot
screenshot
screenshot
-
screenshot
screenshot
screenshot
+
+ + + + + + + + + + + +
-

[MP: 6-7 real screenshots of ThothII — ask, review SQL, datamart, dashboard]

+

Select a screen to enlarge · Follow the tour from 1 to 12

Role of AI in the Analysis of Unstructured Clinical DatabasesDr. Marco Pancotti - MultiPhysixLabDr. Sara Paratico - Gruppo San DonatoSan Donato Milanese, Milan, Italy · 2–3 October 202611 / 13
- +
@@ -673,7 +770,7 @@ - + + +
diff --git a/presentation/presenter/presenter.css b/presentation/presenter/presenter.css index a51e9bb4..925bef50 100644 --- a/presentation/presenter/presenter.css +++ b/presentation/presenter/presenter.css @@ -37,6 +37,7 @@ h2 { margin: 0; font-size: 16px; font-weight: 600; white-space: nowrap; } #count .popup-group-lens .popup-buttons:has(> button:nth-child(4):last-child) { grid-template-columns: repeat(4, minmax(0, 1fr)); } .popup-group-screenshot { grid-column: 1 / -1; } .popup-group-screenshot .popup-buttons { grid-template-columns: repeat(7, minmax(0, 1fr)); } +.popup-group-screenshot .popup-buttons:has(> button:nth-child(12):last-child) { grid-template-columns: repeat(6, minmax(0, 1fr)); } #popup-controls .popup-group-screenshot button { justify-content: center; } .popup-group-screenshot button > span { display: none; } #popup-controls .popup-group-lens button { flex-direction: column; justify-content: center; text-align: center; } diff --git a/presentation/presenter/presenter.js b/presentation/presenter/presenter.js index b95a3e7e..362ce9d6 100644 --- a/presentation/presenter/presenter.js +++ b/presentation/presenter/presenter.js @@ -13,12 +13,13 @@ let nextPreviewReady = false; let slides = []; let current = null; + let currentNoteKey = null; let audience = null; let lastAudienceSeen = 0; let lastPreviewSeen = 0; let notesSize = 25; let blocked = false; - const urlFor = role => `../deck/index.html?view=${role}&session=${encodeURIComponent(session)}`; + const urlFor = role => `../deck/index.html?v=18&view=${role}&session=${encodeURIComponent(session)}`; const pad = value => String(value).padStart(2, '0'); function showNoteLens(event) { const cue = event.target.closest('[data-note-lens]'); @@ -101,7 +102,8 @@ $('notes-number').textContent = `SLIDE ${pad(state.index + 1)}`; $('notes-title').textContent = slide.title; // Trusted, same-origin authored notes, never channel-provided HTML. - renderNotes(slide.notes); + if (!slide.popupNotes?.length) renderNotes(slide.notes); + currentNoteKey = null; $('reading').scrollTop = 0; $('next-title').textContent = slides[state.index + 1]?.title || 'End of presentation'; updateNextPreview(); @@ -148,6 +150,18 @@ } } } + if (slide.popupNotes?.length) { + // Keep the last selected notes readable when its screenshot is closed. + const note = slide.popupNotes.find(note => state.popup?.kind === 'screenshot' && note.key === state.popup.key) + || slide.popupNotes.find(note => note.key === currentNoteKey) + || slide.popupNotes[0]; + if (note.key !== currentNoteKey) { + currentNoteKey = note.key; + $('notes-title').textContent = note.title; + renderNotes(note.html); + $('reading').scrollTop = 0; + } + } $('popup-controls').querySelectorAll('button').forEach(button => { button.setAttribute('aria-pressed', String(state.popup?.kind === button.dataset.kind && state.popup?.key === button.dataset.key)); }); @@ -194,7 +208,7 @@ updateNextPreview(); }); // No session token: the thumbnail must never navigate or publish to the audience. - nextPreview.src = '../deck/index.html?view=thumbnail#/1'; + nextPreview.src = '../deck/index.html?v=18&view=thumbnail#/1'; const stage = document.querySelector('.stage'); function sizeCurrentPreview() { const style = getComputedStyle(stage); diff --git a/presentation/prototype/deck-overview.html b/presentation/prototype/deck-overview.html index b6248188..e72eecf7 100644 --- a/presentation/prototype/deck-overview.html +++ b/presentation/prototype/deck-overview.html @@ -31,6 +31,7 @@

Deck overview — 14 slides · AritmoLab

Live previews of /deck/index.html · click any slide to open it full-size, then flip with the arrow keys.

+

Open presenter console · Speaker notes, interactive preview and a separate audience window.