
## alpha36-fix10 - UnifiedControl v1.9 policy alignment

- Aligned UnifiedSlide with app development policy v1.9.
- Added `UnifiedControl/main` as the shared Control Framework dependency and changed `UnifiedSlideControl` to subclass `UnifiedControl.Control`.
- Added `requiredPackages.UnifiedControl` to `PACKAGE_MANIFEST.json` without embedding the UnifiedControl CDN URL in the manifest.
- Standardized physical AMD module filenames under `scripts/` to `lower_snake_case.js`.
- Updated Demo RequireJS configuration to provide the UnifiedControl alias from the Host/Demo side.
- Updated docs/README references for lower_snake_case module paths and UnifiedControl integration.


## alpha36-fix9-development-menu-policy - 2026-06-24

- Renamed the root `Extensions` menu to `Development` (`開発` / `开发`) and kept `menu.extensions` as a compatibility i18n alias.
- Moved script, macro/add-on placeholders and PPTX Compatibility diagnostics under the Development menu.
- Simplified Help so development diagnostics are no longer split between Help and Development.
- Added initial Control contribution APIs: `getMenuContributions`, `getToolbarContributions`, `getContextMenuContributions`, `getFileCapabilities`, and `getCommandRegistry`.
- Added package-prefixed command aliases for Host/OneEditor integration while preserving existing legacy command ids.
- Added `createEditorControl`, `createWorkbenchControl`, and `createViewerControl` factory aliases from `scripts/main.js`.


## alpha36-fix8-google-menu-i18n - 2026-06-24

- Aligned root menu order with Google Slides-like structure: File / Edit / View / Insert / Format / Slide / Arrange / Tools / Development / Help.
- Removed active standalone Export root menu and kept exports under File > Export as.
- Reorganized Insert, Format, and Arrange into Google Slides-style grouped submenus.
- Preserved Host callback based Open/Save/Save As/Import/Export policy.
- Added disabled menu placeholders for not-yet-implemented Google-like items instead of exposing broken commands.
- Added EN/JA/ZH i18n keys for all new menu labels in product and Demo i18n resources.


## alpha36-fix7-menu-structure

- Removed visible section titles from menu popup bodies.
- Reorganized all main menus into grouped submenus.
- Moved PPTX Compatibility Report from File/Tools to Help > Development diagnostics.
- Added viewport-aware submenu placement.


## alpha36-fix6 - PPTX Import Fidelity Pass

- Improved imported PPTX fidelity for Japanese vertical text / timeline process slides.
- Corrected rotated shape origin handling so PowerPoint rotated helper shapes are positioned more accurately.
- Added DrawingML luminance transform handling for scheme colors such as grey timeline connectors.
- Replaced group descendant flattening with direct recursive group traversal to better preserve z-order.
- Kept alpha36-fix2/fix3/fix4/fix5 safety fixes.

## alpha36-fix5-pptx-import-vertical-text-shapes

- Improved PPTX/PPTM import for PowerPoint vertical Japanese text (`bodyPr vert="eaVert"`).
- Replaced the previous single-textbox vertical approximation with centered per-glyph rendering for fidelity in timeline/process columns.
- Added approximations for common PowerPoint timeline shapes: triangle, left/right bracket and left-right arrow.
- Kept alpha36-fix4 lazy image import, alpha36-fix3 text-style safety and alpha36-fix2 thumbnail safety.

## alpha36-fix4-pptx-import-text-layout-performance

- Fixed PPTX imported text boxes rendering as unwanted bordered rectangles.
- Improved imported text wrapping by using Fabric Textbox objects.
- Added East Asian vertical text approximation for `eaVert` bodyPr.
- Added dark-fill text fallback so inherited text color remains readable.
- Added lazy PPTX image materialization for large decks to improve responsiveness.
- Preserved alpha36-fix3 text style safety and alpha36-fix2 thumbnail safety.


## alpha36-fix3-pptx-import-text-style-safe

- Fixed PPTX/PPTM import failure caused by Fabric text objects without a `styles` map.
- Added import/runtime JSON normalization before load, commit, history, thumbnail, export and presentation rendering.
- Kept alpha36-fix2 thumbnail safety and PPTM macro preservation policy intact.


## alpha35-google-pptx-suite

- Integrated alpha30 through alpha35 planned scopes into one package.
- Added OOXML compatibility core services: package reader/writer, content types, relationships, unknown part preservation, compatibility report.
- Added Theme Builder, Template Gallery, Transition, Compatibility Report, Print Preview and Assistant outline-to-slides surfaces.
- Expanded layout presets for image+caption, quote and comparison.
- Added PPTX compatibility metadata persistence to .usldx v2.1.
- Added preset shape metadata for future OOXML native shape export.


## alpha29-file-callback-dialogs

- Fixed File menu `Save As` and `Import` no-op caused by missing menu-only command targets.
- Changed Save for new documents to route through SaveFile choose/write callback.
- Changed Export PNG/PDF/PPTX to route through SaveFile choose/write callback so Demo/Host can present a filename dialog.
- Enhanced Demo-local SaveFile callback to use local-PC filename/save dialogs through File System Access API, with UnifiedSlide branded fallback dialog.


## alpha28-product-editor-suite

- Consolidated the confirmed editor productization plan into one implementation package.
- Added command-backed text/shape formatting, active toolbar synchronization, bullet/indent/line-height commands.
- Added alignment, distribution, visible grid, manual guides and guide snapping support.
- Added image replace, crop, circle mask and clear crop/mask commands.
- Added table insertion and row/column operations.
- Added slide notes and comments panel, plus presentation timer and notes display.
- Upgraded native `.usldx` package format to v2 with metadata and asset manifest folders.
- Extended Control command bridge for format, arrange, image, table, guide and grid commands.


## alpha27-clipboard-shortcuts

- Added rich object clipboard support with a UnifiedSlide clipboard payload envelope.
- Added Cut / Duplicate / Select All / Nudge shortcut commands.
- Added paste handling for system clipboard images and plain text.
- Added `ClipboardManager` and `ShortcutManager` services for Control Framework migration.
- Centralized keyboard shortcuts and removed the older duplicate shortcut handler.

## alpha26-native-context-menu

- Suppressed native browser/HTML context menus inside the UnifiedSlide product root.
- Replaced thumbnail, canvas, layer, and generic workspace right-click behavior with the UnifiedSlide-owned context menu.
- Added capture-phase `contextmenu` handling so image thumbnails no longer show browser actions such as opening/copying image URLs.
- Added slide-specific context commands: new slide, duplicate, delete, section, select all, rename.
- Added layer-specific context commands: rename, show/hide, lock/unlock, z-order and delete.
- Expanded EN/JA/ZH context-menu i18n resources.


## alpha24-editor-foundation

- Added SelectionManager as the bridge from Fabric selection to Host-visible selection state.
- Added SlideStore as the base for thumbnail D&D, duplicate/delete, and slide section features.
- Added LayerManager as the service layer for rename, lock, visibility, and ordering.
- Added OOXML Core writer modules: PresentationWriter, SlideWriter, RelationshipWriter, ThemeWriter.
- Kept alpha23 layout, i18n, and Demo behavior stable.


## 1.0.0-alpha19 - Demo policy complete

- Rebuilt `demo/index.html` as a real Demo Portal rather than a simple link list.
- Added Demo-isolated assets under `demo/assets/` for CSS, Local OpenFile / SaveFile callbacks and frame maximize helper.
- Updated Parameters, Callback I/O, Control Architecture and Regression demos to clarify Host responsibilities.
- Preserved the stable workspace layout from alpha13/alpha14.

# CHANGELOG

## alpha10-layout-rollback
- Restored the last non-broken slide workspace layout from alpha1.
- Kept UnifiedSlide naming.
- Removed root index.html; demo is under demo/basic.html.
- Kept v1.6 package metadata.


## alpha11-demo-runtime-fix
- Fixed demo/basic.html theme CSS paths to ../themes/base/*.css.
- Ensured JSZip loads before pptxgenjs to avoid JSZip is not defined.


## alpha12-jszip-global-fix
- Fixed pptxgenjs runtime error `JSZip is not defined` by preloading JSZip before RequireJS and adding an AMD wrapper at `scripts/vendor/jszip_wrapper.js`.
- Kept the alpha1-based stable workspace layout unchanged.


## alpha13 - initial render / toolbar / ruler fix
- Fixed first display race that caused the slide canvas to appear blank until the thumbnail was clicked.
- Restored visible top ruler and left ruler alignment around the canvas.
- Hid advanced/low-frequency toolbar commands behind the More button by default.
- Kept the stable alpha12 workspace layout and JSZip global fix.


## alpha14 - Unified PPTX Writer foundation

- Removed default PptxGenJS loading from the runtime dependency chain.
- Added `UnifiedPptxWriter`, an internal JSZip-based OOXML writer.
- PPTX export now generates the package directly from UnifiedSlide.
- Added documentation for the new export architecture.

## alpha15 - Control Framework foundation

- Added Host-facing `UnifiedSlideControl` shell.
- Added `CommandRegistry`, `StateStore`, `EventBus`, `FormatRegistry`, `FileIoService`, `SecurityPolicyService`, and `MainView`.
- Updated `scripts/main.js` to export `createControl()` while preserving legacy demo autostart.
- Added architecture migration documentation.
- Kept alpha13/alpha14 visual layout stable and did not rework workspace CSS.

## alpha17 - File callback and icon menu policy alignment

- Removed storage-specific File menu entries such as `Open > This device` and `Save > App storage`.
- File menu now exposes storage-neutral commands: New, Open, Save, Save As, Import, Properties, and Export.
- Open, Save, Save As, Import, Export, and Insert Image now call the Host/Demo `OpenFile` / `SaveFile` callback contract.
- Save As uses the selected file extension to resolve `.usldx`, `.png`, `.pdf`, or `.pptx` output generation.
- Insert Image is treated as `OpenFile({ operation:'open', role:'asset' })`.
- Added icons to menu items.
- Added demo-local callback implementation in `demo/basic.html`; product runtime remains storage-neutral.

## alpha17 - demo-policy

- Rebuilt `demo/index.html` as a policy-compliant Demo portal.
- Added `demo/parameters.html` with separated options area and maximizable Control display frame.
- Added `demo/control-architecture.html` for Host-facing Control API examples.
- Rebuilt `demo/callback-io.html` for OpenFile / SaveFile request verification.
- Rebuilt `demo/regression-tests.html` for lightweight browser regression checks.
- Added `demo/demo.css`; Demo-specific UI remains under `demo/` and does not pollute product runtime.


## alpha18 - demo-portal-policy
- Rebuilt `demo/index.html` as a product-level Demo Portal instead of a simple link list.
- Added Demo categories, purpose, expected checks, required callback notes, and direct open actions.
- Added client-side detail switching so Host integration reviewers can understand each demo before opening it.
- Kept all Demo-only UI and CSS under `demo/`; no root-level `index.html` is provided.


## alpha20 Demo frame maximize fix
- parameters.html now performs true fixed-position Control frame maximization and restore.
- Demo-only maximize logic remains under demo/assets/js and demo/assets/css.
- Embedded workspace receives resize notifications after maximize/restore so rulers and canvas layout refresh.

## alpha21 - foundation-ui-regression

- Added product-level Inspector geometry controls (X/Y/W/H/rotation/opacity).
- Added canvas context menu for copy/paste/delete/layer operations while preserving native menus for form controls.
- Added inline layer rename support in the Layers panel.
- Added central dirty-state status handling for legacy workspace commands.
- Added Host-facing `resize()` / `refreshLayout()` Control API methods.
- Preserved alpha20 Demo maximize behavior and stable slide workspace layout.

## alpha22 - i18n demo/runtime
- Parameters Demo and Basic workspace now apply Host language option.
- Japanese/English/Chinese labels are provided for Demo frame, menu, panels, status bar, context menu, and slide placeholders.
- Added Demo-local i18n helper under demo/assets/js without moving Demo-only code into product scripts.


## alpha23-i18n-ui-regression
- Expanded runtime menu/status i18n coverage.
- Added translation keys for command/menu labels in ja/en/zh.
- Added docs/I18N_STATUS.md.
- Kept alpha22 layout and Demo frame behavior stable.

## alpha24-fix1-layout-overlay
- Fixed a scope regression introduced during the editor foundation refactor.
- Layout and Master overlay handlers are now inside the main workspace initialization scope, so they can safely access `slideMgr`, `commitCanvasToSlide`, `refreshThumbsSoon`, and ruler refresh helpers.
- Added this fix without changing the stable alpha23/alpha24 workspace layout.



## alpha36-script-pptm-core

- Added browser-safe UnifiedSlide Script runtime services.
- Added ScriptPermissionManager with permanent OS/COM/ActiveX/FileSystemObject/Shell exclusion policy.
- Added VBA analyzer and practical PowerPoint VBA subset converter.
- Added PPTM `vbaProject` preservation service for round-trip compatibility.
- Added Script Console demo UI.
- Updated OOXML package reader/writer for macro-enabled package metadata.


## alpha36-fix1-pptx-import-dialog

- Reconnected `.pptx` / `.pptm` import to the current callback runtime.
- Added `scripts/services/pptx/pptx_import_service.js` as an app dependency before `scripts/app.js`.
- Removed the inactive Cancel button from message/error dialogs; Cancel is shown only for confirmation dialogs.
- Added `docs/PPTX_IMPORT_RUNTIME_FIX.md`.


## alpha36-fix2-pptx-import-thumbnail-safe

- Fixed Fabric `clearRect` errors during PPTX/PPTM import of image-heavy presentations.
- Replaced unsafe immediate thumbnail disposal with async-safe thumbnail rendering.
- Added lightweight safe SVG thumbnails for imported slides containing images or many objects.
- Awaited active-slide canvas loading before rebuilding the slide list after Open/Import.
- Added `thumb.safePreview` i18n key for ja/en/zh.
- Added `docs/PPTX_IMPORT_THUMBNAIL_FIX.md`.


## alpha36-fix11 - Policy v1.10 / v1.3 alignment

- Added `PACKAGE_MANIFEST.styles` and `styleScope` for CSS/Theme/Manifest standardization.
- Renamed runtime CSS to `themes/base/unified_slide.css` and `themes/flat/unified_slide.css`.
- Scoped runtime CSS under `.uslide`; removed package runtime `app.css` / `theme.css` generic names.
- Added `openFile`, `saveFile`, `saveAsFile`, `exportFile`, and `getFileContext` Programable Editing Control API.
- Updated Demo callbacks to accept `HostSavePayload/v1.payload.data`.


## alpha36-fix12-floating-ui-hidden-fix
- Fixed the Basic Demo startup overlay regression where the Presentation overlay was visible even when the `hidden` attribute was present.
- Added the package overlay class `uslide-floating-ui` to body-level overlays and context menus that are intentionally outside the `.uslide` root.
- Added scoped floating UI CSS for `.uslide-floating-ui` so v1.10 CSS scoping remains compliant without relying on generic body/html selectors.
