Skip to content

v0.18.0 Warning-expected DMG Preview

Pre-release
Pre-release

Choose a tag to compare

@lero003 lero003 released this 11 Jun 21:07
· 150 commits to main since this release

Hazakura Editor 0.18.0 Warning-expected DMG Preview

v0.18 UX Polish / App Store-lane Prep Checkpoint

Status: Published as a warning-expected GitHub prerelease on
2026-06-12. Local and remote asset verification passed.

v0.18.0 is a bounded Safe Editor polish checkpoint after the v0.17
App Store-quality closeout. It focuses on release-facing reliability:
workspace restore, direct-open save / image preview behaviour, keyboard
and accessibility risk reduction, version-surface alignment, and
helper-free App Store-lane packaging hygiene.

The release boundary stays unchanged: Markdown source remains
canonical, Safe Editor remains primary, Agent Workbench remains a
separate Developer / GitHub-lane trust boundary, and the App Store lane
does not include arbitrary command execution, Git, LSP, terminal,
plugins, workspace-wide indexing, auto-apply, or auto-commit behavior.

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 Apple Silicon preview asset is:

hazakura-editor-dev_0.18.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 dev.hazakura.editor.

What Changed Since 0.17.0

Safe Editor Reliability

  • Preserves the last good persisted workspace state when a restore
    attempt returns an empty live result, so a sandbox-loss / moved-folder
    / missing-file path does not erase the saved workspace root bookmark.
  • Pins standalone direct-open save behaviour when no workspace is open.
  • Keeps the normal atomic temp-file replace path, then falls back to
    direct existing-file write only when creating the sibling temp file
    fails with PermissionDenied.
  • Routes directly opened PNG/JPEG/GIF/WebP files to bounded read-only
    image preview even when there is no active workspace.
  • Narrows L Mode table Backspace / Delete behaviour so ordinary
    in-cell text selection falls through to CodeMirror, while explicit
    whole-row selections still use the row-delete shortcut.

Accessibility And UX Polish

  • Renders MoveToTrashConfirmDialog through the shared modal focus
    pattern: initial focus lands on Cancel, Tab / Shift+Tab stay inside
    the dialog, and Escape cancels the pending trash action.
  • Keeps encoding-only changes visible through the shared dirty-state
    contract and includes encoding in the auto-backup signature.
  • Renders Markdown preview task checkboxes as inert display-only
    glyphs without changing saved Markdown.
  • Keeps the normal Safe Editor left workspace sidebar collapsible and
    restorable without changing the file-tree model or L Mode drawer.
  • Cleans up WorkspaceTree rename markup so the rename input is not
    nested inside a row button.

App Store-lane Prep

  • Keeps the helper-free App Store preview packaging shape explicit by
    preserving frontendDist: "../dist" in the App Store configs and
    keeping the sandbox entitlement needed by the Tauri / WebKit runtime.
  • Defines the App Store submission build number separately from the
    user-visible version; the v0.18 App Store submit config carries
    bundle.macOS.bundleVersion = "4".
  • Bundles repository-root LICENSE and THIRD_PARTY_NOTICES.md into
    generated macOS app bundles and verifies those resources in the
    macOS distribution probe.
  • Keeps App Store-lane Settings free of Apple Local Assist-specific
    preference rows while the Developer / GitHub lane can still expose
    those assist controls.

Release Boundary

v0.18.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.

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.
  • VoiceOver tab-bar smoke, full keyboard-only traversal, Help
    readability smoke, and Increase Contrast visual smoke still require
    real-app human confirmation before App Store submission.
  • Help copy overlap cleanup and data:image size wording alignment
    remain follow-up items in docs/current-work.md.
  • App Store Connect upload, TestFlight validation, official App Store
    signing/provisioning, screenshots, metadata, and final reviewer notes
    remain outside this warning-expected Developer / GitHub release lane.
  • In this release-prep session, open -n on the helper-free App Store
    preview bundle failed with RBSRequestErrorDomain Code=5 /
    Launchd job spawn failed. The Developer / GitHub lane app and the
    mounted DMG app both launched successfully. Treat App Store-lane
    launch as a separate submission-prep follow-up, not as proven by this
    warning-expected DMG release.
  • Apple Local Assist remains alpha / experimental and depends on macOS
    26+ Apple Foundation Models availability, local Apple Intelligence
    state, and supported language / locale.
  • GitHub may report existing moderate dependency notices that require
    the current release-readiness triage before publication.

Local Verification Before Publication

Required gates for this warning-expected DMG preview:

npm run test
npm run build:vite
cargo fmt --manifest-path src-tauri/Cargo.toml -- --check
cargo test --manifest-path src-tauri/Cargo.toml -- --test-threads=1
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.18.0, bundle identifier
dev.hazakura.editor, product name Hazakura Editor, and executable
hazakura-editor.

The built Developer / GitHub DMG app must report version 0.18.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-12.

  • npm ci passed; 0 npm vulnerabilities.
  • npm run test passed after the clean install: 88 files / 739 tests.
  • npm run build:vite passed with the existing
    INEFFECTIVE_DYNAMIC_IMPORT and chunk-size warnings.
  • cargo fmt --manifest-path src-tauri/Cargo.toml -- --check passed
    after formatting two long lines in an existing security test.
  • cargo test --manifest-path src-tauri/Cargo.toml -- --test-threads=1
    passed: 274 tests.
  • npm run build:apple-assist-helper:live passed; Swift helper build
    completed and availability probe returned available.
  • npm run build:dmg-preview passed. It built both macOS lanes,
    generated the Developer / GitHub lane DMG, ran hdiutil verify, and
    verified the checksum file.
  • npm run build passed after the DMG build, rebuilding the helper-free
    App Store preview lane with the expected Vite warnings and ad-hoc
    notarization-skip warning.
  • npm audit passed: 0 vulnerabilities.
  • cargo audit --file src-tauri/Cargo.lock exited 0 with 17 allowed
    warnings, primarily existing Tauri / GTK stack warnings,
    proc-macro-error, unic-*, and glib unsoundness warnings. No
    release-blocking failure was reported by the command.
  • npm outdated reported newer @types/react and dompurify
    versions. These are freshness signals only and were not folded into
    this release.
  • cargo update --manifest-path src-tauri/Cargo.toml --dry-run
    reported compatible update candidates and did not update the
    lockfile.
  • Local normal app metadata matched: version 0.18.0, bundle
    identifier dev.hazakura.editor, product name Hazakura Editor,
    executable hazakura-editor.
  • Local Developer / GitHub app metadata matched: version 0.18.0,
    bundle identifier lab.hazakura.note.dev, product name
    Hazakura Editor Dev, executable hazakura-editor.
  • Local normal and Developer / GitHub apps passed
    codesign --verify --deep --strict --verbose=2.
  • spctl -a -vv -t open rejected both local apps with
    source=Insufficient Context, the expected ad-hoc / not-notarized
    warning-expected result.
  • Mounted DMG app metadata matched the intended Developer / GitHub
    lane and passed codesign --verify --deep --strict --verbose=2.
  • open -n "src-tauri/target/release/bundle/macos/Hazakura Editor Dev.app"
    launched the local Developer / GitHub app; pgrep observed the
    hazakura-editor process and the app was quit afterward.
  • Mounting the DMG and opening Hazakura Editor Dev.app from the
    mounted volume also launched successfully; pgrep observed the
    hazakura-editor process and the app was quit during cleanup.
  • open -n "src-tauri/target/release/bundle/macos/Hazakura Editor.app"
    failed with RBSRequestErrorDomain Code=5 /
    Launchd job spawn failed in this ad-hoc App Store preview build
    session. This was not the DMG release lane app.
  • npm run probe:macos-distribution -- "src-tauri/target/release/bundle/macos/Hazakura Editor.app"
    passed; bundled LICENSE and THIRD_PARTY_NOTICES.md were present,
    the helper was absent from the App Store preview lane, required
    sandbox entitlements were present, and broad network server /
    Apple-events entitlements were absent.
  • git diff --check passed.
  • Release pre-check grep hits were reviewed. Local-path hits were
    test fixtures or normalization code, GitHub hits were public release
    URLs, and security-word hits were diagnostics / sanitizer wording or
    tests rather than credentials.

Local artifact:

src-tauri/target/release/bundle/dmg/hazakura-editor-dev_0.18.0_aarch64-warning-expected.dmg

SHA-256:

fed350e809f8c95d399d1cb544eb445c72b7b24307972e817b1a899456deaf06

Publication State

  • Tag: v0.18.0.
  • GitHub Release:
    https://github.com/lero003/hazakura-editor/releases/tag/v0.18.0.
  • DMG asset:
    hazakura-editor-dev_0.18.0_aarch64-warning-expected.dmg.
  • Checksum asset:
    hazakura-editor-dev_0.18.0_aarch64-warning-expected.dmg.sha256.

Remote Verification Result

Published and verified on 2026-06-12.

  • Assets were downloaded into a fresh
    src-tauri/target/release/remote-verify-v0.18.0-* directory with
    gh release download v0.18.0 -R lero003/hazakura-editor.
  • Downloaded checksum verification passed:
    shasum -c hazakura-editor-dev_0.18.0_aarch64-warning-expected.dmg.sha256.
  • Downloaded DMG image verification passed:
    hdiutil verify hazakura-editor-dev_0.18.0_aarch64-warning-expected.dmg.
  • Mounted downloaded DMG app metadata matched the intended
    Developer / GitHub lane: version 0.18.0, bundle identifier
    lab.hazakura.note.dev, product name Hazakura Editor Dev, and
    executable hazakura-editor.
  • Mounted downloaded DMG app passed
    codesign --verify --deep --strict --verbose=2.
  • Mounted downloaded DMG app launched successfully; pgrep observed
    the hazakura-editor process and the app was quit during cleanup.