# v5.66.6 - Module filename lower_snake_case standardization

- Renamed scripts/ AMD module physical files to lower_snake_case.js.
- Updated AMD dependency paths, demo script tags, manifest entries and public docs to the new file names.
- Updated UnifiedControl direct base Control dependency from `UnifiedControl/controls/Control` to `UnifiedControl/controls/control` for dev-0.7.2 compatibility.
- Kept JavaScript class names and public API names unchanged.

## dev-5.66.2 - UnifiedControl package root reference

- Updated Demo/Host reference handling to use the project-supplied UnifiedControl package root URL: `https://cdn.skylarkjs.com/itoolkits/developments/UnifiedControl/`.
- Demo code derives the RequireJS `UnifiedControl` alias by appending `/scripts` to the package root.
- Kept compatibility with values that already end with `/scripts`, but the documented IF now treats `ucRoot` as the package root.
- UnifiedControl remains a required peer package and is not downloaded or copied into UnifiedWriter.


## dev-5.66.1 - UnifiedControl CDN development reference

- Recorded the project-provided UnifiedControl package root: `https://cdn.skylarkjs.com/itoolkits/developments/UnifiedControl/`.
- Kept UnifiedControl as a peer dependency; it is not copied or downloaded into the UnifiedWriter package.
- Updated demo RequireJS defaults so the `UnifiedControl` alias points to `https://cdn.skylarkjs.com/itoolkits/developments/UnifiedControl/scripts` unless overridden by `ucRoot` or `window.UNIFIED_CONTROL_ROOT_URL`.
- Added `docs/UNIFIEDCONTROL_CDN_REFERENCE_V5661.md`.

## v5.65.3 - Flat EndUser Development menu

- Removed the extra first-level `Macros` submenu from the top-level `Development` menu.
- `Development` now directly shows Macro diagnostics, VBA code viewer, Script engine, and VBA-to-JS translator.
- Kept internal UnifiedWriter package-development diagnostics under `Help`; they remain temporary development-build conveniences and product-build removal candidates.
- Updated contribution metadata so `writer.menu.development` directly references macro command IDs without `writer.menu.macro`.
- Added `docs/DEVELOPMENT_MENU_V5653.md`.

## v5.65.2 - Development menu responsibility correction

- Clarified that the top-level `Development` menu is for EndUser macro/script authoring, inspection, execution and conversion.
- Kept macro diagnostics, VBA code viewer, script engine and VBA-to-JS translator under `Development > Macros`.
- Moved internal UnifiedWriter package-development diagnostics, compatibility notes, Host API contract, i18n audit and product-readiness notes back under `Help`.
- Documented that these Help diagnostics are temporary development-build conveniences and product-build removal candidates.
- Added `docs/DEVELOPMENT_MENU_V5652.md`; kept the v5.65.1 note as superseded.

## v5.65.1 - Development menu for macro/script functions

- Added a top-level `Development` menu (`開発` / `Development` / `开发`).
- Moved macro and script functions from `Tools` into `Development > Macros`.
- Moved developer diagnostics, compatibility notes, Host API contract, i18n audit, and product-readiness notes from `Help` into `Development` in this intermediate build. This was corrected in v5.65.2.
- Simplified `Tools` to document-facing operations and `Help` to docs/settings/about in this intermediate build. This was corrected in v5.65.2.
- Updated menu contribution metadata so Host/OneEditor-style shells can compose `writer.menu.development` separately from `writer.menu.tools`.
- Added `docs/DEVELOPMENT_MENU_V5651.md`.

## v5.65.0 - Policy v1.8 / single-file v1.2 alignment and OneEditor profile demo

- Clarified that UnifiedWriter keeps package-owned `writer.file.*` commands and WorkbenchControl may render a package File menu for standalone or page-embedded use.
- Clarified that OneEditor / OneViewer Host-owned File menu delegation is an integration profile, not a universal Host rule.
- Added `getFileCapabilities()` for readable/writable/export/template format metadata.
- Added view/readOnly public command guards so mutation commands are rejected through `control.exec()` in view mode.
- Pruned WorkbenchControl view/readOnly menus and toolbar to view-safe/search/export/print/properties/diagnostics actions.
- Added `demo/oneeditor-integration.html`, `docs/ONEEDITOR_INTEGRATION.md`, and `docs/STAGE_V565_POLICY_VIEWMODE_INTEGRATION.md`.

## v5.64.1 - Host File menu delegation / package file command correction

- Corrected the OneEditor / OneViewer File menu integration policy.
- Clarified the OneEditor / OneViewer profile where the Host may independently render File menu UI, including New/Open file-type selection.
- Restored/standardized package-owned storage-neutral file commands under `writer.file.*`.
- Added `writer.file.newDocument`, `writer.file.openPackage`, `writer.file.savePackage`, `writer.file.saveAsPackage`, `writer.file.importContent`, `writer.file.export`, `writer.file.printContent`, and `writer.file.properties`.
- Updated WorkbenchControl global File menu contribution to call `writer.file.*` commands instead of treating Host commands as package commands.
- Updated Import/Export capabilities to point to package file commands.
- Added `docs/HOST_FILE_MENU_DELEGATION_V5641.md`.


## dev-5.63.1 - Tools Menu / Help Menu Responsibility Fix

- Moved specification, compatibility, productization, Host API, i18n, and diagnostic menu entries from `Tools` to `Help`.
- Kept `Tools` focused on application operations: search, comments, history, footnotes, validation, review features, macros, and settings.
- Added Japanese/English/Chinese labels for Help diagnostic/documentation groups and macro menu entries.
- Added `docs/TOOLS_MENU_APP_FUNCTION_POLICY_V5631.md`.

## dev-5.63.0

- Consolidated v5.57-v5.63 productization work.
- Added stage diagnostics for advanced editing stability, Track Changes/Suggesting/Version History foundation, DOCX/DOCM round-trip preservation, DrawingML/Shape/TextBox/Chart placeholders, Layout/Print/PDF quality, macro object model expansion, and Host/i18n/regression polish.
- Expanded browser-safe macro object model context for document, selection, table, image, comment and review operations.
- Reaffirmed that FileSystemObject, Shell, external DLL, Win32 API, ActiveX and COM automation are out of scope for browser-safe VBA compatibility.

## dev-5.52.0 - v5.47-v5.52 productization consolidation

- Added productization diagnostics for Selection/IME/Undo/Clipboard, DOCX compatibility, layout/print/PDF, Host API and i18n.
- Added Tools menu entries for editing stability diagnostics, DOCX compatibility diagnostics, layout preflight, Host API contract and i18n audit.
- Upgraded Host API contract metadata to v1.1.
- Extended product regression checks to cover table/image/comment readiness, DOCX round-trip foundations and EN/JA/ZH i18n completeness.
- Added docs/STAGE_V552_PRODUCTIZATION.md and docs/V552_REMAINING_COMPATIBILITY_NOTES.md.


## dev-5.46.3 - File menu submenu popout fix

- Fixed File > Import and File > Export submenu popouts being clipped by the root dropdown scroll container.
- Removed the horizontal scrollbar shown inside the File menu when submenu parents were hovered/clicked.
- Kept Import / Export leaf commands wired through CommandBus and Host callback policy.
- Added docs/FILE_MENU_SUBMENU_FIX_V5463.md.

# v5.46.1 - File menu / Save As / Print regression fix

- Fixed File > Import / Export parent menu clicks so submenus open reliably with mouse click, not only hover.
- Routed File > Properties to a real document properties dialog instead of being swallowed by the Host command map.
- Kept Save As provider-neutral. Demo LocalDevice adapters now show a jQuery UI file-name dialog instead of using browser `prompt()`.
- Improved document-only printing by filtering renderer-created blank pages and using physical A4/Letter page dimensions to reduce extra blank sheets in browser print preview.
- Added comments documenting why menu parents, Save As, and print are handled through Host/UI policy rather than browser-default behavior.

# Changelog

## dev-5.46.0 - UI polish / menu-toolbar finalization

- Added shell-level command availability so object-specific table/image actions can be disabled consistently in menus and toolbars.
- Added contextual table toolbar buttons and aligned image/table contextual toolbar visibility with selection-mode diagnostics.
- Tightened Google Docs-like compact menu and toolbar density while preserving icon, label, shortcut and submenu-arrow alignment.
- Added mixed-selection visual state for toolbar controls.
- Added status bar selection-mode display for real-device regression checks.
- Rebuilt `demo/regression-tests.html` into a valid v5.46.0 regression document.
- Added `docs/UI_POLISH_MENU_TOOLBAR_V546.md`.

## dev-5.39.0 - Stage 1 Practical Editing

- Consolidated v5.36-v5.39 planned work into one stage build.
- Added renderer chrome for visible header/footer, page numbers and footnotes.
- Added image wrap/caption/margin metadata controls and toolbar/menu entries.
- Added table row/column resize handles and table grid normalization entry.
- Added comment edit/reply foundation and version compare entry.
- Added footnote panel with edit/delete/renumber foundations.
- Updated regression tests and documentation.


## dev-5.34.0 - DOCX review/header-footer round-trip foundation

- Added header/footer metadata dialog and page-number footer export foundation.
- Added footnote insertion metadata and DOCX `word/footnotes.xml` export.
- Added comment range mapping to DOCX `word/comments.xml` export.
- Extended DOCX import to collect basic comments, footnotes, header/footer metadata, and preserved OOXML package parts.
- Extended `.uwpsx` persistence with `headerFooter`, `footnotes`, and `ooxmlParts` metadata.
- Added code comments around why review metadata is stored outside body HTML in the Model-first design.


## dev-5.33.0 - DOCX Export Foundation

- Added an OOXML-first DOCX exporter based on JSZip.
- Export now writes `word/document.xml`, `styles.xml`, `numbering.xml`, relationships, document properties, and media parts directly.
- Added Level 1-2 export support for paragraphs, headings, inline formatting, lists, hyperlinks, inline images, basic tables, manual page breaks, and active page setup.
- Updated Host-mediated export flow so asynchronous DOCX generation passes a final Blob to SaveFile/export adapters.
- Added DOCX export diagnostics to the right-pane feature map.
- Added `docs/DOCX_EXPORT_FOUNDATION.md`.


## dev-5.31.2 - Table inline editing and selection fix

- Fixed table cell inline editing so continuous typing is not lost after the first character.
- Added row, column and rectangular range selection visuals for table blocks.
- Added drag/Shift-click range selection support.
- Updated row/column insert/delete operations to respect structural selections where possible.
- Preserved table metadata in Undo/Redo snapshots.
- Kept table editing Model-first: temporary cell contenteditable is only an edit buffer and commits back to DocumentModel.

## dev-5.27.2 - Google Docs-style Format menu grouping

- Reorganized the Format / 書式 menu into compact Google Docs-style grouped submenus.
- Added Text, Paragraph styles, Align and indent, Line and paragraph spacing, Columns, Bullets and numbering, Header/footer, Page numbers, Page orientation, Table, Image, and Borders/lines groups.
- Kept currently supported commands connected to the same Model-first operations used by the toolbar.
- Added reviewable planned entries for columns, page numbers, table/image options, borders, and page-orientation behavior without pretending those areas are complete.
- Tightened menu CSS for nested Japanese labels while preserving icon, shortcut, and submenu-arrow columns.

## dev-5.27.1 - Toolbar formatting + compact menus

- Added toolbar access for text color, highlight color, paragraph alignment, line spacing, and paragraph indent/outdent.
- Routed toolbar formatting through the same Model-first operations used by Format menu items so toolbar/menu/DOCX import metadata stay consistent.
- Added compact jQuery UI palettes for text color, highlight color, and line spacing; no browser prompt/alert/confirm APIs are used.
- Reduced menu row height and metadata column widths to better match Google Docs-style compact menus while preserving icon, shortcut, and submenu arrow alignment.
- Added comments around toolbar command design and menu density rules.


## dev-5.24.5 - Menu adaptive metadata column fix

- Fixed dropdown menu width for menus that do not have shortcut keys or submenus.
- Kept menu icons, but removed the large empty right-side metadata area from plain menus such as Insert.
- Added adaptive menu classes: plain / shortcut / caret / both, so File menus still keep aligned shortcut and submenu arrow columns.
- Added source comments explaining why stable row slots and adaptive root classes are both required.


## dev-5.24.4 - Menu grid alignment fix

- Reworked dropdown menu row CSS so icon, label, shortcut, and submenu arrow columns stay separated.
- Always renders empty shortcut/caret slots in menu rows to prevent browser/Bootstrap text-flow collapse such as `Open...Ctrl+O` or `SaveCtrl+S`.
- Kept menu icons enabled; this is an alignment fix, not an icon removal.


## dev-5.24.2 - Menu icon alignment and image OpenFile policy

- Restored dropdown menu icons instead of removing them, while fixing their layout with a stable left icon column.
- Right-aligned submenu arrows and added shortcut column support for menu items.
- Changed image insertion to use the Host `OpenFile` callback with `role: image` rather than prompting for an image URL.
- Kept the demo implementation local-device based as an example Host adapter; the Control still does not choose a storage provider itself.
- Added comments documenting why image assets enter through the same Host file routing policy as Open/Import.


## dev-5.24.1 - File menu policy alignment

- Removed storage-provider submenus from File > Open and File > Save As.
- Kept File menu provider-neutral: Open..., Save, Save As..., Import, Export.
- Disabled menu icon rendering by default so dropdown menus match Google Docs / Word-style text menus.
- Removed DOCX addon's backward-compatible direct File-menu item injection to avoid duplicate Import/Export commands.
- Removed Google Drive credential fields from App Settings; storage providers belong to Host OpenFile / SaveFile callbacks or Host adapters.
- Updated File I/O documentation to clarify that Local Disk, App Storage, Google Drive, Backend API, WebDAV, etc. are Host-side routing choices.


## dev-5.24.0 - Google Docs feature map and DOCX import foundation

- Added Google Docs-compatible feature map panel in the right pane.
- Expanded Insert / Format / Tools menu entry points for future Google Docs category parity.
- Added DOCX Model Import Beta entry and OOXML-first importer foundation.
- DOCX importer now parses `document.xml`, `styles.xml`, `numbering.xml`, relationships, basic inline images, headings, lists, run marks, and page breaks.
- Kept Mammoth as a fallback only, not the canonical DOCX import path.
- Preserved safe inline styles and OOXML list metadata during model HTML parsing.
- Added design-intent comments around sanitizer, list metadata, and DOCX importer pipeline.
- Added `docs/GOOGLE_DOCS_FEATURE_MAP.md` and `docs/DOCX_IMPORT_ARCHITECTURE.md`.

# Changelog

## dev-5.23.0 - Rename OfficeDoc to UnifiedWriter

- Renamed the package root and product identity from OfficeDoc to UnifiedWriter.
- Updated AMD host alias examples to `UnifiedWriter/main`.
- Renamed the jQuery plugin from the legacy editor name to `$.fn.unifiedWriter`.
- Updated public context names to `window.UnifiedWriterPhaseB` and internal instance context to `__unifiedWriterContext`.
- Renamed editor CSS/data prefixes from legacy OfficeDoc/GDoc names to `unified-writer-*`.
- Renamed the browser package helper to `window.UnifiedWriterUwpsxPackage`.
- Kept `.uwpsx` as the native Unified Word Processing document package format.
- Preserved the dev-5.22.2 Model-first list/selection/undo work as the base for this rename.

## dev-5.22.2 - List editing / Selection / Undo stability rollup

- Consolidated the v5.22.0-v5.22.2 work into one delivery on top of dev-5.21.10.
- Added Google Docs-style Tab / Shift+Tab list indentation for Model-first list blocks.
- Preserved list item metadata through Enter, Backspace, Delete, inline formatting and list type conversion.
- Extended Bold / Italic / Underline application from a single block to multi-block selections, including list blocks.
- Improved list toolbar active state for collapsed selections and mixed multi-block selections.
- Added flat list-indent rendering via `data-unified-writer-list-indent` without making rendered DOM the document source of truth.
- Added natural Undo coalescing for continuous typing/backspace/delete while keeping structural operations as separate Undo units.
- Expanded `demo/regression-tests.html` with the current Model-first regression checklist.

## dev-5.21.10 - Toolbar menu reorg and page-end pagination safety

- Rebuilt from the provided dev-5.21.8 base package.
- Removed PL/NL, A4/LT and N/M/W from the main editing toolbar and moved layout/page setup actions into View menu submenus.
- Expanded File/Edit/View/Insert/Format/Tools/Help menus and added icons to menu items.
- Added a page-end safety line to the model-first pagination measurement so the final accepted line is not hidden below the clipped page content area.

## dev-5.21.8 - Model-first list Backspace empty item fix

- Fixed Backspace on an empty list item: the empty bullet is removed instead of remaining as a ghost item.
- Reworked list Enter behavior so splitting a list item keeps one logical list block instead of creating adjacent list blocks with leading empty items.
- Added list-item-aware Delete/Backspace handling for merge/remove cases while preserving Model-first editing.

## dev-5.21.7 - Model-first list editing and list selection mapping fix

- Fixed list selection offset mapping by adding virtual newlines between list items.
- Fixed Copy/Paste of selected list items so clipboard HTML keeps `<ul>/<ol><li>` structure.
- Fixed list toolbar commands to operate on selected model blocks instead of flattening list items into plain text.

## dev-5.21.7 - Google Docs-like active toolbar visual state

- Fixed B/I/U and list toolbar active-state appearance.
- Added high-specificity CSS with `!important` where needed to override the generic transparent Google Docs-like toolbar button rule.
- Active/pressed toolbar buttons now show a visible blue pressed background, matching the normal Google Docs interaction pattern.

## dev-5.21.5 - inline toggle and list-safe format fix

- Fixed Bold / Italic / Underline toggle behavior for selected text.
- Inline format re-click now removes the mark instead of nesting another tag.
- List item text keeps `<ul>/<ol>/<li>` structure when inline formatting is applied or removed.


## dev-5.21.4 - toolbar status selection fix

- Prefer visible document DOM selection over stale model selection for toolbar status.
- Add selectionchange bridge so B/I/U/list buttons update immediately after drag selection.
- Improve active button visual style to match Google Docs-like blue pressed state.

## dev-5.21.4 - Google Docs-style toolbar button status
- Replaced the single list combobox with separate bulleted-list and numbered-list toolbar buttons.
- Updated toolbar active state so B/I/U reflects ModelSelection and inline formatting, even when the hidden input proxy or toolbar has focus.
- Added active state for current list type.

## dev-5.21.2 - Toolbar dropdown format state
- Changed paragraph style and font size toolbar controls to dropdowns.
- Added list style dropdown.
- Added toolbar status synchronization for active caret / selected text.
- Preserved Model-first editing structure without contenteditable.

## dev-5.21.1 - Toolbar formatting and vertical caret movement
- Added visible toolbar buttons for Normal, H1/H2/H3, font sizes, unordered list and ordered list.
- Improved ArrowUp/ArrowDown to resolve the next caret position from rendered x/y coordinates instead of jumping by block.
- Connected toolbar Undo/Redo to the model undo/redo implementation.

## dev-5.20.5 - model-first list clipboard and list rendering fix

## dev-5.21.0 - Model-first editing feature baseline

- Strengthened the Google Docs-like model-first editing layer after removing contenteditable from rendered pages.
- Added keyboard caret navigation for ArrowLeft / ArrowRight / ArrowUp / ArrowDown / Home / End / PageUp / PageDown, including Shift-selection and Ctrl/Cmd word/document movement.
- Added model-level undo/redo stacks with Ctrl/Cmd+Z, Ctrl/Cmd+Y and Ctrl/Cmd+Shift+Z.
- Added Google Docs-style shortcuts for Bold / Italic / Underline, heading levels and list commands.
- Kept the same DocumentModel -> block-flow LayoutEngine -> Renderer path for input, Enter, paste, deletion and formatting.
- This is still a development baseline: exact visual-line up/down movement and rich multi-block inline formatting remain future refinement areas.


- Preserved list structure when copying and pasting selected list text.
- Normalized pasted <li> fragments and invalid <ul>text</ul> markup into valid list blocks.
- Made list blocks model-aware: text operations keep <li> children instead of producing invalid list markup.
- Added explicit list marker CSS so pasted/restored list blocks show bullets or numbers.

## dev-5.20.4 - model-first selection and list formatting fix

- Kept non-collapsed text selection visible after toolbar formatting commands such as Bold / Italic / Underline / Link.
- Restored native selection range from model offsets after re-render instead of immediately focusing the hidden input proxy.
- Preserved list / li structure when applying inline formatting to selected list text.
- Changed inline formatting to wrap selected text nodes inside the existing block HTML tree instead of rebuilding block HTML from plain text.

## dev-5.20.2 - Model-first input proxy usability fix

- Kept the visible page DOM as renderer output, without `contenteditable`.
- Reworked click/focus handling so the hidden input proxy receives normal keyboard input reliably.
- Added body-level key handling fallback for Enter / printable keys / Backspace / Delete.
- Added model-aware Copy/Cut/Paste handlers for the input proxy and rendered page body.
- Kept native drag-selection on rendered text by avoiding `preventDefault()` on block mousedown.
- Added blank page/content click handling to place the model caret at the page end.

# Changelog

## dev-5.20.1 - Model-first InputController rebuild

- Rebuilt the editor input path so normal text input, Enter, Backspace, Delete and Paste are converted into DocumentModel operations before rendering.
- Stopped relying on browser-mutated contenteditable DOM for normal typing and paragraph split. The visible DOM is now primarily a caret/selection surface.
- Unified edit flow: InputController operation -> DocumentModel update -> block-flow LayoutEngine -> Renderer -> SelectionController restore.
- Kept block-level pagination as the default rule: normal paragraphs move as one block, while oversized paragraphs can still be rendered as fragments without splitting the DocumentModel.
- Replaced public insertText and inline command entry points with model-based operations instead of document.execCommand as the main data path.


## dev-5.15.6 - Page-bottom Enter direct next-page insertion

- Fixed Print Layout Enter handling at page bottom by inserting the new paragraph directly into the next editable page instead of letting browser-native contenteditable scroll anchoring run first.
- Kept normal Enter behavior on non-bottom lines while syncing without full repagination when the current page does not overflow.
- Added focused helper methods for current page / next page resolution and direct edit synchronization.


## dev-5.15.4 - Enter at page bottom pagination fix

- Print Layout のページ最下行で Enter を押下したとき、ブラウザのネイティブスクロール/アンカー処理でページ内容が上へずれる問題を修正。
- ページ下端付近の Enter を独自処理し、新しい段落を作成して即時再ページングするように変更。
- caret 矩形とページ本文の usable height を比較し、次行がページを超える場合のみ次ページへ流す判定を追加。
- Print Layout の scroll anchoring を抑止。


## dev-5.14.7

- Reorganized View menu to align editable Print Layout with Google Docs-style editing behavior.
- Fixed Print Layout selection so it automatically returns from read-only Page Preview to active Editing Mode.
- Ensured Simditor body remains contenteditable and pointer-active in Print Layout.
- Documented the distinction between editable Print Layout / Normal Layout and read-only Page Preview.

# CHANGELOG

# v5.24.3 - menu/print/outline policy fix

- Fixed dropdown menu row layout so icons, labels, shortcuts and submenu arrows use stable columns.
- Kept menu icons visible, but aligned shortcuts such as Ctrl+O / Ctrl+S to the right metadata column.
- Replaced `window.print()` with document-scoped iframe printing so Demo/Host chrome, side panes and Control frame are not printed. Ctrl/Cmd+P is also intercepted inside the editor and routed to the same document-only print path.
- Changed the left pane to an Outline-first document navigator. Recent/local cached documents remain available as a collapsed Demo/local-cache section.
- Updated code comments around print scoping and left-pane responsibility.


## dev-5.14.1

- Added Host callback-oriented File I/O service.
- Added StateStore for file context and view state.
- Added DefaultCommands with single-file command names and compatibility aliases.
- Updated File menu toward native Open / Save / Save As / Import / Export semantics.
- Added parameters, callback-io, control-architecture and regression demo pages.
- Added statusbar toggle support.

## dev-5.14.0

- Synced package structure with development policy v1.6.


## dev-5.14.4
- Google Docs-like editor/page view refinement.
- Hidden embedded Simditor toolbar so the common top toolbar owns editing shortcuts.
- Added lightweight ruler row below toolbar.
- Reworked preview paging measurement to avoid blank or broken pages.
- Adjusted UnifiedWriter margins to document-like normal/narrow/wide presets.

## dev-5.14.5

- Added editable layout switching for UnifiedWriter edit mode.
- Added Print Layout and Normal Layout commands under View > Edit Layout.
- Added toolbar shortcuts for editable Print Layout / Normal Layout.
- Preserved page preview mode as a separate read-only preview/export-oriented mode.
- Persisted editLayout in the uwpsx package metadata.

## dev-5.14.6

- Fixed editable layout startup error by adding setEditLayout and _applyEditLayout methods.
- Kept Print Layout and Normal Layout inside editable mode, separate from Page Preview.
- Moved Demo maximize / restore operation to the Control frame chrome so it does not overlap the Control body.
- Adjusted parameters Demo maximized mode to keep a frame header above the Control body.


## dev-5.14.8

- Replaced Simditor-dependent editing surface with UnifiedWriter native contenteditable editor.
- Fixed editable Print Layout so it shows an editable paper surface instead of a broken preview-like line.
- Kept Page Preview as read-only output verification mode.
- Removed Simditor CDN dependencies from demo HTML files.


## developmentVersion dev-5.14.9

- Added native editable real-time pagination for Print Layout.
- Print Layout now uses multiple contenteditable page surfaces instead of a single overflowing editor body.
- Normal Layout remains a continuous editing surface.
- Page Preview remains read-only for output validation and PDF export.


## dev-5.15.0 - real-time editable auto pagination fix
- Hardened Print Layout auto-pagination for live editing.
- Replaced simple block-only pagination with queue-based pagination that can split long text blocks when they exceed a page.
- Added immediate repagination after Enter / Backspace / Delete in the editable paged surface.
- Kept Page Preview as read-only and Print Layout as the primary editable paged layout.


## dev-5.15.1 - Editable pagination stability fix

- Changed Print Layout editing so each page remains a fixed clipping box while the contenteditable flow is auto-height.
- Prevented clicks in blank lower page area from creating text near the bottom of the page; blank page clicks now place the caret at the logical end of page content.
- Improved root text / inline node normalization so browser-generated text nodes are wrapped into paragraphs before pagination.
- Added excessive blank paragraph cleanup for content saved by earlier experimental builds.


## dev-5.15.2
- Fixed editable Print Layout pagination measurement by preventing page content from inheriting legacy editor-body padding/min-height rules.
- Removed legacy `unified-writer-native-editor-body` class from per-page editable content.
- Added strong CSS guard so the fixed page owns page padding and the editable content owns only text flow.
- Improved stability of block overflow calculation for real-time editable pagination.


## dev-5.15.3
- Cleaned legacy page-break semantics during development.
- Normal `<hr>` is now treated as a horizontal rule, not a page break.
- Manual page breaks now use `data-unified-writer-pagebreak="manual"`.
- Editable Print Layout overflow measurement now uses visible child bounding boxes instead of raw scrollHeight.
- Preserves manual break markers as hidden model markers without consuming page height.


## dev-5.15.5

- Print Layout の Enter 処理をブラウザ標準 contenteditable 任せから UnifiedWriter 独自処理へ切り替え。
- ページ下端で Enter を押した際の scroll anchoring / 内容上ずれを抑止。
- 通常位置での Enter も同じ独自段落分割処理に統一し、Paste と同じ再ページングパイプラインへ流すよう修正。
- 既存 caret marker がある場合に二重 marker を挿入しないよう forcePaginate を補正。

## dev-5.16.0
- Introduced DocumentModel-driven native editor foundation.
- Rendered editable page DOM from block model instead of relying on page-level contenteditable as source of truth.
- Enter / Backspace / Delete / Paste now update model blocks and trigger page layout.
- Added docs/EDITOR_ENGINE.md.

## dev-5.16.1
- Fixed a startup/runtime error in the DocumentModel editor: `_placeCaret is not a function`.
- Added `_placeCaret(blockId, offset)` as a thin wrapper around the blockId + offset selection restoration path.
- Blank page area clicks now place the caret at the logical end of the last block without throwing an exception.



## dev-5.16.2
- Fixed AMD boot failure when DefaultCommands module is loaded as function or object.
- Added RequireJS mini-loader urlArgs support and cache-busting in demo pages.


## dev-5.16.4 - Safe rollback after v5.16.3 regression

- Reverted the v5.16.3 Enter-bottom layout-hint changes that broke paste pagination.
- Restored the v5.16.2 DocumentModel baseline, where AMD boot and DefaultCommands are fixed.
- Keeps the known limitation: Enter at the physical bottom of a page still needs a model-first layout engine redesign.
- Future work should rebuild pagination from DocumentModel/InputController without relying on page contenteditable browser behavior.


## dev-5.16.8 - Paste-safe AMD rollback

- Restored the editor runtime from dev-5.16.4, where paste-based pagination was confirmed to work.
- Kept only the AMD anonymous define loader fix to prevent DefaultCommands export mix-ups.
- Removed the experimental Enter-bottom layout hint changes from dev-5.16.5/5.16.6/5.16.7 because they affected paste pagination.
- Known issue: real-time pagination on Enter at the page bottom remains unresolved and will be redesigned through the model input pipeline.


## dev-5.17.0 - realtime layout pipeline step 1

- Rebased on the paste-safe v5.16.8 editor state.
- Added a shared realtime layout path for model operations after Enter / Paste / deletion.
- Tightened pagination measurement to the writable page content rectangle instead of the outer paper box.
- Added caret-line measurement for Enter so a paragraph inserted at the bottom of a page can be rendered at the next page start without relying on browser native scrolling.
- Kept Paste pagination behavior as the primary regression baseline.

## dev-5.17.1

- Fixed v5.17.0 pagination regression where almost every initial block could be treated as a new page.
- Added deterministic writable-height assignment to editable page content, independent of Host/Demo layout wrapper classes.
- Reworked overflow detection to use content scroll height plus child bounding boxes against the writable content height.
- Made transient page-start hints one-shot so later re-renders do not keep forcing blocks to new pages.


## dev-5.17.2

- Fixed live pagination measurement regression introduced in v5.17.1.
- The page writable height is now calculated from the rendered page box instead of relying only on CSS variables.
- Added explicit page padding variables and preserved Paste pagination route.


## dev-5.19.0 - Block-flow pagination and oversized paragraph fragments

- Reworked editable Print Layout pagination around one block-flow LayoutModel path.
- Fixed offscreen measurement to copy page width, height and padding explicitly instead of relying on inherited CSS variables.
- Normal paragraphs are paginated as whole blocks: if a paragraph does not fit in the remaining page area, it is moved to the next page.
- A paragraph that is taller than one whole page is rendered as visual fragments across pages while remaining one logical DocumentModel block.
- Paste, Enter and normal text input all update DocumentModel first and then use the same layout measurement path.

## dev-5.18.0 - Clean DocumentModel pagination pipeline
- Removed event-specific pagination direction for Enter/Paste and routed rendering through one block-flow pagination algorithm.
- Added offscreen measurement page so LayoutEngine decisions are independent of visible page scroll/selection state.
- Overrode legacy editor/page CSS during active development to avoid compatibility shims affecting pagination.
- Enter, Paste, normal input and delete now rely on the same DocumentModel -> measurement -> page render path.

## dev-5.24.6 - Menu width and Japanese UI localization fix

- Normalized dropdown menu widths so plain menus such as Insert / Tools no longer reserve large empty shortcut/caret columns.
- Kept the Google Docs / Word style left icon column, right shortcut column and submenu arrow alignment where those metadata columns are actually used.
- Applied locale-aware labels to top menus, menu items, toolbar tooltips, App Settings and navigator panes.
- The Parameters demo language option now drives the initial UnifiedWriter UI language, not only the global `I18N` helper.
- Added code comments explaining why the menu renderer emits stable columns while CSS adapts width by metadata class.

## dev-5.27.0 - Google Docs editing + DOCX Import Level 1-2

- Consolidated v5.25.0-v5.27.0 scope into one package.
- Added Model-first paragraph alignment, line spacing, paragraph indent and list item indent behavior.
- Added text color and highlight color menu entries.
- Improved clear formatting so block-level style metadata is cleared together with inline marks.
- Strengthened toolbar state with block alignment and line-spacing metadata.
- Improved DOCX Import Level 1-2 with OOXML paragraph alignment, spacing, indent, hyperlink and import report metadata.
- Added comments in core editing paths explaining why DOM remains renderer output and why formatting is model-owned.
- Added `docs/GOOGLE_DOCS_EDITING_AND_DOCX_LV2.md`.

## dev-5.28.0 - Selection / Toolbar / Format stability

- Strengthened toolbar active-state reporting for paragraph style, font size, B/I/U, list state, alignment and line spacing.
- Added collapsed-selection typing format support so toolbar/menu inline commands can affect the next typed text without mutating the renderer DOM.
- Preserved inline run metadata during normal typing and one-character Backspace/Delete paths.
- Improved Undo/Redo snapshots to restore selection anchor and pending inline typing state.
- Guarded IME composition so committed Japanese/Chinese/Korean text is inserted as one Model-first operation after compositionend.
- Added design comments around SelectionController, inline run preservation and IME composition.
- Added `docs/SELECTION_TOOLBAR_FORMAT_STABILITY.md`.


## dev-5.29.0 - List / Outline / Ruler Stability

- Added model-driven Outline generation from DocumentModel instead of visible DOM scraping.
- Added Outline click-to-jump with model selection restoration.
- Added current-heading highlighting in Outline.
- Added left-pane Outline controls for refresh / expand all / collapse all.
- Added Google Docs-style ruler foundation above the print-layout editing surface.
- Connected ruler left-indent marker to Model-first paragraph/list indent operations.
- Added list normalization for adjacent list blocks of the same type after conversion.
- Added design comments around Outline, ruler, and list indent constraints.
- Added `docs/LIST_OUTLINE_RULER_STABILITY.md`.

## dev-5.30.0 - DOCX Import Level 3: Table / Section / Page Setup

- Added DOCX Level 3 table import that preserves tables as real table blocks instead of flattening them to paragraphs.
- Added table-cell metadata preservation for basic width, shading, gridSpan/colspan and vertical merge diagnostics.
- Added OOXML section property parsing for page size, orientation and margin import.
- Added custom page CSS variable application so imported DOCX geometry is not forced into only A4/Letter presets.
- Added header/footer relationship detection and placeholder import for future native header/footer support.
- Enhanced right-pane DOCX diagnostics with table counts, section/page setup metadata and header/footer counts.
- Added source comments documenting why Level 3 structures are preserved even before full table/header editing is available.
- Added `docs/DOCX_IMPORT_LEVEL3_TABLE_SECTION.md`.


## dev-5.31.0 - Table editing foundation

- Added Model-first table insertion dialog with row/column count.
- Added table cell selection as a structural table selection separate from text SelectionController.
- Added table cell text editing through jQuery UI dialog.
- Added row/column insert and delete commands.
- Added delete table command.
- Expanded Format > Table menu commands.
- Preserved table selection in undo/redo snapshots.
- Added table-selection CSS for base and flat themes.


## dev-5.31.3 - Table advanced editing foundation

- Strengthened table editing beyond the initial cell editor.
- Added rectangular range copy/paste using tab/newline text so spreadsheet-style data can be transferred into selected table cells.
- Added clear selected cells, merge cells, split merged cell, cell background color, border color/width, column width and row height commands.
- Expanded Format > Table commands while keeping all changes Model-first: table DOM is only a temporary editing surface and sanitized table HTML is written back to the table block.
- Added defensive table sanitization and a default native cell factory so inserted tables have a stable border/padding/min-width surface.


## dev-5.32.0 - Image / Link / Comment Foundation

- Added inline image selection and transient resize handle UI.
- Added image options dialog for alt text, width, wrap metadata and deletion.
- Improved link edit/remove dialog behavior.
- Persisted comment range marks into DocumentModel so comments survive render/save cycles.
- Added source comments explaining transient image chrome vs canonical DocumentModel state.

## dev-5.32.1 - Context menu / image toolbar

- Replaced browser-native editor context menu with a UnifiedWriter-owned context menu.
- Added target-aware context menu actions for image, table, link and text contexts.
- Added contextual image toolbar buttons that appear while an image object is selected.
- Routed context-menu commands through the same action dispatcher as menus and toolbars.
- Added theme CSS for the context menu and image-selected toolbar mode.

## dev-5.35.0 - Editing Stability / Regression

- Added a central selection-mode guard for text/table/image/comment-oriented selection states.
- Preserved image selection state in Undo/Redo snapshots alongside table selection and pending inline typing state.
- Hardened object-selection keyboard handling so Delete/Escape on images/tables does not fall through to paragraph operations.
- Added selected-image clipboard handling and pasted-image clipboard import into the Model-first image path.
- Added a diagnostics payload for selection mode, undo/redo depth, IME composition state and pending inline formatting.
- Connected selection/stability events to toolbar state refresh.
- Added design comments around selection exclusivity, clipboard routing and transient object chrome.
- Added `docs/EDITING_STABILITY_REGRESSION.md`.


## dev-5.45.0 - Stage 2/3 DOCX, layout, Host API and regression polish

- Consolidated v5.40-v5.45 implementation scope into a single stage-2/stage-3 build.
- Added product-readiness diagnostics for DOCX Level 4-6, round-trip preserve, layout/print/PDF, Host API and regression quality gates.
- Extended UWPSX metadata with quality/regression, Host API and round-trip policy parts.
- Added public control API helpers for document get/set, export blob, validation and Host API contract discovery.
- Strengthened DOCX import/export diagnostics strings to reflect Level 4-6 foundation and preserved OOXML policy.
- Added HTML export blob path and product-readiness / validation actions.

## dev-5.56.0

DOCM/VBA macro compatibility foundation: preserve macro project, diagnose VBA,
convert safe document-editing statements to UnifiedWriter JS macros, and export
macro-enabled DOCM packages while keeping OS automation out of scope.

## dev-5.64.0

Control variants and Host integration standardization:

- EditorControl: editing body only, owns commands.
- ViewerControl: read-only body only, owns read-only command subset.
- WorkbenchControl: shell composition Control, not an app.
- OneEditor / OneViewer profile may own File / Help UI and storage destinations; WorkbenchControl may render package File / Help menus.
- Controls expose declarative menu/toolbar/command/capability contributions.


## v5.64.3 - Menu geometry and Outline de-duplication

- Tightened Japanese Format / View menu geometry to remove unnecessary blank metadata space.
- Shortened the Japanese pageless label to keep the Format menu compact.
- Hid the right-pane Outline tab when the left Outline pane is visible, avoiding duplicate Outline display.
- Added `docs/MENU_OUTLINE_POLISH_V5643.md`.

## v5.64.2 - EditorControl view mode replaces ViewerControl

- Removed ViewerControl as an official separate Control variant.
- Standardized EditorControl as the single body Control with `mode: "edit"` and `mode: "view"`.
- OneEditor should use `createEditorControl({ mode: "edit" })`; OneViewer should use `createEditorControl({ mode: "view" })`.
- Kept `createViewerControl()` only as a transition alias that creates EditorControl in view mode.
- Updated command/menu/toolbar contribution filters so view mode exposes only read-only/view-safe commands.
- Added `docs/EDITORCONTROL_VIEW_MODE_V5642.md`.


## dev-5.67.0
- Adopted app development policy v1.10 CSS / Theme / Manifest contract.
- Added `PACKAGE_MANIFEST.json.styles` and `styleScope` for Host pre-mount CSS loading.
- Renamed package CSS to `themes/base/unified_writer.css` and `themes/flat/unified_writer.css`.
- Added `.uwriter` root class scoping and removed package CSS dependence on generic `body` selectors.
- Adopted single-file processing policy v1.3 Programable Editing Control APIs: `openFile`, `saveFile`, `saveAsFile`, `exportFile`.


## v5.67.1 Demo File Save Policy Alignment

Demo SaveFile callbacks now follow the single-file policy v1.3 direction split: Workbench/Command obtains or generates a HostSavePayload/v1 with payload.data, then the Demo Host SaveFile callback writes that data by using a local-device download adapter. Demo code does not mark App Storage as the user-facing save destination and does not save without payload.data. Save As dialogs use the package overlay class `uwriter-floating-ui` so file-save UI remains scoped under the v1.10 CSS/Theme contract.
