Changes in version 0.99.14 Documentation fixes - Restore the overlay example as runnable. It uses a small temporary PNG and checks that EBImage can decode it before drawing. This satisfies BiocCheck's 80% runnable-example requirement without relying on platform JPEG libraries. Changes in version 0.99.13 Build fixes - Skip live Python pipeline examples and the end-to-end Python test on Bioconductor build machines. This avoids provisioning the large PyTorch environment while building or checking the package; other environments, including R-universe, continue to run the integration test. - Skip JPEG-dependent overlay tests when the platform image decoder is not usable, and mark the long-running overlay example as \donttest{}. This avoids failures caused by incompatible JPEG libraries on a build host. Changes in version 0.99.12 Test fixes - Skip the end-to-end Python pipeline test when BASILISK_EXTERNAL_DIR is explicitly set to a directory that does not exist. Package checks continue to run the test on systems with a usable basilisk cache. Changes in version 0.99.11 Documentation fixes - Added the Bioconductor-assigned DOI to the package citation. Changes in version 0.99.10 Build fixes - Check an explicitly configured BASILISK_EXTERNAL_DIR before running the live Python examples in the vignettes. This prevents vignette builds from failing when a build machine points basilisk to a cache directory that does not exist. - Marked the Interoperability with Bioconductor heading as unnumbered, as requested during the Bioconductor review. Changes in version 0.99.9 Continuous integration fixes - Refreshed the Ubuntu package index before installing pkgdown workflow dependencies. This avoids failed installs when a runner has an outdated package index. Changes in version 0.99.8 Documentation fixes - Addressed Sai's vignette review in Bioconductor/BiocContributions#39. Removed manual section numbers from the workflow vignette so BiocStyle handles numbering. Marked Abstract, References, and Session information headings as unnumbered where present. - Simplified the analysis, overlay, and reload examples in both vignettes by removing visible error handlers and null checks. Python examples retain eval=py_ok; reload examples use the pipeline's output_dir field. - Moved Python setup guidance to the workflow's developer note and linked to it from Installation. Updated build comments and skipped-chunk guidance to match the examples, and revised punctuation for consistency. Changes in version 0.99.7 Bug fixes - Removed the BiocType: Software DESCRIPTION field. It is documented as optional for a plain Software package (only required for Docker/Workflow submissions), and the current BiocCheck does not recognize it, producing a "Unknown or non-standard DESCRIPTION field(s)" WARNING; since it isn't required, removing it is the simplest fix. Changes in version 0.99.6 Version bump only, to trigger a fresh Bioconductor build report; no functional changes. All CI checks (R CMD check on Linux/macOS/Windows, BiocCheck) pass as of 0.99.5. Changes in version 0.99.5 Bug fixes - Fixed Pipeline ran but JSON parsing failed on Windows. The pipeline's stdout on success is a single very long JSON line (colony_polygon alone can run to tens of thousands of points per image); system2()'s intern-style stdout = TRUE capture has a per-line buffer limit on Windows that silently splits such long lines at arbitrary byte offsets, and rejoining the pieces with "\n" corrupted the JSON mid-token. Both stdout and stderr are now redirected to files and read back whole, which avoids the line-splitting entirely. Changes in version 0.99.4 Bug fixes - Fixed the Python pipeline failing on Windows (Python pipeline failed (exit status 2)). system2()'s env argument is only honored on Windows for a small set of commands (R, make) that parse VAR=value strings from their own argv; for arbitrary executables such as python it was silently ignored there, and those strings were instead passed through as positional arguments, which Python then tried to open as a script file. PYTHONPATH/MPLCONFIGDIR/PYTHONUNBUFFERED are now set on the R process itself (restored on exit) so the child process inherits them identically on every platform. - system2() calls to the Python pipeline now capture stderr together with stdout so pipeline failures include the actual Python traceback instead of just an exit status. Documentation fixes - Corrected the causal organism described throughout the package (DESCRIPTION, both vignettes) from Cercospora zeae-maydis / Cercospora zeicola on maize to Magnaporthe oryzae — "grayleafspotr" is a package name, not a claim about the maize pathogen complex. - Added a References section to the grayleafspotr-workflow vignette linking to related datasets and software by the same author. Changes in version 0.99.3 Breaking changes - Removed the bundled Shiny app (launch_grayleafspotr(), inst/shiny/) and its deployment infrastructure (Dockerfile, render.yaml, .dockerignore). It was unused legacy functionality; all package functionality remains available through the R API. New features - Added plot_grayleafspot_overlay(), which uses EBImage to draw the detected dish boundary, colony outline, and crack segments on the source plate photograph, for visual QC of the segmentation pipeline. Bioconductor review fixes - Depends bumped to R (>= 4.6.0) to match the current Bioconductor devel R pairing; added BiocType: Software. - Added ORCID to Authors@R and an inst/CITATION file. - grayleafspot_download_model() now caches via BiocFileCache instead of tools::R_user_dir() + download.file(). - Narrowed two blanket suppressWarnings() calls to specifically-matched warnings; renamed an internal function exceeding the 30-character lintr limit; replaced a fixed -1:1 range with an explicit vector; documented the previously-undocumented internal example_grayleafspot_dir(). - Vignettes switched to BiocStyle::html_document, all chunks labeled, sessionInfo() added to getting-started.Rmd, and the previously-disabled "analyze your own images" / "reload saved results" chunks now run for real against the bundled 06FEB test images (gated so environments without a working Python/basilisk setup degrade gracefully). - README reorganised: Bioconductor installation instructions moved to the top, developer/Python-environment setup consolidated under a "Development" section, and the manual virtual environment setup instructions changed to use a directory outside the package tree. Changes in version 0.99.2 Bug fixes - Replaced \donttest{} wrappers with plain runnable code in four man pages (launch_grayleafspotr, write_grayleafspot_results, grayleafspot_python_available, grayleafspot_python_executable) so that BiocCheck counts them toward the required 80% runnable-examples threshold. launch_grayleafspotr uses an if (interactive()) guard; grayleafspot_python_executable uses tryCatch() to handle environments where Python is absent without aborting the check. Changes in version 0.99.1 Bug fixes - Added runnable @examples to all 18 exported man pages to satisfy the Bioconductor BiocCheck requirement (>= 80% of pages must have examples). Functions requiring Python or a network connection use \donttest{}; pure-R functions use the bundled example_grayleafspot_results() data. - Changed \dontrun{} to \donttest{} in launch_grayleafspotr() man page (BiocCheck does not count \dontrun{} as a runnable example). Changes in version 0.99.0 Bug fixes - Corrected column name crack_coverage to crack_coverage_pct in vignette result subsets to match the actual output column from read_grayleafspot_results() (#1). - Added launch_grayleafspotr() to the pkgdown reference index to resolve a build error when exported topics were absent from _pkgdown.yml. Initial release. Analysis pipeline - SmallUNet segmentation pipeline (inst/python/pipeline/analysislocal.py) running inside rvenv_arm_311 (ARM64 Python 3.11). - Sole model is models/best_area_w_0.7.pt; downloaded automatically from HuggingFace via grayleafspot_download_model() when not present locally. - Dish geometry calibrated from grayscale image edges using an assumed 90 mm petri dish diameter (configurable via plate_diameter_mm). - Classical crack detection on an internal-band mask; crack polylines drawn as yellow overlays on top of the red colony mask. - Colony expansion reported in mm and mm² from pixel-to-mm calibration. - Kinematics (radial velocity, area growth rate, relative growth rate) computed across the ordered time series. R interface - grayleafspot_analyze() — run the pipeline on a folder of plate images. - grayleafspot_python_available() / grayleafspot_python_executable() — check and resolve the Python interpreter for rvenv_arm_311. - grayleafspot_download_model() — fetch best_area_w_0.7.pt from HuggingFace and cache to tools::R_user_dir("grayleafspotr", "cache"). - read_grayleafspot_results() / write_grayleafspot_results() — load and save run directories (JSON + CSV + manifest). - as_grayleafspot_growth_data() — coerce a run to a tidy tibble. - example_grayleafspot_results() — load the built-in example run without running the pipeline. Plotting - plot_colony_expansion() — equivalent radius over time. - plot_growth_roughness() — relative growth rate and edge roughness. - plot_stress_remodeling() — crack coverage and crack count. - plot_texture_organization() — Shannon entropy and center-to-edge delta. - plot_shape_vs_stress() — eccentricity vs crack coverage scatter. - plot_radial_growth_area() — colony area and radial growth by plate (faceted); connects points across time even when each plate appears only once. - plot_feature_heatmap() — Pearson correlation heatmap of numeric features. - plot_radial_profile() — radial intensity profile; auto-discovers the most recent analysis.json under outputs/ when given a plain data frame. Package assets - Three bundled plate images in inst/extdata/testdata/06FEB/ for offline testing and vignette examples (original photographs, Apache License 2.0). - Example run in inst/extdata/example/ (JSON, CSV, manifest). - Full Roxygen2 documentation for all 17 exported functions (man/). - Integration tests in tests/testthat/test-pipeline.R; skip gracefully when Python or the model is not available. - inst/COPYRIGHTS enumerating copyright and license for every non-R asset. - NOTICE file in the package root (Apache 2.0 requirement).