Skip to content

Releases: crossworks-engineering/jackdaw

v0.6.117

Choose a tag to compare

@github-actions github-actions released this 17 Sep 20:26

Desktop builds for v0.6.117. Publish deliberately once every platform's assets are attached.

v0.6.116

Choose a tag to compare

@github-actions github-actions released this 17 Sep 17:26

Desktop builds for v0.6.116. Publish deliberately once every platform's assets are attached.

v0.6.115

Choose a tag to compare

@github-actions github-actions released this 17 Sep 15:10

v0.6.115

The deployment tour waits for its first screen

MANTLE_TOUR used to start on whatever screen a visitor landed on and then push them to the tour's first route, so a deep link to Pages became a trip to the dashboard nobody asked for. The tour now opens only when the visitor is on its first screen, and re-checks on every route change so it opens when they get there. ?tour=<id> still opens from anywhere.

No other product change.

v0.6.114

Choose a tag to compare

@github-actions github-actions released this 17 Sep 14:33

v0.6.114

Tour fixes from the first live walk

  • A step now measures the first visible match for its anchor. The account menu renders twice (desktop rail and mobile bar), and the hidden one is a zero-size box at the top-left corner, which is where that stop's card had pinned itself.
  • The Traces stop frames the screen itself: traces are reached from the operator view, not the rail.

No other product change.

v0.6.113

Choose a tag to compare

@github-actions github-actions released this 17 Sep 14:22

v0.6.113

A guided tour

A tour is a scripted walk through the owner UI: a spotlight on one element at a time and a card beside it saying what that element is, with Next, Back and Skip. Arrow keys, Enter and Escape walk it. The dim never blocks the screen, so the highlighted control stays usable, and the tour never writes to the API.

  • MANTLE_TOUR=<id> on the client container opens a tour once per browser; ?tour=<id> on any URL opens it on demand.
  • Tours are scripts in client/web/lib/tour/tours.ts; steps point at stable data-tour anchors the shell now carries (brand, profile, nav:<href>, help, assistant, main, activity).
  • The card stays inside the viewport on whichever side fits, and centres over a target that fills the screen. The dim is a theme tint, so it reads correctly on every generated theme.
  • Ships the demo tour: nine stops written for the public demo.

See docs/tour.md.

v0.6.112

Choose a tag to compare

@github-actions github-actions released this 17 Sep 12:52

v0.6.112

The route coverage gate, now in this repo

pnpm e2e:routes -- <base-url> walks every screen under client/web/app in a real browser against a deployment you name and fails on anything that does not actually render: an unresolved React placeholder, an empty content region, a 5xx behind a tidy empty state, a bounce to the login page. GET-only, so it is safe against a brain people rely on and against a read-only edge.

It came from the mantle demo branch, where its fixture-driven predecessor had shipped 85 blank screens. It lives here now because the route list is derived from the screens beside it, and those screens left the mantle repo in the August split.

  • Fixtures for the dynamic screens added since: draws, changelog, the docs reader, account settings.
  • ROUTES_BEARER seeds the owner bearer and presence cookie, the same contract the split e2e suite uses, so it runs against a split deployment as well as the demo edge.
  • ROUTES_ONLY narrows the sweep; ROUTES_API_LOG watches a local API log for server-side errors the browser cannot see.
  • A webfont blocked inside the app sandbox is noted, not failed, whether the block comes from CSP or from CORS on the sandbox's opaque origin.

No product code changed in this release.

v0.6.111

Choose a tag to compare

@github-actions github-actions released this 17 Sep 15:33

v0.6.111

Documentation only, published after the fact: the README now says how to run, get and develop the client after the split; dead links fixed; desktop media permissions noted; the detached-frontend example uses a placeholder host.

No product code changed. Superseded by v0.6.112 and later; this release is published so the version history has no gap.

v0.6.110

Choose a tag to compare

@github-actions github-actions released this 15 Sep 15:38

Desktop builds for v0.6.110. Publish deliberately once every platform's assets are attached.

v0.6.109

Choose a tag to compare

@github-actions github-actions released this 15 Sep 13:25

Desktop builds for v0.6.109. Publish deliberately once every platform's assets are attached.

v0.6.100

Choose a tag to compare

@github-actions github-actions released this 15 Sep 11:03

First cut since v0.6.93 — this release carries v0.6.94 through v0.6.100, none of which had ever been tagged.

The kit stopped forcing a choice between the house rule and the layout

Raw form controls: 188 → 0. house/no-raw-form-control is now error and pnpm lint runs at --max-warnings 0, the fourth and last house rule to finish its ratchet. Every <select>, radio, checkbox and inline field in the owner UI is a kit component, or carries a written reason for not being one.

Two size scales made that possible, both on Button's rungs so a field, a select and a button in one row line up without anyone hand-setting a height:

  • Input gained xs / sm / default / lg. Small boxed fields — a tab rename, a popover search — no longer have to drop out of the kit to be the right size.
  • SelectTrigger gained the same rungs, and its default moved from h-9 to h-10 to match Input. 28 of 76 call sites had been setting their own height, 15 of them spelling out the default they already had; /settings/profile was rendering four selects 4px short of the four fields beside them.

Accessibility

Arrow keys now move the selection in radio groups, not just the focus — RadioGroup and ToggleGroup type="single" both. Native radios and the WAI-ARIA pattern select on arrow; these moved focus and left aria-checked behind.

It was a race between two Radix packages: roving focus defers the move through a setTimeout, while the radio group clears its "arrow key is down" flag from a document-level keyup — so the selection followed focus only if the key was still held when the deferred focus landed. Every automated key press loses that race (Playwright and CDP send keyup 0 ms after keydown), which is why a green e2e suite never caught it.

Three heartbeats radios that carried no name — so the browser never grouped them at all, giving three tab stops and dead arrow keys — are one RadioGroup each.

Regression net

pnpm e2e is green: 163 passed, 1 skipped. It was 135/161 when first measured this month.

Fixes

  • The embedding config's provider and API key save correctly through the kit's Select (a hidden native control would have submitted a sentinel value as the API key id).
  • The /tables list no longer restores into a half-collapsed state.
  • Checkboxes in the IMAP folder picker announce their folder name.