Skip to content

Releases: wnunezc/MFA-Forge

MFA-Forge v1.0.2

Choose a tag to compare

@wnunezc wnunezc released this 20 Jun 12:50
v1.0.2
563dd68

MFA-Forge v1.0.2

Changes

  • keep the Win32 owner thread responsive while agent and MCP wait for stdio
  • add bounded Windows Hello and native prompt supervision
  • expose additive process, instance and session identity in health responses
  • harden the persistent workspace engine against dead or unresponsive child processes
  • use a vendored winit 0.30.13 Windows patch to avoid mixed-DPI drag flicker and oversized window growth until the upstream fix is released
  • add CI guardrails for localization keys, public API documentation debt and production panic boundaries

Temporary dependency patch

MFA-Forge 1.0.2 overrides winit through [patch.crates-io] and uses
vendor/winit-0.30.13-dpi-drag. The vendored copy is based on the official
winit 0.30.13 source with a narrow Windows WM_DPICHANGED change for
mixed-DPI monitor drags. This reduces release risk for the Windows desktop
hotfix, but it is still a temporary non-upstream dependency. Replace it with the
official crates.io version as soon as the upstream project publishes the fix.

Issue closure matrix

Issue Closure evidence
#1 Extensive improvement rules Addressed as the 1.0.2 architecture audit plus targeted implementation: lifecycle blocking removed, native waits bounded, public health/session identity expanded, secret-safe audit boundaries preserved, app-data preferences moved behind storage, oversized storage/update/dialog responsibilities split, and release discipline documented. Requirements unrelated to MFA-Forge's current scope remain non-applicable rather than implemented as speculative features.
#2 Agent/MCP unresponsive after unlock Fixed by the shared stdio runtime, dedicated stdin reader, Win32 message pumping while idle, EOF/error/close handling, bounded Windows Hello/native waits, persistent engine hardening, one-hour soak evidence, and no new WER Application Hang 1002 during validation.
#3 Move audit/preferences/GUI file access behind ports GUI preferences and main-window state path now use mfa_forge_storage::app_data / preferences; audit JSONL append/read/summarize/compact now lives in mfa_forge_storage::audit_log, while GUI keeps only audit-entry semantics/redaction.
#4 Split oversized modules by existing responsibilities Storage repository IO, directory-registry normalization and history helpers were split into private modules; GUI update actions moved to app_actions::update; update dialog moved to dialogs::update. Large inline test sections remain where they need private access; they are not product runtime responsibilities.
#5 Reduce cryptographic test contention Tests now use a fast-test-kdf feature only in test builds/dev-dependencies, while production builds continue to use Argon2id 64 MiB / 3 iterations. A dedicated test asserts production-strength parameters remain available.

Test timing evidence

Initial timing on the Windows host before test KDF isolation showed repeated
Argon2 contention: mfa-forge-storage about 128.6s, mfa-forge-application
about 168.6s, and GUI MCP timing exceeded the 180s measurement window while
contending for Cargo/test locks.

After isolating fast test KDF parameters from production builds:

  • cargo test -p mfa-forge-storage: 1.46s
  • cargo test -p mfa-forge-application: 4.61s
  • cargo test -p mfa-forge-gui agent::mcp: 10.25s

Validation required before publication

  • full Rust quality gates
  • persistent agent and MCP Windows smoke
  • one-hour active soak without new Application Hang event 1002
  • optional extended eight-hour soak after the blocking release gates
  • installed upgrade from 1.0.1 to 1.0.2
  • GUI language smoke in English, Español, Français, हिन्दी and 中文
  • GitHub workflow_dispatch build artifact validated without publishing a release

Publication boundary

1.0.2 is the approved GitHub release line. GitHub publication uses tag
v1.0.2, MSI asset MFA-Forge-1.0.2-x64.msi, and checksum asset
MFA-Forge-1.0.2-x64.msi.sha256.txt. Winget publication is a separate PR
against microsoft/winget-pkgs; until that PR is accepted, winget may still
show wnunezc.MFA-Forge 1.0.1.

Assets

  • MFA-Forge-1.0.2-x64.msi
  • MFA-Forge-1.0.2-x64.msi.sha256.txt

MFA-Forge v1.0.1

Choose a tag to compare

@wnunezc wnunezc released this 25 May 23:28
b2aaeab

MFA-Forge v1.0.1

Changes

  • aligned MSI publisher metadata to wnunezc
  • preserved the Visual C++ runtime prerequisite for winget publication
  • recorded OpenGL 2.0 and VCRUNTIME140.dll dependency evidence in release validation

Assets

  • MFA-Forge-1.0.1-x64.msi
  • MFA-Forge-1.0.1-x64.msi.sha256.txt

MFA-Forge v1.0.0

Choose a tag to compare

@github-actions github-actions released this 08 May 22:10
v1.0.0
bf0b113

MFA-Forge 1.0.0

1.0.0 is the first stable public release of MFA-Forge.

Scope

  • stable version: 1.0.0
  • stable tag: v1.0.0
  • intended MSI asset: MFA-Forge-1.0.0-x64.msi
  • intended checksum asset: MFA-Forge-1.0.0-x64.msi.sha256.txt

Stable baseline

  • release line promoted from the validated RC26 code line
  • launcher-driven startup update path already validated on the installed edge RC25 -> RC26
  • bundled i18n corrections included for Español, Français, हिन्दी, and 中文

Validation gate

  • cargo fmt --all -- --check
  • cargo check --workspace
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace
  • cargo build --workspace --release
  • cargo wix --package mfa-forge-gui --no-build --target-bin-dir target/release --output target/rc/MFA-Forge-1.0.0-x64.msi

Local pre-publication evidence

  • local MSI path: target/rc/MFA-Forge-1.0.0-x64.msi
  • local pre-publication SHA256: F6FDBB11289B9957CD8FBDF245B4281D740CD24EA8E829282FDD39E4FD22813E

Public release evidence

  • published tag: v1.0.0
  • release URL: https://github.com/wnunezc/MFA-Forge/releases/tag/v1.0.0
  • workflow URL: https://github.com/wnunezc/MFA-Forge/actions/runs/25581377233
  • public MSI asset: MFA-Forge-1.0.0-x64.msi
  • public checksum asset: MFA-Forge-1.0.0-x64.msi.sha256.txt
  • public SHA256: 4551CEBF7492E68808DF1204916AB24A503F9E2422AC0636CEFABC9E6BD95455
  • local/public MSI hashes are not byte-identical in this line either

MFA-Forge v0.1.26-rc.26

Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 May 19:15
v0.1.26-rc.26
fcbe081

MFA-Forge 0.1.26-rc.26

0.1.26-rc.26 is the public RC cut to validate the literal installed edge RC25 -> RC26 with automatic launcher startup on GUI open, before unlock, using the helper handoff path for passive MSI apply.

Scope

  • release line: RC26
  • numeric version: 0.1.26
  • RC tag: v0.1.26-rc.26
  • intended MSI asset: MFA-Forge-RC26-x64.msi
  • intended checksum asset: MFA-Forge-RC26-x64.msi.sha256.txt

Validation target

  • exact installed baseline: local RC25
  • exact target: published RC26
  • exact path to prove: RC25 installed -> open GUI -> launcher discovers RC26 -> helper copy -> checksum verification -> passive MSI update -> installed binaries become 0.1.26

Local pre-publication evidence

  • local MSI path: target/rc/MFA-Forge-RC26-x64.msi
  • local pre-publication SHA256: A3BEA4E2736A94CF0A4C28C8D2D349C358C1983BF8A36533D1A9B2CAF5BAE1A3

Public release evidence

  • published tag: v0.1.26-rc.26
  • prerelease URL: https://github.com/wnunezc/MFA-Forge/releases/tag/v0.1.26-rc.26
  • workflow URL: https://github.com/wnunezc/MFA-Forge/actions/runs/25573838338
  • public MSI asset: MFA-Forge-RC26-x64.msi
  • public checksum asset: MFA-Forge-RC26-x64.msi.sha256.txt
  • public SHA256: C41442E5DCDF5D4BDA5BC1CB403D8FC3953D10A03BBFFB66D305DF12A3B515A5
  • local/public MSI hashes are not byte-identical in this line either

Installed validation result

  • exact baseline installed before the test:
    • mfa-forge-gui.exe -> 0.1.25
    • mfa-forge-agent.exe -> 0.1.25
    • mfa-forge-mcp.exe -> 0.1.25
    • mfa-forge-launcher.exe -> 0.1.25
  • exact trigger executed:
    • clear C:/Users/wnune/AppData/Local/OpsZone/MFA-Forge/data/updates/startup
    • open C:/Users/wnune/AppData/Local/MFA-Forge/bin/mfa-forge-gui.exe
  • observed updater path:
    • launcher auto report created
    • helper copy created in startup dir
    • public MSI and checksum downloaded to startup dir
    • checksum verified: expected = actual = C41442E5DCDF5D4BDA5BC1CB403D8FC3953D10A03BBFFB66D305DF12A3B515A5
    • installer command: msiexec.exe /i C:\Users\wnune\AppData\Local\OpsZone\MFA-Forge\data\updates\startup\MFA-Forge-RC26-x64.msi /passive
    • install result: exit_code = 0
  • post-update installed versions:
    • mfa-forge-gui.exe -> 0.1.26
    • mfa-forge-agent.exe -> 0.1.26
    • mfa-forge-mcp.exe -> 0.1.26
    • mfa-forge-launcher.exe -> 0.1.26
  • conclusion:
    • the literal edge RC25 installed -> open GUI -> update to RC26 before unlock is validated end to end

MFA-Forge v0.1.24-rc.24

Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 May 18:30
v0.1.24-rc.24
b2a19ec

MFA-Forge 0.1.24-rc.24

0.1.24-rc.24 is the public RC cut to validate the literal installed edge RC23 -> RC24 with automatic launcher startup on GUI open, before unlock.

Scope

  • release line: RC24
  • numeric version: 0.1.24
  • RC tag: v0.1.24-rc.24
  • intended MSI asset: MFA-Forge-RC24-x64.msi
  • intended checksum asset: MFA-Forge-RC24-x64.msi.sha256.txt

Validation target

  • exact installed baseline: local RC23
  • exact target: published RC24
  • exact path to prove: RC23 installed -> open GUI -> launcher discovers RC24 -> checksum verification -> Windows Installer handoff -> installed binaries become 0.1.24

Local pre-publication evidence

  • local MSI path: target/rc/MFA-Forge-RC24-x64.msi
  • local pre-publication SHA256: 976F781E2AC11EEB981B88D00DF979F848DB952CB291DAAC2A07A9317251927C

MFA-Forge v0.1.22-rc.22

Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 May 16:52
v0.1.22-rc.22
d8ad351

MFA-Forge 0.1.22-rc.22

0.1.22-rc.22 is the first public RC in this line where the installed product is expected to auto-check GitHub for a newer prerelease when the GUI opens, delegating discovery, checksum verification, and MSI handoff to mfa-forge-launcher.exe.

Scope

  • release line: RC22
  • numeric version: 0.1.22
  • RC tag: v0.1.22-rc.22
  • intended MSI asset: MFA-Forge-RC22-x64.msi
  • intended checksum asset: MFA-Forge-RC22-x64.msi.sha256.txt

User-facing updater behavior

  • the installed GUI now triggers the launcher-driven update check when the main window opens
  • the launcher now discovers the latest GitHub prerelease RC instead of assuming a hard-coded immediate next RC
  • the manual update action remains available and now checks for the latest published prerelease RC as well

Validation target for this release

  • exact installed baseline: local RC21 installed on the host
  • exact release target: published RC22 GitHub prerelease assets
  • exact path to prove: RC21 installed -> open GUI -> launcher discovers RC22 -> checksum verification -> Windows Installer handoff -> installed binaries become 0.1.22

Release gate

  • cargo fmt --all -- --check
  • cargo check --workspace
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace
  • cargo build --workspace --release
  • cargo wix --package mfa-forge-gui --no-build --target-bin-dir target/release --output target/rc/MFA-Forge-RC22-x64.msi
  • (Get-FileHash -LiteralPath 'target/rc/MFA-Forge-RC22-x64.msi' -Algorithm SHA256).Hash

Local pre-publication evidence

  • local MSI path: target/rc/MFA-Forge-RC22-x64.msi
  • local pre-publication SHA256: 95BE534DA8185493A67E3012E5E38C71FAE828A063D684B75E993249398110B0

Evidence to finalize after publication

  • GitHub release URL and workflow run
  • public MSI checksum
  • launcher report from the installed RC21 host
  • msiexec result for the RC21 -> RC22 update
  • installed post-update binary versions
  • post-update GUI and mfa-forge-mcp smoke

MFA-Forge v0.1.20-rc.20

Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 May 05:00
v0.1.20-rc.20
22b2a22

MFA-Forge 0.1.20-rc.20

0.1.20-rc.20 closes the RC19 updater gap by restoring mfa-forge-launcher.exe to the installed MSI surface, adding an explicit GUI handoff for the next RC line, and validating the real RC19 -> RC20 upgrade path on the user installation with the published prerelease assets.

Scope

  • release line: RC20
  • numeric version: 0.1.20
  • RC tag: v0.1.20-rc.20
  • GitHub prerelease URL: https://github.com/wnunezc/MFA-Forge/releases/tag/v0.1.20-rc.20
  • MSI asset: MFA-Forge-RC20-x64.msi
  • checksum asset: MFA-Forge-RC20-x64.msi.sha256.txt

User-facing changes

  • the installed MSI now includes mfa-forge-launcher.exe
  • the GUI now exposes a deliberate Install next RC update action instead of implying any auto-update on app open
  • RC20 does not claim open MFA-Forge and it updates itself; the validated RC19 -> RC20 path is the RC20 MSI upgrade over the installed RC19 baseline

Engineering changes

  • workspace and package version advanced to 0.1.20
  • crates/gui/wix/main.wxs now packages mfa-forge-launcher.exe as an installed per-user binary
  • the GUI gained an explicit RC-update dialog that stages the next RC through the installed launcher
  • crates/cli/src/launcher.rs no longer carries RC18-specific prerelease copy in errors
  • release docs and architecture notes now distinguish the validated manual RC19 -> RC20 edge from the future launcher-driven path available after RC20 is installed

Validation evidence

Commands executed locally before publication:

  • pwsh -Command "cargo fmt --all -- --check"
  • pwsh -Command "cargo check --workspace"
  • pwsh -Command "cargo clippy --workspace --all-targets -- -D warnings"
  • pwsh -Command "cargo test --workspace"
  • pwsh -Command "cargo build --workspace --release"
  • pwsh -Command "cargo wix --package mfa-forge-gui --no-build --target-bin-dir target/release --output target/rc/MFA-Forge-RC20-x64.msi"
  • pwsh -Command "(Get-FileHash -LiteralPath 'target/rc/MFA-Forge-RC20-x64.msi' -Algorithm SHA256).Hash"

Manual findings captured during this RC20 pass:

  • baseline before the published-asset proof: C:/Users/wnune/AppData/Local/MFA-Forge/bin/ was restored to published RC19 (0.1.19) and did not contain mfa-forge-launcher.exe
  • exact public-asset upgrade command executed against the installed published RC19 baseline:
    • msiexec /i D:\OpsZone\DevWorkspace\Projects\Desktop\MFA-Forge\target\rc\published-rc20\MFA-Forge-RC20-x64.msi /passive /L*V D:\OpsZone\DevWorkspace\Projects\Desktop\MFA-Forge\target\rc\update-proof\msiexec-install-published-rc20-over-published-rc19.log
  • msiexec result: exit code 0
  • post-upgrade installed inventory now includes:
    • mfa-forge-gui.exe
    • mfa-forge-agent.exe
    • mfa-forge-mcp.exe
    • mfa-forge-launcher.exe
  • post-upgrade installed versions confirmed:
    • mfa-forge-gui.exe -> 0.1.20
    • mfa-forge-agent.exe -> 0.1.20
    • mfa-forge-mcp.exe -> 0.1.20
    • mfa-forge-launcher.exe -> 0.1.20
  • GUI smoke:
    • installed mfa-forge-gui.exe started successfully
    • process remained alive after 8s
    • CloseMainWindow() succeeded and the process exited with code 0
  • local surface smoke:
    • installed mfa-forge-mcp.exe answered initialize successfully
    • reported serverInfo.version = 0.1.20

Packaging evidence:

  • release build: target/release
  • local pre-publication MSI generation: target/rc/MFA-Forge-RC20-x64.msi
  • local pre-publication checksum generation: target/rc/MFA-Forge-RC20-x64.msi.sha256.txt
  • local pre-publication SHA256: 1BAAE242E1937100E8E313AA30AAEC4B5FE82823AD31DB464796DFC39B099007
  • published RC19 asset used as restored baseline: target/rc/published-rc19/MFA-Forge-RC19-x64.msi
  • published RC20 asset used for the final proof: target/rc/published-rc20/MFA-Forge-RC20-x64.msi
  • published RC20 checksum asset: target/rc/published-rc20/MFA-Forge-RC20-x64.msi.sha256.txt
  • published RC20 SHA256: 9B40572462B4699E5D8F720EC72A04E19002A55093E8FA762ABC8C265FBDF1E5
  • installed-upgrade log: target/rc/update-proof/msiexec-install-published-rc20-over-published-rc19.log
  • workflow run: https://github.com/wnunezc/MFA-Forge/actions/runs/25537176391

Release truth for RC20

  • validated path for the user installation today: manual MSI upgrade from published installed RC19 to published RC20
  • launcher-driven path for future RCs: available only after RC20 is installed, because RC20 is the first installed line in this arc that actually ships mfa-forge-launcher.exe
  • startup auto-update on GUI open: not implemented and not claimed
  • important packaging note: the workflow-produced public MSI differs from the pre-publication local MSI, so the final proof and checksum evidence for RC20 are anchored to the published release assets

MFA-Forge v0.1.19-rc.19

Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 May 13:54
v0.1.19-rc.19
49e5dfd

MFA-Forge 0.1.19-rc.19

0.1.19-rc.19 advances the public prerelease line after RC18. This candidate focuses on scanner hygiene for test fixtures, English-first UI localization with persisted language selection, and a navigable in-app help surface with localized guides.

Scope

  • release line: RC19
  • numeric version: 0.1.19
  • RC tag: v0.1.19-rc.19
  • MSI asset: MFA-Forge-RC19-x64.msi
  • checksum asset: MFA-Forge-RC19-x64.msi.sha256.txt

User-facing changes

  • the GUI now defaults to English
  • secondary UI languages are configurable: Espanol, Francais, Hindi, and Chinese
  • language preference is persisted alongside the GUI theme preference
  • MFA-Forge now includes an embedded help window with section navigation and search
  • localized help guides now explain purpose, workflow, and operational expectations instead of only naming surfaces

Engineering changes

  • deterministic Base32 test-secret helpers replace repeated high-entropy hardcoded secrets in tests and fixtures
  • help rendering is integrated through embedded Markdown guides per language
  • agent prompt windows, loader flows, dialogs, status bar, and main GUI surfaces were aligned with the English-first UI layer
  • release docs were advanced from RC18 references to RC19 references

Validation evidence

Commands executed locally:

  • pwsh -Command "cargo fmt --all -- --check"
  • pwsh -Command "cargo check --workspace"
  • pwsh -Command "cargo clippy --workspace -- -D warnings"
  • pwsh -Command "cargo test --workspace"
  • pwsh -Command "cargo build --workspace --release"
  • pwsh -Command "cargo wix --package mfa-forge-gui --no-build --nocapture --target-bin-dir target/release --output target/rc/MFA-Forge-RC19-x64.msi"
  • pwsh -Command "(Get-FileHash -LiteralPath 'target/rc/MFA-Forge-RC19-x64.msi' -Algorithm SHA256).Hash"

Manual findings captured during this RC19 pass:

  • the embedded help window originally showed red egui duplicate-ID diagnostics
  • the issue was fixed by assigning distinct id_salt values to the help window scroll areas
  • post-fix compilation passed again

Packaging evidence:

  • release build: target/release
  • MSI generation: target/rc/MFA-Forge-RC19-x64.msi
  • MSI size: 11,194,368 bytes
  • checksum generation: target/rc/MFA-Forge-RC19-x64.msi.sha256.txt
  • SHA256: 6778E8BB625DADF8C5C79DCF7A2A0DBC8D54539113F47EE62FBC07B71E30EDB5
  • WiX warnings observed: ICE91 for the per-user Bin install path, matching the current packaging model
  • GitHub prerelease URL: pending

Manual smoke still recommended after MSI creation:

  • GUI unlock on installed RC19
  • help window navigation and search in each language
  • mfa-forge-agent unlock and close
  • mfa-forge-mcp unlock and close
  • password-rotation prompt deny/approve clarity
  • launcher-driven update path from installed RC18 to RC19

MFA-Forge v0.1.18-rc.18

Pre-release

Choose a tag to compare

@wnunezc wnunezc released this 06 May 05:42
v0.1.18-rc.18
3b25db9

MFA-Forge 0.1.18-rc.18

0.1.18-rc.18 is the first public prerelease line for the launcher-driven update flow from installed RC17.

Release assets

  • primary MSI: MFA-Forge-RC18-x64.msi
  • checksum: MFA-Forge-RC18-x64.msi.sha256.txt
  • RC tag: v0.1.18-rc.18
  • release channel: GitHub prerelease

Highlights

  • separate mfa-forge-launcher binary for release discovery, checksum verification, and MSI handoff
  • Windows-only GUI, local agent session, and minimal MCP server remain unchanged in scope
  • validated local RC17 -> RC18 upgrade path through the launcher flow
  • MSI packaging hardened to replace installed binaries correctly during upgrade

Validation summary

  • cargo fmt --all -- --check
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace
  • cargo build --workspace --release
  • cargo wix --package mfa-forge-gui --no-build --target-bin-dir target/release --output target/rc/MFA-Forge-RC18-x64.msi
  • SHA256 generated for MFA-Forge-RC18-x64.msi
  • launcher detects RC18 release metadata and asset name
  • launcher verifies checksum before install handoff
  • installed RC17 upgrades cleanly to RC18
  • final public prerelease publication

Evidence

  • MSI path: target/rc/MFA-Forge-RC18-x64.msi
  • SHA256: 83508AAABE4FE8430F6C68584CD1A06AC011C3C229F22C615713CC1F0FABAECA
  • local upgrade proof from RC17 to RC18: completed successfully
  • installed product version after upgrade: 0.1.18

Known limitations

  • no loopback API
  • no updater daemon
  • no broader client-scoped policy model yet
  • no stable release publication yet

Out of scope

  • new MCP surfaces
  • GUI relayout
  • stable 1.0.0 release work