Skip to content

hazakura editor 0.16.0 Warning-expected DMG Preview

Pre-release
Pre-release

Choose a tag to compare

@lero003 lero003 released this 07 Jun 23:15
· 226 commits to main since this release

hazakura 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.dmg

It packages the Developer / GitHub lane bundle:

hazakura editor Dev.app

The 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.fontSize into four per-surface values: editorFontSize, previewFontSize, workspaceFontSize, and lModeFontSize. Each surface reads its own value through a :root CSS 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 fontSize key as a fallback for editorFontSize so 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 fontSize slider 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-preview reads font-size: var(--preview-font-size, 15px).
  • lMode.css: :root[data-l-mode="on"] .cm-content and .l-mode-empty-placeholder-text read font-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 absolute font-size: 13px from .workspace-tree and .workspace-empty.
  • workspace.css: re-expresses the absolute 10px kicker as 0.77em and the absolute 11px tree meta / partial text as 0.85em so 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: 13px overrides from .workspace-title and the font-size: 13px from 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-control font (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 / aarch64 only.
  • 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.77em for the kicker, 0.85em for 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.5 in src-tauri/Cargo.lock); local npm audit and cargo audit both 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 save API; 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.lock

The 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 ci completed from the committed lockfile and reported 0 vulnerabilities.
  • npm run typecheck passed.
  • npm run test passed: 68 files / 500 tests.
  • npm run build:vite passed with the existing large-chunk warning.
  • cargo fmt --manifest-path src-tauri/Cargo.toml -- --check passed.
  • cargo test --manifest-path src-tauri/Cargo.toml initially showed one real-runtime Agent Workbench test miss its expected node-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=1 passed: 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:live passed and returned Apple Local Assist availability available.
  • npm run build:dmg-preview passed, building both macOS lanes and producing the warning-expected DMG.
  • git diff --check passed.
  • npm audit reported 0 vulnerabilities.
  • cargo audit --file src-tauri/Cargo.lock exited 0 with 17 existing allowed warnings from the Tauri / Linux GTK stack and transitive dependencies.
  • Normal app metadata: version 0.16.0, bundle identifier lab.hazakura.note, product name hazakura editor, executable hazakura-editor.
  • Developer / GitHub app metadata: version 0.16.0, bundle identifier lab.hazakura.note.dev, product name hazakura editor Dev, executable hazakura-editor.
  • codesign --verify --deep --strict --verbose=2 passed for both the normal app and the Developer / GitHub app.
  • spctl -a -vv -t open rejected both local apps with source=Insufficient Context, expected for ad-hoc signed, not-notarized apps.
  • DMG checksum verification and hdiutil verify passed.
  • Mounted DMG app metadata: version 0.16.0, bundle identifier lab.hazakura.note.dev, product name hazakura editor Dev, executable hazakura-editor.
  • codesign --verify --deep --strict --verbose=2 passed against the mounted DMG app.
  • Mounted DMG app launch smoke: a hazakura-editor process was observed after open -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:

39f63f42fc46c7e2d8659858f1a93127917be8e7a1836f594d885a44105e40fb

Remote 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 with gh 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 identifier lab.hazakura.note.dev, product name hazakura editor Dev, executable hazakura-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-editor process after open -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.