- Add setspace and set \setstretch{1.2} to match Typst leading 0.76em
(baseline-to-baseline ~1.46em for 10pt text).
- Set \parindent=0pt and \parskip=0.6em so paragraph breaks match
Typst paragraph spacing 1.08em.
- Replace nosep lists with itemsep=0.2em / topsep=0.4em to match
Typst list spacing 0.72em.
- Add aboveskip/belowskip=0.8em around code listings for consistent
block separation.
- booktabs rule colors need colortbl (build was failing on fresh init)
- fonts: Times New Roman + SimSun/SimHei/KaiTi via \IfFontExistsTF guards,
ctex default set as fallback; document bundled-fonts option for deliverables
- tests/conftest.py redirects MYTOOLKIT_HOME to a temp dir before imports
so the module-level Config singleton never touches the real ~/.mytoolkit
- CLI smoke: every registered command answers --help with exit code 0
- unit tests: Config get/set/migrate, templates_registry override/fallback,
md_to_pdf pure helpers (pandoc-dependent cases skipif-guarded)
- pyproject: dev dependency group (pytest) + pytest config; Makefile: make test
- Move docx post-processing from convert.py to template-specific postprocess.py hooks
- Resolve relative markdown image paths before pandoc for docx and pdf
- Auto-generate centered figure captions (图 1, 图 2...) in docx
- Center tables and apply three-line table borders in docx
- Left-align tables in PDF via template.typ show rule
Add a CloudCLI (claude-code-ui) service on port 3020, and a prebuild
flag so services backed by a global npm binary skip the Docusaurus-style
`npm run build` step before serve.
- Use RFC 2047 encoded-word for non-ASCII attachment filenames instead of
RFC 2231 filename* segments, which Coremail Web fails to display.
- Build multipart messages with MIMEMultipart when attachments are present
to keep address headers and attachment filenames Coremail-compatible.
- Add --attach support to reply and forward commands.
- Quote the original message body in reply drafts for proper threading.
Clarify that `git pull` / `git submodule update` only update the source
tree; `make install` or `mytoolkit update` must be rerun for changes to
take effect in the installed CLI.
- Set first-line-indent: 0 on all TABLE styles in default/review docx templates
to prevent table cells from inheriting Normal paragraph indentation.
- Set default PDF template body first-line-indent to 2em (all: true).
- Change default PDF bookmark depth from 1 to 2 in CLI and build_pdf.
- Extend docx post-processing to copy Normal style typography from reference-doc,
format headings/references, and handle BodyText paragraphs.
Extend _fix_docx_postprocess to copy Normal style paragraph properties
from the reference doc, convert BodyText to Normal, add heading spacing
before/after, and format reference entries with hanging-style spacing.
- Add bin/api/ package with generate_image() and synthesize_tts()
- Refactor bin/commands/image.py to call bin.api.image.generate_image
- Refactor bin/commands/voice.py to call bin.api.voice.synthesize_tts
- API layer is free of Click CLI dependencies, usable by external scripts
- Add voice/TTS CLI command via Volcengine WebSocket API
- Inject suppressAutoHyphens into all docx paragraphs in post-process
- Apply post-process fixes to all templates (not just default)
- Update review template: Cambria+SimSun fonts, 11pt for headings
- Sync default/review docx template formatting
Remove the hard-coded `template != \"default\"` guard so that
the default reference docx template is loaded automatically
when no --reference-doc is explicitly provided.
- Enable kinsoku for Chinese punctuation wrap control
- Set first-line indent to 2 characters (304800 EMU)
- Configure three-line table borders (1.5pt top/bottom, 0.75pt header)
- Add 6pt spacing after tables
- Use Cambria + SimSun font pairing
- Add themed blockquote styles (课堂小实验, 关键洞察, etc.) via quote block
- Add #references() wrapper for bibliography formatting
- Implement chapter-based figure/table numbering (1-1, 2-1, ...)
- Start each chapter on a new page (except first)
- Increase list spacing to match long-form reading rhythm
- Fix first-line indent to apply on all paragraphs
- Add `mail download` to save attachments by IMAP UID
- Switch inbox/read/reply/forward to real IMAP UID (stable across sessions)
- Add MIME header decoding for non-ASCII filenames
- Add safe_filename() to prevent path traversal
- Use readonly mode for inbox/list/read to avoid marking unseen
Add `git proxy run <name>` that sets proxy, runs the associated
command, and auto-restores/unsets proxy on exit or Ctrl-C.
Also fix click.Exit usage for Click 8.x compatibility.
- --size now accepts free-form values (2K, 3K, 4K, 2304x1728, etc.)
instead of a fixed [1K, 2K] choice.
- Add --ratio shortcut (1:1, 4:3, 3:4, 16:9, 9:16) mapping to pixel sizes.
- When both --size and --ratio are given, --size takes priority.
- Default remains 2K when neither is specified.
`mytoolkit webpage <project> server <action>` mirrors
`mytoolkit server <action> <project>`, so each Docusaurus project can
manage its own dev/serve lifecycle from the webpage namespace.
Each managed project becomes its own click subgroup, so commands now
read as `mytoolkit webpage mywebpage build` instead of
`mytoolkit webpage build mywebpage`. List remains project-agnostic.
- build: generate CV PDF from cv-zh.md / cv-en.md via Typst cv template
- open: open generated PDF with default application
- --lang-en flag switches between Chinese and English CV
Migrate mywebpage/bin/mywebpage CLI features into mytoolkit:
- deploy: auto-infer GIT_USER from gh CLI or git origin
- pdf build/open: delegate to project's scripts/export-docs-pdf.py
- build --serve: serve built site after successful build
preflight referenced non-existent work-order.md (replaced by agent-tasks.md).
utils only contained albany-cleanup (Albany supercomputer no longer used).
self was a legacy backward-compat group — update/uninstall are already top-level.
- Add new subcommands: convert, preflight, server, templates, webpage
- Migrate config from bin/config.json to ~/.config/mytoolkit
- Fix expand_bookmarks to modify writer objects instead of reader
- Improve md_to_pdf with CJK bookmark support
- Update README and project metadata
Three fixes:
1. Use pandoc -f markdown-citations to avoid @label citation parsing
errors in Typst output.
2. Remove Pandoc auto-generated heading labels (<...>) from typst body.
Without this, Typst creates named-destination links for outline
entries. Named destinations with non-ASCII characters break in
macOS Preview and other PDF readers.
3. Fix expand_bookmarks() to clone the full document (preserving all
/Dest attributes) instead of rebuilding outline from scratch, which
destroyed the bookmark hierarchy.
4. Add --root / to typst compile for consistent absolute path resolution.
- Move all source files from mytoolkit/ to bin/
- Update entry point and build config in pyproject.toml
- Add pillow and pypdf dependencies
- Update README and .gitignore paths
- Remove unused subprocess import in pdf.py
- Clean up duplicate imports in pdf merge command