-
Guará 1.3.5
StableCI / Format and clippy (push) Successful in 19sCI / Dependency audit (push) Successful in 9sRelease / Create release (push) Successful in 8sCI / Check desktop app (Linux) (push) Successful in 1m24sRelease / CLI (linux-x86_64) (push) Successful in 2m13sCI / Tests (Linux) (push) Successful in 4m10sRelease / CLI (linux-aarch64) (push) Successful in 1m48sRelease / Desktop app (linux-x86_64) (push) Successful in 5m45sRelease / Desktop app (linux-aarch64) (push) Successful in 5m18sRelease / Desktop app (windows) (push) Successful in 4m19sreleased this
2026-10-31 13:20:43 +00:00 | 0 commits to main since this releaseAdded
- One-click desktop update. The "Update now" button actually downloads, verifies (SHA-256) and installs the new version now, instead of only linking to the Releases page. Works for all three desktop packages: AppImage (atomic self-replace),
.deb(dpkg -i, no new password prompt — the app is already running as root/administrator by the time you click it), and the Windows installer (silent/Sinstall). On Linux, the app restarts itself automatically; on Windows, the installer runs silently but the app does not reopen on its own yet — start it again once the install finishes.
Changed
- The repository moved to the Ciberfauna organization (
ciberfauna/guara, waslucasrguerra/guara). Important notice for existing installations: versions up to 1.3.4 have the old location baked into their update check; they will not find this release automatically. Download 1.3.5 once manually from the new Releases page, and future update checks will work through the new location.
Downloads
- One-click desktop update. The "Update now" button actually downloads, verifies (SHA-256) and installs the new version now, instead of only linking to the Releases page. Works for all three desktop packages: AppImage (atomic self-replace),
-
Guará 1.3.4
StableRelease / Create release (push) Successful in 6sCI / Check desktop app (Linux) (push) Successful in 1m22sRelease / CLI (linux-x86_64) (push) Successful in 1m45sCI / Tests (Linux) (push) Successful in 4m7sRelease / CLI (linux-aarch64) (push) Successful in 2m36sRelease / Desktop app (linux-x86_64) (push) Successful in 4m58sRelease / Desktop app (windows) (push) Successful in 3m44sCI / Format and clippy (push) Successful in 22sCI / Dependency audit (push) Successful in 10sRelease / Desktop app (linux-aarch64) (push) Successful in 8m31sreleased this
2026-10-31 11:09:24 +00:00 | 3 commits to main since this releaseFixed
- Desktop app: only one window on startup. The main window used to be visible from launch, so the unprivileged instance's normal window would show, flash while the system asked for the administrator password, and only then get replaced by the elevated relaunch's window a moment later. The window now stays hidden until elevation is resolved — either already elevated, elevation failed (the window then shows the warning), or this is the already-elevated relaunched instance — so only one window ever appears, matching Sabiá.
Downloads
-
Guará 1.3.3
StableCI / Format and clippy (push) Successful in 2m46sCI / Dependency audit (push) Successful in 11sCI / Check desktop app (Linux) (push) Successful in 4m9sCI / Tests (Linux) (push) Successful in 8m6sRelease / Create release (push) Successful in 8sRelease / CLI (linux-aarch64) (push) Successful in 2m35sRelease / CLI (linux-x86_64) (push) Successful in 3m21sRelease / Desktop app (linux-aarch64) (push) Successful in 6m37sRelease / Desktop app (linux-x86_64) (push) Successful in 12m16sRelease / Desktop app (windows) (push) Successful in 9m40sreleased this
2026-10-31 10:13:21 +00:00 | 5 commits to main since this releaseUnified updater architecture with Sabiá: migrated from the signed
tauri-plugin-updaterto direct Gitea Releases API checking and self-updating with SHA-256 verification.Changed
- New update mechanism: The updater was rewritten to match Sabiá's model. Updates now query the Gitea Releases API directly, verify package checksums via
.sha256, and no longer rely onlatest.jsonor minisign updater keys. - CLI self-update (
guara update): The CLI now supportsguara update(checks for new versions) andguara update --apply(downloads, verifies SHA-256 checksum, and atomically replaces the binary). - Desktop app notice: The desktop app checks Gitea on startup and links directly to the new release packages.
- Important notice for existing installations: Versions up to 1.3.2 used the previous signed
tauri-plugin-updatermechanism looking forlatest.json. Because that mechanism has been retired, existing installs will not automatically find version 1.3.3: download version 1.3.3 once manually from Gitea Releases, and future update checks will work through the new unified mechanism. - Removed
tauri-plugin-updaterdependency,createUpdaterArtifactsconfiguration, and theupdater(Build latest.json) CI job.
Downloads
- New update mechanism: The updater was rewritten to match Sabiá's model. Updates now query the Gitea Releases API directly, verify package checksums via
-
Guará 1.3.2
StableCI / Format and clippy (push) Successful in 1m57sCI / Dependency audit (push) Successful in 13sCI / Check desktop app (Linux) (push) Successful in 3m54sCI / Tests (Linux) (push) Failing after 7m25sRelease / Create release (push) Successful in 6sRelease / CLI (linux-aarch64) (push) Successful in 1m48sRelease / CLI (linux-x86_64) (push) Successful in 2m39sRelease / Desktop app (linux-aarch64) (push) Successful in 10m9sRelease / Desktop app (linux-x86_64) (push) Successful in 12m20sRelease / Desktop app (windows) (push) Successful in 7m32sRelease / Build latest.json (push) Successful in 5sreleased this
2026-10-30 17:06:33 +00:00 | 14 commits to main since this releaseThe project moved from GitHub to Gitea, and the update check followed it.
Changed
- Updates now come from Gitea. The desktop app's update card reads
latest.jsonfromgit.lucasrguerra.dev.brinstead of GitHub Releases.
Versions up to 1.3.1 still look at GitHub, which is no longer reachable, so
they cannot find this release: download 1.3.2 once, and later updates are
automatic. - The CLI is published for Linux x86_64 and aarch64 only, built by the Gitea CI
when av*tag is pushed, with a.sha256next to each package. There is
no Windows CLI any more. The desktop app still ships for Linux (AppImage,
.deb) and Windows (NSIS.exe, cross-compiled from Linux). There is no
macOS build: it needs Apple's SDK and code signing, which this project's CI
(one Linux runner) cannot provide.
Downloads
- Updates now come from Gitea. The desktop app's update card reads
-
Guará 1.3.1
StableRelease / Cria a release (push) Canceled after 0sRelease / CLI (linux-aarch64) (push) Canceled after 0sRelease / CLI (linux-x86_64) (push) Canceled after 0sRelease / CLI (macos-aarch64) (push) Canceled after 0sRelease / CLI (macos-x86_64) (push) Canceled after 0sRelease / CLI (windows-x86_64) (push) Canceled after 0sRelease / App desktop (linux-x86_64) (push) Canceled after 0sRelease / App desktop (macos-aarch64) (push) Canceled after 0sRelease / App desktop (macos-x86_64) (push) Canceled after 0sRelease / App desktop (windows-x86_64) (push) Canceled after 0sRelease / Publica a release (push) Canceled after 0sreleased this
2026-10-30 15:38:33 +00:00 | 19 commits to main since this releaseChanged
- New official logo: the maned wolf (guará) inside the orange ring, drawn by the project's author, with a transparent background so the same art works in the light and dark themes. It replaces the old track-disc logo in the app (sidebar, top bar and home screen), the favicon, the desktop app icons and the README.
guara uiserves the newguara.pngandguara-s.png;scripts/gerar-logo.pyderives the small logo and the app icon from the official art.- Development:
scripts/verificar.shruns locally what the CI runs, with an optional pre-push hook (scripts/instalar-hooks.sh), and the CI no longer runs on documentation-only changes.
Notes
- No change to scanning, recovery, signing or any other behavior. This is the first release after the in-app updater: an app on 1.3.0 should offer Update now.
- The screenshots in
docs/img/still show the old logo and will be redone.
Downloads
-
Guará 1.3.0
StableRelease / Cria a release (push) Canceled after 0sRelease / CLI (linux-aarch64) (push) Canceled after 0sRelease / CLI (linux-x86_64) (push) Canceled after 0sRelease / CLI (macos-aarch64) (push) Canceled after 0sRelease / CLI (macos-x86_64) (push) Canceled after 0sRelease / CLI (windows-x86_64) (push) Canceled after 0sRelease / App desktop (linux-x86_64) (push) Canceled after 0sRelease / App desktop (macos-aarch64) (push) Canceled after 0sRelease / App desktop (macos-x86_64) (push) Canceled after 0sRelease / App desktop (windows-x86_64) (push) Canceled after 0sRelease / Publica a release (push) Canceled after 0sreleased this
2026-10-30 15:38:33 +00:00 | 29 commits to main since this releaseAdded
- Update from inside the desktop app. On startup the app asks GitHub for the release's
latest.json; if there is a newer version, a card offers Update now. It downloads the package, verifies its minisign signature against the public key built into the app, installs and reopens (the AppImage is replaced in place; Windows and macOS use the installer). Installs from.debor.rpmonly show the notice. Settings can turn the startup check off and has a Check now button. The check is one HTTP request and sends nothing of yours. - Digital signatures (Ed25519):
guara sign keygen | file | verify | recovery. With a key configured,recoverandreportsign the manifest and the report by themselves.guara sign recoverychecks the manifest signature and the hash of every recovered file (and refuses manifest paths that leave the folder). The signature is plain Ed25519 over a documented message, soopensslverifies it too. Comparing the key fingerprint (--trust) says whose key it is; the signed time is the local clock, not a third-party timestamp. - Virtual disks: QCOW2 with a backing file, VMDK snapshots (parent by name or, in VirtualBox, by UUID; the child is refused if the parent's CID changed) and DMG with LZFSE chunks.
- CI with real reference images on Linux, macOS and Windows (they were skipped before), and an XFS image deleted by the real kernel generated with
sudoon the Linux runner. - Release pipeline: update packages are signed with a key kept in the repository's
releaseenvironment (tagsv*only), andlatest.jsonis built in one step byscripts/make-latest-json.py.
Changed
- XFS is now 🟡. On a real XFS (v5, kernel deletion) the inode and extent list are wiped, so the metadata path finds nothing; the content of files with a recognizable structure comes back by carving, without name or folder. The earlier path only worked on simulated deletions. The name-and-folder test is kept
ignored until the journal is read. - CI
aptsteps use cached.debs, a time limit per attempt and retries (they took up to 28 minutes on a slow mirror day). - Dependencies:
ctutils0.4.5 (RUSTSEC-2026-0385); newed25519-compact,lzfse_rust,tauri-plugin-updater. - The README and ROADMAP now say the update check is the only network use by default.
Notes
- Versions before 1.3.0 do not have the updater: from 1.2.0, replace the AppImage by hand one last time. The first update inside the app is 1.3.0 to the next release.
- Still missing: password-protected DMG, an identity check for VHD, VHDX and QCOW2 parents, third-party timestamps (RFC 3161), XFS journal reading, and APFS validation with real deletion (needs an image from a real Mac).
- CLI output remains in Portuguese.
Downloads
- Update from inside the desktop app. On startup the app asks GitHub for the release's
-
Guará 1.2.0
StableRelease / Cria a release (push) Canceled after 0sRelease / CLI (linux-aarch64) (push) Canceled after 0sRelease / CLI (linux-x86_64) (push) Canceled after 0sRelease / CLI (macos-aarch64) (push) Canceled after 0sRelease / CLI (macos-x86_64) (push) Canceled after 0sRelease / CLI (windows-x86_64) (push) Canceled after 0sRelease / App desktop (linux-x86_64) (push) Canceled after 0sRelease / App desktop (macos-aarch64) (push) Canceled after 0sRelease / App desktop (macos-x86_64) (push) Canceled after 0sRelease / App desktop (windows-x86_64) (push) Canceled after 0sRelease / Publica a release (push) Canceled after 0sreleased this
2026-10-30 15:38:32 +00:00 | 63 commits to main since this releaseAdded
- Virtual disk containers (read-only): QCOW2 (v2 and v3, compressed clusters with deflate or zstd), VMDK (sparse,
streamOptimized, and text descriptors with flat and zero extents), VHD and VHDX (fixed, dynamic and differencing, following the parent chain) and DMG (UDIF with zero, raw, ADC, zlib and bzip2 chunks). They open through the same path as E01 and AFF4, so partitions, file systems and encrypted volumes work inside them. Images that would read wrong are refused with the reason: QCOW2 with a backing file or encryption, VMDK with a parent or in SEsparse, password-protected DMG, DMG with LZFSE chunks. The VHDX log is not replayed. - Audit trail (
auditoria.jsonl,guara audit): every action on evidence (inspect,scan,recover,image,hash,search,verify, exports and sessions) is recorded with UTC time, system user, host, version and details, chained by SHA-256.guara audit --verifyreports the entry where the chain breaks. SetGUARA_EXAMINERto record the examiner; passwords and keys are never written. - PDF report:
guara report out.pdf(and the interface's report button, by file extension) writes an A4 PDF with the same sections as the HTML, using a built-in writer with the standard fonts and no new dependency. Both formats now show the audit trail status and the hash of its last entry. - APFS free-space map: the container's space manager (spaceman), chunk-info blocks and bitmaps are read, so deep scans of an APFS volume cover only unallocated blocks. Containers that use chunk-info address blocks fall back to the whole volume, with a warning.
scripts/fetch-testdata.shalso downloads the dfvfs virtual disk images used by the container tests.
Changed
- The APFS partition warning no longer says metadata is unsupported; it says the free-space map is read and that encrypted (FileVault) volumes need the key.
- The interface's report dialog explains that the file extension chooses PDF or HTML.
Notes
- Containers were checked by hash against an independent reader (7-Zip) on real images from dfvfs and VirtualBox, including differencing VHD and VHDX; the small fixtures in
tests/fixtures/vdiskrun in CI. - APFS deletion is still tested only in simulation, so APFS stays 🟡 in the roadmap.
- CLI output remains in Portuguese.
Downloads
- Virtual disk containers (read-only): QCOW2 (v2 and v3, compressed clusters with deflate or zstd), VMDK (sparse,
-
Guará 1.1.0
StableRelease / Cria a release (push) Canceled after 0sRelease / CLI (linux-aarch64) (push) Canceled after 0sRelease / CLI (linux-x86_64) (push) Canceled after 0sRelease / CLI (macos-aarch64) (push) Canceled after 0sRelease / CLI (macos-x86_64) (push) Canceled after 0sRelease / CLI (windows-x86_64) (push) Canceled after 0sRelease / App desktop (linux-x86_64) (push) Canceled after 0sRelease / App desktop (macos-aarch64) (push) Canceled after 0sRelease / App desktop (macos-x86_64) (push) Canceled after 0sRelease / App desktop (windows-x86_64) (push) Canceled after 0sRelease / Publica a release (push) Canceled after 0sreleased this
2026-10-30 15:38:31 +00:00 | 72 commits to main since this releaseAdded
- Automated translation check (
scripts/check-ui-i18n.mjs): scans the interface JS, HTML and the labels emitted by the Rust core, fails on Portuguese text without an English entry and on duplicate dictionary keys. It runs in the CI lint job. - Dependabot group for RustCrypto:
sha2,sha1,md-5,hmac,pbkdf2,ripemd,aes,argon2,cipheranddigestnow arrive in one update, because their traits are only compatible when the versions move together.
Changed
- English interface for core messages: the most common errors from the core now have
{n}patterns in the dictionary, so paths and sizes are translated too. - Notifications in the chosen language: the core formats scan/recovery notifications using the saved interface language (
ui_langfollowslangor the system locale when unset). - ISO 8601 dates: EXIF, PDF and MP4 metadata dates are emitted as
YYYY-MM-DDTHH:MM:SS(MP4 withZ) and formatted by the interface in the selected locale, instead of a pre-formatted Brazilian date. - RustCrypto on digest 0.11 / cipher 0.5:
aes0.9,sha20.11,sha10.11,md-50.11,hmac0.13,pbkdf20.13,ripemd0.2 andargon20.6. BitLocker, LUKS and FileVault 2 were checked against the reference images. - Release workflow:
tauri-actionupdated to v1; the publish job restores the release name and the CHANGELOG notes after the desktop builds, so v1 cannot overwrite them. - Docker documentation:
--device=...:rwas verified with a loop device (inspect,scan,recoverread; writes are refused). The SMART/SYS_RAWIOwording now states what was and was not verified. - Superset workspace: setup, Run and teardown were verified in real workspaces; two interfaces get different ports, and deleting a workspace stops its
guara ui.
Fixed
- Eight duplicated keys in
apps/gui/ui/i18n-en.js(the last one won silently). - Untranslated fragments split by inline tags, metadata labels and preview messages that the previous manual pass missed.
Notes
- No change to scanning or recovery logic. The encrypted-volume tests pass with
GUARA_REQUIRE_FIXTURES=1. - CLI output remains in Portuguese.
Downloads
- Automated translation check (
-
Guará 1.1.0-rc1
Pre-ReleaseRelease / Cria a release (push) Canceled after 0sRelease / CLI (linux-aarch64) (push) Canceled after 0sRelease / CLI (linux-x86_64) (push) Canceled after 0sRelease / CLI (macos-aarch64) (push) Canceled after 0sRelease / CLI (macos-x86_64) (push) Canceled after 0sRelease / CLI (windows-x86_64) (push) Canceled after 0sRelease / App desktop (linux-x86_64) (push) Canceled after 0sRelease / App desktop (macos-aarch64) (push) Canceled after 0sRelease / App desktop (macos-x86_64) (push) Canceled after 0sRelease / App desktop (windows-x86_64) (push) Canceled after 0sRelease / Publica a release (push) Canceled after 0sreleased this
2026-10-30 15:38:31 +00:00 | 73 commits to main since this releaseMudanças desde v1.0.1
- release: 1.1.0 (
b4a8572)
Downloads
- release: 1.1.0 (
-
Guará 1.0.1
StableRelease / Cria a release (push) Canceled after 0sRelease / CLI (linux-aarch64) (push) Canceled after 0sRelease / CLI (linux-x86_64) (push) Canceled after 0sRelease / CLI (macos-aarch64) (push) Canceled after 0sRelease / CLI (macos-x86_64) (push) Canceled after 0sRelease / CLI (windows-x86_64) (push) Canceled after 0sRelease / App desktop (linux-x86_64) (push) Canceled after 0sRelease / App desktop (macos-aarch64) (push) Canceled after 0sRelease / App desktop (macos-x86_64) (push) Canceled after 0sRelease / App desktop (windows-x86_64) (push) Canceled after 0sRelease / Publica a release (push) Canceled after 0sreleased this
2026-10-30 15:38:30 +00:00 | 74 commits to main since this releaseAdded
- Docker image of the command line tool (
Dockerfile, docs/docker.md): for Linux hosts, servers without a desktop and forensic image files. The graphical interface is not served from the container. - Interface screenshots in the README and in the new docs/interface.md, taken from the real interface on a synthetic test image.
- Superset workspace configuration (
.superset/): setup, run and teardown scripts for parallel workspaces.
Changed
- Documentation: English is now the main language. Portuguese versions live in
*.pt-BR.mdanddocs/pt-BR/, with a language switch at the top of each file. - English interface completed: scan options, the disk image dialog, metadata labels (EXIF, PDF, MP4), file kinds, disk health fields, selection counters and preview messages were still showing in Portuguese.
- Language switch: the explorer now redraws after changing the language in Settings, so dates and month headings follow it.
- Dependencies:
getrandom0.4 andwindows-sys0.61. GitHub Actions updated (checkout7,setup-node7,github-script9).
Fixed
- White text on a white background in the Language and Sort drop-down lists with the dark theme (including Auto with the system in dark mode).
- The "Format" field of the disk image dialog was translated as "Form factor" in English.
Notes
- No change to scanning or recovery logic. The dependency updates touch the token of the local interface server (
getrandom) and the Windows device bindings (windows-sys). - Error messages from the core, notifications and the terminal output are still in Portuguese.
Downloads
- Docker image of the command line tool (