Repository navigation
The release that goes to Anthropic's community plugin marketplace.
Thirty tasks closed since 0.7.0. Most of them change what you can do with a deck in front of people:
- A word in a sentence can carry its definition. Hover shows it in a small bubble, a press pins it, and the reading view and print show the definition beside the word.
- The page controls gain first and last buttons, and the slide ruler has marks you can aim at, with a readout.
- A source link can open its document at the heading the slide cites.
- A slide's one-time motions wait until the slide has finished arriving.
- A press that starts on the edge of a page button still turns the page.
- A deck's source names the htmldeck version that built it. Nothing on a slide shows it.
The checks got more accurate as well. The render tool now sees a change in SVG paint, a scripted hover state and a figure painting over its neighbour. A deck can also record a deviation from a rule that its owner licensed.
The number is 1.0.0 because this is the version going to the marketplace. The deck contract changed shape too, and by this project's own rule that alone would have made it at least a minor release.
Upgrading a deck built on 0.7.0 or earlier
Carried from docs/PUBLISHING.md section 8.1, which is the home for this and stays true after the release page scrolls away. Only the link targets are changed, to absolute ones that resolve here.
What it newly required
One contracted part became required, and one declaration moved. .ruler-tip, the ruler's readout, is 1 p inside .ruler and ships in the skeleton (T-307, given its drop by T-314). The chart-engine declaration moved from <meta name="htmldeck-chart-engine"> in head to an htmldeck-chart-engine: line in the head comment, because sync deleted the meta (T-311). Optional additions, which take nothing away: .term, .term-btn and .term-bub, an inline term and its definition bubble (T-309); data-qv-at on a quick-view opener, naming a heading in the source (T-271); the --term-line token (T-315). .is-back and .chev go from 0-1 to 0+ (T-307). A GENERATOR region carries <meta name="generator"> at the installed version, and sync writes it (T-318). The shared shell moved in all three regions. A contracted part added is at least a minor, and the major is the owner's ruling of 2026-09-13 that the marketplace release is 1.0.0.
What newly fails
shell.py check on every deck built before this release: SKELETON, COMPONENTS and SCRIPT all differ. check.py — DS-229, every authored part is the element, place and count the contract names, on every such deck, because none carries a .ruler-tip. DS-122 on a deck that declared a chart engine in the old <meta>, with a reason naming where the line went (T-311). Measured rather than derived, unlike 0.7.0's row: today's check.py against all four decks this repository shipped at v0.7.0 failed DS-229 on each and nothing else. Fifteen rule rows in DESIGN-SYSTEM.md changed text, and none of them fails any of the four.
The smallest edit
python tools/deck/shell.py sync <deck> --write settles the three regions, and .ruler-tip and the generator tag with them. Verified on sort-window at v0.7.0: DS-229 fails, then sync, then check.py exits 0. For a chart engine declared in a <meta>, delete the meta and put htmldeck-chart-engine: engine=…; version=…; licence=…; output=svg on its own line in the head comment.
Installing
Inside Claude Code:
/plugin marketplace add uchimata2/htmldeck
/plugin install htmldeck@htmldeck
Upgrading an installed copy runs in a terminal instead, and refreshing the marketplace is not an
upgrade:
claude plugin update htmldeck@htmldeck
Restart Claude Code afterwards. The @htmldeck suffix names the marketplace and is not optional.