Releases: midagedev/gadak
Release list
gadak v0.12.0
Changelog
Features
- 324d6ca feat: v0.12 paper identity, retire TUI, live labels/priority/title
Other
- eed711e refactor: rename the product from scry to gadak
Install / upgrade
brew install midagedev/tap/gadak # first install
brew upgrade midagedev/tap/gadak # upgrade
# or
curl -fsSL https://raw.githubusercontent.com/midagedev/gadak/main/scripts/install.sh | shOr download the archive for your OS/arch from this release, unpack it, and run:
./gadak init && ./gadak serve --syncThe web UI is embedded — the binary is the whole install. See the README for Docker and source builds. Running installs notice new releases on their own (daily anonymous check, updateCheck: false to opt out — see SECURITY.md).
scry v0.11.0
The browser comes inside — and the app updates itself
Two headlines in this release.
The in-app browser pane. Opening the original of a Jira issue or a
Confluence page no longer leaves the app: the page renders in a tabbed pane
right beside your mirror — Atlassian's live editor included — and closing a
tab (or just coming back to Scry) resyncs exactly that one item, so the copy
you land on is already fresh. Tabs survive stepping away; a pill brings them
back.
The app updates itself. The desktop app now checks GitHub Releases
quietly on launch and installs the next version when you say so — Tools →
Check for Updates… asks by hand, "updateCheck": false in config.json
silences it entirely. v0.11.0 is the first release it can update from, so
this is the last one you install by hand.
Also here: the desktop runtime moved to Wails v3; external (non-Atlassian)
links open the system browser again; Confluence breadcrumbs stop repeating
the space name (space homepage ids are now mirrored, schema v17); breakdown
chips jump to their section, and epic group headers open the epic itself.
Changelog
Features
- 77b6304 feat(confluence): sync space homepage ids; breadcrumbs drop them by identity
- f4fb20e feat(desktop): embedded browser pane replaces browse tab windows
- 8709361 feat(desktop): in-app browser tabs with single-item resync
- e28fa29 feat(desktop): wails v3, and the app updates itself
- 2a184e3 feat(web): breakdown chips jump to their section; epic headers open the epic
- 4770726 feat(web): the browser pane — tabs, toolbar, and the rectangle
Fixes
- f596845 fix(desktop): embedded pages identify as the Safari they are
- e14d09c fix(desktop): external links open the system browser again
- ef4c262 fix(web): drop the space-homepage duplicate from the doc breadcrumb
Other
- b5d3ec2 refactor(atlhttp): one Atlassian transport, two clients
- 8821942 refactor(cmd): cmdServe becomes a sequence of testable steps
- cb3d8a1 refactor(settings): one draft object, seven tab components
- fa4f0ec refactor(store): context flows through every DB method
- bd9a86e refactor(stores): watches, push, and favorites leave the me store
- 0d40afd refactor(sync): one run skeleton for both connectors, usage flushed for both
- e74f1b3 refactor(tui): one listPane for issues, docs, and feed cursors
- 52fc803 refactor(web): fold repeated markup and window listeners into shared pieces
- b1ca2e6 refactor(web): shared rune factories for search, resources, and casts
- 817cf55 refactor(web): the right panel is one value; URL sync is one protocol
- 0a5778e refactor: seven small idiom gaps — sentinel errors, DI, one command registry
- abecdee test(cmd): make the install-dir default test hermetic
Install / upgrade
brew install midagedev/tap/scry # first install
brew upgrade midagedev/tap/scry # upgrade
# or
curl -fsSL https://raw.githubusercontent.com/midagedev/scry/main/scripts/install.sh | shOr download the archive for your OS/arch from this release, unpack it, and run:
./scry init && ./scry serve --syncThe web UI is embedded — the binary is the whole install. See the README for Docker and source builds. Running installs notice new releases on their own (daily anonymous check, updateCheck: false to opt out — see SECURITY.md).
scry v0.10.0
Changelog
Features
- 1096106 feat(cli): make profiles an inventory, not a list of names
- 993654e feat(cli): scry api — the escape hatch for what the mirror does not model
- 1d7e258 feat(cli): scry doctor — the report a stranger can actually paste
- 4f4afd8 feat(cli): scry install-cli, so nobody types the bundle path by hand
- f2b8d94 feat(cli): scry skill install — the other way to hand an agent the mirror
- 9503fb1 feat(desktop): Tools → Install Command Line Tool, because the app can just do it
- ce4024e feat(desktop): drop the native title bar
- bf7d5d5 feat(onboarding): setup ends at connected, not at synced
- b897e61 feat(sources): Confluence can be turned on from the product
- a41e9fd feat(store): text-derived page↔issue cross-references (item_refs, v16)
- b218fd4 feat(sync): report what the mirror is fetching, and how much, from every pass
- 1948487 feat(tui): v0.10 document-wave parity — author filter, match highlight, tree counts, cross-refs
- d8c856f feat(ui): document screens carry their own weight — deep links, labels, evidence
- 6299697 feat(ui): search reaches every screen — palette matches documents, / follows you
- a6af702 feat(ui): the seam between the sources, drawn — cross-references on both panels, and a reading line
- 340950b feat(workspaces): mount them in the app, and sync what you can switch to
Fixes
- 3995488 fix(desktop): drop the accent mark from the title-bar row
- b9c5728 fix(desktop): the bundled CLI carries the release's version
- 4648e33 fix(docs): window the document lists
- d71db74 fix(sidebar): an empty DOCS section says which of five things is wrong
- 0c46706 fix(snapshot): shared mirrors keep their documents
- e9e9c10 fix(sources): choosing a space saves it, instead of being discarded
- 9d3e60c fix(sync): a settings change reaches the running loop, instead of waiting for a restart
- 6f39ab5 fix(ui): one sentence for the mirror, wherever you are looking at it
Other
- e060a40 docs(agents): playwright reuses a running fixture server, so it does not always rebuild
- 295f3fd docs(agents): the E2E fixture serves the built UI, so rebuild before judging a screenshot
- 5ba1aca docs(changelog): profiles inventory, and why there is no switch
- f30ace0 docs(changelog): the document freeze and the gate that missed it
- babc17e docs(readme): answer the install question in the first screen, move the manual out
- b23b4a4 docs(readme): the promise the product actually keeps
- f66efb1 style: gofmt drift in doctor_test.go (predates this wave)
- 427c748 test(doctor): fixtures use the documented example host, not an invented tenant
- f2b023f test(perf): give the perf fixture documents, and a budget over them
Install / upgrade
brew install midagedev/tap/scry # first install
brew upgrade midagedev/tap/scry # upgrade
# or
curl -fsSL https://raw.githubusercontent.com/midagedev/scry/main/scripts/install.sh | shOr download the archive for your OS/arch from this release, unpack it, and run:
./scry init && ./scry serve --syncThe web UI is embedded — the binary is the whole install. See the README for Docker and source builds. Running installs notice new releases on their own (daily anonymous check, updateCheck: false to opt out — see SECURITY.md).
scry v0.9.0
Changelog
Features
- 36f68fa feat(api): a person's comments — the missing leg of the people axis
- fc7ebc4 feat(brand): one orb everywhere — mark, wordmark, favicon, app icon
- b7af1e6 feat(search): say why it matched — field and snippet on every hit
- 6cea0da feat(store): pages.excerpt — a one-line body preview lands on PageLite (v15)
- 2a0152d feat(tui): docs rows carry the excerpt line; search-hint parity stated honestly
- e6eddfe feat(web): P0 foundation — the accent means something again
- 4ad61f5 feat(web): P0-1 — one icon family, and red belongs to meaning
- dff62d0 feat(web): activity doc lists carry one line of the body
- 9b18a42 feat(web): search results say why — comment and body matches carry their line
- c086f01 feat(web): the people axis — search a person, land on their work
Fixes
- 9b81236 fix(demo): English bodies where the excerpt line now looks — CJK search keeps two anchors
- 6b99170 fix(store): a space between ADF blocks — excerpts stop fusing headings into words
Other
- e8f6f4b demo: comments and reporters spread across four personas
- 6e3b431 style(web): detail panels — pinned headers, grouped comments, one spacing scale
- 4219fa5 style(web): every control lands on a two-step grid
- f5f96fb style(web): the sweep reaches the corners
Install / upgrade
brew install midagedev/tap/scry # first install
brew upgrade midagedev/tap/scry # upgrade
# or
curl -fsSL https://raw.githubusercontent.com/midagedev/scry/main/scripts/install.sh | shOr download the archive for your OS/arch from this release, unpack it, and run:
./scry init && ./scry serve --syncThe web UI is embedded — the binary is the whole install. See the README for Docker and source builds. Running installs notice new releases on their own (daily anonymous check, updateCheck: false to opt out — see SECURITY.md).
scry v0.8.0
Scry.app — the macOS desktop app
The headline of this release: the web UI in its own native window, with no
local server at all — no port, no address, nothing new listening. First
launch walks through setup in the window, and the bundle carries the CLI
(Contents/Resources/bin/scry) so a desktop-only install can still wire up
an agent with scry mcp install claude.
Install: download Scry-0.8.0-arm64.dmg below (Apple Silicon), drag to
Applications. Signed and notarized — it opens without Gatekeeper warnings.
Details: docs/DESKTOP.md.
Also in this release: finishing first-run onboarding now starts the
background sync immediately (previously it waited for a restart).
Changelog
Features
- f59c003 feat(desktop): Scry.app prototype — the web UI in a window, no port at all
- f31ff5d feat(desktop): graduation — Edit menu, bundled CLI, signing, release job
Fixes
- e362c59 fix(ci): secrets context is invalid in step-level if — gate via job env
- d6c4400 fix(ci): the notary key secret is base64-encoded PEM — decode before notarytool
- 53f2e5d fix(desktop): single-instance lock is per profile, not global
- 41ab698 fix(serve): start the watch loop after in-app onboarding, not only at boot
Other
- 67f4910 docs(roadmap): keep the plan, drop the campaign
Install / upgrade
brew install midagedev/tap/scry # first install
brew upgrade midagedev/tap/scry # upgrade
# or
curl -fsSL https://raw.githubusercontent.com/midagedev/scry/main/scripts/install.sh | shOr download the archive for your OS/arch from this release, unpack it, and run:
./scry init && ./scry serve --syncThe web UI is embedded — the binary is the whole install. See the README for Docker and source builds. Running installs notice new releases on their own (daily anonymous check, updateCheck: false to opt out — see SECURITY.md).
scry v0.7.0
Changelog
Features
- e8602c3 feat(api): GET settings/spaces/ — Confluence space listing for the picker
- 6f02089 feat(api): PUT settings/ persists confluence.spaces — the picker's save path
- 64e8d8b feat(brand): wordmark, logo mark, and a favicon the app never had
- 2a31a9e feat(cli): scry mcp install — registration that pins profile and binary
- 90a166d feat(serve): natural port-conflict handling — hand off to a running scry, else fall back
- ad32a69 feat(serve): open http://scry.localhost when the resolver maps it to loopback
- 20b2f1b feat(store): mirror space names — v14 spaces table, PageLite.space_name
- 75abc64 feat(tui): docs mode follows the web's recency-first views — Updated, By author, Spaces
- 87f5e6e feat(tui): s aliases t for transition — key parity with the web triage flow
- fb0ba05 feat(web): Epics built-in view — the epic breakdown one click from the sidebar
- 4bbfebd feat(web): docs UX wave — space names, unified recents, scope pickers, Recently edited view
- aa64bdb feat(web): docs navigation lands its final shape — tabbed views, no sidebar tree
- c7edef3 feat(web): freshness chip + focus mirror pull — the server↔Jira leg made visible
- 8d96e7c feat(web): keyboard triage — a sprint cleanup that never touches the mouse
Fixes
- dc047cb fix(confluence): always quote space keys in CQL — digit-leading keys 400'd
- aadd2a7 fix(confluence): survive a real site — team spaces by default, chunked CQL, tolerated 404s
- a720655 fix(demo): English space-home bodies — the Korean Confluence template is gone
- 5a290a9 fix(demo): the snapshot speaks English where the UI shows data
- 5fdf972 fix(export-static): present as loopback to the browser guard
- 0e4d587 fix(server): reject cross-origin writes and DNS-rebinding reads on the local API
- 9fd680b fix(store,config): 0600 mirror database, 0700 data directories
- 58434b7 fix(tui): register page-scroll keys in keyMap so help and docs stop lying by omission
- aa92313 fix(web): durable cache bootstrap — chunked IDB writes, honest warm-boot metric
- e0901e4 fix(web): settings interval selects rendered empty — selected moves to the option
Other
- 07b2451 docs(media): hero clip walks the new docs UX — tabs, spaces, one-click Epics
- 98ca903 docs(media): re-record hero GIF against the anglicized demo database
- b99b6ab docs(security): document the browser guard and fix the loopback-refusal code anchor
- 1906613 docs(spec): document the v14 spaces table
- 8463eb2 test(perf): interaction budgets against a 10k-issue fixture
Install / upgrade
brew install midagedev/tap/scry # first install
brew upgrade midagedev/tap/scry # upgrade
# or
curl -fsSL https://raw.githubusercontent.com/midagedev/scry/main/scripts/install.sh | shOr download the archive for your OS/arch from this release, unpack it, and run:
./scry init && ./scry serve --syncThe web UI is embedded — the binary is the whole install. See the README for Docker and source builds. Running installs notice new releases on their own (daily anonymous check, updateCheck: false to opt out — see SECURITY.md).
scry v0.6.0
Changelog
Features
- baa25c7 feat(api): read path for mirrored pages — unified search, pages/ endpoints
- 9211bab feat(confluence): collect page labels — schema v13, PageLite exposure
- 674c124 feat(demo): snapshot carries the Nimbus wiki — 71 pages beside 519 issues
- a8298a5 feat(seed-demo): --docs mode seeds the Nimbus wiki into Confluence
- d11262a feat(seed-demo): --epics mode — epic hierarchy for the demo backlog
- c78366c feat(seed-demo): wiki labels — authored dataset labels, idempotent apply
- 8bb224f feat(store): honest epic_key — nearest level-1 ancestor, not a parent alias
- 1d7488c feat(sync): Confluence page mirror — second source on the items spine
- 62eb131 feat(tui): docs navigator — D toggles a space-grouped page tree
- 7659ca9 feat(web): epic hierarchy in the UI — group labels, row chips, breadcrumb, rollup
- f50f1c1 feat(web): mirrored wiki pages in the UI — sidebar tree, document panel, unified search
Fixes
- ce39dc7 fix(mcp): schema hints an agent actually needs — measured against a live take
- 297bdba fix(web): phones render the desktop layout, not a squeezed column
Other
- 608fb8f chore(demo): refresh snapshot — epic hierarchy and page bodies
- 385697d chore(demo): snapshot with wiki labels — 50/69 pages, v13
- ea26b4f docs(agents): web-UI waves require a TUI follow-up in the same version
- 3593922 docs(media): reshoot all three clips — lower logical resolution, bigger text
Install / upgrade
brew install midagedev/tap/scry # first install
brew upgrade midagedev/tap/scry # upgrade
# or
curl -fsSL https://raw.githubusercontent.com/midagedev/scry/main/scripts/install.sh | shOr download the archive for your OS/arch from this release, unpack it, and run:
./scry init && ./scry serve --syncThe web UI is embedded — the binary is the whole install. See the README for Docker and source builds. Running installs notice new releases on their own (daily anonymous check, updateCheck: false to opt out — see SECURITY.md).
scry v0.5.0
Highlights
Korean search finds inflected words. FTS5's unicode61 tokenizer treats every Korean conjugation and particle as a different token, so 로그인 used to miss 로그인이 실패했다. Bare search terms are now rewritten to prefix matches ("로그인"*) in both the web UI and the TUI — agglutinated forms match without you thinking about it. Explicit FTS syntax (quotes, *, AND/OR/NOT/NEAR) passes through untouched. Known limit, documented rather than hidden: word-middles (결제 inside 간편결제) still miss.
The TUI came alive. A neon look with an ambient background wave, a shimmering title, and a pulsing active tab — always at rest, never in your way (SCRY_NO_ANIM=1 or NO_COLOR turns it all off, and light terminals skip the background wave). With it:
- Ctrl+K command palette — jump to a tab, an issue by key, a saved view, or an action from one fuzzy prompt.
- Mouse support — wheel to scroll the list and feed, click to select, click again to open, click the tab bar to switch.
- Search-term highlight — your filter text lights up in every matching row.
Workspaces: one process, every profile. scry serve now mounts each sibling profile under /w/<name>/ — full API, reads and write-through, opened lazily on first request. When more than one profile exists, the web sidebar shows a WORKSPACES switcher with the current mirror marked. Two mirrors on one origin never share cache or favorites (storage is keyed per workspace). The trust boundary is unchanged: same loopback listener, same single OS user, and the workspace list endpoint carries site + projects only — never credentials.
Notes
- Releases are now fully automated: the Homebrew formula updates from the release workflow itself (write-scoped deploy key, one repository).
- Upgrade:
brew upgrade midagedev/tap/scry, or grab a binary below. Running installs will notice this release on their own within a day.
scry v0.4.0
Highlights
Edit custom fields from the TUI. Press e on any issue: pick one of your editable fields, then pick a value from what Jira actually allows on that issue — single select for options, multi-select (with current values preselected) for option/version arrays, your member list for user fields. No free-text input anywhere; a clear entry empties the field. The same allowlist and value shaping now drive both the web editor and the TUI (internal/fields).
Update notices on every surface. scry now checks GitHub releases at most once a day (anonymous GET to api.github.com, nothing sent, cached on disk) and tells you when a newer version exists — after scry sync, in scry status (and its --json), as a badge in the TUI header, and as a link in the web sidebar. Opt out with updateCheck: false; dev builds never check.
TUI shows your custom fields. The detail view renders discovered field specs with their labels, and body-role fields (team-specific description/analysis/result fields) as prose sections.
Hosted demo works — or says why not. In-app browsers (Twitter/X, Instagram) block the service worker the zero-install demo runs on; instead of an eternal loading skeleton you now get a clear notice with a copy-link button. The service-worker handshake is raced against a deadline, so restricted WebViews that hang (rather than fail) also land on the notice.
Notes
- The update check is the only network call scry makes besides your Jira site, and it carries no identity. See SECURITY.md.
- Upgrade:
brew upgrade midagedev/tap/scry, or grab a binary below.
scry v0.3.0
The mirror configures itself
Until now, custom fields required a hand-written fieldMap — so in practice
nobody configured them and every board looked half-empty. v0.3.0 removes the
step entirely:
-
Custom-field auto-discovery. The first full sync fetches every field,
groups the site catalog by display name (Jira mints a separate field id per
board template for the same concept — on one large site, 57 of 353 names
carried two or more ids), classifies each field's role and editor from its
schema, and backfills the mirror from the already-stored raw documents with
no re-download. The sync log tells you what it did:fields: discovered 23 custom fields in use — labels, filters, and editors configured fields: backfilled 6,543 issues from the mirror (no re-download) -
Projects are optional.
scry initneeds only site, email, and token.
An empty project list means every project the account can see; the sync
start line shows the total so you can narrow later. -
The UI follows the data. Detail panels show only the fields an issue
actually fills, with Jira's own display names; long-form fields (repro
steps, QA notes) render as document sections, not chips. Filter axes come
from the discovered fields per project scope — a team board is not offered
a QA board's thirty fields.array<option>fields get a proper
multi-select editor, values from Jira's own allowed list. -
Everything stays editable: Settings → Fields in the web UI (edits are
pinned across re-discovery),scry fields --apply, or thefieldsarray
in~/.scry/config.json.
Also in this release
- Readable sync progress —
1,200 / 6,543 (18%)with an upfront count
and elapsed time, instead of a page counter with no denominator. - Sync history — click the sidebar timestamp for recent runs (kind,
changed/deleted counts, errors). Meaningful runs only; no-op polls are not
recorded. - Agent-driven onboarding —
docs/AGENT_SETUP.mdopens with a paste-ready
prompt that lets a coding agent move an existing Jira setup (env vars, MCP
connector) into scry end to end. - The group-taxonomy field is renamed to the neutral
team_group.
Install / upgrade
brew install midagedev/tap/scry # or: brew upgrade midagedev/tap/scry
# or
curl -fsSL https://raw.githubusercontent.com/midagedev/scry/main/scripts/install.sh | shmacOS binaries are signed and notarized. Existing mirrors: run
scry sync --full once after upgrading to trigger field discovery.