Skip to content

Release v0.7.0 - #8

Merged
juancobo merged 15 commits into
mainfrom
release/v0.7.0
Aug 17, 2026
Merged

juancobo merged 15 commits into
mainfrom
release/v0.7.0

Conversation

@juancobo

Copy link
Copy Markdown
Member

Ports Fisqua 0.7.0 — the workspace essentials release.

Fifteen commits, grouped by arc rather than by the order things were built. The largest additions are workspace-wide search, handlists, self-service export, and a single queue for pending decisions; the largest change is that authority codes now name the institution that made the record instead of minting everything under one prefix.

Full detail in CHANGELOG.md under [0.7.0].

Notes for review

  • Authority code prefixes (d706d87) are the change with the longest tail. A prefix records who did the identifying and enriching, not who currently holds the record, so it never changes once minted — a code stays a stable citation across a transfer.
  • Migration 0067 adds tenant_id to entities and places and deliberately leaves every existing row NULL, i.e. federation-shared. Nothing moves on deploy.
  • A cron trigger arrives in wrangler.jsonc (3207d32): a fifteen-minute notification sweep on production, explicitly empty on staging. triggers is an inheritable wrangler key, so staging has to decline it out loud or it would inherit production's.
  • Intermediate commits do not each typecheck. This is a curated re-application of a tree diff, as with 0.5.0 and 0.6.0; the branch tip is what is verified.

Verification

  • npm ci, npm run typecheck — clean at the branch tip.
  • Full suite runs here, via preview.yml.

…horities

Entity and place codes were minted under a single hardcoded prefix, so
every institution's records carried one agency's mark. Each maintaining
agency now mints under its own prefix, and the prefix records who did the
identifying and enriching rather than who currently holds the record — so
a code stays a stable citation when a record changes hands.

Authorities belong to the workspace that made them. Sharing them into a
federation is opt-in; migration 0067 adds the column and leaves every
existing row shared, so nothing moves until someone decides it should.
One box reaches all three record kinds together, with filters, sorting,
and browsing for when there is no search term yet. An advanced view adds
a query grammar, per-field criteria and date ranges.

Open to every workspace member; people and places still require an
administrator to see. Migration 0075 widens the full-text index so broad
queries stop hitting the term limit and returning nothing.
A handlist holds one kind of thing — records, entities or places — keeps
the order you put them in, and stays put. Share one read-only or for
editing, search within it, and add to it from a search result or from a
record's own page. The add dialog names which of your lists a record is
already in.
Choose what to export, in what shape and in what format. Four ways to
define the set — everything, a search, a handlist, or a hand-picked
selection — and four formats: Fisqua canonical, Dublin Core, JSON and
EAD XML, plus a print-ready finding aid.

Every run is recorded: what left, in what shape, and when. Where a format
cannot carry a field, the run reports the loss rather than dropping it
silently.
…lary

Everything awaiting a judgement now arrives in one place. Each item states
what it is asking you to decide, names a suggested action, and shows the
evidence behind it. Comment threads fold into a single table, so a comment
on a decision behaves like every other comment and its author can edit or
withdraw it.

Duplicate detection reads more like a person would, catching pairs that
differ only by spelling or by the ending of a word — for authority records
and vocabulary terms alike. Merging two records and minting one from an
accepted proposal are both recorded like any other edit, so the change can
be traced or undone.
A digest email collects what has happened since the last one. Frequency
and language are set per account, not per workspace, so someone who works
across two institutions gets one cadence in one language.

Digests are assembled from an outbox table swept on a schedule, so a slow
or failing send never blocks the action that produced the notification.
…form

Any field can now show what its own standard says the element is for, with
the element cited — ISAD(G) and DACS in the standards' own words, RAD
summarised — in English and Spanish. The words are quoted because they are
quotations, and a standard is never shown under another standard's citation.

The new-description form asks for what the level requires. Descriptions
could previously only be created at section and volume level: every other
level was refused for fields the form never offered. The form now follows
the level you choose, drawn from your own descriptive standard.
The bar names the workspace you are actually in and the dashboard is scoped
to it. Signing in is tied to your account rather than to one institution, so
someone who works across two no longer needs two identities — and people
holding a federation grant are admitted instead of being bounced to a
wrong-workspace page.

Workspace administrators can grant the roles their own institution needs,
rather than choosing from a fixed list.
The guide is served at /docs and /guia in the reader's own language. Every
step of the imports journey — and the run and revert surfaces — carries a
help link that opens the matching page, so the answer is one click away
rather than a search on another site.
Tick rows in search results or in the descriptions, entities and places
lists, then add the selection to a handlist or send it straight to export.
The selection survives paging, so a set assembled across several pages
stays whole.
Every piece of text in the interface now exists in both languages, and the
Spanish has been reconciled to one house style rather than varying from
screen to screen. Four viewer toolbar labels that never resolved and showed
their key instead are among the gaps this closes.

Counts, dates and durations follow the reader's language rather than the
server's locale, through shared formatters instead of per-screen
formatting.
A 403, 404 or 500 now renders as a proper page in English or Spanish
instead of a bare framework default. The 404 says that nothing in this
workspace has that address, rather than implying the page might exist
somewhere else.
Each admin surface had grown its own way of reporting a save — a banner
here, an inline note there, silence in a few places. They now share one
affordance, so a cataloguer learns the signal once and reads it everywhere.
Dashboard feedback listed items that had been deleted. Images promoted from
crowdsourcing did not appear, because their manifests were written to an
address the site did not serve. Names with apostrophes or accents displayed
as strings of symbols. Legacy identifiers carried over from a previous
system now appear on the record page, and records management explains
itself in workspaces that do not use crowdsourcing instead of showing an
empty page.

Also headers the three config files that had gone without one since the
project was initialised.
Version bumps and the changelog for 0.7.0. The landing footer now derives
its version from package.json rather than carrying a literal, so only one
place needs bumping next time.

Carries the deployment configuration for the notification sweep: a
fifteen-minute cron on production, explicitly empty on staging. "triggers"
is an inheritable wrangler key, so staging has to say no to it out loud.
Copilot AI lite review requested due to automatic review settings August 17, 2026 17:17

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

@juancobo
juancobo merged commit 9b381e1 into main Aug 17, 2026
1 check passed
@juancobo
juancobo deleted the release/v0.7.0 branch August 17, 2026 17:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants