hazakura editor 0.16.0 Warning-expected DMG Preview
Pre-releasehazakura editor 0.16.0 Warning-expected DMG Preview
Per-Surface Font Sizes (v0.16 L Mode Live Source Quality Follow-up)
v0.16.0 is the first source / settings polish slice in the v0.16 L Mode Live Source Quality Follow-up lane. The focus is small but real user-facing friction: the font size preference used to apply to the editor pane only, and the workspace file tree looked unchanged even after the user raised the workspace slider. v0.16.0 splits the single fontSize preference into four per-surface values (editor / preview / workspace / L Mode), wires them through :root CSS custom properties, and rewires the workspace tree CSS so every text-bearing element inside the tree pane (file names, folder names, the WORKSPACE kicker, the New File / New Folder popover, the empty-state Open Folder button, the rename input, and the tree-partial note) actually scales with the slider.
The release-prep pass also refreshes the app / README logo assets with the transparent hazakura flower-and-leaf mark and includes the later IPC status-feedback polish in the v0.16 release.
The boundary of the lane is unchanged: Markdown source remains canonical, L Mode still renders through CodeMirror decorations, no Preview DOM editing, no contenteditable, no hidden save-time rewriting, no network fallback, no auto-apply, no provider plugins. The font-size change is presentation-only, fully reversible, and does not touch the saved document model.
This is a warning-expected macOS DMG preview. The app is ad-hoc signed and not notarized, so Gatekeeper warnings are expected.
This is not an App Store, TestFlight, Developer ID signed, notarized, or production-ready distribution.
Download
The intended Apple Silicon preview asset is:
hazakura-editor-dev_0.16.0_aarch64-warning-expected.dmgIt packages the Developer / GitHub lane bundle:
hazakura editor Dev.appThe Developer / GitHub lane keeps Agent Workbench available and uses bundle identifier lab.hazakura.note.dev. The normal App Store preview / local build lane remains hazakura editor.app with bundle identifier lab.hazakura.note.
What Changed Since 0.15.0
Per-Surface Font Sizes
- Splits
EditorSettings.fontSizeinto four per-surface values:editorFontSize,previewFontSize,workspaceFontSize, andlModeFontSize. Each surface reads its own value through a:rootCSS custom property (--editor-font-size/--preview-font-size/--workspace-font-size/--lmode-font-size), so the editor pane, preview pane, file tree, and L Mode surface can scale independently. - Preserves the historical defaults of 14 / 15 / 13 / 15px so existing users see no visual change on first launch after upgrade.
- Reads the v0.15-era legacy
fontSizekey as a fallback foreditorFontSizeso v0.15 preferences survive the schema split. Missing per-surface values fall back to the per-surface defaults, so partial upgrades stay non-destructive.
Preferences UI
- Replaces the single
fontSizeslider in the editor-display section with four independent number inputs (Editor / Preview / Workspace / L Mode), each with its own min / max / step range and fallback. - Adds matching labels in all three menu languages: English (
Editor font size/Preview font size/Workspace font size/L Mode font size), Japanese (エディタのフォントサイズ/プレビューのフォントサイズ/ワークスペースのフォントサイズ/えるモードのフォントサイズ), and かなふみ (えでぃたのもじのおおきさ/したみのまどのもじのおおきさ/わーくすぺーすのもじのおおきさ/えるもーどのもじのおおきさ).
CSS Wiring
preview.css:.markdown-previewreadsfont-size: var(--preview-font-size, 15px).lMode.css::root[data-l-mode="on"] .cm-contentand.l-mode-empty-placeholder-textreadfont-size: var(--lmode-font-size, 15px)so L Mode prose and the L Mode empty state scale together.workspace.css: anchors.file-tree-pane { font-size: var(--workspace-font-size, 13px) }so the file tree base size actually flows into descendants. Removes the now-redundant absolutefont-size: 13pxfrom.workspace-treeand.workspace-empty.workspace.css: re-expresses the absolute10pxkicker as0.77emand the absolute11pxtree meta / partial text as0.85emso the WORKSPACE caption and the per-folder "Some entries are hidden" note stay visually proportional to the new base size.
Workspace Tree Linkage Fix
- Removes the now-incorrect
font-size: 13pxoverrides from.workspace-titleand thefont-size: 13pxfrom the New File / New Folder popover buttons so they inherit the workspace base. - Adds
.file-tree-pane button, .file-tree-pane input, .file-tree-pane select, .file-tree-pane textarea { font-size: inherit; }. Without this reset, Chromium / WebKit assign<button>to the OS's-webkit-small-controlfont (about 11-13px on macOS), which silently blocks the new base size from reaching the file-name / folder-name / popover text and made the workspace slider look like it did nothing. - Keeps button hit areas (28-30px) and SVG icon sizes (14px) at their previous pixel values, so the workspace stays clickable at the same density even when the user raises the slider to 18px.
Other
- Refreshes the app bundle icon, start-panel mark, and README logo to the transparent hazakura flower-and-leaf logo.
- Adds user-visible status feedback for two listener-registration failures that were previously console-only: window drag-drop listener setup and Apple Local Assist apply-status listener setup.
- Save / recovery, Apple Local Assist generation, Review Desk, L Mode editing, Diff, and Recovery Review are otherwise unchanged for this checkpoint.
Release Boundary
v0.16.0 does not add:
- App Store or TestFlight submission.
- Apple Developer / App Store signing, provisioning, upload validation, or review approval.
- Developer ID signing, notarization, installer packaging, updater, or a trusted distribution channel.
- New Agent Workbench capability, provider plugins, command execution beyond the existing explicit Developer / GitHub lane, terminal, LSP, Git integration, or workspace-wide indexing.
- Preview DOM editing,
contenteditable, HTML as the saved canonical model, hidden save-time rewriting, network fallback, tool calling, auto-apply, or auto-save. - A completed commercial-quality release process. The v0.16 L Mode Live Source Quality Follow-up lane is intended to carry additional source-preserving Live Source quality slices (table / checkbox / code-fence / quote / image / IME guardrails) before v0.17 Distribution Prep takes over.
Known Limitations
- The DMG is Apple Silicon /
aarch64only. - The packaged app is ad-hoc signed only and is not Developer ID signed or notarized. macOS may show security warnings and may require the user to explicitly allow opening the app.
- Apple Local Assist remains alpha / experimental and depends on macOS 26+ Apple Foundation Models availability, local Apple Intelligence state, and supported language / locale.
- The font-size preference is a presentation setting only. Saved Markdown text is never reformatted to match a chosen preview / L Mode / workspace size.
- Per-surface ranges were chosen to keep existing visual density stable at the defaults: editor 12-22, preview 12-24, workspace 10-18, L Mode 12-24. The em ratios used inside the workspace tree (
0.77emfor the kicker,0.85emfor tree meta / partial) preserve the 10 / 11 / 13 ratio at the 13px default but were not yet checked across the full 10-18px range on every theme; per-theme readability and chip headroom are an explicit v0.16 follow-up. - L Mode headings, image widgets, action-rail chips, and the typewriter cue keep their existing absolute sizes; they are not yet re-anchored against
--lmode-font-size. Resizing the L Mode slider scales only the prose body and the empty-state placeholder, not the surrounding chrome. - The workspace tree's row hit area (
min-height: 30px) and its 14px SVG icons stay at their previous pixel values across the full slider range, so very large workspace sizes will make the icons and the text look slightly underweight. This is intentional for the current checkpoint. - GitHub reports one moderate vulnerability notice on the repository (
GHSA-wrw7-89jp-8q8g/glib 0.18.5insrc-tauri/Cargo.lock); localnpm auditandcargo auditboth report 0 actionable vulnerabilities. The notice is a triaged Linux Tauri / wry GTK3-stack transitive item and is not a v0.16 macOS warning-expected preview blocker; revisit it only with a Tauri / wry dependency-refresh lane, distribution-readiness sign-off, severity escalation, or a compatible patched upstream path. - The native macOS Save As panel may not visibly expose extension filters even though the app passes text-file filters to Tauri's
saveAPI; saving and typed-extension normalization remain the practical boundary for this checkpoint.
Local Verification Before Publication
Required gates for this warning-expected DMG preview:
npm ci
npm run typecheck
npm run test
npm run build:vite
cargo fmt --manifest-path src-tauri/Cargo.toml -- --check
cargo test --manifest-path src-tauri/Cargo.toml
npm run build:apple-assist-helper:live
npm run build:dmg-preview
git diff --check
npm audit
cargo audit --file src-tauri/Cargo.lockThe built normal app must report version 0.16.0, bundle identifier lab.hazakura.note, product name hazakura editor, and executable hazakura-editor.
The built Developer / GitHub DMG app must report version 0.16.0, bundle identifier lab.hazakura.note.dev, product name hazakura editor Dev, and executable hazakura-editor.
The local and mounted apps must pass:
codesign --verify --deep --strict --verbose=2 "<app>"Expected warning for the ad-hoc, not-notarized app:
spctl -a -vv -t open "<app>"Gatekeeper may reject the app with insufficient-context / not-notarized style output.
Local Verification Result
Passed on 2026-06-08.
npm cicompleted from the committed lockfile and reported0 vulnerabilities.npm run typecheckpassed.npm run testpassed: 68 files / 500 tests.npm run build:vitepassed with the existing large-chunk warning.cargo fmt --manifest-path src-tauri/Cargo.toml -- --checkpassed.cargo test --manifest-path src-tauri/Cargo.tomlinitially showed one real-runtime Agent Workbench test miss its expectednode-shim:output, plus broader parallel-run flakiness (230 passed / 13 failed) on the default thread pool; the focused test then passed, and a second full run with-- --test-threads=1passed: 243 tests. The flakiness is timing-related and is recorded here rather than treated as a v0.16.0 release blocker; it is a follow-up candidate for the v0.16 Live Source quality follow-up lane.npm run build:apple-assist-helper:livepassed and returned Apple Local Assist availabilityavailable.npm run build:dmg-previewpassed, building both macOS lanes and producing the warning-expected DMG.git diff --checkpassed.npm auditreported0 vulnerabilities.cargo audit --file src-tauri/Cargo.lockexited 0 with 17 existing allowed warnings from the Tauri / Linux GTK stack and transitive dependencies.- Normal app metadata: version
0.16.0, bundle identifierlab.hazakura.note, product namehazakura editor, executablehazakura-editor. - Developer / GitHub app metadata: version
0.16.0, bundle identifierlab.hazakura.note.dev, product namehazakura editor Dev, executablehazakura-editor. codesign --verify --deep --strict --verbose=2passed for both the normal app and the Developer / GitHub app.spctl -a -vv -t openrejected both local apps withsource=Insufficient Context, expected for ad-hoc signed, not-notarized apps.- DMG checksum verification and
hdiutil verifypassed. - Mounted DMG app metadata: version
0.16.0, bundle identifierlab.hazakura.note.dev, product namehazakura editor Dev, executablehazakura-editor. codesign --verify --deep --strict --verbose=2passed against the mounted DMG app.- Mounted DMG app launch smoke: a
hazakura-editorprocess was observed afteropen -n; the test process was killed after verification to keep the host clean. A pre-existing same-app process was left untouched.
DMG SHA-256:
39f63f42fc46c7e2d8659858f1a93127917be8e7a1836f594d885a44105e40fbRemote Verification Result
Passed on 2026-06-08 after publication.
- GitHub Release URL:
https://github.com/lero003/hazakura-editor/releases/tag/v0.16.0. - Assets were downloaded into a fresh
src-tauri/target/release/remote-verify-v0.16.0-*directory withgh release download v0.16.0 -R lero003/hazakura-editor. - Downloaded checksum verification passed:
shasum -c hazakura-editor-dev_0.16.0_aarch64-warning-expected.dmg.sha256. - Downloaded DMG image verification passed:
hdiutil verify hazakura-editor-dev_0.16.0_aarch64-warning-expected.dmg. - Mounted DMG app metadata matched the intended Developer / GitHub lane: version
0.16.0, bundle identifierlab.hazakura.note.dev, product namehazakura editor Dev, executablehazakura-editor. - Mounted DMG app passed
codesign --verify --deep --strict --verbose=2. - Mounted DMG app icon resource hash matched
src-tauri/icons/icon.icns. - Mounted DMG app launch smoke observed a new
hazakura-editorprocess afteropen -n; the test process was killed after verification to keep the host clean.
Publication State
- Tag:
v0.16.0. - GitHub Release:
https://github.com/lero003/hazakura-editor/releases/tag/v0.16.0. - DMG asset:
hazakura-editor-dev_0.16.0_aarch64-warning-expected.dmg. - Checksum asset:
hazakura-editor-dev_0.16.0_aarch64-warning-expected.dmg.sha256.
Older public tags and releases remain immutable.