Skip to content

v0.2.1-beta.1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 19 Jul 23:22

Initial release.

  • installer: migration is now a verified MOVE (delete the old folder), not a lossy copy
  • rebrand: snaphak/open-snaphak -> Snapmap+ (doom-snapmap/snapmap-plus) across the product
  • installer: relocate app-data + user content into %LOCALAPPDATA%\snapmap-plus, with one-time migration + content scaffolding
  • installer: embed a version resource + application manifest, strip + trimpath the build (reduce antivirus false-positives on the downloaded snaphak.exe)
  • installer: self-update skips when the on-disk exe is already current; rename-aside falls back past a still-running .old (#24)
  • installer: migrate away from the original SnapHak (detect + remove its files on install/update) (#22)
  • ui(webview): drop redundant entity-count status line; guide: console-command reference, Vulkan note, feedback section (#19)
  • installer: friendlier no-stable 404 message + doc catch-up (#21)
  • installer: status-aware interactive prompt on double-click (#20)
  • installer: beta fallback while no stable release exists (#18)
  • feedback: crash dialog -- drop the browser-preview demo trigger (preview crashSubmit/Dismiss handlers kept)
  • package: diag-detector -- re-key to snaphak_diag.log (crash-report dump made the old marker release-legit)
  • feedback: crash reporting -- crash records, in-app crash dialog, relay crash category with log-comment attachments
  • logs: runtime logs move to snaphak\logs\ inside the overlay dir (was root-level snaphak_logs); installer migrates an older install's dir and uninstall cleans both
  • feedback: trim APP_ID (shell-piped secrets carry a newline GitHub rejects) + log each app-auth step to the tail
  • feedback: dedup lists oldest-first so confirmations land on the original report
  • feedback: relay auth as an org GitHub App (bot identity, no rotation chore; PAT fallback); list-based dedup (search-index lag double-filed); '?' moved into the statusbar; bake the deployed relay host
  • feedback: in-app report dialog -> relay -> labeled tracker issues; hygiene workflows; focus-mode bottom-padding fix
  • ui: embed the org-avatar logo in the menubar (data URI) + best-effort per-build refresh from github.com/snaphak
  • overrides: three-layer resolution (user file -> built-in default from memory -> engine) + sh_help; built-in defaults no longer written to disk (untouched seeded copies reclaimed at install), startup audit of active overrides, snaphak_user_overrides cvar to bisect a broken override set, malformed-file fallback at built-in names
  • ui: IDE-style Tab indent/outdent in the decl editor + re-center the prefab empty state
  • ui: decl-editor line numbers (default + focus mode) and real prefab description/tags via a per-prefab metadata sidecar (tag-aware filter)
  • comments: drop the retired-second-frontend framing from source comments (webview-only product; original-SnapHak Qt facts kept)
  • ui: prefab Delete/Load-Place gated on a real selection + blank-click deselect; fix the multi-select placeholder layout
  • ui: decl-editor focus mode + selection/dropdown/schema-note fixes (#8)
  • ui: panel-layout overhaul + schema-aware decl editor
  • installer: ensure the WebView2 runtime on install/update -- detect via registry, offer MS's evergreen bootstrapper if absent (never blocks the mod install)
  • ui: retire the Qt-side snapstack.cpp -- SnapStack is now backend-only, one implementation + one store shared by both frontends (Phase 2)
  • backend: apply_engine -- fix misleading deserialize buffer-init comments; LexCtxCtor/def-ctor self-construct their idStrs, the save/reload crash fix was the inline apply_sync commit
  • SnapStack backend port + Timelines/Entities webview polish (#5)
  • WebView Timeline parity + deferred-apply crash fix + build split (#4)
  • ui(webview): wire Timeline event editing + Save Timeline (#3)
  • ui: add experimental WebView2 (HTML) frontend as a Qt-free snaphakui.dll (#2)
  • strids: dedupe injected #str_ rows (user json wins) -- fixes the baked-set duplicate corruption
  • create-timeline: place from the in-game palette + ship the "*Custom" tab built-in
  • installer: don't back up our own DLL on update, so uninstall restores true vanilla
  • backend: create-timeline -- spawn grabbed (enter place-tool grab mode on editor+0x22330 after PasteInstantiate, mirroring the real Ctrl+V) so a from-scratch timeline is held for placement and joins the module it's dropped into (auto-module); fixes the selected-but-not-grabbed orange-highlight state
  • ui: entity list -- rebuild on same-entity module re-bucket + a live world-signature poll (hash of every valid entity's id-string) so module moves / object create+delete / module add+remove reflect in the list without a manual Refresh
  • backend: create-timeline -- reset the reused staging slot before deserialize; fixes the delete-then-create crash (NULL className AV when deserializing into a stale idSnapEntityPrefab slot)
  • ui: entities/timelines -- auto-prune deleted entities + guard stale rows; drop Hide-Builtin checkbox; wire-any label auto-settle
  • backend: sh_target_any -- exception-safe restore of the transient input-node decl bit; fixes in-editor re-entry Error(6) from a leaked +0x3cd bit on a mid-pick creator throw
  • backend: sh_target_any -- expose a wire-any connect-edit generation counter (iface +0x288 ext 4) so the UI can auto-settle the entity-list module labels after a wire
  • backend: sh_target_any -- wire-any clean-direct connect (bind any target entity, suppress the input radial); drop the buggy direct-edge hook
  • backend: sh_target_any -- add flag-gated direct-edge hook (output-node source -> any target, no input radial); crash/spray/input-death-safe
  • backend: sh_target_any -- restore OG behavior (editor-decl visibility toggle, FUN_180021EE0); remove the interactive wire-mode
  • wiring: sh_target_any -- convert an output-node source without crashing (no-free sanitize; edge stems from the output node)
  • wiring: sh_target_any -- convert an in-progress wire when toggled on mid-pick; fix input loss on toggle off
  • backend/ui: entities -- hide dev-layer entities from the Entities + Timelines lists unless snapEdit_enableDevLayer is set
  • backend: commands -- remove the sh_unhide command + its now-orphaned unhide module
  • ui: Entity-State inherit + class dropdowns enumerate the LIVE registries (complete + portable)
  • commands: typeinfo -- sh_entlist/sh_validclasses enumerate the LIVE type registry (complete + portable)
  • installer: self-update snaphak.exe as part of update (best-effort, --no-self to skip)
  • installer: changelog -- show the latest release's notes in full + a link, and a capped preview + link for older releases
  • installer: changelog -- print the latest release notes in full + generate notes from the commit log
  • backend: remove the dead birth-in-module machinery (cleanup)
  • backend: apply-engine -- REVERT to safe global spawn (the native-birth finalize crashed)
  • backend: apply-engine -- spawn as a proper module member (replicate native birth) -- position fix
  • backend: apply-engine -- fix the re-base to the CORRECT world->local transform (position)
  • backend: apply-engine -- resolve the SPAWN module SPATIALLY (multi-module fix)
  • ui: decl-tab -- refresh the ID field on a MODULE change (not just id/class)
  • backend: apply-engine -- re-base birth-in-module SPAWN into the module's local frame
  • backend: apply-engine -- birth-in-module for create-from-scratch SPAWN (class-independent)
  • ui: timeline -- fix use-after-free crash when creating a timeline after deleting one
  • fault_shield: log every first-chance crash-class exception (any module), not just DOOM-code AVs
  • ui: timeline -- fix event-arg + target serialization that crashed maps on load
  • cmd: sh_type -- clean field dump by default; -v restores offset/size
  • backend: sh_target_any -- wire output-node sources directly too (Hook 3 on cdb990)
  • fix: sh_type + entities list -- un-truncate the type dump + restore the entity name in the list/search
  • backend: sh_target_any -- input-safe wire-any via two FSM-leaf detours (fixes the input freeze)
  • backend: command-unlock -- fix the table-corruption bug + add the 5 OG player-cheat commands (313, parity +2)
  • backend: cvar-unlock -- also unlock DOOM's native console commands (god/noclip/give) in developer mode
  • backend: sh_target_any -- interactive wire-any mode (flag-gated pick-processor detour)
  • fix: release -- zip dist\platforms (not the removed dist\plugins) + sync the ui_bridge comment
  • fix: package -- ship qwindows.dll to \platforms\ so Qt finds it on a clean machine
  • installer: self-install snaphak.exe to %LOCALAPPDATA% on first run + auto-cleanup on uninstall
  • installer: record the PULLED release tag as the installed version
  • installer: changelog command + final "are you sure?" confirm (--yes) + edge-error friendliness
  • installer: DOOM-running check + user-friendly error messages throughout
  • installer: closed-beta updater -- token auth + --beta channel + set-token + help
  • ux: double-click interactive install + release-channel docs; release: auto-flag beta pre-releases
  • installer: richer snaphak version; docs: versioning story + auto-re-patcher stub
  • logs: consolidate runtime logs into snaphak_logs/; drop shield_arm.log in release
  • installer: add snaphak.exe -- end-user install/update/uninstall CLI
  • Initial commit: open-snaphak -- clean-room SnapHak clone + build/package pipeline