Merge branch 'final-v3-alpha2-things' into 'v3'

Final v3 alpha2 things

See merge request openflexure/openflexure-microscope-server!354
This commit is contained in:
Julian Stirling 2025-08-08 12:46:09 +00:00
commit c023449b75
6 changed files with 144 additions and 5 deletions

View file

@ -1,3 +1,80 @@
# [v3.0.0-alpha2](https://gitlab.com/openflexure/openflexure-microscope-server/compare/v3.0.0-alpha1...v3.0.0-alpha2) (2025-08-08)
This is the second alpha release the v3 server, the main focus has been higher resolution scans with more reliable focus. There have been many other changes, some highlights are:
* Capture in Scanning increased from 0.5MP to 2MP
* Using updated stitching which is significantly faster.
* Scanning uses a "smart stacking" that camptures images until it has found the sharpest one. Removing the need to perform autofocus, and improving the focus reliability.
* Server version is saved into image metadata
* Improvements to settings in LabThings-FastAPI so settings persist more reliably
* Improvements to memory management, process, and directory management during scanning
* UI improvements including:
* Direct download of stitched image
* Stitching can be cancelled from the UI
* Stitch all scans button in the UI to stitch any scans that are not already stitched
* The log display pauses autoscroll on mouse hover
* More consistent updating of scan tab
* Better description of server version information
* Picamera and Sangaboard code are now directly in the repository, in heriting from BaseCamera and BaseStage class. Allowing core functionality to be added to BaseStage and Base Camera.
* Other underlying changed that will make customisation easier in the future.
* Significantly increase in code testing
The following merge requests have been merged into v3:
* !290 Enable more lint checkers
* !288 Remove numerical input spinners for x,y,z settings in Firefox
* !295 Update issue templates
* !298 Git ignore openflexure/ dir
* !297 Add a timeout when shutting down the server.
* !300 Automatically create HTML coverage report each time PyTest runs
* !302 Correct spelling of Sangaboard
* !303 Remove the overwriting of internal globals, requires removing future annoations <!-- codespell:ignore annoations -->
* !251 2MP from 8MP capturing
* !271 A stack that tests whether the sharpest image is towards the middle
* !294 Trying to make a distinction between file directory operations for scans and scanning code
* !308 Replace semi colon with double ampersand in package.json
* !305 Allow downloading just the stitched image, and don't zip DZIs
* !309 Combine uniquness and length checks <!-- codespell:ignore uniquness -->
* !310 Remove test Thing that is is never used.
* !312 Allow stiching to be cancelled after a scan complete
* !311 Move SangaboardThing into repo
* !315 Fix artifact path in CI for webapp
* !313 Remove out of date CaptureThing from Simulation and Stub config
* !314 Remove old unmaintained components
* !296 Update Thing Settings and import statments for LabThings-FastAPI 0.0.10 <!-- codespell:ignore statments -->
* !319 Python integration tests
* !316 Stop streams to ensure that server exits gracefully.
* !320 Better docstrings
* !322 Update README to point at CONTRIBUTING and make contributing link to site,...
* !324 Fix example docstring example in CONTRIBUTING.md
* !325 Test logging
* !326 Add camera-stage-mapping compliant functions to BaseStage and BaseCamera.
* !321 Update setting manager
* !323 Merge settings and system control
* !328 Update simulation canvas to have colour so it works with background detect.
* !330 Stitch all scans button, and refresh scan tab when closing modals
* !327 Refactor background detect to allow switching algorithms
* !332 Make log display pause on hover
* !333 Bump LabThings-Fastapi to 0.0.11
* !336 Remove zenodo scripts and job
* !334 Stop exposure walking on camera reload, reset CCM on full calibration
* !339 Remove auto-recentre stage
* !340 Remove class from action button
* !337 Report Picamera tests in CI
* !341 Prepend images with img_
* !343 Update .coveragerc to get 2 decimal places for coverage
* !331 Dynamic UI for camera and background detect settings
* !345 Change "settings" to "configure" in background detect tab
* !346 Make scan directory manager thread safe
* !344 Scanning in simulation
* !338 Fix movements axes
* !347 Pull webapp
* !342 Break up SmartScan further so it can be tested
* !353 Speed up `tests/test_stage.py` significantly
* !352 Update to stitching 0.2
# [v3.0.0-alpha1](https://gitlab.com/openflexure/openflexure-microscope-server/compare/v2.11.0...v3.0.0-alpha1) (2025-06-09)
This is the first alpha release of an almost total overhaul of the server, and the underlying LabThings framework. Some highlights are:

62
change_log_helper.py Executable file
View file

@ -0,0 +1,62 @@
#! /usr/bin/env python3
"""Create a list of the MRs into v3 (unless specified) since the last release."""
import sys
import argparse
import gitlab
from gitlab.exceptions import GitlabGetError
PROJECT_ID = 9238334
def main(tag, branch: str = "v3"):
"""Create a list of the MRs into a given branch after a tag.
:param tag: The tag the mrs should be since.
:param branch: The Git branch name MRs were merged into.
"""
try:
gl = gitlab.Gitlab()
ofm_repo = gl.projects.get(PROJECT_ID)
tag_obj = ofm_repo.tags.get(tag)
tag_date = tag_obj.commit["committed_date"]
# There is no "merged_after option". So get everything updated after
relevant_mrs = ofm_repo.mergerequests.list(
state="merged",
target_branch=branch,
order_by="merged_at",
updated_after=tag_date,
get_all=True,
)
# Filter for those merged after the tagged commit.
for mr in reversed(relevant_mrs):
if mr.merged_at > tag_date:
print(f"* !{mr.iid} {mr.title}")
except GitlabGetError as e:
print(f"Failed contact gitlab server.\n{e}")
sys.exit(-1)
if __name__ == "__main__":
parser = argparse.ArgumentParser(
description=(
"Get Merge requests since a specific tag to help with creating a "
"changelog."
"The response in printed to the terminal."
"Check the start of the list, it may have a couple of extra MRs on the "
"same day as the tag."
)
)
parser.add_argument("tag", help="The Git tag to start looking from (required)")
parser.add_argument(
"-b",
"--branch",
default="v3",
help="Git branch that requests were merged into (default: v3)",
)
args = parser.parse_args()
main(tag=args.tag, branch=args.branch)

View file

@ -3,7 +3,7 @@ name = "openflexure-microscope-server"
# Note that version needs to match a string stored in a unit test, and
# the package.json file in the webapp or the CI will fail.
version = "3.0.0-alpha1"
version = "3.0.0-alpha2"
authors = [
{ name="Richard Bowman", email="richard.bowman@cantab.net" },
{ name="Joel Collins" },

View file

@ -19,7 +19,7 @@ THIS_DIR = os.path.dirname(__file__)
TRUE_REPO_DIR = os.path.dirname(THIS_DIR)
# For explicit version checking.
VER_STRING = "3.0.0-alpha1"
VER_STRING = "3.0.0-alpha2"
# This is the regex provided by https://semver.org/
SEMVER_REGEX = re.compile(

View file

@ -1,12 +1,12 @@
{
"name": "openflexure-microscope-jsclient",
"version": "3.0.0-alpha1",
"version": "3.0.0-alpha2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "openflexure-microscope-jsclient",
"version": "3.0.0-alpha1",
"version": "3.0.0-alpha2",
"license": "GNU General Public License v3.0 ",
"dependencies": {
"material-design-icons": "^3.0",

View file

@ -1,6 +1,6 @@
{
"name": "openflexure-microscope-jsclient",
"version": "3.0.0-alpha1",
"version": "3.0.0-alpha2",
"private": true,
"description": "User client for the OpenFlexure Microscope Server",
"author": "OpenFlexure <contact@openflexure.org> (https://www.openflexure.org)",