openpencil/templates/step0/_generators
Fini 3a8c154739 fix(renderer): keep transparent decoration layers out of the way of clicks
Two carousel templates stack a full-bleed transparent shell (washi tape,
punch holes, film sprockets) in front of their content. Every click over
the board landed on that shell instead of the text behind it.

The engine half is the jian bump: a container that paints nothing no
longer claims its own body in the hit-test. The template half marks
those shells `locked`, so the shell is unselectable as a layer while the
marks inside it stay individually selectable — dragging a piece of tape
no longer drags the whole layer, and a marquee no longer nets the board.

Both templates are regenerated output, so they also carry the row wrap
their generators gained in the same pass.

Claude-Session: https://claude.ai/code/session_01FqKQqNj8exYwopGDpYUU7x
2026-08-09 19:53:09 +08:00
..
assets feat(editor): add step-0 scene templates for the mass-market track 2026-08-02 11:00:34 +08:00
qa chore(editor): keep the template QA gates beside the generators 2026-08-09 02:24:44 +08:00
bake_hints.py feat(editor): add step-0 scene templates for the mass-market track 2026-08-02 11:00:34 +08:00
cardlib.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
oplib.py feat(editor): refresh deck template visuals 2026-08-07 02:00:22 +08:00
previews.sh feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
scene_preview_cards.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl1.py feat(editor): add step-0 scene templates for the mass-market track 2026-08-02 11:00:34 +08:00
tpl2.py fix(editor): tighten template copy that wrapped into orphan lines 2026-08-09 02:24:44 +08:00
tpl3.py feat(editor): add step-0 scene templates for the mass-market track 2026-08-02 11:00:34 +08:00
tpl_bookreview_carousel.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_card_daily.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_card_metric.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_card_notice.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_card_price.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_card_quote.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_card_spine.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_cards.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_cityguide_carousel.py fix(renderer): keep transparent decoration layers out of the way of clicks 2026-08-09 19:53:09 +08:00
tpl_compare_do_dont.py fix(editor): tighten template copy that wrapped into orphan lines 2026-08-09 02:24:44 +08:00
tpl_compare_myth_truth.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_compare_pricing_tiers.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_compare_scenario_guide.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_compare_spec_table.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_compare_three_way.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_compare_time_shift.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_compare_tradeoff_scale.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_compare_version_diff.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_datareport_carousel.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_event_deck.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_gradient_tech.py feat(editor): refresh deck template visuals 2026-08-07 02:00:22 +08:00
tpl_infographic_challenge.py fix(editor): tighten template copy that wrapped into orphan lines 2026-08-09 02:24:44 +08:00
tpl_infographic_concept.py fix(editor): tighten template copy that wrapped into orphan lines 2026-08-09 02:24:44 +08:00
tpl_infographic_data.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_infographic_faq.py fix(editor): tighten template copy that wrapped into orphan lines 2026-08-09 02:24:44 +08:00
tpl_infographic_list.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_infographic_map.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_infographic_ranking.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_infographic_steps.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_infographic_story.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_infographic_timeline.py fix(editor): tighten template copy that wrapped into orphan lines 2026-08-09 02:24:44 +08:00
tpl_journal_card.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_lecture_light.py feat(editor): refresh deck template visuals 2026-08-07 02:00:22 +08:00
tpl_minimal_keynote.py feat(editor): refresh deck template visuals 2026-08-07 02:00:22 +08:00
tpl_opinion_carousel.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_pitch_dark.py fix(editor): tighten template copy that wrapped into orphan lines 2026-08-09 02:24:44 +08:00
tpl_qa_carousel.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_quote_card.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_slides.py fix(editor): tighten template copy that wrapped into orphan lines 2026-08-09 02:24:44 +08:00
tpl_story_carousel.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_toolkit_carousel.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_tutorial_carousel.py fix(renderer): keep transparent decoration layers out of the way of clicks 2026-08-09 19:53:09 +08:00
tpl_tutorial_diy.py fix(editor): tighten template copy that wrapped into orphan lines 2026-08-09 02:24:44 +08:00
tpl_tutorial_onboarding.py fix(editor): tighten template copy that wrapped into orphan lines 2026-08-09 02:24:44 +08:00
tpl_tutorial_photo.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_tutorial_recipe.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_tutorial_report.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_tutorial_skincare.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_tutorial_software.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_tutorial_storage.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_tutorial_workout.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00
tpl_yearreview_carousel.py feat(editor): grow the template library to fifty-eight across six scenes 2026-08-09 02:24:43 +08:00