Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
866 commits
Select commit Hold shift + click to select a range
3f201e8
Add Zarr fileset management functions to Microscope class, including …
cccoolll Jul 9, 2025
52406e1
Implement Zarr fileset management functions in SquidController, inclu…
cccoolll Jul 9, 2025
bc1b0b8
Refactor server attribute initialization in Microscope class to impro…
cccoolll Jul 9, 2025
af9c8e3
Add comprehensive tests for Zarr fileset management in `test_squid_co…
cccoolll Jul 9, 2025
ecbdacb
Add setup completion tracking in Microscope class to ensure service h…
cccoolll Jul 9, 2025
f51507b
Merge pull request #51 from cccoolll/feature/video-stream-in-GoogleMa…
cccoolll Jul 9, 2025
644edd9
Revert "Feature/video stream in google map style"
cccoolll Jul 9, 2025
d31933d
Merge pull request #52 from aicell-lab/revert-51-feature/video-stream…
cccoolll Jul 9, 2025
45d70d0
Remove setup completion tracking from Microscope class to simplify se…
cccoolll Jul 9, 2025
93ecbe6
Refactor chatbot service connection logic in Microscope class to impr…
cccoolll Jul 9, 2025
7b7fce9
Update hypha-rpc dependency version in requirements.txt from 0.20.55 …
cccoolll Jul 9, 2025
e39175d
Refactor Zarr directory cleanup in SquidController to only remove .za…
cccoolll Jul 9, 2025
cf9ccf6
Enhance Zarr export functionality by implementing background processi…
cccoolll Jul 10, 2025
27219e0
Update documentation for ZIP path manipulation and compliance standar…
cccoolll Jul 10, 2025
b4ac192
Enhance Zarr canvas initialization and loading logic in SquidControll…
cccoolll Jul 10, 2025
f406445
Improve ZIP64 support for large archives in artifact management and Z…
cccoolll Jul 10, 2025
812af68
Enhance Zarr fileset management in SquidController by adding support …
cccoolll Jul 10, 2025
d69e13f
Implement a synchronization mechanism in `ZarrCanvas` to ensure all …
cccoolll Jul 10, 2025
0d573ea
Refactor Zarr export functionality by removing the arbitrary size lim…
cccoolll Jul 11, 2025
ffdac12
remove ununsed test
cccoolll Jul 11, 2025
a9b4fa7
Add ZIP64 upload and endpoint access tests
cccoolll Jul 11, 2025
2773ec1
Remove ZIP64 test scripts for upload and endpoint access functionality
cccoolll Jul 11, 2025
b6f9b25
New zip upload test
cccoolll Jul 11, 2025
e94fd0f
Remove deprecated Zarr upload workflow test
cccoolll Jul 11, 2025
5dedbe4
Update dependencies and enhance test timeouts for video buffering and…
cccoolll Jul 11, 2025
7f5f7af
Enhance ZIP upload tests with async retry logic and cleanup functiona…
cccoolll Jul 11, 2025
8672713
Add mini chunk dataset creation and analysis to ZIP upload tests
cccoolll Jul 13, 2025
77d4513
Refactor Zarr export process to use file-based method for ZIP creation
cccoolll Jul 13, 2025
528d963
Add .cursorignore file to specify patterns for files to ignore during…
cccoolll Jul 13, 2025
8cc1119
Refactor cropping logic in ZarrCanvas to ensure consistent image size…
cccoolll Jul 2, 2025
efb9a62
Add stop_scan_and_stitching method to interrupt ongoing scans
cccoolll Jul 2, 2025
f4e6039
Implement Zarr upload functionality in Microscope service
cccoolll Jul 2, 2025
cfb0aa7
Refactor Zarr artifact manager connection logic in Microscope service…
cccoolll Jul 2, 2025
c9e9747
Refactor error handling in SquidArtifactManager to catch general exce…
cccoolll Jul 2, 2025
90dd357
Add Zarr dataset management methods to Microscope service
cccoolll Jul 2, 2025
44fff24
Remove redundant task status updates during Zarr dataset export and u…
cccoolll Jul 2, 2025
be94054
Add Zarr artifact manager initialization and connection logic to Micr…
cccoolll Jul 2, 2025
8c30a01
Enhance ZarrCanvas to calculate actual disk usage for Zarr datasets
cccoolll Jul 2, 2025
04933fa
Calculate average stage position during frame acquisition
cccoolll Jul 2, 2025
3ebb4d3
remove check_permission
cccoolll Jul 2, 2025
35302e2
Refactor error handling in Microscope service to raise exceptions ins…
cccoolll Jul 3, 2025
cefe33b
Enhance quick scan to support stripe scanning
cccoolll Jul 4, 2025
8201ca5
Implement velocity restoration during scan interruptions in SquidCont…
cccoolll Jul 4, 2025
0df2511
fix test
cccoolll Jul 4, 2025
c3f5969
Refactor well plate scanning to run in a separate thread executor, pr…
cccoolll Jul 4, 2025
9d21d91
utilizing a thread executor to prevent event loop blockage during ope…
cccoolll Jul 4, 2025
728f9b1
Add autofocus options to quick scan with stitching in SquidController
cccoolll Jul 5, 2025
df378e1
Improve error handling for Zarr canvas initialization in Microscope s…
cccoolll Jul 6, 2025
0b305fc
Refactor quick scan with stitching to accept a dictionary of paramete…
cccoolll Jul 6, 2025
c3e661d
Add asynchronous well movement methods to SquidController
cccoolll Jul 6, 2025
94c600c
Add timepoint management functionality to SquidController and Microsc…
cccoolll Jul 6, 2025
93a1dc4
Add Zarr canvas management guidelines and improve timepoint handling …
cccoolll Jul 7, 2025
0201d1f
Enable video frame adjustment in Hypha service API and remove comment…
cccoolll Jul 7, 2025
e5f37ef
Enable update_parameters_from_client in Hypha service API and add int…
cccoolll Jul 7, 2025
a663da9
Refactor Zarr upload workflow test to use Microscope instance and ini…
cccoolll Jul 7, 2025
792a97f
fix test error
cccoolll Jul 7, 2025
2813d7e
Remove redundant Zarr canvas initialization checks in SquidController…
cccoolll Jul 7, 2025
72634ec
add timepoints pre-allocation functionality.
cccoolll Jul 7, 2025
64c0324
Enhance frame acquisition timing and improve Zarr stitching queue man…
cccoolll Jul 8, 2025
f5f6c09
Remove timepoint management functions from Microscope and SquidContro…
cccoolll Jul 9, 2025
d8e13a1
Implement Zarr fileset management functions in SquidController, inclu…
cccoolll Jul 9, 2025
724ec2b
Add comprehensive tests for Zarr fileset management in `test_squid_co…
cccoolll Jul 9, 2025
c60fb92
Refactor Zarr directory cleanup in SquidController to only remove .za…
cccoolll Jul 9, 2025
7ea947a
Enhance Zarr export functionality by implementing background processi…
cccoolll Jul 10, 2025
88c246e
Update documentation for ZIP path manipulation and compliance standar…
cccoolll Jul 10, 2025
18a6e7a
Enhance Zarr canvas initialization and loading logic in SquidControll…
cccoolll Jul 10, 2025
2167d75
Improve ZIP64 support for large archives in artifact management and Z…
cccoolll Jul 10, 2025
c942211
Enhance Zarr fileset management in SquidController by adding support …
cccoolll Jul 10, 2025
b937386
Implement a synchronization mechanism in `ZarrCanvas` to ensure all …
cccoolll Jul 10, 2025
4e96595
Refactor Zarr export functionality by removing the arbitrary size lim…
cccoolll Jul 11, 2025
8214da8
remove ununsed test
cccoolll Jul 11, 2025
6a00dee
Add ZIP64 upload and endpoint access tests
cccoolll Jul 11, 2025
3746c1c
Remove ZIP64 test scripts for upload and endpoint access functionality
cccoolll Jul 11, 2025
03ce294
New zip upload test
cccoolll Jul 11, 2025
a8ed0ef
Remove deprecated Zarr upload workflow test
cccoolll Jul 11, 2025
18974f5
Update dependencies and enhance test timeouts for video buffering and…
cccoolll Jul 11, 2025
e0f88a5
Enhance ZIP upload tests with async retry logic and cleanup functiona…
cccoolll Jul 11, 2025
0d1595e
Add mini chunk dataset creation and analysis to ZIP upload tests
cccoolll Jul 13, 2025
6681828
Refactor Zarr export process to use file-based method for ZIP creation
cccoolll Jul 13, 2025
588d976
Add .cursorignore file to specify patterns for files to ignore during…
cccoolll Jul 13, 2025
aa1ccb9
Merge branch 'fix-bad-offset'
cccoolll Jul 13, 2025
6350ed2
Merge branch 'fix-bad-offset' and resolve all conflicts using their v…
cccoolll Jul 13, 2025
54aa4ce
Add stop_scan_and_stitching method to interrupt ongoing scans
cccoolll Jul 2, 2025
bd78047
Implement Zarr upload functionality in Microscope service
cccoolll Jul 2, 2025
55c17f5
Refactor error handling in SquidArtifactManager to catch general exce…
cccoolll Jul 2, 2025
416fc96
Resolve merge conflict in set_stage_velocity method - use error respo…
cccoolll Jul 14, 2025
a123ff2
Refactor error handling in Microscope service to raise exceptions ins…
cccoolll Jul 3, 2025
692ac3a
Enhance quick scan to support stripe scanning
cccoolll Jul 4, 2025
b71407a
Implement velocity restoration during scan interruptions in SquidCont…
cccoolll Jul 4, 2025
418ce4a
Add autofocus options to quick scan with stitching in SquidController
cccoolll Jul 5, 2025
3e66c88
Refactor quick scan with stitching to accept a dictionary of paramete…
cccoolll Jul 6, 2025
6e733c6
Merge branch 'well-separated-canvas'
cccoolll Jul 14, 2025
1fc62a7
Merge pull request #19 from cccoolll/main
cccoolll Jul 14, 2025
26e38f3
remove unused import
cccoolll Jul 14, 2025
341c4ed
fix import issue
cccoolll Jul 14, 2025
b51a080
Enhance well canvas management test by adding cleanup for existing ex…
cccoolll Jul 14, 2025
3dd732c
Refactor quick scan parameters handling in Microscope and SquidContro…
cccoolll Jul 14, 2025
42dc6b9
Remove unused scanning methods to streamline codebase.
cccoolll Jul 14, 2025
f318592
Initialize legacy attributes for well and zarr canvases in SquidContr…
cccoolll Jul 14, 2025
5d96a35
Implement validation for well positions with padding to improve robu…
cccoolll Jul 14, 2025
6735f9b
Refactor logging in SquidController and WellZarrCanvasBase to use a c…
cccoolll Jul 14, 2025
32a7699
Add well canvas existence check in Microscope and SquidController
cccoolll Jul 14, 2025
0766019
Refactor get_stitched_region method in Microscope and SquidController…
cccoolll Jul 14, 2025
bd48a68
Update SquidController to calculate absolute coordinates
cccoolll Jul 14, 2025
c07affa
Enhance wells_to_scan handling in SquidController to accept both well…
cccoolll Jul 15, 2025
4c21876
Implement well-based routing method for image stitching in SquidContr…
cccoolll Jul 15, 2025
4fd3264
Merge pull request #56 from aicell-lab/cccoolll-fix-bad-offset
cccoolll Jul 15, 2025
ee0e7bd
update hypha-rpc
cccoolll Jul 15, 2025
9ae76ca
Add Zarr Canvas & Image Stitching documentation
cccoolll Jul 15, 2025
91a772e
Refactor zip upload tests to support CI environments with adaptive te…
cccoolll Jul 15, 2025
864ee9c
Merge pull request #57 from cccoolll/well-separated-canvas
cccoolll Jul 15, 2025
61f84bc
Update test_webrtc_e2e.py to adjust movement distance
cccoolll Jul 15, 2025
e2ca130
Remove unused functions
cccoolll Jul 15, 2025
b946ed8
fix test
cccoolll Jul 15, 2025
b9b7022
Implement upload_zarr_dataset method to upload well canvases as indiv…
cccoolll Jul 15, 2025
cdc1e4d
Enhance Zarr dataset upload functionality to support experiment-based…
cccoolll Jul 15, 2025
2228121
remove unused test
cccoolll Jul 16, 2025
7eea18a
Refactor gallery dataset listing methods to improve clarity and funct…
cccoolll Jul 16, 2025
b4a8989
Update mini chunk size in zip upload tests to 3x3 for improved testin…
cccoolll Jul 16, 2025
a9777bf
Merge branch 'main' into upload-imaging-data
cccoolll Jul 16, 2025
e2c3e76
Refactor Zarr dataset upload test to utilize existing artifact_manage…
cccoolll Jul 16, 2025
ba4b0d9
Add gallery management functions to Hypha service
cccoolll Jul 16, 2025
804c25d
Update default well padding parameter from 2.0mm to 1.0mm
cccoolll Jul 16, 2025
6e39bc0
Refactor minimum size for Zarr canvas resolution from 512 to 64 pixels
cccoolll Jul 16, 2025
0f266e6
Enhance Zarr dataset upload process to support batch uploads of well …
cccoolll Jul 16, 2025
f730c6c
Add default experiment management to ExperimentManager
cccoolll Jul 16, 2025
1b0bdbd
Update readme for test
cccoolll Jul 16, 2025
6fbb5e5
Add OME-Zarr Chunk Visualizer Script
cccoolll Jul 18, 2025
c1014ec
Enhance OME-Zarr chunk visualization script with detailed logging
cccoolll Jul 18, 2025
57b47f1
Remove total size feasibility check for experiment uploads
cccoolll Jul 18, 2025
f4e8456
Refactor ZIP file validation and well canvas export to use asyncio fo…
cccoolll Jul 18, 2025
5790fab
Remove get_stitched_region method from Microscope class in start_hyph…
cccoolll Jul 18, 2025
2f74c53
Merge pull request #58 from cccoolll/upload-imaging-data
cccoolll Jul 18, 2025
f151fca
Implement background upload functionality for well canvases during sc…
cccoolll Jul 22, 2025
7a092ad
Shorten chatbot service ID in Microscope class to comply with OpenAI …
cccoolll Jul 23, 2025
792881e
Add padding calculations for pixel conversion in WellZarrCanvasBase t…
cccoolll Jul 23, 2025
e476201
Enhance Microscope class to integrate Zarr artifact manager for impro…
cccoolll Jul 23, 2025
becd0dd
Update hypha-rpc dependency
cccoolll Aug 15, 2025
1cbcaa9
Merge branch 'aicell-lab:main' into upload-imaging-data
cccoolll Aug 18, 2025
0aeadd3
Update GitHub Actions
cccoolll Aug 18, 2025
b583e14
update github action
cccoolll Aug 18, 2025
5c72635
Enhance testing configuration by setting matplotlib to a non-interact…
cccoolll Aug 18, 2025
185a0ab
Refactor matplotlib configuration in tests to prevent type registrati…
cccoolll Aug 18, 2025
16d3a82
Update GitHub Actions workflow
cccoolll Aug 18, 2025
8ef2982
fix version conflict
cccoolll Aug 18, 2025
d5d10c4
Update test for scanning
cccoolll Aug 18, 2025
6635f6b
Remove outdated test
cccoolll Aug 18, 2025
219ab6f
Merge branch 'upload-imaging-data' into fix-tests
cccoolll Aug 18, 2025
623b379
Merge pull request #21 from cccoolll/fix-tests
cccoolll Aug 18, 2025
dbde9f5
remove ununsed test
cccoolll Aug 18, 2025
b4c4895
Merge branch 'fix-tests' of github.com:cccoolll/squid-control into fi…
cccoolll Aug 18, 2025
5ff94cd
Merge pull request #60 from cccoolll/upload-imaging-data
cccoolll Aug 18, 2025
d1d9954
Add final cleanup test for artifact manager to ensure removal of test…
cccoolll Aug 20, 2025
69e2e22
use multipart upload
cccoolll Aug 20, 2025
d1020bf
update hypha-rpc version
cccoolll Aug 25, 2025
539a9cd
Enhance channel handling in microscope service to support merging mul…
cccoolll Aug 25, 2025
1668918
Merge pull request #62 from cccoolll/multi-part-upload
cccoolll Aug 25, 2025
8f20cc4
Refactor authentication handling in Microscope service
cccoolll Aug 27, 2025
60311ce
fix authorization email handling
cccoolll Aug 27, 2025
9dc09ea
use ping instead of hello_world
cccoolll Aug 28, 2025
e54dc3d
Remove similarity search service integration
cccoolll Aug 28, 2025
4e2580a
remove task status management
cccoolll Aug 28, 2025
a21d719
Update WebRTC E2E tests to use ping method
cccoolll Aug 28, 2025
2c8a270
Change microscope service visibility
cccoolll Aug 28, 2025
2a6c5b6
Remove empty __init__.py file
cccoolll Aug 29, 2025
5fc42b8
remove unused code
cccoolll Aug 29, 2025
6b20c3f
Remove deprecated scripts and GUI components
cccoolll Aug 29, 2025
e194b4b
Refactor configuration management
cccoolll Aug 29, 2025
6e38749
Remove unused multipoint custom script and associated image files
cccoolll Aug 29, 2025
a4e7bcc
Remove obsolete documentation
cccoolll Aug 29, 2025
33dd3c8
Remove outdated references and redundant documentation from README
cccoolll Aug 29, 2025
b25987b
move start_hypha_service.py in squid_control module
cccoolll Aug 29, 2025
91bdf30
Remove failing z return timeout comment in SquidController
cccoolll Aug 29, 2025
d79cde2
remove todo
cccoolll Aug 29, 2025
c639166
Refactor dependency management by migrating to pyproject.toml, removi…
cccoolll Aug 29, 2025
82598e6
Update documentation to reflect removal of Qt dependencies
cccoolll Aug 29, 2025
c4a125a
Remove DisplacementMeasurementController
cccoolll Aug 29, 2025
eebad6a
Update Dockerfile to install development dependencies and remove requ…
cccoolll Aug 29, 2025
b74020b
clean up code
cccoolll Aug 29, 2025
9d1e43f
Remove unused import
cccoolll Aug 29, 2025
229e50d
move mirror service
cccoolll Aug 29, 2025
72f48c6
Refactor mirror_hypha_service.py and start_hypha_service.py for impro…
cccoolll Aug 31, 2025
7e038d0
improve code
cccoolll Aug 31, 2025
cf30598
Add mirror service functionality with command-line interface and inte…
cccoolll Aug 31, 2025
00d9bdd
use same session in zip upload tests
cccoolll Aug 31, 2025
d607472
Change artifact manager pytest from "session" to "function"
cccoolll Aug 31, 2025
28a4268
remove ununsed script
cccoolll Aug 31, 2025
2898e5f
Fix critical issues for python module
cccoolll Aug 31, 2025
d00477c
update cursorrules
cccoolll Aug 31, 2025
3ac4b44
Update README to include AICell Lab logo
cccoolll Aug 31, 2025
748cf26
remove unused file
cccoolll Aug 31, 2025
3bb1964
remove code example
cccoolll Aug 31, 2025
76fc6a4
remove coupcam test script
cccoolll Aug 31, 2025
71431f2
fix webrtc test
cccoolll Aug 31, 2025
f0ee816
update readme
cccoolll Sep 1, 2025
9a3774b
Change visibility setting in MirrorMicroscopeService
cccoolll Sep 1, 2025
b3f655f
update cli and readme
cccoolll Sep 1, 2025
06a6077
Update default simulation mode setting in CLI and Hypha service
cccoolll Sep 1, 2025
97861ad
Add log file argument and implement mirror service setup in CLI
cccoolll Sep 1, 2025
9b45a7b
preserve schema information for mirrored methods
cccoolll Sep 1, 2025
ae019b8
update readme for config introduction
cccoolll Sep 1, 2025
e3eb04d
graceful shutdown
cccoolll Sep 1, 2025
54bb592
update readme file
cccoolll Sep 1, 2025
44fc8af
correct readme
cccoolll Sep 1, 2025
457e5ae
Refactor Microscope class to MicroscopeHyphaService
cccoolll Sep 1, 2025
74e6a71
fix tests
cccoolll Sep 1, 2025
75d12b0
remove ununsed script
cccoolll Sep 1, 2025
2cbabd2
improve test cases.
cccoolll Sep 2, 2025
7e2c755
Refactor imports and clean up whitespace in various files
cccoolll Sep 2, 2025
9d785b3
Update test configuration and coverage reporting in CI workflow
cccoolll Sep 2, 2025
00173d3
Enable coverage tracking in MicroscopeHyphaService
cccoolll Sep 3, 2025
1e66990
Merge pull request #63 from aicell-lab/codebase-improvement
cccoolll Sep 3, 2025
5cc8d0f
Add offline processing module for time-lapse experiment data
cccoolll Sep 4, 2025
721045c
add raw data backup functionality
cccoolll Sep 4, 2025
e214f1c
handle missing experiment folders
cccoolll Sep 7, 2025
c52359b
bug fix for time-lapse uploading
cccoolll Sep 7, 2025
06cd10b
refractor time-lapse uploading
cccoolll Sep 8, 2025
a502b7c
improve offline processing by running in a separate thread
cccoolll Sep 8, 2025
2af4ef7
clean up logging
cccoolll Sep 8, 2025
d55fabf
use ZIP_STORED
cccoolll Sep 8, 2025
a45579f
fix logging setup
cccoolll Sep 8, 2025
148fa89
reduce memory usage
cccoolll Sep 8, 2025
1ea1897
fix memeory management
cccoolll Sep 8, 2025
9c27a60
fix docker command
cccoolll Sep 8, 2025
c2c3755
service public in simulation mode
cccoolll Sep 8, 2025
5c189f9
Merge pull request #65 from aicell-lab/main
cccoolll Sep 8, 2025
a56c47b
Add functionality to skip processing if a .done file is found and cre…
cccoolll Sep 9, 2025
d7e7c21
Merge branch 'offline-stitching-uploading' of github.com:aicell-lab/s…
cccoolll Sep 9, 2025
7f0ff2e
add cleanup functionality
cccoolll Sep 9, 2025
9de1090
remove unused script
cccoolll Sep 9, 2025
ebd6636
rename file
cccoolll Sep 9, 2025
29e741d
update test for offline processing
cccoolll Sep 9, 2025
32b7512
New virtual sample source
cccoolll Sep 9, 2025
a869036
fix chunk loading
cccoolll Sep 9, 2025
423f46d
fix drift correction logic
cccoolll Sep 9, 2025
0d53dde
timestamp extraction and dataset naming in OfflineProcessor
cccoolll Sep 9, 2025
12606f0
Time stamp format: YYYYMMDD-HHMMSS
cccoolll Sep 9, 2025
67040fc
Merge pull request #64 from aicell-lab/offline-stitching-uploading
cccoolll Sep 9, 2025
5df0140
Merge pull request #66 from aicell-lab/update-simulated-sample
cccoolll Sep 9, 2025
fa64419
fix zattrs file write
cccoolll Sep 9, 2025
ec79c5e
fix channel activate for zattrs file
cccoolll Sep 9, 2025
8199fa7
cleanup .done file after upload
cccoolll Sep 9, 2025
d45791d
Implement cleanup of partial Zarr files in OfflineProcessor before ex…
cccoolll Sep 10, 2025
b46438f
set ping interval
cccoolll Sep 10, 2025
f193eb0
update simulated sample id
cccoolll Sep 10, 2025
3ff9d32
add logging for image stitching
cccoolll Sep 11, 2025
afb21e7
add OME-Zarr metadata when calling info Hyhpa tools
cccoolll Sep 12, 2025
3df19aa
clean up directories for pytest
cccoolll Sep 12, 2025
793e7e5
Merge pull request #67 from aicell-lab/update-simulated-sample
cccoolll Sep 14, 2025
17122be
Update well canvas stitching
cccoolll Sep 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .cursorignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Add directories or file patterns to ignore during indexing (e.g. foo/ or *.csv)
*.log
*.log.*
*.csv
*.js
866 changes: 866 additions & 0 deletions .cursorrules

Large diffs are not rendered by default.

49 changes: 49 additions & 0 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Build and Publish Docker Image

on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.0
with:
fetch-depth: 2

- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: |
ghcr.io/${{ github.repository }}
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=sha

- name: Log in to the Container registry
if: github.event_name == 'push'
uses: docker/login-action@v2.2.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push Docker image
uses: docker/build-push-action@v5.0.0
with:
context: .
file: docker/Dockerfile
push: ${{ github.event_name == 'push' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
34 changes: 0 additions & 34 deletions .github/workflows/publish.yml

This file was deleted.

200 changes: 200 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
name: Tests

on: push

jobs:
unit-tests:
runs-on: ubuntu-latest
container:
image: python:3.11-slim
strategy:
matrix:
python-version: ["3.11"]

steps:
- uses: actions/checkout@v4

- name: Install system dependencies
run: |
apt-get update
apt-get install -y \
libgl1 \
libglib2.0-0 \
git \
gpg \
libglu1-mesa

- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install .[dev]

- name: Run unit tests
shell: bash
env:
SQUID_SIMULATION_MODE: "true"
PYTHONPATH: "."
run: |
echo "🧪 Running UNIT TESTS (without integration tests)"
echo "🔧 Hardware modules excluded in simulation mode"
echo "⚡ Fast feedback - unit tests run first"
echo "📊 Coverage report will be generated"
echo ""
python scripts/run_tests.py --skip-integration --coverage --verbose

- name: Upload coverage reports to Codecov
if: always() && matrix.python-version == '3.11'
uses: codecov/codecov-action@v4
with:
file: ./coverage.xml
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false
verbose: true
token: ${{ secrets.CODECOV_TOKEN }}

- name: Upload coverage HTML report as artifact
if: always() && matrix.python-version == '3.11'
uses: actions/upload-artifact@v4
with:
name: coverage-html-report-unit-tests
path: htmlcov/
retention-days: 30

- name: Upload unit test results
if: always()
uses: actions/upload-artifact@v4
with:
name: unit-test-results-${{ matrix.python-version }}
path: pytest-results.xml
retention-days: 30

integration-tests:
runs-on: ubuntu-latest
needs: [unit-tests]
container:
image: python:3.11-slim
strategy:
matrix:
python-version: ["3.11"]
# Run integration tests only when unit tests succeed
if: success()

steps:
- uses: actions/checkout@v4

- name: Install system dependencies
run: |
apt-get update
apt-get install -y \
libgl1 \
libglib2.0-0 \
git \
gpg \
libglu1-mesa

- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install .[dev]

- name: Run integration tests
shell: bash
env:
SQUID_SIMULATION_MODE: "true"
PYTHONPATH: "."
AGENT_LENS_WORKSPACE_TOKEN: ${{ secrets.AGENT_LENS_WORKSPACE_TOKEN }}
run: |
echo "🌐 Running INTEGRATION TESTS (Hypha RPC services, excluding WebRTC)"
echo "🔗 Requires network access and workspace token"
echo "📹 WebRTC tests run separately in webrtc-integration-tests job"
echo "📊 Coverage report will be generated for integration tests"
echo "💡 To run locally: python scripts/run_tests.py --integration-only"
echo ""
python -m pytest tests/ -m "integration" --ignore=tests/test_webrtc_e2e.py \
--cov=squid_control \
--cov-config=pyproject.toml \
--cov-report=xml:coverage-integration.xml \
--cov-report=html:htmlcov-integration \
--cov-report=term-missing \
--verbose --junitxml=pytest-results.xml

- name: Upload integration test results
if: always()
uses: actions/upload-artifact@v4
with:
name: integration-test-results-${{ matrix.python-version }}
path: pytest-results.xml
retention-days: 30

- name: Upload integration test coverage
if: always() && matrix.python-version == '3.11'
uses: actions/upload-artifact@v4
with:
name: integration-coverage-${{ matrix.python-version }}
path: |
coverage-integration.xml
htmlcov-integration/
retention-days: 30

- name: Run WebRTC integration tests
shell: bash
env:
SQUID_SIMULATION_MODE: "true"
PYTHONPATH: "."
AGENT_LENS_WORKSPACE_TOKEN: ${{ secrets.AGENT_LENS_WORKSPACE_TOKEN }}
run: |
echo ""
echo "📹 Running WEBRTC INTEGRATION TESTS (Video streaming & metadata)"
echo "🔗 Requires network access and workspace token"
echo "🌐 Tests WebRTC video streaming and browser integration"
echo "💡 To run locally: python scripts/run_tests.py --webrtc-only"
echo ""
python scripts/run_tests.py --webrtc-only --verbose

- name: Upload WebRTC test results
if: always()
uses: actions/upload-artifact@v4
with:
name: webrtc-test-results-${{ matrix.python-version }}
path: pytest-results.xml
retention-days: 30

- name: Upload WebRTC test HTML artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: webrtc-test-html-${{ matrix.python-version }}
path: /tmp/webrtc_test*.html
retention-days: 7
if-no-files-found: ignore

coverage-report:
runs-on: ubuntu-latest
needs: [unit-tests, integration-tests]
if: always()

steps:
- uses: actions/checkout@v4

- name: Download unit test coverage
uses: actions/download-artifact@v4
with:
name: coverage-html-report-unit-tests
path: htmlcov-unit/
continue-on-error: true

- name: Download integration test coverage
uses: actions/download-artifact@v4
with:
name: integration-coverage-3.11
path: htmlcov-integration/
continue-on-error: true

- name: Coverage comment
if: github.event_name == 'pull_request'
uses: py-cov-action/python-coverage-comment-action@v3
with:
GITHUB_TOKEN: ${{ github.token }}
MINIMUM_GREEN: 60
MINIMUM_ORANGE: 40
8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
cache_config_file_path.txt
channel_configurations.xml
last_coords.txt
log.txt
cache/
Expand Down Expand Up @@ -59,13 +58,15 @@ coverage.xml
.hypothesis/
.pytest_cache/
cover/
pytest-results.xml

# Translations
*.mo
*.pot

# Django stuff:
*.log
*.log.*
local_settings.py
db.sqlite3
db.sqlite3-journal
Expand Down Expand Up @@ -168,3 +169,8 @@ cython_debug/
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/

upload_record.json
config_parameters.txt
configuration_HCS_v2.ini
Copy link
Collaborator

Choose a reason for hiding this comment

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

Why this is added?


chunk_images/
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) [year] [fullname]

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
32 changes: 28 additions & 4 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,5 +1,29 @@
include squid_control/icon/*
include squid_control/images/*
include squid_control/control/*
include squid_control/configurations/*
# Include package data
include README.md
include LICENSE
include MANIFEST.in
include pyproject.toml

# Include configuration files
include squid_control/config/*.ini
include squid_control/config/*.xml
include squid_control/control/*.json
include squid_control/control/edge_positions.json

# Include example data
include squid_control/control/camera/example-data/*.bmp

# Include test files
include tests/*.py
include pytest.ini

# Exclude unnecessary files
exclude *.pyc
exclude __pycache__
exclude .git*
exclude .DS_Store
exclude *.egg-info
exclude build/
exclude dist/
exclude .pytest_cache/
exclude .coverage
Loading