Skip to content

Merge development into production [minor] - #571

Merged
rbruhn merged 8 commits into
mainfrom
development
Oct 17, 2026
Merged

rbruhn merged 8 commits into
mainfrom
development

Conversation

@rbruhn

@rbruhn rbruhn commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor

Releases 4 PRs as 3.3.0 (minor bump from 3.2.0). All were merged to development and verified there (latest development deploy: run 39058285819). The checklist is #567: every check before release is ticked except releasing itself; the "After releasing to production" items remain. No migrations.

Closes #82

Merge with Create a merge commit and keep [minor] in the message; that tag sets the version bump. Release while the export and OCR queues are idle.

PR Change
#566 Confirmation buttons (data-confirm) open a native <dialog> instead of bootbox, which has an unfixed XSS advisory and is removed
#568 Read-only API endpoints for public projects and expeditions (/v1/projects, /v1/expeditions) behind a new public:read ability; the API home page documents them. Closes #82
#569 API Tokens page in the Filament admin: list, create (user, abilities, optional expiry, token shown once with a copy button) and revoke Sanctum tokens. Abilities are now an ApiAbility enum shared with the v1 route middleware
#570 Token expiry is entered, and token times are shown, in the admin's profile timezone; still stored in UTC

What changes in production

  • API: GET /v1/projects, /v1/projects/{uuid}, /v1/expeditions and /v1/expeditions/{uuid} on api.biospex.org, for tokens with public:read. The WeDigBio dashboard route still accepts its existing four abilities, so current tokens keep working.
  • Admin: API tokens can be created and revoked at /admin/dashboard/api-tokens instead of in tinker. This unblocks Split the API token: a read-only token for the WeDigBio Reports dashboard #551 (a wedigbio-dashboard:read-only token for WeDigBio Reports, then revoking the * token).
  • Front end: confirm buttons use the new dialog; Dependabot alert Find wiki package for site #137 (bootbox) closes once this is merged.

Verified on development

Confirmation dialogs (GET, POST and DELETE confirms, inside the expedition tools modal, grid export notifications); the projects and expeditions API (totals and paging match the public pages, filters, 404s, participate links match the public cards, API home page); the API Tokens page (create, token shown once, abilities enforced, expiry in local time and 401 after it, revoke with confirmation, non-admins refused); WeDigBio Reports reading the dashboard with a wedigbio-dashboard:read-only token. Details are on #567.

After deploy

Work through "After releasing to production" on #567, then #551 on production.

Rollback, if needed: dep rollback production switches back to the 3.2.0 release. Tokens created on the new page stay in personal_access_tokens; wedigbio-dashboard:read tokens keep working on the dashboard, but the projects and expeditions endpoints go away until the release is redeployed.

Links and buttons marked data-confirm="confirmation" now open an Alpine-driven <dialog> that shows the title and message as text, and submit the method form with DOM methods. The grid's export messages use notify(). The bootbox package, which has an unfixed XSS advisory, is removed.
Replace bootbox with a native dialog for confirmations
GET /v1/projects and /v1/expeditions (list and show) return the projects
and expeditions shown on the public site, for tokens with the new
public:read ability. Lists are paginated (per_page up to 100); expeditions
filter by project_uuid and status. The WeDigBio dashboard keeps its own
ability list, so a public:read token cannot read it. The API page now
documents the new endpoints.

Closes #82
Add read-only API endpoints for public projects and expeditions
The new API Tokens resource lists Sanctum tokens, creates them for a chosen user with abilities picked from checkboxes and an optional expiry, shows the new token once with a copy button, and revokes them. The known abilities are an ApiAbility enum, which the v1 route middleware now uses too.
The expiry picker read the chosen time as UTC, so a time picked in local time could be refused as already past or saved hours off. The picker and the list's times now use the signed-in admin's profile timezone, times are still stored in UTC, and the expiry can't be set before now in that timezone.
Show API token times in the admin's timezone

This branch was successfully deployed

1 active deployment
development — 3bdf61ee Deployed Oct 17, 2026 by rbruhn via build-and-deploy-development / deploy #322
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.

Build API

1 participant