Skip to content

Refactor header layout, fix weather data URLs, and update version#274

Open
FedericoTartarini wants to merge 17 commits intomainfrom
development
Open

Refactor header layout, fix weather data URLs, and update version#274
FedericoTartarini wants to merge 17 commits intomainfrom
development

Conversation

@FedericoTartarini
Copy link
Copy Markdown
Contributor

@FedericoTartarini FedericoTartarini commented May 8, 2026

This pull request introduces several improvements and bug fixes across the codebase, focusing on the user interface, code quality, and data accuracy. The most significant changes include switching the Köppen-Geiger climate zone lookup to a local library, updating the humidity comfort band terminology to match ASHRAE standards, improving the summary table rendering, and making several UI and documentation refinements. The version is also bumped to 0.10.2.

Climate zone lookup and data accuracy:

  • Replaced the external Köppen-Geiger climate zone API with the local kgcpy library for improved reliability and performance in pages/summary.py, and added a local dictionary for zone descriptions. [1] [2] [3] [4]

User interface and accessibility improvements:

  • Updated the humidity comfort band label to "ASHRAE 160 humidity range" in graphs, and clarified documentation to reference the ASHRAE standard and its implications. [1] [2]
  • Refactored the summary statistics table to use Mantine components instead of Dash DataTable, improving appearance and handling of missing values.
  • Improved the header and location display in the UI, including more accurate location strings and better truncation, and updated all references from "Current Location" to "Location". [1] [2] [3]
  • Increased the height of the skeleton loader for better visual consistency.

Code quality and maintainability:

  • Added type annotations and imports for better type safety and readability in utility functions. [1] [2] [3]
  • Improved robustness in KML import by handling missing URL fields. [1] [2]

Documentation and deployment:

  • Updated deployment instructions to include version tagging and clarified command usage.
  • Improved documentation for relative humidity analysis and fixed broken links.

Versioning and metadata:

  • Bumped the application version to 0.10.2 in all relevant files (.bumpversion.cfg, assets/manifest.json, UI footer). [1] [2] [3]

Testing improvements:

  • Enhanced tests to check for loading indicators and updated expected location strings for consistency. [1] [2] [3]

Summary by CodeRabbit

  • New Features

    • Local Köppen–Geiger climate zone lookup enabled; app version bumped to v0.10.2.
  • UI/UX

    • Header layout and location label refined; humidity band labeling clarified (ASHRAE 160).
    • Table rendering and loading placeholders improved for summary/relative-humidity views.
  • Documentation

    • Updated relative-humidity guide and Cloud Run deployment instructions.
  • Tests

    • Strengthened loading-state assertions.
  • Chores

    • Added runtime dependency and ignored internal data-maintenance scripts.

Copilot AI review requested due to automatic review settings May 8, 2026 08:35
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 8, 2026

Review Change Stack

Warning

Rate limit exceeded

@t-kramer has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 34 minutes and 51 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: aaaf0a30-1a0e-4c57-a948-3d1671c18ed9

📥 Commits

Reviewing files that changed from the base of the PR and between ecfdc2a and 67beae0.

📒 Files selected for processing (1)
  • pages/summary.py
📝 Walkthrough

Walkthrough

This PR bumps the app to v0.10.2, adds kgcpy and replaces remote Köppen–Geiger lookups with kgcpy.lookupCZ, updates typing and the RH summary table to Mantine components, changes "Current Location" to "Location", refactors header layout to dmc.Flex, optimizes KML URL parsing, and updates docs and tests.

Changes

v0.10.2 Release & Climate Zone Optimization

Layer / File(s) Summary
Version Bump
.bumpversion.cfg, assets/manifest.json, pages/lib/layout.py
Version incremented from 0.10.1 to 0.10.2 across configuration, web manifest, and footer display.
Dependencies
Pipfile, .gitignore
New kgcpy runtime dependency added; data maintenance scripts (check_links.py, fix_broken_urls.py) added to .gitignore.
Summary Table & Type Annotations
pages/lib/utils.py
RH summary table rewritten using Mantine components inside dmc.ScrollArea; typing imports updated to Optional, Tuple, List; function annotations adjusted for get_global_filter_state and get_time_filter_from_store.
Climate Zone Lookup Backend
pages/summary.py
Replaced HTTP requests lookup with kgcpy.lookupCZ() import; added KG_DESCRIPTIONS mapping and updated update_location_info to use local lookup plus mapping.
KML Import Optimization
pages/lib/import_one_building_files.py
Cached url_match per placemark with early continue for missing URLs; reused url_match[0] when populating location_info.
Location Text Updates
pages/lib/layout.py, pages/select.py, tests/utils.py
Location subtitle text changed from "Current Location: N/A" to "Location: N/A"; location banner string updated across UI and tests; tab enablement uses a unified disable_links flag.
Header Layout & Component Updates
pages/lib/layout.py, pages/lib/template_graphs.py, pages/t_rh.py
Header container switched from dmc.Group to dmc.Flex with explicit flex props; RH band trace renamed to "ASHRAE 160 humidity range"; descriptive statistics skeleton height increased to 550.
Documentation & Tests
docs/contributing/run-project-locally.md, docs/documentation/tabs-explained/.../relative-humidity-explained.md, tests/*
Cloud Run deploy examples now include region, memory, CPU, managed platform, unauthenticated flag, and explicit tag; RH docs updated with ASHRAE 160 wording and figure reformatting; tests updated to assert loading-state transitions and Location: text changes.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

bug

Poem

🐰 A rabbit hopped through version-lands so green,
Swapped distant calls for local lookup clean,
Headers flex and tables now take stage,
“Location:” whispers from a friendlier page,
0.10.2 — a tiny hop, a tidy change!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title covers several key changes including header layout refactor and version update, but incompletely represents the broader scope of changes (climate zone lookup refactor, documentation updates, accessibility improvements, code quality, and testing enhancements).
Docstring Coverage ✅ Passed Docstring coverage is 85.71% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch development

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@FedericoTartarini
Copy link
Copy Markdown
Contributor Author

@t-kramer I opened this pull request to deploy the code to main but there is a merging issue. I assume we can accept your changes but I will let you look into it.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🧹 Nitpick comments (3)
.gitignore (1)

4-7: ⚡ Quick win

Consider tracking data maintenance scripts in the repository.

Since these scripts were used to fix broken URLs and maintain weather data (per the PR description), they might be valuable to preserve in version control for future data updates, team collaboration, and reproducibility. If these are reusable utilities rather than one-off or environment-specific scripts, consider removing them from .gitignore and committing them to a scripts/ or tools/ directory.

If these scripts are intentionally excluded (e.g., they contain sensitive paths, are personal utilities, or are truly one-off), please confirm this decision is deliberate.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.gitignore around lines 4 - 7, The .gitignore currently excludes two
maintenance scripts (check_links.py and fix_broken_urls.py); either stop
ignoring them and add them to the repo under a dedicated directory (e.g., move
check_links.py and fix_broken_urls.py into a new scripts/ or tools/ folder and
commit) or leave them ignored but document/confirm why (sensitive paths or
one-off) by adding a note in the repo README or a comment in .gitignore next to
their entries; update .gitignore accordingly and ensure the committed scripts
include any necessary config or scrubbed secrets before pushing.
Pipfile (1)

19-19: ⚡ Quick win

Pin kgcpy to the tested version for consistency with other dependencies.

kgcpy is currently unbounded with *, while nearly all other runtime dependencies in the Pipfile use explicit version pins (e.g., dash==3.2, pvlib==0.9.1). Pipenv has locked it to ==1.1.8 in Pipfile.lock, but the wildcard can cause different versions to be resolved if the lock file is regenerated. Update to kgcpy = "==1.1.8" to match the project's explicit pinning convention and prevent accidental version drift.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Pipfile` at line 19, The Pipfile currently lists kgcpy with an unbounded
version ("kgcpy = \"*\""); update this to an explicit pin to match the project's
convention and the lockfile by changing the entry to pin kgcpy to the tested
version (kgcpy ==1.1.8) so regenerating the lockfile won't allow unintended
version drift.
pages/summary.py (1)

265-271: ⚡ Quick win

Avoid silent climate-lookup failures.

The blanket except Exception: pass makes regressions hard to diagnose when climate text disappears. Keep fallback behavior, but emit a debug/warning log with context.

Proposed refactor
+import logging
 import dash
 import pandas as pd
@@
 from pages.lib.utils import (
@@
 )
 
+logger = logging.getLogger(__name__)
+
@@
-    except Exception:
-        pass
+    except Exception as exc:
+        logger.debug(
+            "Koppen-Geiger lookup failed (lat=%s, lon=%s): %s",
+            meta.get(Variables.LAT.col_name),
+            meta.get(Variables.LON.col_name),
+            exc,
+        )
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pages/summary.py` around lines 265 - 271, The try/except around the climate
lookup silently swallows failures; change it to catch Exception as e and log a
warning or debug message including the latitude/longitude
(meta[Variables.LAT.col_name], meta[Variables.LON.col_name]) and the exception,
while keeping the fallback behavior (do not re-raise). Update the block that
calls lookupCZ and reads KG_DESCRIPTIONS (and sets climate_text) to use a logger
(existing module logger if available, otherwise logging.getLogger(__name__)) and
include the zone, lat/lon, and exception details in the log so missing
climate_text is diagnosable.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@docs/documentation/tabs-explained/temperature-and-humidity/relative-humidity-explained.md`:
- Line 7: The markdown after the "ANSI/ASHRAE Standard 160" link has stray bold
markers around the comma (`**,**`) which break rendering; edit the sentence
containing the "ANSI/ASHRAE Standard 160" link in relative-humidity-explained.md
to remove the extra `**` so the comma is plain (e.g., change `](... )**,**` to
`](...),`) and ensure the link and following punctuation render normally.
- Around line 40-42: The fenced code block around the HTML figure causes it to
render as literal code; remove the surrounding triple backticks so the
<figure>...<figcaption> block is raw HTML (i.e., delete the opening ``` before
<figure> and the closing ``` after </figure>) leaving the <figure> tag and its
contents unchanged.

In `@pages/select.py`:
- Around line 270-272: The current block builds location_string using meta
without verifying meta is present or contains the expected keys; update the
guard so you only construct location_string when meta is non-None and contains
the required keys (e.g., Variables.CITY.col_name and
Variables.COUNTRY.col_name); otherwise set location_string to a safe default
(empty string or "Location unavailable") and keep disable_links behavior
consistent. Locate the usage around the variables data, meta, location_string
and disable_links and change the condition from checking data alone to a
combined check (or add an inner if) that ensures meta and the specific meta keys
exist before indexing.

In `@tests/test_summary.py`:
- Around line 94-99: Remove the flaky intermediate assertion that expects
info_section to have attribute "data-dash-is-loading" and only wait for the
final non-loading state; specifically, delete the
expect(info_section).to_have_attribute("data-dash-is-loading", "true",
timeout=10000) call and keep (or adjust) the
expect(info_section).not_to_have_attribute("data-dash-is-loading", "true",
timeout=20000) check so the test reliably waits until info_section is no longer
loading before continuing to assert updated IP values.

---

Nitpick comments:
In @.gitignore:
- Around line 4-7: The .gitignore currently excludes two maintenance scripts
(check_links.py and fix_broken_urls.py); either stop ignoring them and add them
to the repo under a dedicated directory (e.g., move check_links.py and
fix_broken_urls.py into a new scripts/ or tools/ folder and commit) or leave
them ignored but document/confirm why (sensitive paths or one-off) by adding a
note in the repo README or a comment in .gitignore next to their entries; update
.gitignore accordingly and ensure the committed scripts include any necessary
config or scrubbed secrets before pushing.

In `@pages/summary.py`:
- Around line 265-271: The try/except around the climate lookup silently
swallows failures; change it to catch Exception as e and log a warning or debug
message including the latitude/longitude (meta[Variables.LAT.col_name],
meta[Variables.LON.col_name]) and the exception, while keeping the fallback
behavior (do not re-raise). Update the block that calls lookupCZ and reads
KG_DESCRIPTIONS (and sets climate_text) to use a logger (existing module logger
if available, otherwise logging.getLogger(__name__)) and include the zone,
lat/lon, and exception details in the log so missing climate_text is
diagnosable.

In `@Pipfile`:
- Line 19: The Pipfile currently lists kgcpy with an unbounded version ("kgcpy =
\"*\""); update this to an explicit pin to match the project's convention and
the lockfile by changing the entry to pin kgcpy to the tested version (kgcpy
==1.1.8) so regenerating the lockfile won't allow unintended version drift.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: a1369943-b857-4a15-82ef-cfaa2d3b5818

📥 Commits

Reviewing files that changed from the base of the PR and between 8f01724 and 5daa36b.

⛔ Files ignored due to path filters (3)
  • Pipfile.lock is excluded by !**/*.lock
  • assets/data/OneBuilding files.zip is excluded by !**/*.zip
  • assets/data/one_building.csv is excluded by !**/*.csv
📒 Files selected for processing (15)
  • .bumpversion.cfg
  • .gitignore
  • Pipfile
  • assets/manifest.json
  • docs/contributing/run-project-locally.md
  • docs/documentation/tabs-explained/temperature-and-humidity/relative-humidity-explained.md
  • pages/lib/import_one_building_files.py
  • pages/lib/layout.py
  • pages/lib/template_graphs.py
  • pages/lib/utils.py
  • pages/select.py
  • pages/summary.py
  • pages/t_rh.py
  • tests/test_summary.py
  • tests/utils.py

Comment on lines +40 to +42
```
<figure><img src="../../../.gitbook/assets/Desc stat RH.png" alt=""><figcaption><p>Descriptive statistics of relative humidity trend in a temperate climate, Berkeley (USA)</p></figcaption></figure>
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Remove code fences around the <figure> block.

Wrapping the figure in fenced code makes it render as literal code instead of an image/figure block. Keep the HTML figure block unfenced.

Proposed fix
-```
 <figure><img src="../../../.gitbook/assets/Desc stat RH.png" alt=""><figcaption><p>Descriptive statistics of relative humidity trend in a temperate climate, Berkeley (USA)</p></figcaption></figure>
-```
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 40-40: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@docs/documentation/tabs-explained/temperature-and-humidity/relative-humidity-explained.md`
around lines 40 - 42, The fenced code block around the HTML figure causes it to
render as literal code; remove the surrounding triple backticks so the
<figure>...<figcaption> block is raw HTML (i.e., delete the opening ``` before
<figure> and the closing ``` after </figure>) leaving the <figure> tag and its
contents unchanged.

Comment thread pages/select.py
Comment on lines +270 to +272
if data is not None:
location_string = f"Location: {meta[Variables.CITY.col_name]}, {meta[Variables.COUNTRY.col_name]}"
disable_links = False
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Guard meta before building the location string.

Line 271 can throw when data is present but meta is still None/incomplete. Add a defensive check before indexing meta.

Proposed fix
-    if data is not None:
-        location_string = f"Location: {meta[Variables.CITY.col_name]}, {meta[Variables.COUNTRY.col_name]}"
+    if (
+        data is not None
+        and meta is not None
+        and Variables.CITY.col_name in meta
+        and Variables.COUNTRY.col_name in meta
+    ):
+        location_string = (
+            f"Location: {meta[Variables.CITY.col_name]}, "
+            f"{meta[Variables.COUNTRY.col_name]}"
+        )
         disable_links = False
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pages/select.py` around lines 270 - 272, The current block builds
location_string using meta without verifying meta is present or contains the
expected keys; update the guard so you only construct location_string when meta
is non-None and contains the required keys (e.g., Variables.CITY.col_name and
Variables.COUNTRY.col_name); otherwise set location_string to a safe default
(empty string or "Location unavailable") and keep disable_links behavior
consistent. Locate the usage around the variables data, meta, location_string
and disable_links and change the condition from checking data alone to a
combined check (or add an inner if) that ensures meta and the specific meta keys
exist before indexing.

Comment thread tests/test_summary.py
Comment on lines +94 to +99
expect(info_section).to_have_attribute(
"data-dash-is-loading", "true", timeout=10000
)
expect(info_section).not_to_have_attribute(
"data-dash-is-loading", "true", timeout=20000
)
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

The transient "loading=true" assertion is flaky.

This intermediate state can be missed on fast runs, causing nondeterministic failures. Waiting only for the final non-loading state is safer here (you already assert updated IP values afterward).

Proposed test fix
-    expect(info_section).to_have_attribute(
-        "data-dash-is-loading", "true", timeout=10000
-    )
     expect(info_section).not_to_have_attribute(
         "data-dash-is-loading", "true", timeout=20000
     )
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
expect(info_section).to_have_attribute(
"data-dash-is-loading", "true", timeout=10000
)
expect(info_section).not_to_have_attribute(
"data-dash-is-loading", "true", timeout=20000
)
expect(info_section).not_to_have_attribute(
"data-dash-is-loading", "true", timeout=20000
)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/test_summary.py` around lines 94 - 99, Remove the flaky intermediate
assertion that expects info_section to have attribute "data-dash-is-loading" and
only wait for the final non-loading state; specifically, delete the
expect(info_section).to_have_attribute("data-dash-is-loading", "true",
timeout=10000) call and keep (or adjust) the
expect(info_section).not_to_have_attribute("data-dash-is-loading", "true",
timeout=20000) check so the test reliably waits until info_section is no longer
loading before continuing to assert updated IP values.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This pull request focuses on UI/layout refinements and improving data reliability by removing an external Köppen–Geiger lookup dependency, while also updating documentation/tests and bumping the app version.

Changes:

  • Switched Köppen–Geiger climate zone lookup from an external HTTP API to the local kgcpy library, adding local zone descriptions.
  • Refactored parts of the UI (header layout, RH “comfort band” label, summary/stat table rendering) and adjusted loading/test expectations.
  • Updated docs/deployment instructions and bumped version references to 0.10.2.

Reviewed changes

Copilot reviewed 14 out of 18 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
pages/summary.py Replaces external climate zone API call with kgcpy.lookupCZ and local descriptions.
Pipfile Adds kgcpy dependency.
Pipfile.lock Locks updated dependency set including kgcpy and other version bumps.
pages/lib/utils.py Refactors summary statistics table rendering from Dash DataTable to Mantine table components; adds typing annotations.
pages/lib/layout.py Refactors header layout to dmc.Flex, updates “Location” subtitle text, bumps footer version string.
pages/lib/template_graphs.py Renames RH band legend label to “ASHRAE 160 humidity range”.
pages/t_rh.py Adjusts skeleton loader height for table section.
pages/select.py Simplifies/standardizes “Location: …” string construction and tab-disable logic.
pages/lib/import_one_building_files.py Makes KML import more robust by skipping entries without a URL match.
tests/utils.py Updates expected banner text to “Location: …”.
tests/test_summary.py Adds assertions around Dash loading attribute transitions for #location-info.
docs/documentation/tabs-explained/temperature-and-humidity/relative-humidity-explained.md Updates RH band explanation and fixes some links/wording (but introduces markdown formatting issues).
docs/contributing/run-project-locally.md Adds Cloud Run deploy tagging guidance for versioned deployments.
assets/manifest.json Bumps manifest app id to 0.10.2.
.bumpversion.cfg Updates current_version to 0.10.2.
.gitignore Ignores local data maintenance scripts.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread pages/summary.py
Comment on lines +40 to +42
```
<figure><img src="../../../.gitbook/assets/Desc stat RH.png" alt=""><figcaption><p>Descriptive statistics of relative humidity trend in a temperate climate, Berkeley (USA)</p></figcaption></figure>
```
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

♻️ Duplicate comments (1)
docs/documentation/tabs-explained/temperature-and-humidity/relative-humidity-explained.md (1)

40-42: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Render the descriptive-statistics figure as HTML, not fenced code.

The triple backticks make the <figure> render as literal code instead of the image block. Please remove the surrounding code fence.

Proposed fix
-```
 <figure><img src="../../../.gitbook/assets/Desc stat RH.png" alt=""><figcaption><p>Descriptive statistics of relative humidity trend in a temperate climate, Berkeley (USA)</p></figcaption></figure>
-```
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@docs/documentation/tabs-explained/temperature-and-humidity/relative-humidity-explained.md`
around lines 40 - 42, The `<figure>...</figure>` HTML block is currently wrapped
in triple backticks so it renders as a code fence; remove the surrounding
backticks (the ``` markers) so the `<figure>` element is raw HTML and will
render the image and caption correctly, ensuring no leftover backtick characters
remain around the `<figure>` tag.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In
`@docs/documentation/tabs-explained/temperature-and-humidity/relative-humidity-explained.md`:
- Around line 40-42: The `<figure>...</figure>` HTML block is currently wrapped
in triple backticks so it renders as a code fence; remove the surrounding
backticks (the ``` markers) so the `<figure>` element is raw HTML and will
render the image and caption correctly, ensuring no leftover backtick characters
remain around the `<figure>` tag.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 322ceab1-ee89-4ddd-96d6-904f563c9f1b

📥 Commits

Reviewing files that changed from the base of the PR and between 5daa36b and ecfdc2a.

📒 Files selected for processing (1)
  • docs/documentation/tabs-explained/temperature-and-humidity/relative-humidity-explained.md

@t-kramer
Copy link
Copy Markdown
Contributor

t-kramer commented May 8, 2026

@FedericoTartarini I resolved the merge conflict and implemented a few minor comments made by CodeRabbit. Feel free to merge and deploy now.

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.

3 participants