# AERONET Output Version Log

Current version: `v2026-09-17_scatter-font-150`

Default rule for all future regenerated outputs:
`2022-10-21` is excluded unless the raw/original version is explicitly requested.

## v2026-09-17_scatter-font-150

Status: current working version

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Enlarges scatter tick labels from 13 px to 20 px (about 50%).
- Enlarges scatter axis titles from 15 px to 23 px.
- Enlarges the scatter legend and hover details from 12 px to 18 px.
- Expands the plot margins so the larger labels remain fully visible.
- Preserves all data, axis ranges, tick intervals, classification lines, and the exclusion of `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-17_scatter-font-150/`

## v2026-09-16_scatter-no-threshold-labels

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Removes the AOD and AE threshold text labels from inside the scatter plot.
- Keeps the dashed classification lines at AOD 0.32 and AE 1.0/1.3.
- Keeps 2 px dark axis ticks, 13 px text, X interval 0.1, Y interval 0.2, and full axis names.

Frozen snapshot:
`outputs/versions/v2026-09-16_scatter-no-threshold-labels/`

## v2026-09-16_scatter-thicker-ticks

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Makes the scatter X-axis and Y-axis tick marks dark and 2 px thick.
- Keeps the horizontal grid lines at 1 px.
- Keeps the original 13 px label font, X interval 0.1, Y interval 0.2, full axis names, and abbreviated threshold labels inside the plot.

Frozen snapshot:
`outputs/versions/v2026-09-16_scatter-thicker-ticks/`

## v2026-09-16_scatter-threshold-abbreviations

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Uses `AOD` and `AE` abbreviations only on the three threshold labels inside the scatter graph.
- Keeps full Aerosol Optical Depth and Angstrom Exponent wording on the X and Y axes and everywhere outside the plot annotations.
- Keeps X-axis ticks at 0.1, Y-axis ticks at 0.2, the original 13 px labels, no added closing frame, and the exclusion of `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-16_scatter-threshold-abbreviations/`

## v2026-09-16_scatter-axis-0p1-0p2

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Sets the scatter X-axis tick interval to 0.1 in daily and individual modes.
- Sets the scatter Y-axis tick interval to 0.2 in daily and individual modes.
- Increases scatter tick and threshold-label text from 13 px to 14 px.
- Keeps the restored daily and individual axis ranges, removes no data, and retains the exclusion of `2022-10-21`.
- Keeps the no-frame PNG crop and scale export controls.

Frozen snapshot:
`outputs/versions/v2026-09-16_scatter-axis-0p1-0p2/`

## v2026-09-16_crop-export-no-frame

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Removes the added rectangular closing frame from all on-screen graphs and saved PNG images.
- Keeps the horizontal/vertical export-range controls and PNG scale from 1x to 4x.
- Keeps matching normal-weight 13 px frequency-distribution tick labels.
- Keeps scatter fixed-scale values at X 0-0.9 and Y 0-2.1 for daily means, and X 0-1.3 and Y 0-2.3 for individual measurements.
- Retains the current BB, Continental Aerosol, MIX, and SD scatter thresholds and excludes `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-16_crop-export-no-frame/`

## v2026-09-16_framed-crop-export

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Adds a complete visible rectangular frame around every current Canvas and SVG graph.
- Changes each PNG button to open export-range controls for horizontal start/end, vertical start/end, and PNG scale from 1x to 4x.
- Rescales the selected graph crop to the exported image and preserves a complete border around the saved graph.
- Keeps independent export settings for each graph during the session.
- Removes bold styling from frequency-distribution X-axis tick labels and matches their 13 px font to the Y-axis labels.
- Restores scatter fixed-scale values to X 0-0.9 and Y 0-2.1 for daily means, and X 0-1.3 and Y 0-2.3 for individual measurements.
- Retains the current BB, Continental Aerosol, MIX, and SD scatter thresholds and excludes `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-16_framed-crop-export/`

## v2026-09-16_scatter-aerosol-thresholds

Status: superseded frozen snapshot

Main file to open:
`outputs/AOD440_AE440-870_interactive_seasonal_scatter_2020-2026.html`

Changes included:
- Replaces the scatter aerosol classes with BB, Continental Aerosol, MIX, and SD.
- Classifies BB as Aerosol Optical Depth > 0.32 and Angstrom Exponent > 1.3.
- Classifies Continental Aerosol as Aerosol Optical Depth <= 0.32 and Angstrom Exponent > 1.3.
- Classifies MIX as 1 < Angstrom Exponent <= 1.3 at any Aerosol Optical Depth.
- Classifies SD as Angstrom Exponent <= 1 at any Aerosol Optical Depth.
- Updates scatter threshold lines to Aerosol Optical Depth 0.32 and Angstrom Exponent 1.0 and 1.3.
- Assigns exact boundaries so every point remains classified and keeps `2022-10-21` excluded.

Frozen snapshot:
`outputs/versions/v2026-09-16_scatter-aerosol-thresholds/`

## v2026-09-16_percentage-x-origin

Status: superseded frozen snapshot

Main file to open:
`outputs/AOD_AE_frequency_distributions_2020-2026.html`

Changes included:
- Corrects the Relative Frequency (%) graph to plot percentages rather than decimal proportions.
- Makes the graph Y-axis, bars, hover tooltip, and frequency table use the same percentage units.
- Converts the earlier proportion intervals to their equivalent percentage-point intervals: 4 for AOD 440/500 and 20 for Angstrom Exponent 380/500 and 440/870.
- Starts positive-only histogram X ranges at zero automatically.
- Places the zero tick and first bin boundary at the Y-axis origin without an artificial plot inset.
- Retains the manually editable X and Y ranges and tick/label intervals.
- Keeps Relative Frequency (%) as the opening mode with AOD 440 nm selected.
- Keeps the default exclusion of `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-16_percentage-x-origin/`

## v2026-09-16_manual-histogram-axes

Status: superseded frozen snapshot

Main file to open:
`outputs/AOD_AE_frequency_distributions_2020-2026.html`

Changes included:
- Adds manually editable X minimum, X maximum, and X tick/label interval controls.
- Adds manually editable Y minimum, Y maximum, and Y tick/label interval controls.
- Stores independent manual axes for each metric and Y-value mode during the session.
- Keeps a minor X tick at every 0.01 histogram-bin boundary while displaying numeric labels at the chosen X interval.
- Adds Apply Axes and Use Automatic controls with validation for ranges and excessive tick density.
- Keeps Relative Frequency as the opening mode with AOD 440 nm selected.
- Keeps the default exclusion of `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-16_manual-histogram-axes/`

## v2026-09-16_frequency-y-axis-default

Status: superseded frozen snapshot

Main file to open:
`outputs/AOD_AE_frequency_distributions_2020-2026.html`

Changes included:
- Opens frequency distributions in Relative Frequency mode instead of Frequency Count mode.
- Opens the AOD family on AOD 440 nm and the Angstrom Exponent family on 380/500 nm, where the requested fixed intervals apply.
- Displays the requested AOD 440 nm and AOD 500 nm y-axis interval of 0.04 immediately on page load.
- Displays the requested Angstrom Exponent 380/500 nm and 440/870 nm y-axis interval of 0.2 immediately on page load.
- Keeps Frequency Count and Cumulative Percent available as separate selectable modes.
- Keeps histogram tick labels to no more than two digits after the decimal point.
- Keeps the default exclusion of `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-16_frequency-y-axis-default/`

## v2026-09-16_frequency-axis-ticks

Status: superseded frozen snapshot

Main file to open:
`outputs/AOD_AE_frequency_distributions_2020-2026.html`

Changes included:
- Adds a labeled x-axis tick at the left edge of every 0.01 histogram bin.
- Emphasizes AOD 440 nm and AOD 500 nm x-axis ticks every 0.5 and displays relative-frequency y-axis values every 0.04.
- Emphasizes Angstrom Exponent 380/500 nm and 440/870 nm x-axis ticks every 0.2 and displays relative-frequency y-axis values every 0.2.
- Keeps percentage values in the tooltip and frequency table while the graph axis shows literal relative-frequency proportions.
- Formats histogram tick values with no more than two digits after the decimal point.
- Leaves frequency counts, cumulative percentages, selectors, data, and all other applications unchanged.
- Keeps the default exclusion of `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-16_frequency-axis-ticks/`

## v2026-09-15_dashboard-auto-axis-all-views

Status: superseded frozen snapshot

Main file to open:
`outputs/aeronet_aod_ae_dashboard_no_2022-10-21.html`

Changes included:
- Restores the original automatic, data-fitted y-axis separately for every graph in Overview, Daily, Each Month, and Seasons.
- Removes the fixed 0-1.25 AOD and 0-2.4 Angstrom Exponent scale definitions from this dashboard.
- Leaves the other applications and the underlying measurements unchanged.
- Keeps the default exclusion of `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-15_dashboard-auto-axis-all-views/`

## v2026-09-15_dashboard-seasonal-axis-only

Status: superseded frozen snapshot

Main file to open:
`outputs/aeronet_aod_ae_dashboard_no_2022-10-21.html`

Changes included:
- Restores the earlier data-fitted vertical axis only for Seasonal Means in the AERONET Aerosol Optical Depth / Angstrom Exponent Dashboard - Without 2022-10-21.
- Restores the separate retrieval-statistics application to its prior axis behavior.
- Keeps the default exclusion of `2022-10-21` and leaves the data unchanged.

Frozen snapshot:
`outputs/versions/v2026-09-15_dashboard-seasonal-axis-only/`

## v2026-09-15_seasonal-fitted-axis

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Restores the earlier data-fitted vertical axes for seasonal-mean views.
- Keeps season labels start-aligned with space after the y-axis and keeps the x-axis title as Season.
- Applies the fixed-axis, start-aligned tick, January-first, title-capitalization, and clean PNG rules to every current page and section.
- Standardizes individual and retrieval descriptive-statistics tables to N, Mean, Standard Deviation, Median, Minimum, Maximum, and Skewness.
- Expands shortened Aerosol Optical Depth and Angstrom Exponent names in graph and statistics headings and annual-summary tables.
- Keeps every existing measurement, selector, daily/individual basis option, and the exclusion of `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-15_seasonal-fitted-axis/`

## v2026-09-14_fixed-axes-title-only

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Fixes AOD value axes at 0.00-1.25 in 0.25 increments and Angstrom Exponent value axes at 0.0-2.4 in 0.4 increments.
- Anchors month and category ticks at interval starts and adds space between the y-axis and first plotted category.
- Starts month summaries with January and removes visible Calendar wording.
- Uses Season as the seasonal x-axis title and Year and Month for monthly behaviour.
- Applies title capitalization to graph headings and axis labels.
- Saves PNG images with the graph title only, omitting counts, bin width, selected-period summaries, and date ranges.
- Keeps on-screen legends while omitting them from PNG files.
- Preserves all measurements and the exclusion of `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-14_fixed-axes-title-only/`

## v2026-09-14_month-start-clean-export

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Removes the similar daily-mean table from the opening page.
- Keeps on-screen legends but omits legends from every saved PNG.
- Places yearly time-series month letters at the start of each month instead of the center.
- Retains fitted full-width consecutive individual graphs and 15% larger daily markers for 2024-2026.
- Preserves all graph data, filters, counts, and the exclusion of `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-14_month-start-clean-export/`

## v2026-09-14_individual-fit

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Expands consecutive individual-measurement time-series graphs to full-width rows.
- Keeps canvases, axes, legends, and PNG buttons inside their graph panels.
- Retains the side-by-side layout for the overlaid individual view.
- Retains 15% larger daily markers for 2024-2026 and complete legend export.
- Preserves all graph data, filters, counts, and the exclusion of `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-14_individual-fit/`

## v2026-09-14_yearly-layout-export

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Makes the 2024, 2025, and 2026 markers exactly 15% larger on daily-mean yearly time-series graphs.
- Keeps the 2020-2023 markers at the established base size.
- Preserves each year's marker shape and color in the interactive view and saved PNG.
- Adds Consecutive years and Overlaid calendar layouts to the individual-measurement yearly page.
- Includes external legends in PNG exports from SVG graphs as well as canvas graphs.
- Forces the corrected exporter to load with a new cache version on all six application pages.
- Preserves all graph data, filters, layouts, counts, and the exclusion of `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-14_yearly-layout-export/`

## v2026-09-14_uniform-daily-markers

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Normalizes every daily-mean yearly marker to the same fixed width and height.
- Keeps the distinct marker shape and color assigned to each year.
- Removes the extra size previously added to diamond markers and the reduced size previously used for cross markers.
- Preserves the exact on-screen legend placement in saved PNG images.
- Preserves all graph data, filters, layout choices, current counts, and the exclusion of `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-14_uniform-daily-markers/`

## v2026-09-14_exact-image-export

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Makes PNG export preserve an in-graph legend at its actual on-screen position.
- Preserves the legend box size, white background, border, year order, and year colors.
- Prevents the individual-measurement legend from being regenerated as a separate footer below the saved graph.
- Keeps ordinary below-graph legends in their existing saved position on pages where that is the visible layout.
- Verified by saving and inspecting a fresh individual Aerosol Optical Depth at 440 nm PNG.
- Preserves all graph data, filters, layout choices, current counts, and the exclusion of `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-14_exact-image-export/`

## v2026-09-14_month-axis-unconnected

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Adds the month initials `J F M A M J J A S O N D` to yearly time-series axes.
- Repeats the month initials within every consecutive daily year section and retains centered year labels beneath them.
- Removes connecting lines between all daily-mean points in both daily layouts.
- Places the individual-measurement year legend inside the upper-right corner of each graph.
- Keeps the PNG button above the in-graph legend without overlap.
- Preserves both daily layouts, year controls, filters, hover details, current data counts, and the exclusion of `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-14_month-axis-unconnected/`

## v2026-09-14_dual-daily-layout

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Adds a layout switch to the daily-mean yearly page.
- `Consecutive years` shows selected years as adjacent chronological sections with year ticks.
- `Overlaid calendar` compares selected years on one January-to-December axis.
- Both views use the 25-percent-smaller daily symbols and retain year controls, metric selectors, hover details, filters, and PNG export.
- The individual-measurement yearly page remains unchanged.
- Preserves current data counts and the exclusion of `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-14_dual-daily-layout/`

## v2026-09-14_sequential-daily-years

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Removes `bin start` from all frequency-distribution horizontal-axis titles.
- Changes the daily-mean yearly time series from overlapping calendar-year traces to consecutive year sections from 2020 through 2026.
- Keeps enabled years adjacent when individual year controls are switched off.
- Adds year tick labels and separators to the consecutive daily-mean axis.
- Reduces daily-mean plot symbols by 25 percent, from 3 px to 2.25 px.
- Leaves the individual-measurement yearly page on its existing overlaid January-to-December axis.
- Preserves all current data counts, selectors, PNG export, and the exclusion of `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-14_sequential-daily-years/`

## v2026-09-14_chart-readability

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Replaces abbreviated graph and axis labels with full metric names, including Aerosol Optical Depth and Angstrom Exponent with their wavelength or wavelength pair.
- Adds visible tick marks and readable tick labels to every generated graph axis.
- Labels every horizontal and vertical graph axis, including calendar month, date, year, season, and season-year groupings.
- Increases chart title, axis title, tick, legend, and caption text sizes.
- Expands chart margins and graph heights to prevent long labels from being clipped.
- Removes overlapping annual value labels and the stray dashboard panel label that collided with graph text.
- Preserves per-graph PNG export, all selector behavior, current data counts, and the exclusion of `2022-10-21`.

Frozen snapshot:
`outputs/versions/v2026-09-14_chart-readability/`

## v2026-09-14_graph-image-export

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Adds a per-graph `PNG` download button to all six current application pages.
- Supports both canvas graphs and the SVG graphs in the original daily/monthly dashboard.
- Exports the current filtered graph with its title, subtitle, white background, and visible legend where available.
- Uses meaningful filenames based on the active graph title.
- Preserves the existing data counts, month/year selections, individual/daily basis, and the exclusion of `2022-10-21`.
- Updates all current graph generators so future regenerated pages retain image export.

Frozen snapshot:
`outputs/versions/v2026-09-14_graph-image-export/`

## v2026-09-11_yearly-time-series

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Adds a dedicated individual-measurement yearly time-series page.
- Adds a separate daily-mean yearly time-series page.
- Overlays enabled years on a common January-to-December axis with independent year on/off controls.
- Includes all available AOD wavelengths and all five Angstrom exponent pairs as separate selectable graphs.
- Applies the exact calendar-month selection from `OPEN_THIS_FIRST.html`, keeps missing dates missing, and excludes `2022-10-21`.
- Adds hover details for each plotted measurement or daily mean.

Frozen snapshot:
`outputs/versions/v2026-09-11_yearly-time-series/`

## v2026-08-31_statistics-retrieval

Status: superseded frozen snapshot

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Adds a dedicated `Statistics` block to `OPEN_THIS_FIRST.html` with direct, selector-aware links to every statistics section.
- Expands individual-measurement descriptive statistics from two metrics to all 13 available AOD and AE channels.
- Adds sample standard deviation beside `n`, mean, median, minimum, maximum, and adjusted Fisher-Pearson skewness.
- Adds `AERONET_SSA_FMF_SDA_statistics_2020-2026.html` for separate SSA 440/675/870/1020, FMF 500, AODf500, and AODc500 analysis.
- The retrieval page supports individual or daily-mean bases and monthly, seasonal, annual, and season-of-year grouping with hover values and standard-deviation whiskers.
- Retrieval inputs exclude LUNAR files, files marked `NO DATA`, and `2022-10-21`.
- Adds CSV exports for retrieval observations, descriptive statistics, and monthly/seasonal summaries.
- Mean particle number size distributions remain deferred because the available AERONET `.siz` product is a volume size distribution, not a direct number-size product.

Frozen snapshot:
`outputs/versions/v2026-08-31_statistics-retrieval/`

## v2026-07-21_annual-daily-individual-basis

Status: current working version

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Adds a Daily means / Individual measurements control to the annual AOD500 and AE380/500 bar graphs.
- Recalculates annual means, standard-deviation whiskers, table values, counts, captions, and hover details from the chosen basis.
- Exports both bases in `annual_AOD500_AE380-500_summary.csv`.
- Confirms that the underlying raw arrays match the previous version; April differences are caused by daily versus individual weighting.
- Keeps separate selector-aware individual descriptive statistics for AOD500 and AE380/500.
- Keeps the July 2020-only later-worksheet/partial-channel exception.
- `2022-10-21` excluded.

Frozen snapshot:
`outputs/versions/v2026-07-21_annual-daily-individual-basis/`

## v2026-07-21_individual-descriptive-statistics

Status: previous working version

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Adds separate individual-measurement descriptive statistics for AOD 500 nm and AE 380/500.
- Shows selector-aware `n`, mean, median, minimum, maximum, and adjusted Fisher-Pearson sample skewness.
- Adds `individual_AOD500_AE380-500_descriptive_statistics.csv` for all-period individual values.
- Keeps the July 2020-only later-worksheet/partial-channel exception.
- Keeps exact `YYYY-MM` selectors, four-decimal relative/cumulative percentages, and full standard-deviation whiskers.
- `2022-10-21` excluded.

Frozen snapshot:
`outputs/versions/v2026-07-21_individual-descriptive-statistics/`

## v2026-07-21_july-2020-partial-only

Status: previous working version

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Limits all-worksheet and missing-channel recovery to July 2020 only.
- Every other month returns to the previously accepted worksheet 1 import behavior.
- Retains 416 unique July 2020 measurements across six days, including available channels when AOD1020 or AOD340 is missing.
- Includes 117,497 measurements and 1,472 daily dates after excluding `2022-10-21`.
- Restores the established 13 AOD/AE channels and 26 individual/daily frequency groups.
- Keeps exact `YYYY-MM` selectors, four-decimal relative/cumulative percentages, and full standard-deviation whiskers.
- `2022-10-21` excluded.

Frozen snapshot:
`outputs/versions/v2026-07-21_july-2020-partial-only/`

## v2026-07-21_all-channels-calendar-frequency

Status: previous working version

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Scans every worksheet in each AOD/AE workbook instead of reading only the first worksheet.
- Retains every observation with at least one available AOD or AE channel; missing channels remain unavailable and use channel-specific `n` values.
- Merges duplicate site/date/time observations across worksheet variants and duplicate workbooks, filling missing channels without double-counting.
- Adds the exact supplied `2020 July AOD, AE 1.5_1 (1).xlsx` workbook and includes its 416 unique July 2020 measurements across six days.
- Uses one canonical individual-observation export for the dashboard, scatter, frequency distributions, and full package.
- Includes 120,596 measurements after excluding `2022-10-21`, 1,502 daily dates, and 29 AOD/AE channels with available values.
- Uses individual `YYYY-MM` controls in the frequency page and launcher.
- Formats both relative frequency and cumulative percentage to four decimal places.
- Uses full mean plus/minus standard deviation whiskers on repeated annual bar graphs.
- `2022-10-21` excluded.

Frozen snapshot:
`outputs/versions/v2026-07-21_all-channels-calendar-frequency/`

## v2026-07-21_individual-calendar-month-selector

Status: previous working version

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Replaced separate month-name and year selectors with one calendar matrix containing every available `YYYY-MM` period.
- Each calendar month can be kept or removed independently, so July 2020 can be selected without selecting July in any other year.
- Year labels toggle all available months in that year; quick actions keep all, remove all, keep all summers, or keep all winters.
- Launcher links pass an exact `periods=YYYY-MM,...` selection to the scatter, frequency, and no-date dashboard pages.
- All graphs, annual summaries, percentages, frequency distributions, overall means, and the daily aerosol table use the exact selected periods.
- Added `verify_calendar_period_selection.js`; its uneven July 2020 plus August 2021 test reconciles to 31 daily rows in all three dashboard datasets.
- `2022-10-21` excluded.

Frozen snapshot:
`outputs/versions/v2026-07-21_individual-calendar-month-selector/`

## v2026-07-21_year-selector-retrieval-table

Status: previous working version

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Launcher selector now supports both months and years.
- Launcher graph links pass `months=` and `years=` to the scatter, frequency, and no-date dashboard pages.
- The similar daily mean table now parses SDA fine/coarse AOD500 and inversion SF, DR440, and real refractive index at 440 nm where available.
- Frequency distributions include visible year buttons; scatter and no-date dashboard initialize from launcher-selected years.
- `2022-10-21` excluded.

Frozen snapshot:
`outputs/versions/v2026-07-21_year-selector-retrieval-table/`

## v2026-07-21_open-first-data-selector

Status: previous working version

Main file to open:
`outputs/OPEN_THIS_FIRST.html`

Changes included:
- Added a month data selector on `OPEN_THIS_FIRST.html`.
- Added a Table 4-style daily mean aerosol table derived from this AERONET dataset to `OPEN_THIS_FIRST.html`.
- Dashboard links opened from the launcher carry the selected months in the URL.
- Frequency distributions initialize from the launcher month selection and still support local month changes.
- The seasonal scatter dashboard filters points, aerosol composition table, annual bars, and overall mean cards by the launcher month selection.
- The broad AOD/AE dashboard reads the launcher month selection for daily/monthly views and seeds its own month filter when one month is selected.
- `2022-10-21` excluded.

Frozen snapshot:
`outputs/versions/v2026-07-21_open-first-data-selector/`

## v2026-07-21_frequency-month-cumulative

Status: previous working version

Main file to open:
`outputs/AOD_AE_frequency_distributions_2020-2026.html`

Changes included:
- Added month buttons so selected months are applied before frequency and annual calculations.
- Added cumulative percentage view and a `Cumulative %` column to the frequency table.
- Added yearly and all-years daily mean summaries for AOD 500 nm and AE 380/500.
- Frequency exports now include cumulative frequency count and cumulative percent.
- `2022-10-21` excluded.

Frozen snapshot:
`outputs/versions/v2026-07-21_frequency-month-cumulative/`

## v2026-07-20_visible-annual-grain

Status: previous working version

Main file to open:
`outputs/AOD440_AE440-870_interactive_seasonal_scatter_2020-2026.html`

Changes included:
- Annual AOD440 and AE440/870 bar charts now use the same vertical scale for daily means and individual measurements.
- Annual mean values are printed above each yearly bar.
- Annual chart title includes the current basis: daily means or individual measurements.
- This makes the annual values visibly change when switching data grain.
- `2022-10-21` excluded.

Frozen snapshot:
`outputs/versions/v2026-07-20_visible-annual-grain/`

## v2026-07-20_overall-mean

Status: current working version

Main file to open:
`outputs/AOD440_AE440-870_interactive_seasonal_scatter_2020-2026.html`

Changes included:
- Added all-data mean cards for AOD440 and AE440/870 in the annual bar graph section.
- Overall mean cards switch between daily means and individual measurements.
- Overall cards show standard deviation and `n days` or `n measurements`.
- Added `overall_AOD440_AE440-870_basis_summary.csv` with daily and individual all-data means.
- `2022-10-21` excluded.

Frozen snapshot:
`outputs/versions/v2026-07-20_overall-mean/`

## v2026-07-20_annual-basis-toggle

Status: current working version

Main file to open:
`outputs/AOD440_AE440-870_interactive_seasonal_scatter_2020-2026.html`

Changes included:
- Annual AOD440 and AE440/870 bar graphs now switch between daily means and individual measurements.
- The annual section has its own Daily means / Individual buttons.
- Switching the main scatter between Daily means and Individual also updates the annual bar basis.
- Annual table and hover tooltips show `n days` for daily means and `n measurements` for individual measurements.
- Added `annual_AOD440_AE440-870_basis_summary.csv` with yearly daily and individual annual summaries.
- `2022-10-21` excluded.

Frozen snapshot:
`outputs/versions/v2026-07-20_annual-basis-toggle/`

## v2026-07-20_annual-bars

Status: current working version

Main file to open:
`outputs/AOD440_AE440-870_interactive_seasonal_scatter_2020-2026.html`

Changes included:
- Seasonal AOD440 vs AE440/870 interactive scatter.
- Aerosol type table with the latest categories: Dust, BB, Urban, Continental, Mixed.
- No Unclassified category.
- Composition margin guide lines on the scatter plot.
- Embedded annual mean bar graphs for AOD440 and AE440/870.
- Annual bar whiskers show standard deviation from daily means.
- Hover tooltips on scatter points and annual bars.
- `2022-10-21` excluded.

Frozen snapshot:
`outputs/versions/v2026-07-20_annual-bars/`

## Related Current Files

- `outputs/AOD440_AE440-870_interactive_seasonal_scatter_2020-2026.html`
- `outputs/AOD_AE_frequency_distributions_2020-2026.html`
- `outputs/aeronet_aod_ae_dashboard_no_2022-10-21.html`
- `outputs/aeronet_summary_data/annual_AOD440_AE440-870_scatter_summary.csv`
- `outputs/aeronet_summary_data/annual_AOD440_AE440-870_basis_summary.csv`
- `outputs/aeronet_summary_data/overall_AOD440_AE440-870_basis_summary.csv`
- `outputs/aeronet_summary_data/frequency_distributions.csv`
- `outputs/aeronet_summary_data/annual_AOD500_AE380-500_summary.csv`

## Versioning Workflow

Use the root `outputs/` files as latest/editable working files.

When a version is accepted, copy the latest files into:
`outputs/versions/vYYYY-MM-DD_short-description/`

Every accepted version should include:
- main HTML outputs
- relevant CSV exports
- generator scripts
- a manifest
- a short entry in this log
