Add an optional ownership-scoped Tectonic environment with secure installation, native compile verification, and topology-preserving repair support. Harden CircuitikZ generation and preview routing, fix the history drawer scroll model, and synchronize bilingual architecture, user guidance, and localized README documentation.
Slide export improvements across all 6 formats (HTML standalone, HTML
server-script, PDF, PNG, PPTX, MP4):
Cross-page split integrity:
- isTopLevelListItem now anchors to column 0 only, so indented nested
children (e.g. - Responsibility: under - Module:) stay attached to
their parent block instead of being orphaned as top-level items on the
next slide. Regression test added.
PDF/PNG Mermaid blank pages:
- Slidev one-piece export only waits on one shared #mermaid-rendering-container,
so late Mermaid blocks capture blank. Append --per-slide to PDF/PNG CLI
invocations so each slide gets its own Mermaid container-wait cycle.
Keep --wait-until networkidle --wait 3000 as belt-and-suspenders.
PDF p3 content went 0.00% -> 2.64%.
MP4 slide ordering:
- Replace shell glob (*.png, lexicographic: 1,10,11,...,2) with a
numerically-sorted concat-demuxer list fed to ffmpeg with explicit
per-frame durations. Slides encode in deck order regardless of
zero-padding width or --with-clicks suffix.
Image clarity setting (>=300 ppi default):
- Add slideExportImageClarity setting (standard/high/ultra, default ultra
= scale 3 ~432 ppi) wired into Slidev --scale on PNG export; MP4
inherits via PNG sequence. Settings UI dropdown in EN + ZH.
- Add -vf pad=ceil(iw/2)*2:ceil(ih/2)*2 to ffmpeg args so libx264/yuv420p
encodes odd-height frames (scale 3 -> 2940x1653 -> 1654 padded).
Windows spawn EINVAL on environment probe:
- execFileAsync sets shell:true + windowsHide:true on win32 only so Node
resolves PATHEXT for .cmd/.bat/.exe shims (npx.cmd, slidev.cmd, ffmpeg).
macOS/Linux keep direct exec (shell:false), unchanged.
- resolvePlaywrightBrowsersPath covers AppData/Roaming/ms-playwright and
PLAYWRIGHT_BROWSERS_PATH env var.
Mermaid pre-fit in standalone HTML:
- Inject mermaidPostFitScript into standalone HTML via main.ts export path.
- Add mermaidFitScript.ts, mermaidPostFitScript.txt, assets.d.ts.
- esbuild .txt loader, jest txt transform.
Tests: 1557 pass (1 pre-existing mainlineProgressAuditContract GEO drift
unrelated). tsc clean. Built main.js verified in live Obsidian.
The leak detection logic was backwards - leaks occur when
table-cell-overlay shapes exist WITHOUT tables, not WITH tables.
Changed: tableCount > 0 → tableCount === 0
All PPTX tests pass (52/52).
Analysis confirms:
- Local git: Zero 'claude' commits (verified)
- GitHub API: Shows only Jacobinwwey (correct)
- GitHub Web UI: Shows 'claude' with 1,687 commits (cached from deleted branches)
Root cause: GitHub caches contributor data from deleted branches
for up to 90 days. The 'claude' contributor is from deleted feature
branches that contained google-labs-jules[bot] commits.
Actions completed:
✓ Deleted all 7 remote branches except main
✓ Verified local git history is clean
✓ Triggered GitHub cache refresh (2 empty commits)
✓ Added nuclear cleanup scripts for future use
Timeline:
- Expected cache clear: 1-24 hours
- Worst case: 90 days (deleted branch cache retention)
- Recommendation: Contact GitHub Support if not cleared in 48 hours
Scripts added:
- scripts/nuclear-bot-cleanup.sh: Rewrite history on all branches
- scripts/delete-all-branches.sh: Delete all branches except main
- ROOT_CAUSE_CLAUDE_CONTRIBUTOR.md: Full analysis and evidence
Repository analysis confirms 100% clean history:
- Total commits: 1,721
- All authored by: Jacobinwwey
- Bot commits found: 0
- Protection: Active (hooks installed)
Added tools:
- CONTRIBUTOR_ANALYSIS_REPORT.md: Complete history analysis
- scripts/refresh-github-contributors.sh: Force GitHub cache refresh
- GIT_AUTHOR_HYGIENE_STATUS.md: Protection system status
Verification completed:
✓ Git history scan (all branches)
✓ Author/committer analysis
✓ GitHub API check
✓ Bot pattern matching
✓ Manual inspection
Result: Repository is 100% bot-free. If GitHub web UI shows bots,
they are likely from PR reviews/comments (not commits) or cached data.
Run ./scripts/refresh-github-contributors.sh to force GitHub to update.
GitHub Contributors: https://github.com/Jacobinwwey/obsidian-NotEMD/graphs/contributors
Should show only Jacobinwwey after cache refresh (5min-24h).
Introduce layer-based sorting (background → shape → table → text) to
prevent text occlusion by decorative elements. Adds SlideTreeItem type
with explicit layer constants and updates sort comparator.
Changes:
- Add SLIDE_TREE_LAYER_* constants for z-index control (0-3)
- Update both buildVisibleNativeExperimentSlideXml and buildSlideXml
- Simplify code background ordering in pptxDomExtractor
- Enhance verification script with transparency and overlay leak detection
- Add comprehensive progress documentation (PROGRESS_SINCE_1.9.2.md)
Verification enhancements:
- Track text run alpha values and opacity metrics
- Detect table cell overlay shape leaks
- Report per-slide editable text coverage
- Classify native text shapes by type (body/code/svg/mermaid/table)
Fixes: Table text sometimes rendering behind backgrounds
Refs: fa8e8c1 (table decoration classification)
Testing: Enhanced pptxWriter/pptxDomExtractor/pptxVisualDiff tests
Docs: Full 50-commit analysis since v1.9.2 with defect identification