Skip to content

v2.4.0

Latest

Choose a tag to compare

@github-actions github-actions released this 05 Sep 12:01
1dc6b25

Bug Fixes

  • redis

    • restore key scanning after the redis 6 upgrade. (b6598c4)
      redis 5 changed SCAN in three ways that this app depended on:
      • the cursor is passed as a string, not a number. Passing a number now
        throws "arguments[1]" must be of type "string | Buffer", which is why
        the key list came back empty
      • the cursor comes back as a string too
      • HSCAN renamed its reply field from tuples to entries
        The app counts cursors in numbers and checks them for truthiness in several
        places, where the string '0' would be wrongly truthy, so the conversion is
        done at the redis boundary rather than threaded through. The same three
        changes affected hScan/sScan/zScan behind useCursorScanner, so hash, set and
        sorted set contents were broken in the same way.
        Also fixes the macOS e2e failure: the window is created asynchronously and
        evaluate could run before it existed, so getAllWindows()[0] was
        undefined. beforeAll now waits for the first window. afterAll no longer
        throws a second, misleading error when launch itself failed.
        Claude-Session: https://claude.ai/code/session_01PKe4oRSiqf3CeVyWxFv5xw
  • Continuous Integration

    • unblock the release gate and clear the remaining advisories. (7b85df9)
      The release draft job waits on every check for the commit, and Dependabot
      reports its security updates as one of them, so a single failing security
      update stopped the release even though all ten CI jobs passed. That check is
      now ignored: a dependency with no safe version available yet should not be
      able to block releasing.
      The Dependabot run itself failed with security_update_not_possible for
      minimatch, reporting 3.1.2 as the latest resolvable version against a
      lowest-non-vulnerable of 3.1.4. Nothing actually pinned it there. The
      dependants ask for ^3.0.4, which already allows the patched release; the
      lockfile simply still held a resolution from before that release existed and
      yarn upgrade only touches direct dependencies.
      Every remaining open advisory turned out to be the same stale-resolution
      pattern, so those entries were re-resolved too:
      brace-expansion 1.1.11 -> 1.1.18, 2.0.1 -> 2.1.4
      js-yaml 4.1.0 -> 4.3.2
      lodash 4.17.21 -> 4.18.1
      minimatch 3.1.2 -> 3.1.5, 5.1.0 -> 5.1.9
      tmp 0.2.1 -> 0.2.7
      No manifest ranges changed, so this is a lockfile refresh rather than an
      upgrade. Open alerts go from 13 to 0; they were 146 before the dependency
      work started.
      Claude-Session: https://claude.ai/code/session_01PKe4oRSiqf3CeVyWxFv5xw
  • release

    • publish artifacts again and stop snap from blocking. (5ea8d34)
      Nothing has been published for two runs, including the jobs that reported
      success. package.json still read 2.3.0, and v2.3.0 is a published pre-release
      from 2023, so electron-builder found an existing pre-release where it wanted a
      draft and skipped every file:
      GitHub release not created reason=existing type not compatible with
      publishing type tag=v2.3.0 existingType=pre-release publishingType=draft
      Bumping to 2.4.0 gives the workflow a tag it can actually create.
      The Snap Store then rejected the upload with "Exported credentials are no
      longer valid", which failed the ubuntu job and, through fail-fast, cancelled
      windows. snapcraft 7 replaced the auth format that action-snapcraft@v1 used to
      log in with, so the existing token cannot work as-is and needs regenerating
      with snapcraft export-login.
      Until then the store should not gate the release. electron-builder now
      publishes the snap to GitHub only, and the store upload is a separate
      best-effort step, on edge to match the channel electron-builder defaulted to
      when it owned the upload. The matrix no longer fails fast either, so one
      platform cannot discard artifacts the others already built.
      Claude-Session: https://claude.ai/code/session_01PKe4oRSiqf3CeVyWxFv5xw
  • button contrast and invalid table nesting after the Tailwind 4 upgrade. (38e3845)
    Tailwind 4 moved utilities into a cascade layer, and unlayered rules beat
    any layer regardless of specificity. Button.vue styles every button through
    a global button { @apply text-gray-500 }, which therefore started
    overriding the text colour utilities its own variants set. PrimaryButton
    rendered grey-on-blue. Moving those defaults into @layer base puts them
    back below utilities.
    Vue builds elements through createElement, so unlike the HTML parser it
    does not insert an implicit tbody. Three tables put directly inside , producing invalid DOM and dev-mode nesting warnings; the other three tables in the app already had one. Also fixes a race the Electron upgrade left in the e2e test: it still waited on `ready-to-show`, which no longer fires now that the window is shown once loadURL resolves. It only passed when the check happened to run after the window appeared. It waits on `show` instead. Claude-Session: https://claude.ai/code/session_01PKe4oRSiqf3CeVyWxFv5xw
  • adding and editing set keys. (0a3f79e)
    Creating a set passed the name ref to sAdd instead of name.value, unlike
    every other branch of the switch. The call rejected, and because save() had
    no error handling the rejection went unhandled: the modal stayed open, no
    toast appeared, and nothing reached redis. Both are fixed, so a failure of
    any key type now surfaces as an error toast instead of silence.
    Editing a set member also added the row index back as a member. key is the
    position in the rendered list, which is meaningful as a score for a sorted
    set but not for a set, where only the new value belongs.
    Both predate the dependency upgrade.
    Claude-Session: https://claude.ai/code/session_01PKe4oRSiqf3CeVyWxFv5xw
  • crash when the selected server is not in the list. (c15fb36)
    serversStore.selected is only assigned after redis.connect() resolves,
    but connected flips to true inside the ready handler that fires during
    it, so NoKeySelected could render and look up an empty key. Deleting the
    selected server leaves the same dangling reference.
    Both routes go through representServer, so that is where the missing server
    is handled rather than at each call site.
    Claude-Session: https://claude.ai/code/session_01PKe4oRSiqf3CeVyWxFv5xw
  • Build System

    Continuous Integration

    • modernize GitHub workflows. (8cd5f85)
      Several pinned actions had stopped working rather than just aged.
      Runtimes GitHub no longer runs:
      • the local release-notes action still declared node12, now node24
      • samuelmeuli/action-electron-builder is unmaintained since 2020 and also
        declares node12, so electron-builder is invoked directly instead
        Removed GitHub features:
      • ::set-output replaced with $GITHUB_OUTPUT, in both release.yml and the
        release-notes action, which needs the heredoc form for its multi-line
        release notes
        Action bumps: checkout and setup-node v2 -> v5, action-gh-release v1 -> v3,
        create-pull-request v3 -> v8, wait-on-check-action v0.2 -> v1.9.1,
        delete-draft-releases v1 -> v3, action-snapcraft v1 -> v2. The snapcraft
        action dropped its login inputs in v2, so the store credentials now reach
        electron-builder through SNAPCRAFT_STORE_CREDENTIALS instead.
        Node 14/16 -> 24, matching the engines field after the Electron upgrade.
        Also two pre-existing bugs: the pull_request triggers filtered on
        package-lock.json in a yarn project, so lockfile changes never triggered
        the lint and test workflows, and plain yarn install let CI drift from the
        lockfile, now --frozen-lockfile.
        Claude-Session: https://claude.ai/code/session_01PKe4oRSiqf3CeVyWxFv5xw

    Chores

    • Dependency updates

      • upgrade all dependencies to latest. (9917231)
        The project had been idle for a while and every dependency was behind.
        Upgrades follow each project's official migration guide.
        Toolchain:
        • vite 4 -> 8, vitest 0.27 -> 5, @vitejs/plugin-vue 3 -> 6
        • vite configs renamed to .mjs and moved off __dirname / bare JSON imports
        • ssh2 and redis marked external in the preload build; the new bundler
          otherwise tries to inline their native .node binaries
        • typescript 4.9 -> 7, with @typescript/typescript6 alongside it because
          vue-tsc and typescript-eslint both still need the TypeScript 6 JS API
        • eslint 8 -> 10, migrated to flat config; eslint-plugin-vue was installed
          but never wired up, so it is enabled now
          Electron 19 -> 44:
        • preload is sandboxed by default since Electron 20 and this one loads
          ssh2/redis from node_modules, so sandbox is disabled explicitly
        • the window is shown once loadURL resolves; ready-to-show never fires for
          a hidden window on Wayland, so the app came up invisible
        • custom-electron-titlebar 4.1 -> 4.4 replaces the hand-rolled menu IPC
          with the library's own setupTitlebar/attachTitlebarToWindow
          redis 4 -> 6:
        • dropped the @redis/client/dist/lib internal imports
        • multiExecutor is gone; rebuilt on top of client.multi().addCommand()
        • command names no longer live on RedisClient.prototype
          Tailwind 3 -> 4 via @tailwindcss/upgrade, plus @reference in the .vue
          style blocks that use @apply.
          Also: pinia 2 -> 4, vue 3.2 -> 3.5, lowdb 3 -> 7, splitpanes 3 -> 4,
          floating-vue beta -> 5.
          Removed @types/node_redis, @types/splitpanes, autoprefixer and
          postcss-import as no longer needed.
          Fixes found along the way:
        • SetContent passed its commands to multi(), which ignores arguments, so
          editing a set item silently did nothing
        • contextBridge rebuilds an Error without its message and redis v6 wraps
          socket failures in an empty AggregateError, which together turned every
          error toast into a bare "Error"
          Claude-Session: https://claude.ai/code/session_01PKe4oRSiqf3CeVyWxFv5xw

    Other Changes

    • Merge pull request #72 from ekvedaras/dependabot/npm_and_yarn/vite-3.2.7. (c089ef6)
      build(deps-dev): bump vite from 3.2.5 to 3.2.7
    • Update README.md. (ab7a2a4)
    • Merge pull request #73 from ekvedaras/dependabot/npm_and_yarn/semver-6.3.1. (b280a41)
    • Merge pull request #74 from ekvedaras/dependabot/npm_and_yarn/word-wrap-1.2.4. (198a34f)
      build(deps): bump word-wrap from 1.2.3 to 1.2.4
    • Merge pull request #78 from ekvedaras/dependabot/npm_and_yarn/get-func-name-2.0.2. (70b2ce9)
    • Merge pull request #80 from ekvedaras/dependabot/npm_and_yarn/postcss-8.4.31. (7a5de24)
    • Merge pull request #84 from ekvedaras/dependabot/npm_and_yarn/vite-3.2.8. (ef472a3)
      build(deps-dev): bump vite from 3.2.7 to 3.2.8
    • Merge pull request #85 from ekvedaras/dependabot/npm_and_yarn/vite-3.2.10. (61876d5)
      build(deps-dev): bump vite from 3.2.8 to 3.2.10
    • Merge pull request #86 from ekvedaras/dependabot/npm_and_yarn/tar-6.2.1. (049f499)
      build(deps): bump tar from 6.1.11 to 6.2.1
    • Merge pull request #87 from ekvedaras/dependabot/npm_and_yarn/ejs-3.1.10. (a3c0fdb)
      build(deps): bump ejs from 3.1.8 to 3.1.10
    • Merge pull request #88 from ekvedaras/dependabot/npm_and_yarn/braces-3.0.3. (d37de93)
      build(deps): bump braces from 3.0.2 to 3.0.3
    • Merge pull request #89 from ekvedaras/dependabot/npm_and_yarn/micromatch-4.0.8. (38cd252)
      build(deps): bump micromatch from 4.0.4 to 4.0.8
    • Merge pull request #90 from ekvedaras/dependabot/npm_and_yarn/electron-updater-6.3.0. (7fc087d)
      build(deps): bump electron-updater from 5.3.0 to 6.3.0
    • Merge pull request #91 from ekvedaras/dependabot/npm_and_yarn/vite-3.2.11. (dff2068)
      build(deps-dev): bump vite from 3.2.10 to 3.2.11
    • Merge pull request #94 from ekvedaras/dependabot/npm_and_yarn/cross-spawn-7.0.6. (c4399ae)
      build(deps): bump cross-spawn from 7.0.3 to 7.0.6
    • Merge pull request #98 from ekvedaras/dependabot/npm_and_yarn/vite-4.5.6. (6852ed3)
      build(deps-dev): bump vite from 3.2.11 to 4.5.6
    • Merge pull request #136 from ekvedaras/chore/modernize-dependencies. (4790198)
      chore: modernize dependencies, Electron 44, and CI workflows
    • Merge pull request #137 from ekvedaras/fix/security-alerts-and-release-gate. (a307bf1)
      fix(ci): unblock the release gate and clear the remaining advisories
    • Merge pull request #138 from ekvedaras/fix/release-publishing. (1dc6b25)
      fix(release): publish artifacts again and stop snap from blocking