Skip to content

Releases: cadam11/joinery

Release list

Joinery 1.0.0

Choose a tag to compare

@github-actions github-actions released this 03 Sep 14:48
2cf3148

Install

macOS — Homebrew

brew install --cask cadam11/joinery/joinery

macOS — direct download

Apple Silicon: Joinery-1.0.0-arm64.dmg · Intel: Joinery-1.0.0-x64.dmg

Windows

Joinery-1.0.0-x64-setup.exe or Joinery-1.0.0-arm64-setup.exe. Windows builds are not code-signed, so SmartScreen will warn: More info, then Run anyway.

First launch on macOS

Joinery is not code-signed and not notarized — there is no Apple Developer Program membership behind it. macOS quarantines it either way you install it, Homebrew included, and refuses the first launch.

Open it, and macOS remembers until the app is replaced:

  1. Double-click Joinery. macOS refuses, and says so.
  2. Open System Settings → Privacy & Security, scroll to Security, and click Open Anyway beside the message about Joinery.
  3. Confirm, and authenticate. Every launch after this one is normal.

A brew upgrade replaces the bundle, and Homebrew can only carry your approval forward when it can verify the new app has the same signer as the old one. An unsigned app has none, so expect the same three steps after each upgrade.

On macOS Sonoma and earlier, Control-click the app in Finder and choose Open instead. That shortcut was removed in macOS Sequoia.

Or, in a terminal, drop the quarantine flag yourself before the first launch:

xattr -dr com.apple.quarantine "/Applications/Joinery.app"

-r is not optional: Homebrew sets the flag on every file inside the bundle, not just the bundle itself.

Verifying a download

SHA256SUMS.txt covers every file in this release.

shasum -a 256 -c SHA256SUMS.txt --ignore-missing

What's Changed

  • docs: UI audit + React renderer rewrite plan by @cadam11 in #7
  • feat(renderer-react): scaffold Vite 8 + React 19 renderer package (Task 1) by @cadam11 in #8
  • feat(renderer-react): Tailwind v4 brand theme + house rules (Task 2) by @cadam11 in #9
  • feat(renderer-react): IPC client layer over the preload bridge (Task 3) by @cadam11 in #10
  • feat(renderer-react): Zustand stores + typed command bus (Task 4) by @cadam11 in #11
  • feat(renderer-react): persistence wiring + one-shot localStorage migration (Task 5) by @cadam11 in #12
  • docs: migrate FOLLOW-UPS backlog to Linear by @cadam11 in #13
  • feat(renderer-react): UI primitives + markdown sanitize seam (Task 6) by @cadam11 in #14
  • docs: record Linear ticketing convention in CLAUDE.md by @cadam11 in #15
  • feat(renderer-react): shell + Dockview docking workspace (Task 7) by @cadam11 in #16
  • feat(renderer-react): sidebar + lazy explorer tree, React e2e substrate (Task 8) by @cadam11 in #17
  • chore: add test:e2e:react script for the React renderer e2e tier by @cadam11 in #18
  • feat(renderer-react): connection dialogs + real UI e2e connect path (Task 9) by @cadam11 in #19
  • feat(renderer-react): query tab + Monaco with packaged-app-proven workers (Task 10) by @cadam11 in #20
  • chore: rebuild before the React e2e tier runs by @cadam11 in #21
  • feat(renderer-react): AG Grid results grid (Task 11) by @cadam11 in #22
  • fix(main): treat xp_dirtree isfile BIT as boolean in server file browser by @cadam11 in #23
  • feat(renderer-react): backup wizard, CLI remediation, server file browser (Task 12) by @cadam11 in #24
  • feat(renderer-react): restore wizard with a real destructive confirm (Task 13) by @cadam11 in #25
  • feat(renderer-react): row detail + FK preview, result history + diff, connection chip (Task 14) by @cadam11 in #26
  • feat(renderer-react): settings panel + theme control, no decorative toggles (Task 15) by @cadam11 in #27
  • feat(renderer-react): command palette, object search, snippets, shortcuts (Task 16) by @cadam11 in #28
  • feat(renderer-react): chat panel + tab with a measured streaming coalescer (Task 17) by @cadam11 in #29
  • feat(renderer-react): theme-aware ERD with real dagre layout (Task 18) by @cadam11 in #30
  • feat(renderer-react): welcome, query history, DB dialogs, object tab, AI setup, SQL converter (Task 19a) by @cadam11 in #31
  • feat(renderer-react): execution plan, AI analysis, schema comparison, Docker panel, tours (Task 19b) by @cadam11 in #32
  • fix(shared): default editor minimap off for shipped visual parity (J-44) by @cadam11 in #33
  • test(e2e): suite consolidation, coverage completion, the Angular-parity mapping table (Tasks 20+21) by @cadam11 in #34
  • feat(j-77): add OpenRouter as a sixth AI vendor by @cadam11 in #35
  • feat(j-79): offer OpenRouter's auto routers as selectable-only models by @cadam11 in #36
  • feat(j-80): add OpenRouter fusion and an auto-router cost tier by @cadam11 in #37
  • test(22): React renderer visual-baseline tier with DPR and scrollbar pins by @cadam11 in #38
  • test(23): perf gates and a keyboard/focus a11y sweep for the React renderer by @cadam11 in #39
  • refactor(24)!: cut over to the React renderer, delete Angular by @cadam11 in #40
  • docs: post-cutover accuracy pass — fix false claims in README, ARCHITECTURE, CONTRIBUTING by @cadam11 in #41
  • feat(j-92): make AI setup discoverable — menu item, Settings tab, inline auto-router cost tier by @cadam11 in #42
  • docs(j-99): decision-ready proposal for the Astro documentation site by @cadam11 in #43
  • feat(j-99): Phase 1 of the docs site — Starlight skeleton, Getting Started, Pages deploy by @cadam11 in #44
  • docs(j-108): serve the docs site from usejoinery.com by @cadam11 in #45
  • J-99 Phase 2: feature, reference and troubleshooting docs — with a source-driven reference generator by @cadam11 in #46
  • fix: J-101 + J-102 — real welcome-button names in README, honest tour copy for ⌘↩ by @cadam11 in #47
  • fix(j-118): surface keychain degradation instead of failing silently by @cadam11 in #48
  • fix: three docs-found drift fixes (J-110, J-114, J-116) by @cadam11 in #49
  • fix(j-104): remove the dead explorer Properties/Delete menu items by @cadam11 in #50
  • feat(j-99): retheme docs code blocks to the six-role brand palette by @cadam11 in #51
  • feat(j-99): branded landing page at usejoinery.com by @cadam11 in #52
  • test(j-99): docs-shots capture harness + documentation screenshot set by @cadam11 in #53
  • docs(j-99): put the screenshots on the pages, restore the README gallery (J-23) by @cadam11 in #54
  • fix(j-60): refuse a repeat tool confirmation in the main process by @cadam11 in #55
  • feat(j-22): guard navigation, add a CSP, and validate openExternal schemes by @cadam11 in #56
  • fix(j-100): point both documentation entry points at usejoinery.com by @cadam11 in #58
  • fix(j-129): close the three navigation-hardening gaps J-22 deferred by @cadam11 in #59
  • fix(j-48): make a log backup a log backup, and stop dropping request fields by @cadam11 in #60
  • fix(j-51): make the restore path report the truth on every engine by @cadam11 in #61
  • fix(j-48e/f, j-51g): make cancel reach the process, and refuse concurrent runs by @cadam11 in #62
  • fix(j-29): probe for a working Python, and say what is actually missing by @cadam11 in #63
  • feat(j-29): give SQL conversion the setup-instructions view backup has by @cadam11 in #64
  • fix(j-119): name the module a ModuleNotFoundError names, not the interpreter by @cadam11 in #65
  • fix(j-128): lint every package, and fix what that surfaced by @cadam11 in #66
  • fix(j-58, j-97): one ⌘R, and one Settings per platform by @cadam11 in #67
  • fix(j-107): quote the setting's own label in the truncation tooltip by @cadam11 in #68
  • fix(j-63): stop keeping a transcript that cannot stay current by @cadam11 in #70
  • fix(j-40): redraw mermaid diagrams when the theme changes by @cadam11 in https://github.com/cadam11/jo...
Read more