Skip to content

system-wide server tests and other bug fixes - #1348

Merged
adkinsrs merged 155 commits into
mainfrom
devel
Oct 14, 2026
Merged

adkinsrs merged 155 commits into
mainfrom
devel

Conversation

@adkinsrs

Copy link
Copy Markdown
Member

The main focus on this particular merge was adding more server-side tests to the gEAR codebase and fixing any bugs and vulnerabilities that may have been found.

adkinsrs and others added 30 commits July 16, 2025 10:33
…other pages and corrected list items on projection and expression pages (issue #848)
- Moved `update_adata_with_ensembl_ids` and `update_var_with_ensembl_ids` to a new `gene_mapping` module for better organization.
- Introduced a new `job_coordination` module to handle RabbitMQ job locking and retry logic.
- Updated various listeners and processors to utilize the new utility structure, improving code clarity and maintainability.
- Implemented memory limit management in job consumers to prevent OOM issues.
- Enhanced observation dataframe handling with new sanitization and categorization functions.
Fix all broken screenshot links (now relative paths), remove draft notes
and stale "coming soon" labels, and correct outdated UI descriptions.
Add sections for the Projection Tool, spatial and epigenome displays,
display types per curator, the dataset panel menu, sharing/permalinks,
and user profile/accessibility. Expand the gene list, compare tool and
SC workbench sections. Document RDS/Seurat and CosMx uploads, GEO
lookup, resuming submissions and hub.txt/multiWig support in the upload
guide. Fix the compare tool help anchor and upload format text in-app,
and mark two superseded analyst notes as historical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fix inaccurate statements verified against the code: spatial service
config/commands/routes, RabbitMQ queue names and unit files, setup
steps (repo URL, db name, requirements path, slice install), Docker
bake/compose services, and the cache-busting guide. Fix broken links,
document the 12 missing bin/ scripts, and update systemd
Documentation= URLs.

Add new references under docs/developer/: REST API and CGI endpoint
catalog, gear.ini configuration, testing, upload pipeline and on-disk
layout, code map, and database schema.

Remove the obsolete REORGANIZATION_SUMMARY.md and trim DEPRECATED.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add Google-style module, class and function docstrings across lib/,
www/api, listeners/, services/projectr, services/spatial and the Python
CGI scripts in www/cgi. CGI module docstrings list input parameters and
the JSON returned. Docstring-only change: the AST of every file with
docstrings stripped is identical to the previous version.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Uploads:
- Implement MEX processing with scanpy.read_10x_mtx, accepting the legacy
  uncompressed files or the gzipped Cell Ranger v3+ set, optionally inside
  a folder in the archive
- Finalize now migrates .zip MEX/3-tab archives (previously only .tar.gz,
  so zip uploads failed); source download and has_tarball recognize them
- Reject legacy .xls Excel files with a clear message (the processor only
  reads .xlsx and xlrd is not installed)
- Lowercase stored file extensions so .RDS/.XLSX uploads are found later

Bug fixes:
- Status checks used a substring test (`in 'complete'`), so an empty
  status counted as complete; use equality
- check_dataset_processing_status.cgi compared a UUID job_id with > 0 and
  printed JSON twice on errors
- save_user_default_organism.cgi caught mysql.connector.Error without
  importing it, and crashed when not logged in
- audit_cache_busting.py read the version from the wrong file and looked
  for a helper that no longer exists
- Drop the unused [content] spatial_dataset_location key from templates

Remove www/manual.html, manual.js, manual.css and the orphaned
www/include/manual/ partials. The legacy navigation bar (contact.html)
now links to the GitHub wiki.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Remove references to the deleted manual page and point users to the
wiki and home-page video guides. Document MEX support, .zip archives,
the .xlsx-only Excel rule and lowercased extensions in the upload guide
and pipeline reference. Update the cache-busting audit, configuration
and testing docs (CI noted as future work), and describe the
cell-cell communication page as an uncommitted prototype.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Resolve the status.json path and refuse session_id/share_uid values that
point outside the uploads area. Note in the docstring, API reference and
upload pipeline doc that this CGI is kept for manual status checks because
it takes session_id as a parameter instead of a cookie.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every bin/ script now has a module docstring. For
convert_STAR_sj_tab_into_biginteract.py and csv_to_parquet.py, the
existing description string sat after the imports, where Python does
not treat it as a docstring; it is moved to the top and expanded.
Describe gene_as_xy.py as a prototype for one instance's dataset.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replace the empty placeholder docstrings with descriptions and usage.
For the KOMP and SHIELD loaders, state that the gene_urls table and
gene.shield_facs_chart_url column they fill are not in create_schema.sql
and are not read by the website. Correct the matching scripts README
entries, including query_geo.py, which is an unfinished stub.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
getvalue() returns a list when a parameter is repeated, which would break
code expecting a string (and allows a crafted request to trigger errors).
No CGI expects repeated parameters, and the one multi-select on the
frontend (comment tags) is joined into a single value before sending, so
getfirst() is a drop-in replacement: it returns the same value for a
single parameter and the same default when the parameter is missing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The uploader's MEX example is example_mex.tar, but the store CGI only
accepted .tar.gz and .zip. Accept .tar (and .tgz, saved as .tar.gz),
open tarballs with mode "r:*" so compression is detected from the
contents rather than the extension, and have finalize migrate whichever
archive was uploaded. A new Dataset.get_source_archive_path() finds the
stored archive (.tar.gz, .tar or .zip) for source downloads and the
has_tarball flag.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Added a link to the relevant research paper for HIEDRA.
…tional-annotation

1149 option to collapse entire functional annotation
…cale with predefined CONTINUOUS_CMAP and update color mapping logic.
…-umaptsnepca-plots-in-view-curator

1091 independent coloring of static umaptsnepca plots in view curator
- Mark slow tests in `test_colorblind.py` for better test management.
- Update regression test in `test_regressions_lib.py` to ensure sensitive data is not returned.
- Improve error handling in `tsne_data.py` to raise exceptions for invalid orders or filters.
- Refactor `add_display_to_layout.cgi` to improve permission checks and layout member management.
- Validate PubMed IDs in `get_citation_from_pubmed_id.cgi` to prevent malformed requests.
- Remove deprecated `get_session_info.cgi` and `login.cgi` scripts for cleaner codebase.
- Add domain control in `save_new_genecart_json.cgi` to restrict domain list creation to admins.
- Implement email validation in `save_user_account_changes.cgi` to prevent duplicate accounts.
- Enhance layout selection logic in `save_user_chosen_layout.cgi` to ensure proper user permissions.
- Improve event registration logic in `set_user_event_registration.cgi` for better user feedback.
- Update analysis class in `analysis.js` to streamline analysis type handling and button visibility.
- Refactor workbench script to simplify analysis type checks and improve user notifications.
- Enhance user profile script to provide clearer error messages during preference updates.
Comment thread tests/python/test_cgi_auth.py Dismissed
Comment thread tests/python/test_cgi_auth.py Dismissed
Comment thread www/js/common.v2.js Outdated
if (opts?.isHTML) {
// Parse the message as markup, then strip anything executable.
const template = document.createElement("template");
template.innerHTML = String(msg);
Comment thread www/js/common.v2.js Outdated
if (opts?.isHTML) {
// Parse the message as markup, then strip anything executable.
const template = document.createElement("template");
template.innerHTML = String(msg);
Comment thread www/js/common.v2.js Fixed
Comment thread www/js/common.v2.js Dismissed
adkinsrs and others added 3 commits October 14, 2026 15:22
…e check'

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
…ist Manager to fix cross-side server scripting
@adkinsrs
adkinsrs merged commit ac2d7ae into main Oct 14, 2026
9 checks passed
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.

4 participants