• v0.4.0 c1983c77a5

    v0.4.0
    Some checks failed
    Check / fmt + clippy + build + tests (push) Failing after 5s
    Build Windows binary / Build explorer-bookmarks (Windows x86_64) (push) Successful in 16s
    Release / Build and release explorer-bookmarks binary (push) Successful in 21s
    Stable

    David released this 2026-05-15 03:32:01 +02:00 | 10 commits to main since this release

    Changelog

    c1983c7 Merge pull request 'Release v0.4.0' (#31) from release/v0.4.0 into main
    3528c67 Release v0.4.0
    6a36e8b Merge pull request 'chore: group justfile recipes for just --list' (#30) from chore/justfile-groups into main
    7ebb1be chore: tag justfile recipes with [group(...)] attributes
    4e65c45 Merge pull request 'ci: rename build-oci-image.yml to build-windows.yml' (#29) from chore/rename-build-windows-workflow into main
    3c80898 ci: update path-self-reference in build-windows.yml
    7ad0fa2 ci: rename build-oci-image.yml to build-windows.yml
    30f7bb4 Merge pull request 'chore: align with governance repo conventions' (#28) from chore/governance-alignment into main
    cf627ae chore: align with governance repo conventions
    429ad9e Merge pull request 'ci: publish binary to current repo owner' (#27) from fix/publish-to-current-org into main
    54af956 ci: publish binary to current repo owner
    e0b9713 Merge pull request 'chore: add check workflow and pre-commit recipes' (#26) from chore/checks-and-pre-commit into main
    67e98c3 chore: add check workflow and pre-commit recipes
    e28c2a5 Merge pull request 'ci: build from rust-builder-* (rust 1.94)' (#25) from chore/rust-builder-1.94 into main
    f028b08 ci: build from rust-builder-* (rust 1.94)
    6c7d11f Merge pull request 'chore/checkout-v5' (#24) from chore/checkout-v5 into main
    6f33862 chore: Sync .gitignore with other repos
    24a9e57 chore: Sync .gitignore with other repos
    dc6a43b ci: bump actions/checkout to v5
    13ee1c8 Merge pull request 'Show version, git hash, and build date in CLI output' (#23) from feat/version-info into main
    25db730 Show version, git hash, and build date in CLI output
    cb45dcc Merge pull request 'Update .forgejo/workflows/build-oci-image.yml' (#22) from nrupard-patch-1 into main
    d72000b Update .forgejo/workflows/build-oci-image.yml
    ea412cf Merge pull request 'Add LICENSE' (#21) from nrupard-patch-1 into main
    12468a6 Add LICENSE

    Downloads
  • v0.3.3 4a6c38cf4c

    v0.3.3
    All checks were successful
    Build Windows binary / Build and push explorer-bookmarks binary (push) Successful in 17s
    Release / Build and release explorer-bookmarks binary (push) Successful in 54s
    Stable

    David released this 2026-04-16 02:34:01 +02:00 | 35 commits to main since this release

    Changelog

    4a6c38c Merge pull request 'Release v0.3.3' (#20) from release/v0.3.3 into main
    0244d10 Release v0.3.3
    1ec20f3 Merge pull request 'Fix changelog including entire history instead of just new commits' (#19) from fix-changelog-range into main
    703c82b Fix changelog including entire history instead of just new commits
    79a1d70 Merge pull request 'Look up existing release by tag instead of creating a duplicate' (#18) from fix-release-lookup into main
    b739e0f Look up existing release by tag instead of creating a duplicate

    Downloads
  • v0.3.2 5cb8003346

    v0.3.2
    Some checks failed
    Release / Build and release explorer-bookmarks binary (push) Failing after 7s
    Build Windows binary / Build and push explorer-bookmarks binary (push) Successful in 7s
    Stable

    David released this 2026-04-16 02:23:56 +02:00 | 41 commits to main since this release

    Changelog

    5cb8003 Merge pull request 'Release v0.3.2' (#17) from release/v0.3.2 into main
    c1417fe Release v0.3.2
    d5750b7 Merge pull request 'Rewrite release workflow in pure Nushell' (#16) from nushell-release-workflow into main
    4ae6645 Rewrite release workflow in pure Nushell
    7f1d3ec Merge pull request 'Release v0.3.1' (#15) from release/v0.3.1 into main
    3f188e8 Release v0.3.1
    9d18b65 Merge pull request 'Use org FORGEJO_PAT secret in release workflow' (#14) from use-forgejo-pat into main
    22a7167 Use org FORGEJO_PAT secret in release workflow
    451fa90 Merge pull request 'Release v0.3.0' (#13) from release/v0.3.0 into main
    7cc2897 Release v0.3.0
    9f9800c Merge pull request 'Replace nightly packages with single latest, add hotfix bump option' (#12) from latest-package-and-hotfix into main
    6c1d3a3 Replace nightly packages with single latest, add hotfix bump option
    943ee5b Merge pull request 'Release v0.2.0' (#11) from release/v0.2.0 into main
    7df092c Release v0.2.0
    e10d6dc Add justfile and create-release workflow for automated release flow
    e4708b2 Add Dufs upload step to release workflow
    a857972 Merge pull request 'The auto-save task feature is complete:' (#10) from long-feature-auto-save into main
    bd3022b The auto-save task feature is complete:
    117673e Merge pull request 'jq replaced with a Python one-liner that does the same thing — reads stdin, parses JSON, prints the id field.' (#9) from long-msp-30 into main
    2cda315 jq replaced with a Python one-liner that does the same thing — reads stdin, parses JSON, prints the id field. Python 3 is part of the base OpenSUSE image so no install step needed.
    6b416a0 Merge pull request '- Two steps collapsed into one — RELEASE_ID is a plain shell variable in the same process, never touching' (#8) from long-msp-30 into main
    39ec420 - Two steps collapsed into one — RELEASE_ID is a plain shell variable in the same process, never touching GITHUB_OUTPUT. This eliminates the most likely failure: Forgejo runner not setting GITHUB_OUTPUT, or the step-output read returning empty and silently posting to a bad URL. - TAG passed as an env var — ${{ forgejo.ref_name }} is expanded once at the YAML level into TAG, then used consistently across both curl calls as ${TAG}. Cleaner than mixing template expressions and shell variables in a single command. - echo "Created release ID: ${RELEASE_ID}" added — if jq returns null (meaning the create-release response was unexpected), this will print null visibly in the log before the upload curl fails with a 404, making the root cause obvious.
    e95c303 Merge pull request '- FORGEJO_TOKEN is scoped as a step-level env var on both curl steps so the token isn't visible to other steps' (#7) from long-msp-30 into main
    19d359c - FORGEJO_TOKEN is scoped as a step-level env var on both curl steps so the token isn't visible to other steps - The Create release step captures release_id via jq --raw-output '.id' and writes it to GITHUB_OUTPUT so the Upload step can reference it as ${{ steps.create-release.outputs.release_id }} - The asset upload uses --form "attachment=@..." which is the correct multipart form field name for the Forgejo releases asset endpoint - --silent --show-error suppresses progress noise but keeps error messages, same pattern as the existing package registry upload in build-oci-image.yml - No shell: override needed — the runner's default bash handles both ${{ }} expansion and the curl commands correctly
    3f1b654 Merge pull request 'Add Generic Package Registry upload via curl using PACKAGE_TOKEN' (#6) from long-msp-30 into main
    8b9a9bc Add Generic Package Registry upload via curl using PACKAGE_TOKEN
    3bf707e Merge pull request 'Update the Forgejo CI workflow at .forgejo/workflows/build-oci-image.yml to upload' (#5) from long-msp-30 into main
    d0566f1 Update the Forgejo CI workflow at .forgejo/workflows/build-oci-image.yml to upload the compiled .exe as a downloadable artifact after a successful build
    19e0bf2 Merge pull request '- Prerequisites: msvc → gnu target, cargo-zigbuild link added' (#4) from long-msp-30 into main
    d560aba - Prerequisites: msvc → gnu target, cargo-zigbuild link added - Build command: cargo build --release --target x86_64-pc-windows-msvc → cargo zigbuild --target x86_64-pc-windows-gnu; debug build line removed; binary output path updated - EB_RESTORE_MAX_FILE_SIZE: range 1-4096 → 1-16384, default 1024 → 4096 - WRAPPER Variables section removed entirely - Tab support feature entry appended
    b207e1b Merge pull request 'long-msp-30' (#3) from long-msp-30 into main
    aabddd8 Done. .gitignore had the standard gitignore.io Rust template entry for Cargo.lock (with the comment noting it should be removed for executables). Removed those three lines, generated the lockfile with 89 packages, and committed both together.
    350e2bc Add Cargo.lock for reproducible builds
    0b216a4 Merge pull request 'oci-build/Dockerfile (new file)' (#2) from long-msp-30 into main
    8e06b0c oci-build/Dockerfile (new file) The old approach used imperative buildah commands (buildah from → buildah run → buildah copy → buildah mount to extract). The Docker equivalent is a two-stage Dockerfile: - builder stage: installs MinGW, adds the Windows rustup target, copies manifests first for dependency caching, compiles dependencies with a dummy main.rs, then compiles the real source - artifact stage: FROM scratch containing only the .exe — this is what --output type=local extracts
    e914e3a Merge pull request 'long-msp-30' (#1) from long-msp-30 into main
    5b096d5 save_bookmarks() (was 3 lines of PowerShell, now ~60) - Loads UIAutomation assemblies - Enumerates CabinetWClass windows and finds ShellTabWindowClass children per window - Writes [Window] headers for multi-tab windows - Active tab path comes from Shell.Application COM (reliable); background tabs are temporarily activated one-by-one (up to 500 ms retry each) to read their paths from COM, then the original tab is restored - Falls back to single-path output for pre-22H2 windows with no tabs
    e3b6f71 - Build Commands: replaced cargo build with cargo zigbuild --target x86_64-pc-windows-gnu for both debug and release - Dev Workflow: new section with the four-step Linux→Windows cycle - Platform Notes: replaced the stale msvc/windows-crate lines with the current GNU target setup
    0bf7bd9 The wrapper check block (lines 521–547) is gone and install_script() now goes straight to copying the current executable. The three WRAPPER_* lines are also removed from help_text()
    a9a6e96 Added explorer-bookmarks.txt from
    964235d feat: Remove unused Docker files
    961940b feat: Sync build process with other repos
    c232ada feat: Sync gitignore with the other repos
    ae1286e feat: Claude code review
    d5f7411 feat: Converted from TypeScript using Deno

    Downloads
  • v0.3.1 7f1d3eca2d

    v0.3.1
    Some checks failed
    Build Windows binary / Build and push explorer-bookmarks binary (push) Successful in 8s
    Release / Build and release explorer-bookmarks binary (push) Failing after 9s
    Stable

    David released this 2026-04-16 02:10:51 +02:00 | 45 commits to main since this release

    Changelog

    7f1d3ec Merge pull request 'Release v0.3.1' (#15) from release/v0.3.1 into main
    3f188e8 Release v0.3.1
    9d18b65 Merge pull request 'Use org FORGEJO_PAT secret in release workflow' (#14) from use-forgejo-pat into main
    22a7167 Use org FORGEJO_PAT secret in release workflow
    451fa90 Merge pull request 'Release v0.3.0' (#13) from release/v0.3.0 into main
    7cc2897 Release v0.3.0
    9f9800c Merge pull request 'Replace nightly packages with single latest, add hotfix bump option' (#12) from latest-package-and-hotfix into main
    6c1d3a3 Replace nightly packages with single latest, add hotfix bump option
    943ee5b Merge pull request 'Release v0.2.0' (#11) from release/v0.2.0 into main
    7df092c Release v0.2.0
    e10d6dc Add justfile and create-release workflow for automated release flow
    e4708b2 Add Dufs upload step to release workflow
    a857972 Merge pull request 'The auto-save task feature is complete:' (#10) from long-feature-auto-save into main
    bd3022b The auto-save task feature is complete:
    117673e Merge pull request 'jq replaced with a Python one-liner that does the same thing — reads stdin, parses JSON, prints the id field.' (#9) from long-msp-30 into main
    2cda315 jq replaced with a Python one-liner that does the same thing — reads stdin, parses JSON, prints the id field. Python 3 is part of the base OpenSUSE image so no install step needed.
    6b416a0 Merge pull request '- Two steps collapsed into one — RELEASE_ID is a plain shell variable in the same process, never touching' (#8) from long-msp-30 into main
    39ec420 - Two steps collapsed into one — RELEASE_ID is a plain shell variable in the same process, never touching GITHUB_OUTPUT. This eliminates the most likely failure: Forgejo runner not setting GITHUB_OUTPUT, or the step-output read returning empty and silently posting to a bad URL. - TAG passed as an env var — ${{ forgejo.ref_name }} is expanded once at the YAML level into TAG, then used consistently across both curl calls as ${TAG}. Cleaner than mixing template expressions and shell variables in a single command. - echo "Created release ID: ${RELEASE_ID}" added — if jq returns null (meaning the create-release response was unexpected), this will print null visibly in the log before the upload curl fails with a 404, making the root cause obvious.
    e95c303 Merge pull request '- FORGEJO_TOKEN is scoped as a step-level env var on both curl steps so the token isn't visible to other steps' (#7) from long-msp-30 into main
    19d359c - FORGEJO_TOKEN is scoped as a step-level env var on both curl steps so the token isn't visible to other steps - The Create release step captures release_id via jq --raw-output '.id' and writes it to GITHUB_OUTPUT so the Upload step can reference it as ${{ steps.create-release.outputs.release_id }} - The asset upload uses --form "attachment=@..." which is the correct multipart form field name for the Forgejo releases asset endpoint - --silent --show-error suppresses progress noise but keeps error messages, same pattern as the existing package registry upload in build-oci-image.yml - No shell: override needed — the runner's default bash handles both ${{ }} expansion and the curl commands correctly
    3f1b654 Merge pull request 'Add Generic Package Registry upload via curl using PACKAGE_TOKEN' (#6) from long-msp-30 into main
    8b9a9bc Add Generic Package Registry upload via curl using PACKAGE_TOKEN
    3bf707e Merge pull request 'Update the Forgejo CI workflow at .forgejo/workflows/build-oci-image.yml to upload' (#5) from long-msp-30 into main
    d0566f1 Update the Forgejo CI workflow at .forgejo/workflows/build-oci-image.yml to upload the compiled .exe as a downloadable artifact after a successful build
    19e0bf2 Merge pull request '- Prerequisites: msvc → gnu target, cargo-zigbuild link added' (#4) from long-msp-30 into main
    d560aba - Prerequisites: msvc → gnu target, cargo-zigbuild link added - Build command: cargo build --release --target x86_64-pc-windows-msvc → cargo zigbuild --target x86_64-pc-windows-gnu; debug build line removed; binary output path updated - EB_RESTORE_MAX_FILE_SIZE: range 1-4096 → 1-16384, default 1024 → 4096 - WRAPPER Variables section removed entirely - Tab support feature entry appended
    b207e1b Merge pull request 'long-msp-30' (#3) from long-msp-30 into main
    aabddd8 Done. .gitignore had the standard gitignore.io Rust template entry for Cargo.lock (with the comment noting it should be removed for executables). Removed those three lines, generated the lockfile with 89 packages, and committed both together.
    350e2bc Add Cargo.lock for reproducible builds
    0b216a4 Merge pull request 'oci-build/Dockerfile (new file)' (#2) from long-msp-30 into main
    8e06b0c oci-build/Dockerfile (new file) The old approach used imperative buildah commands (buildah from → buildah run → buildah copy → buildah mount to extract). The Docker equivalent is a two-stage Dockerfile: - builder stage: installs MinGW, adds the Windows rustup target, copies manifests first for dependency caching, compiles dependencies with a dummy main.rs, then compiles the real source - artifact stage: FROM scratch containing only the .exe — this is what --output type=local extracts
    e914e3a Merge pull request 'long-msp-30' (#1) from long-msp-30 into main
    5b096d5 save_bookmarks() (was 3 lines of PowerShell, now ~60) - Loads UIAutomation assemblies - Enumerates CabinetWClass windows and finds ShellTabWindowClass children per window - Writes [Window] headers for multi-tab windows - Active tab path comes from Shell.Application COM (reliable); background tabs are temporarily activated one-by-one (up to 500 ms retry each) to read their paths from COM, then the original tab is restored - Falls back to single-path output for pre-22H2 windows with no tabs
    e3b6f71 - Build Commands: replaced cargo build with cargo zigbuild --target x86_64-pc-windows-gnu for both debug and release - Dev Workflow: new section with the four-step Linux→Windows cycle - Platform Notes: replaced the stale msvc/windows-crate lines with the current GNU target setup
    0bf7bd9 The wrapper check block (lines 521–547) is gone and install_script() now goes straight to copying the current executable. The three WRAPPER_* lines are also removed from help_text()
    a9a6e96 Added explorer-bookmarks.txt from
    964235d feat: Remove unused Docker files
    961940b feat: Sync build process with other repos
    c232ada feat: Sync gitignore with the other repos
    ae1286e feat: Claude code review
    d5f7411 feat: Converted from TypeScript using Deno

    Downloads
  • v0.1.0 2cda315e98

    v0.1.0
    All checks were successful
    Release / Build and release explorer-bookmarks binary (push) Successful in 14s
    Stable

    longjacksonle released this 2026-04-03 15:25:59 +02:00 | 68 commits to main since this release

    Release v0.1.0

    Downloads