Skip to content

Merge development into production [minor] - #565

Merged
rbruhn merged 16 commits into
mainfrom
development
Oct 13, 2026
Merged

rbruhn merged 16 commits into
mainfrom
development

Conversation

@rbruhn

@rbruhn rbruhn commented Oct 13, 2026

Copy link
Copy Markdown
Contributor

Releases 7 PRs as 3.2.0 (minor bump from 3.1.0). All were merged to development and verified there (latest dev release from run 38438301651). The checklist is #548: every check before release is ticked; the "After releasing to production" items remain. None of these PRs closes an issue (#562 is part of #521, which stays open for dropping Bootstrap and jQuery). No migrations.

Merge with Create a merge commit and keep [minor] in the message; that tag sets the version bump.

PR Change
#544 Composer minor and patch updates (Laravel 13.35, Filament 5.10.1, Livewire 4.4.7, Reverb 1.12.0, AWS SDK 3.400.0, …)
#547 app:clean-efs-dirs only cleans BIOSPEX's /efs directories (import, scratch, geolocate/export) and removes empty subdirectories; import scratch directories are removed again (the CSV reader is closed before cleanup)
#549 ws 8.22.0 and proxy-addr 2.0.8 (Dependabot security updates, applied on development)
#550 GitHub Actions: checkout 7, cache, setup-node 7
#562 Asset build moves from Laravel Mix to Vite; laravel-echo 2, axios 1.20, pusher-js 8.6; unused Tailwind, cross-env, Alpine and CodeMirror removed; static images move to public/images (6 unused ones to resources/unused)
#563 Expert review redirects go to the expedition instead of a Not Found page
#564 amCharts loads only on pages with charts (the WeDigBio rate modal fetches it when opened); jqGrid, jQuery UI, Summernote and the datetimepicker load only on the admin pages that use them (admin bundle 786 kB → 94 kB)

What changes in production

  • Assets: built by Vite into public/build with hashed file names, loaded with @vite. CI builds with yarn build and VITE_REVERB_* from the PROD_REVERB_* environment variables.
  • Deploy (deploy.php): public/css, public/js, public/fonts, public/images and public/mix-manifest.json are no longer shared between releases. Each release keeps its own build and images; Filament still publishes its assets into the release on every deploy. A new artisan:responsecache:clear runs right after the symlink switch, so no cached page points at the previous release's asset files.
  • Page weight: pages without charts no longer download amCharts (about 450 kB compressed), and most admin pages load a 94 kB bundle instead of 786 kB. Since 2026-10-13 nginx also gzips JS and CSS on both servers.
  • /efs cleanup: the daily run no longer touches anything outside BIOSPEX's own directories (the database dumps in /efs/mongodb and /efs/postgres are safe), and logs Cleanup completed. Files deleted: N. Directories deleted: N.
  • Dependabot: most open alerts are in Mix's build tooling on main; they close once this is merged.

Verified on development

Vite build and deploy layout; front pages (charts, map, confetti, bingo DataTables); Echo 2 receiving a test broadcast over Reverb; every admin plugin (subjects grid and column chooser, expedition create, date pickers, Summernote, DataTables, group invite modal, confirm dialogs, expert review with zoom); lazy loading of amCharts and the admin chunks; the expert review redirects; the import scratch cleanup and app:clean-efs-dirs. Details are on #548.

After deploy

Work through "After releasing to production" on #548: the production build and Response cache cleared in the deploy log, the new release's own public/build and public/images, front and admin pages and Echo on biospex.org, and the first scheduled /efs cleanup log.

Rollback, if needed: dep rollback production switches back to the 3.1.0 release, which still links public/css, public/js, public/fonts and public/images to shared/, where the Mix files remain.

dependabot Bot and others added 16 commits October 12, 2026 16:42
Bumps the composer-minor-and-patch group with 10 updates:

| Package | From | To |
| --- | --- | --- |
| [aws/aws-sdk-php](https://github.com/aws/aws-sdk-php) | `3.394.12` | `3.400.0` |
| [filament/filament](https://github.com/filamentphp/panels) | `5.9.0` | `5.10.1` |
| [laravel/framework](https://github.com/laravel/framework) | `13.31.0` | `13.35.0` |
| [laravel/reverb](https://github.com/laravel/reverb) | `1.11.1` | `1.12.0` |
| [league/oauth2-client](https://github.com/thephpleague/oauth2-client) | `2.9.0` | `2.9.1` |
| [livewire/livewire](https://github.com/livewire/livewire) | `4.4.4` | `4.4.7` |
| [spatie/laravel-honeypot](https://github.com/spatie/laravel-honeypot) | `4.7.2` | `4.7.3` |
| [spatie/laravel-responsecache](https://github.com/spatie/laravel-responsecache) | `8.4.3` | `8.4.5` |
| [fruitcake/laravel-debugbar](https://github.com/fruitcake/laravel-debugbar) | `4.4.3` | `4.4.4` |
| [laravel/boost](https://github.com/laravel/boost) | `2.8.1` | `2.10.3` |


Updates `aws/aws-sdk-php` from 3.394.12 to 3.400.0
- [Release notes](https://github.com/aws/aws-sdk-php/releases)
- [Commits](aws/aws-sdk-php@3.394.12...3.400.0)

Updates `filament/filament` from 5.9.0 to 5.10.1
- [Commits](filamentphp/panels@v5.9.0...v5.10.1)

Updates `laravel/framework` from 13.31.0 to 13.35.0
- [Release notes](https://github.com/laravel/framework/releases)
- [Changelog](https://github.com/laravel/framework/blob/13.x/CHANGELOG.md)
- [Commits](laravel/framework@v13.31.0...v13.35.0)

Updates `laravel/reverb` from 1.11.1 to 1.12.0
- [Release notes](https://github.com/laravel/reverb/releases)
- [Changelog](https://github.com/laravel/reverb/blob/main/CHANGELOG.md)
- [Commits](laravel/reverb@v1.11.1...v1.12.0)

Updates `league/oauth2-client` from 2.9.0 to 2.9.1
- [Release notes](https://github.com/thephpleague/oauth2-client/releases)
- [Changelog](https://github.com/thephpleague/oauth2-client/blob/master/CHANGELOG.md)
- [Commits](thephpleague/oauth2-client@2.9.0...2.9.1)

Updates `livewire/livewire` from 4.4.4 to 4.4.7
- [Release notes](https://github.com/livewire/livewire/releases)
- [Commits](livewire/livewire@v4.4.4...v4.4.7)

Updates `spatie/laravel-honeypot` from 4.7.2 to 4.7.3
- [Release notes](https://github.com/spatie/laravel-honeypot/releases)
- [Changelog](https://github.com/spatie/laravel-honeypot/blob/main/CHANGELOG.md)
- [Commits](spatie/laravel-honeypot@4.7.2...4.7.3)

Updates `spatie/laravel-responsecache` from 8.4.3 to 8.4.5
- [Release notes](https://github.com/spatie/laravel-responsecache/releases)
- [Changelog](https://github.com/spatie/laravel-responsecache/blob/main/CHANGELOG.md)
- [Commits](spatie/laravel-responsecache@8.4.3...8.4.5)

Updates `fruitcake/laravel-debugbar` from 4.4.3 to 4.4.4
- [Release notes](https://github.com/fruitcake/laravel-debugbar/releases)
- [Changelog](https://github.com/fruitcake/laravel-debugbar/blob/master/CHANGELOG.md)
- [Commits](fruitcake/laravel-debugbar@v4.4.3...v4.4.4)

Updates `laravel/boost` from 2.8.1 to 2.10.3
- [Release notes](https://github.com/laravel/boost/releases)
- [Changelog](https://github.com/laravel/boost/blob/main/CHANGELOG.md)
- [Commits](laravel/boost@v2.8.1...v2.10.3)

---
updated-dependencies:
- dependency-name: aws/aws-sdk-php
  dependency-version: 3.400.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: composer-minor-and-patch
- dependency-name: filament/filament
  dependency-version: 5.10.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: composer-minor-and-patch
- dependency-name: laravel/framework
  dependency-version: 13.35.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: composer-minor-and-patch
- dependency-name: laravel/reverb
  dependency-version: 1.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: composer-minor-and-patch
- dependency-name: league/oauth2-client
  dependency-version: 2.9.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: composer-minor-and-patch
- dependency-name: livewire/livewire
  dependency-version: 4.4.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: composer-minor-and-patch
- dependency-name: spatie/laravel-honeypot
  dependency-version: 4.7.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: composer-minor-and-patch
- dependency-name: spatie/laravel-responsecache
  dependency-version: 8.4.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: composer-minor-and-patch
- dependency-name: fruitcake/laravel-debugbar
  dependency-version: 4.4.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: composer-minor-and-patch
- dependency-name: laravel/boost
  dependency-version: 2.10.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: composer-minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…atch directories again

app:clean-efs-dirs now only cleans import, scratch and geolocate/export, and also removes empty subdirectories older than 72 hours. The rest of the shared /efs, including database dumps, is left alone.

DwcBatchProcessor closes its CSV reader when it finishes, so DwcBatchImportJob can remove the scratch directory on EFS, and the job logs a warning when it can't. ZooniverseExportDeleteFilesJob drops its dead efs check.
Bumps [ws](https://github.com/websockets/ws) from 8.19.0 to 8.22.0.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](websockets/ws@8.19.0...8.22.0)

---
updated-dependencies:
- dependency-name: ws
  dependency-version: 8.22.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [proxy-addr](https://github.com/jshttp/proxy-addr) from 2.0.7 to 2.0.8.
- [Release notes](https://github.com/jshttp/proxy-addr/releases)
- [Changelog](https://github.com/jshttp/proxy-addr/blob/master/HISTORY.md)
- [Commits](jshttp/proxy-addr@v2.0.7...v2.0.8)

---
updated-dependencies:
- dependency-name: proxy-addr
  dependency-version: 2.0.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
…pment/composer-minor-and-patch-2386b4ff4a

Bump the composer-minor-and-patch group with 10 updates
Limit the /efs cleanup to BIOSPEX's directories and remove import scratch directories again
Update ws to 8.22.0 and proxy-addr to 2.0.8
Bumps the github-actions group with 3 updates: [actions/checkout](https://github.com/actions/checkout), [actions/cache](https://github.com/actions/cache) and [actions/setup-node](https://github.com/actions/setup-node).


Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

Updates `actions/cache` from 5 to 6
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@v5...v6)

Updates `actions/setup-node` from 6 to 7
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: actions/cache
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: actions/setup-node
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
…development/github-actions-c73989fc32

Bump the github-actions group with 3 updates
Vite 8 with laravel-vite-plugin replaces Laravel Mix and webpack. The bundles are ES modules: jQuery and the libraries the pages use are set as globals first, jQuery UI comes from its prebuilt bundle, jqGrid and the multiselect widget are registered explicitly, implicit globals are assigned to window, and inline scripts that use them at load time are modules after deferred CDN plugins.

Blade views use @Vite, static images move to public/images, and each release keeps its own public/build. The deploy builds with yarn build and VITE_REVERB_* and clears the response cache after the symlink switch.

Takes the Dependabot JavaScript updates: laravel-echo 2, axios 1.20, pusher-js 8.6 and minor versions, bootbox from npm, and drops the unused Tailwind, cross-env, Alpine and CodeMirror packages.
contributors/fsu.png, flmnh.png and uf.png, icons/apple-icon.png and apple-icon-precomposed.png, and avatars/small/missing.png aren't referenced by live code. The unused missing_avatar_small config key goes too.
Move the asset build from Laravel Mix to Vite
… page

Three redirects in ExpertReconcileController passed the project ID and the expedition ID to admin.expeditions.show, which only takes the expedition, so they landed on /admin/expeditions/{project_id}?{expedition_id}. They now pass the expedition.
Send expert review redirects to the expedition instead of a Not Found page
amCharts is no longer loaded on every page: pages with charts include it before their chart bundle, and the WeDigBio rate modal fetches it when first opened. In the admin, jqGrid and jQuery UI load only on pages with the subjects grid, Summernote only with an editor and the datetimepicker only with date fields, which takes the admin bundle from 786 kB to 94 kB.
Load amCharts and the heavy admin plugins only where they're used
@rbruhn
rbruhn merged commit 007d72a into main Oct 13, 2026
8 checks passed

This branch was successfully deployed

1 active deployment
development — 9099cd79 Deployed Oct 13, 2026 by rbruhn via build-and-deploy-development / deploy #317
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.

1 participant