Files
AgentCompany/builtin-skills/document-process/minimax-docx/references/openxml_units.md
T
ZacharyZhang-NY e74dafcd36 Silence render-disposed spam, unbreak bundled skills, drop board wake
Three independently ugly bugs that all fed the same log flood:

* Electron's `WebFrameMain.send` writes every "Render frame was disposed"
  to stderr via `console.error`. When the worker fans a second
  agent-event past a reloading renderer, we produced thousands of
  identical lines and stalled the main loop on stderr I/O. Added a
  `mainFrame.detached` guard so the send is short-circuited before
  Electron's own catch block fires, and installed a targeted filter in
  `suppress-warnings.ts` (now actually imported from the entry point)
  so the specific `console.error("Error sending from webFrameMain:"…)`
  noise never reaches the terminal. Any other payload still surfaces.

* `dispatchAgentMessage` accepted the human-reader sentinel as a wake
  target when an agent replied to `__board__` — `wakeAgentIfPossible`
  then called `db.getAgent("__board__")`, threw, and the dispatcher
  kept repeating on every send. Strip `HUMAN_SENDER_ID` at
  `resolveMessageWakeTargets`, and keep a defense-in-depth guard in the
  heartbeat so a stray caller (future automation fan-out) cannot
  reintroduce the crash.

* Pi's skills loader rejects any SKILL.md whose frontmatter `name`
  diverges from its parent directory. The four bundled `my-writing-style`
  copies declared `name: writing-style-skill`, so every install emitted
  a warning and dropped the skill. They also lived as orphan gitlinks
  (mode 160000 without .gitmodules), and the global `*.md` gitignore
  hid every other SKILL.md from version control. Fixed the frontmatter
  to match the dir, converted the dangling submodules to plain trees,
  and allowlisted `builtin-skills/**/*.md` so a fresh clone carries the
  catalogue instead of silently losing it.
2026-04-20 08:13:48 -04:00

2.3 KiB
Raw Blame History

OpenXML Unit Conversion Quick Reference

Master Conversion Table

Unit 1 inch 1 cm 1 mm 1 pt Description
DXA (twips) 1440 567 56.7 20 1/20 of a point. Used for margins, indents, spacing, page size.
EMU 914400 360000 36000 12700 English Metric Unit. Used for images, drawings, shapes.
Half-points 144 56.7 5.67 2 Used for font sizes (w:sz, w:szCs).
Points 72 28.35 2.835 1 Standard typographic unit. Not used directly in most attributes.
Eighths of a point 576 226.8 22.68 8 Used for w:spacing character spacing.

Common Page Sizes

Size Width (DXA) Height (DXA) Width (mm) Height (mm)
A4 11906 16838 210 297
Letter 12240 15840 215.9 279.4
Legal 12240 20160 215.9 355.6
A3 16838 23811 297 420
A5 8391 11906 148 210

Common Margin Values

Margin DXA Inches cm
0.5 inch 720 0.5 1.27
0.75 inch 1080 0.75 1.91
1 inch 1440 1.0 2.54
1.25 inch 1800 1.25 3.18
1.5 inch 2160 1.5 3.81

Font Size Values (w:sz)

Display Size w:sz value Notes
8pt 16
9pt 18
10pt 20
10.5pt 21 Common CJK body size
11pt 22 Default Calibri body
12pt 24 Default TNR body
14pt 28 Small heading
16pt 32
18pt 36
20pt 40
24pt 48
28pt 56
36pt 72

Line Spacing Values

Line spacing in w:spacing uses the w:line attribute in 240ths of a line (when w:lineRule="auto"):

Spacing w:line value w:lineRule
Single 240 auto
1.15 (Word default) 276 auto
1.5 360 auto
Double 480 auto
Exact 12pt 240 exact
At least 12pt 240 atLeast

Note: When lineRule="exact" or "atLeast", w:line is in twips (DXA), not 240ths. So line="240" with lineRule="exact" means exactly 12pt (240/20 = 12pt).

Conversion Formulas

DXA     = inches × 1440  = cm × 567     = pt × 20
EMU     = inches × 914400 = cm × 360000 = pt × 12700
sz      = pt × 2          (half-points)