IRWA website redesign#9
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughSite-wide template, content, CSS/LESS, and asset changes: added gitignore patterns; updated member data and members UI/logic; replaced local font preloads with Google Fonts; removed global CSS and oneko.js; introduced new LESS-based styling, modal/members styles, theme toggle and theme script; adjusted header/footer, layouts, and various page markups. Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (6)
members/index.html (1)
130-133: Update stale inline comment to match behavior.The comment says “Always add Wiki link first,” but this block now appends a
Gamelink frommember.game_link.Proposed tweak
- // Always add Wiki link first + // Add game link first (when available) if (member.game_link) { socials.appendChild(createSocialLink(member.game_link, 'Game')); }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@members/index.html` around lines 130 - 133, The inline comment above the socials.appendChild call is stale — it says “Always add Wiki link first” but the code appends member.game_link as a Game link; update the comment to reflect the actual behavior (e.g., “Always add Game link first” or a neutral comment like “Add primary social link first”) near the socials.appendChild(createSocialLink(member.game_link, 'Game')) call and ensure any neighboring comments for Wiki links are accurate as well.index.html (1)
11-14: Hide decorative CTA icon from screen readers.The
arrow_forwardglyph is decorative here; addingaria-hidden="true"prevents it from being announced as text.Proposed tweak
- <span class="material-symbols-outlined">arrow_forward</span> + <span class="material-symbols-outlined" aria-hidden="true">arrow_forward</span>🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@index.html` around lines 11 - 14, The decorative icon inside the CTA anchor (the <span class="material-symbols-outlined">arrow_forward</span> within the element using class "btn") should be hidden from assistive tech; update that span to include aria-hidden="true" so screen readers ignore it (and keep the visual glyph intact), ensuring no change to the anchor text or structure._includes/head.html (1)
19-21: Avoid double-loading Instrument Sans.Instrument Sans is now loaded in the head and also imported in
assets/css/style.css(@importatassets/css/style.css:1-22). Keeping both can cause redundant requests and slower first paint.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@_includes/head.html` around lines 19 - 21, The page currently double-loads Instrument Sans via the head <link href="https://fonts.googleapis.com/...Instrument+Sans"> and an `@import` of the same font in assets/css/style.css; remove the redundant source by deleting the `@import` that pulls Instrument Sans from the top of assets/css/style.css so the head preconnect and <link> remain the single font provider, ensuring only one network request and faster first paint._includes/footer.html (1)
8-8: Keep footer link styling consistent.The new
Security.TXTanchor doesn’t include theinvertclass used by adjacent footer links, so it may render inconsistently.Proposed tweak
- <li><a href="{{ "/security.txt" | relative_url }}">Security.TXT</a></li> + <li><a href="{{ "/security.txt" | relative_url }}" class="invert">Security.TXT</a></li>🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@_includes/footer.html` at line 8, The footer link for "Security.TXT" is missing the CSS class used by adjacent links; update the anchor element containing "{{ "/security.txt" | relative_url }}" to include class="invert" so it matches the styling of its siblings (same pattern as other <a> elements in the footer).assets/css/members.css (2)
84-84: Useoverflow: autoinstead ofoverflow: scroll.
overflow: scrollalways displays scrollbars regardless of whether content overflows. This can be visually distracting when the modal content fits within the viewport. Usingoverflow: autoshows scrollbars only when needed.♻️ Suggested fix
- overflow: scroll; + overflow: auto;🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@assets/css/members.css` at line 84, Replace the CSS declaration that sets "overflow: scroll" with "overflow: auto" so scrollbars appear only when content actually overflows; locate the rule containing the "overflow: scroll" declaration in the stylesheet and change it to "overflow: auto" (preserving any other properties in the same selector).
225-237: Consider addingtext-decoration: noneand reviewing!importantusage.If
.btn-site-linkis applied to anchor elements, consider addingtext-decoration: noneto prevent underlines. The!importantoncolor(also used on line 14) suggests potential specificity conflicts—consider addressing root causes rather than using!importantas a workaround.♻️ Suggested addition
.btn-site-link { background: var(--neutral-9); color: var(--white) !important; padding: 8px 16px; border-radius: var(--border-radius); font-size: 0.85rem; font-weight: bold; + text-decoration: none; transition: transform 0.2s;🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@assets/css/members.css` around lines 225 - 237, The .btn-site-link rule should explicitly suppress underlines for anchor usage and avoid using !important on color; add text-decoration: none to .btn-site-link and remove the !important from the color declaration, then resolve the underlying specificity conflict by either increasing selector specificity (e.g., target a.btn-site-link or .nav .btn-site-link) or adjusting the source of competing rules/variables so the color value from var(--white) applies without !important; confirm the change still applies on hover (the &:hover transform can remain unchanged).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@_data/members.yml`:
- Line 111: Trim trailing whitespace from the affected team member name entries:
remove the trailing space characters from the "name" values currently listed as
"Fsh " and "bee " in the members data so they become "Fsh" and "bee"; update the
_data/members.yml entries (the name fields) to trim any other trailing spaces as
well to prevent display/matching issues.
In @.gitignore:
- Line 7: The .gitignore entry "/home/jules/verification/" is a machine-specific
absolute-looking path and should be replaced with a portable rule (e.g.,
"verification/" or "verification/**" or "verification/*") so it matches the
intended local folder across clones; update the entry that currently reads
"/home/jules/verification/" to a repo-relative pattern, or if this ignore is
only for a single developer, remove it from .gitignore and add it to that
developer's .git/info/exclude instead.
In `@about/index.html`:
- Line 34: Update the Discord invite anchor in about/index.html so the href uses
HTTPS instead of HTTP: locate the <a> tag with class "btn" and href
"http://discord.com/invite/74qrU7qBqx" and change the URL to
"https://discord.com/invite/74qrU7qBqx" to ensure a secure link for the Discord
server button.
In `@projects/index.html`:
- Line 10: The promo image inside the <figure class="post__image--right">
currently has alt="" which is ambiguous; decide whether it's decorative or
informative and update accordingly: if the image conveys project context,
replace the empty alt with a concise descriptive string (e.g., describing the
project's name and visual) so screen readers get meaningful text; if it is
purely decorative, keep alt="" but add aria-hidden="true" to the <img> element
to explicitly hide it from assistive tech. Make the change on the <img
loading="lazy" src="{{ "/media/promofiles/utg-robloxapi.png" | relative_url }}"
...> element.
---
Nitpick comments:
In `@_includes/footer.html`:
- Line 8: The footer link for "Security.TXT" is missing the CSS class used by
adjacent links; update the anchor element containing "{{ "/security.txt" |
relative_url }}" to include class="invert" so it matches the styling of its
siblings (same pattern as other <a> elements in the footer).
In `@_includes/head.html`:
- Around line 19-21: The page currently double-loads Instrument Sans via the
head <link href="https://fonts.googleapis.com/...Instrument+Sans"> and an
`@import` of the same font in assets/css/style.css; remove the redundant source by
deleting the `@import` that pulls Instrument Sans from the top of
assets/css/style.css so the head preconnect and <link> remain the single font
provider, ensuring only one network request and faster first paint.
In `@assets/css/members.css`:
- Line 84: Replace the CSS declaration that sets "overflow: scroll" with
"overflow: auto" so scrollbars appear only when content actually overflows;
locate the rule containing the "overflow: scroll" declaration in the stylesheet
and change it to "overflow: auto" (preserving any other properties in the same
selector).
- Around line 225-237: The .btn-site-link rule should explicitly suppress
underlines for anchor usage and avoid using !important on color; add
text-decoration: none to .btn-site-link and remove the !important from the color
declaration, then resolve the underlying specificity conflict by either
increasing selector specificity (e.g., target a.btn-site-link or .nav
.btn-site-link) or adjusting the source of competing rules/variables so the
color value from var(--white) applies without !important; confirm the change
still applies on hover (the &:hover transform can remain unchanged).
In `@index.html`:
- Around line 11-14: The decorative icon inside the CTA anchor (the <span
class="material-symbols-outlined">arrow_forward</span> within the element using
class "btn") should be hidden from assistive tech; update that span to include
aria-hidden="true" so screen readers ignore it (and keep the visual glyph
intact), ensuring no change to the anchor text or structure.
In `@members/index.html`:
- Around line 130-133: The inline comment above the socials.appendChild call is
stale — it says “Always add Wiki link first” but the code appends
member.game_link as a Game link; update the comment to reflect the actual
behavior (e.g., “Always add Game link first” or a neutral comment like “Add
primary social link first”) near the
socials.appendChild(createSocialLink(member.game_link, 'Game')) call and ensure
any neighboring comments for Wiki links are accurate as well.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 9587f930-55ed-4fa5-9858-1d7bfe19cd67
⛔ Files ignored due to path filters (6)
assets/dynamic/fonts/raleway/raleway-italic.woff2is excluded by!**/*.woff2assets/dynamic/fonts/raleway/raleway.woff2is excluded by!**/*.woff2assets/svg/github.svgis excluded by!**/*.svgassets/svg/mediawiki.svgis excluded by!**/*.svgmedia/promofiles/utg-robloxapi.pngis excluded by!**/*.pngoneko.gifis excluded by!**/*.gif
📒 Files selected for processing (14)
.gitignore_data/members.yml_includes/footer.html_includes/head.html_layouts/default.htmlabout/index.htmlassets/css/editor.cssassets/css/main.cssassets/css/members.cssassets/css/style.cssindex.htmlmembers/index.htmloneko.jsprojects/index.html
💤 Files with no reviewable changes (3)
- assets/css/main.css
- assets/css/editor.css
- oneko.js
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (2)
projects/index.html (1)
10-10:⚠️ Potential issue | 🟡 MinorClarify decorative vs informative intent for the promo image.
Line 10 keeps
alt=""; if this image is informational, add descriptive alt text. If decorative, keep empty alt and addaria-hidden="true"explicitly.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@projects/index.html` at line 10, The img element inside the figure (the promo image) currently has alt="" which is ambiguous; decide whether it is decorative or informative: if informative, replace alt="" with a concise descriptive text (e.g., alt="UTG Roblox API promotional banner") conveying the image's content; if purely decorative, keep alt="" but add aria-hidden="true" to the img (or the figure) so assistive tech ignores it. Update the <img> tag accordingly in the figure element to reflect the chosen intent.about/index.html (1)
38-38:⚠️ Potential issue | 🟠 MajorSwitch the Discord CTA to HTTPS.
Line 38 still uses plaintext HTTP for a primary contact CTA.
Proposed fix
- <a href="http://discord.com/invite/74qrU7qBqx" class="btn">Discord server</a> + <a href="https://discord.com/invite/74qrU7qBqx" class="btn">Discord server</a>🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@about/index.html` at line 38, Update the Discord CTA anchor to use HTTPS instead of HTTP: locate the anchor element with class "btn" whose href is "http://discord.com/invite/74qrU7qBqx" in about/index.html and change the href to "https://discord.com/invite/74qrU7qBqx" (also scan for other identical anchors to update any duplicates).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@projects/index.html`:
- Line 19: The GitHub anchor tag with href
"https://github.com/Roblox-Indie-Wikis/mediawiki-extensions-RobloxAPI" is
missing the noreferrer value in its rel attribute; update that <a> element to
use rel="noopener noreferrer" (matching the pattern used on the other buttons)
so the link includes both noopener and noreferrer for consistency and privacy.
---
Duplicate comments:
In `@about/index.html`:
- Line 38: Update the Discord CTA anchor to use HTTPS instead of HTTP: locate
the anchor element with class "btn" whose href is
"http://discord.com/invite/74qrU7qBqx" in about/index.html and change the href
to "https://discord.com/invite/74qrU7qBqx" (also scan for other identical
anchors to update any duplicates).
In `@projects/index.html`:
- Line 10: The img element inside the figure (the promo image) currently has
alt="" which is ambiguous; decide whether it is decorative or informative: if
informative, replace alt="" with a concise descriptive text (e.g., alt="UTG
Roblox API promotional banner") conveying the image's content; if purely
decorative, keep alt="" but add aria-hidden="true" to the img (or the figure) so
assistive tech ignores it. Update the <img> tag accordingly in the figure
element to reflect the chosen intent.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 1cd0dafc-c0f2-405a-b71a-f795b59c6d9e
⛔ Files ignored due to path filters (1)
media/promofiles/utg-robloxapi.pngis excluded by!**/*.png
📒 Files selected for processing (4)
_includes/footer.htmlabout/index.htmlassets/css/style.cssprojects/index.html
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
about/index.html (1)
40-40: Remove stale commented-out CTA markup.Line 40 leaves dead UI code in-page; prefer deleting it and tracking reintroduction in an issue/PR note.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@about/index.html` at line 40, Remove the stale commented-out CTA markup <!-- <a href="{{ "/joining/" | relative_url }}" class="btn">Join Us</a> --> from the HTML; delete that commented anchor entirely and, if desired, add a short note to the PR description or issue tracker to record that the "Join Us" CTA (the <a href="{{ "/joining/" | relative_url }}" class="btn">Join Us</a> element) was intentionally removed and can be reintroduced via a future change.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@about/index.html`:
- Line 17: Change the second page-level heading "<h1>Our approach</h1>" (the
heading introduced on line with text "Our approach") to an "<h2>" to preserve a
single top-level <h1> on the page; locate the element containing the exact text
"Our approach" and replace the tag from h1 to h2 so the document maintains
correct heading hierarchy.
In `@projects/index.html`:
- Around line 20-29: The decorative icons next to visible link text are read
redundantly by screen readers; update the three decorative elements (the <img>
tags with class "li img-invert" used for GitHub and MediaWiki and the <span
class="material-symbols-outlined"> developer_guide </span> used for
Documentation) to be ignored by assistive tech by making them non‑semantic: set
the <img> elements to have empty alt attributes (alt="") and add
aria-hidden="true", and add aria-hidden="true" (and optionally
focusable="false") to the <span class="material-symbols-outlined"> so screen
readers only announce the visible link text.
---
Nitpick comments:
In `@about/index.html`:
- Line 40: Remove the stale commented-out CTA markup <!-- <a href="{{
"/joining/" | relative_url }}" class="btn">Join Us</a> --> from the HTML; delete
that commented anchor entirely and, if desired, add a short note to the PR
description or issue tracker to record that the "Join Us" CTA (the <a href="{{
"/joining/" | relative_url }}" class="btn">Join Us</a> element) was
intentionally removed and can be reintroduced via a future change.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 0e344c8b-7be3-4a03-9b2b-53268cfce38c
📒 Files selected for processing (5)
_data/members.ymlabout/index.htmlassets/css/members.cssassets/css/style.cssprojects/index.html
🚧 Files skipped from review as they are similar to previous changes (2)
- _data/members.yml
- assets/css/members.css
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@index.html`:
- Line 54: The image inside <figure class="post__image"> currently has an empty
alt attribute; replace alt="" on the <img> element with a concise, descriptive
string (for example: "Screenshot of the SEWH website displayed on a MacBook") so
screen readers get meaningful content while leaving loading="lazy" and the src
unchanged; update the alt on the <img> tag that uses "{{
"/media/promofiles/SEWH_on_macbook.png" | relative_url }}" as the src.
- Around line 59-62: Update the Discord invite anchor so it uses HTTPS rather
than HTTP: locate the <a> element with text "Discord Server" and href
"http://discord.com/invite/74qrU7qBqx" and change the URL scheme to
"https://discord.com/invite/74qrU7qBqx" (keep the class="btn" and other
attributes unchanged).
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 9472e549-79c5-4cd7-bcb0-480f7ca3eb38
⛔ Files ignored due to path filters (1)
media/promofiles/SEWH_on_macbook.pngis excluded by!**/*.png
📒 Files selected for processing (1)
index.html
There was a problem hiding this comment.
Actionable comments posted: 6
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@_layouts/default.html`:
- Line 24: The page currently defers /assets/js/scripts.js which applies the
dark-mode class too late; add a small inline bootstrap snippet before the
deferred bundle that reads the saved theme (e.g., from localStorage or
prefers-color-scheme) and synchronously applies or removes the "dark-mode" class
on document.documentElement so the initial paint uses the correct theme, then
leave the existing <script src="/assets/js/scripts.js" defer> unchanged to run
later; reference the "dark-mode" CSS class and the external "scripts.js" bundle
when making the change.
In `@assets/css/members.css`:
- Around line 9-31: The compiled CSS in assets/css/members.css contains
duplicate declarations (display, gap, padding, color, transition) causing
Stylelint failures; remove the redundant entries so each property appears once
with the intended value (e.g., keep display: flex, gap: 10px, padding: 1.5rem,
transition: all 0.2s ease-out, color: var(--white) !important) and ensure the
final rule is consistent. If this file is generated from
assets/css/members.less, regenerate the compiled CSS from members.less or stop
committing the generated asset (add to .gitignore) to prevent source/drift;
update the source in members.less if the intended values differ so future builds
produce a lint-clean members.css.
In `@assets/css/style.less`:
- Around line 182-188: The carousel overshoots because box-sizing:border-box
makes each .logo-slide 150px wide but the carousel math still uses 230px per
item; update the travel calculation used for translating the carousel (the code
that computes step/translateX and the loop reset) to compute per-item width
dynamically instead of using the hardcoded 230 value — e.g., measure a
.logo-slide element with element.getBoundingClientRect().width (and add parsed
margin-right from getComputedStyle if spacing is included) and use that computed
width for the translate step and loop reset logic so the animation matches the
actual .logo-slide size.
- Around line 1170-1180: The .container rule currently sets overflow: hidden
which clips full-bleed elements; remove overflow: hidden from the .container
block so full-width selectors (e.g., .featured-image, .post-image,
.gallery-wrapper) can extend to the viewport edges, and if needed move any
intended clipping to a more specific wrapper or set overflow: hidden on that
specific child rather than on .container to preserve layout isolation without
blocking full-bleed elements.
In `@assets/js/scripts.js`:
- Around line 431-456: The theme toggle button must keep its aria-pressed state
in sync: ensure the markup for the toggle sets aria-pressed="false" initially,
and update aria-pressed on page load and on click inside the IIFE by using the
existing themeToggle element; when applying the saved theme (currentTheme ===
'dark') set themeToggle.setAttribute('aria-pressed','true') and when toggling in
the themeToggle.click handler set aria-pressed to 'true' if
body.classList.contains('dark-mode') else 'false' (use the same themeToggle,
themeIcon and body variables already in the function).
In `@members/index.html`:
- Around line 111-115: The hidden CTA (`#modalSiteLink`) still has an href when
member.link is falsy, so trapFocus() picks it up via [href] and creates a
non-focusable tab stop; when member.link is absent, remove or neutralize the
link target and exclude it from focus by removing the href attribute
(link.removeAttribute('href')) and/or setting tabindex="-1" and
aria-hidden="true" in the else branch (instead of only
link.style.display='none'), keeping the existing members rendering logic
(member.link, link.href, link.style.display) but ensuring the element cannot be
reached by keyboard focus.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 87074acd-4331-4d96-bbfa-75ff4610a755
⛔ Files ignored due to path filters (3)
assets/svg/discord.svgis excluded by!**/*.svgassets/svg/twitter.svgis excluded by!**/*.svgassets/svg/website.svgis excluded by!**/*.svg
📒 Files selected for processing (9)
_includes/header.html_layouts/default.htmlassets/css/members.cssassets/css/members.lessassets/css/mixins.lessassets/css/style.cssassets/css/style.lessassets/js/scripts.jsmembers/index.html
✅ Files skipped from review due to trivial changes (1)
- assets/css/mixins.less
* finalising images * upd 2 * add image * style: minify scripts.js (#9) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* finalising images * upd 2 * add image * style: minify scripts.js (#9) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * updating --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* finalising images * upd 2 * add image * style: minify scripts.js (#9) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * updating * testing * upd * upd * upd * test * changing width --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Actionable comments posted: 10
♻️ Duplicate comments (4)
.github/workflows/compile-less.yml (1)
56-60:⚠️ Potential issue | 🔴 Critical
--adminflag still present — auto-merge will fail withGITHUB_TOKEN.The workflow only grants
contents: writeandpull-requests: write, neither of which confers admin privileges.gh pr merge --adminrequires admin rights to bypass branch protections and will error out when invoked with the defaultGITHUB_TOKEN, preventing the auto-merge step from succeeding.🔧 Proposed fix
- name: Auto-merge PR if: steps.cpr.outputs.pull-request-operation == 'created' - run: gh pr merge "${{ steps.cpr.outputs.pull-request-number }}" --squash --admin + run: gh pr merge "${{ steps.cpr.outputs.pull-request-number }}" --squash --delete-branch env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}If bypassing branch protection is actually required, switch to a PAT or GitHub App token with the necessary admin permissions rather than
GITHUB_TOKEN.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/compile-less.yml around lines 56 - 60, The workflow uses gh pr merge with the --admin flag which requires admin privileges not granted to the default GITHUB_TOKEN; remove the --admin flag from the gh pr merge invocation (the command that uses steps.cpr.outputs.pull-request-number) so the merge runs with the existing token, or replace the GITHUB_TOKEN env used by that run with a Personal Access Token or GitHub App token that has admin/branch-protection bypass rights if bypass is actually required..github/workflows/deploy.yml (1)
3-6:⚠️ Potential issue | 🟠 MajorDeployment will not run after this PR merges to
main.Line 5 restricts push-triggered deploys to
patch-1, but this PR targetsmain. After merge, pushes tomainwill not trigger the Pages deployment.#!/bin/bash # Verify the deploy workflow push branch filter. rg -n -C3 'branches:\s*\["patch-1"\]' .github/workflows/deploy.yml🔧 Proposed fix
on: push: - branches: ["patch-1"] + branches: ["main"] workflow_dispatch:🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/deploy.yml around lines 3 - 6, The push trigger in the GitHub Actions workflow is restricted to branches: ["patch-1"], so deployments won't run when this PR merges to main; update the deploy workflow's push branch filter (the on: push: branches: setting in .github/workflows/deploy.yml) to include "main" (or remove the branches filter to trigger on all pushes) so pushes to main will run the Pages deployment; ensure the change updates the branches array used by the workflow's push trigger..github/workflows/sync-docs.yml (1)
67-71:⚠️ Potential issue | 🟠 MajorAuto-merge still uses
--adminwith the default workflow token.Line 69 still requires admin/bypass authority, but Line 71 authenticates
ghwith${{ secrets.GITHUB_TOKEN }}. This is likely to fail unless replaced with an admin-capable PAT or GitHub App token.#!/bin/bash # Verify the auto-merge command still combines --admin with the default GITHUB_TOKEN. rg -n -C3 'gh pr merge .*--admin|GH_TOKEN:\s*\$\{\{\s*secrets\.GITHUB_TOKEN\s*\}\}' .github/workflows/sync-docs.yml🔧 Proposed fix
- name: Auto-merge PR if: steps.cpr.outputs.pull-request-operation == 'created' run: gh pr merge "${{ steps.cpr.outputs.pull-request-number }}" --squash --admin env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_TOKEN: ${{ secrets.ADMIN_GH_TOKEN }}🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/sync-docs.yml around lines 67 - 71, The workflow step that runs the command `gh pr merge "${{ steps.cpr.outputs.pull-request-number }}" --squash --admin` is authenticating `gh` with `GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}` which lacks admin/bypass permissions; either remove the `--admin` flag from the `gh pr merge` invocation or replace the `GH_TOKEN` env to use an admin-capable token (e.g., a repository-level PAT or GitHub App token) so the `--admin` option will succeed; update the `Auto-merge PR` step to use the chosen approach and ensure the `GH_TOKEN` environment variable reference matches the new secret name if you switch to a PAT/GitHub App token._data/members.yml (1)
17-17:⚠️ Potential issue | 🟡 MinorPolish the remaining visible copy typos.
Line 17 is missing an article, and Line 93 has mid-sentence capitalization.
Copy fix
- description: "The official wiki of <b><i>Guts & Blackpowder</i></b>, housing comprehensive database for information regarding the game, such as Game Mechanics, Equipment, Maps, and much more. Created and maintained by the Developers, Game Staff, and Wiki Team." + description: "The official wiki of <b><i>Guts & Blackpowder</i></b>, housing a comprehensive database for information regarding the game, such as Game Mechanics, Equipment, Maps, and much more. Created and maintained by the Developers, Game Staff, and Wiki Team." @@ - description: "The official database for <b><i>3D Planets Simulator</i></b>, A space-themed colonization and industry game based on Roblox. Join now and explore the Blue Galaxy!" + description: "The official database for <b><i>3D Planets Simulator</i></b>, a space-themed colonization and industry game based on Roblox. Join now and explore the Blue Galaxy!"Also applies to: 93-93
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@_data/members.yml` at line 17, Update the description string in members.yml by inserting the missing article so it reads "housing a comprehensive database" (fix the value for the description key) and also locate the other sentence with mid-sentence capitalization (the text at the second noted occurrence) and change the improperly capitalized word to lowercase so it flows as a normal mid-sentence word.
🧹 Nitpick comments (8)
.github/workflows/compile-less.yml (1)
42-54: Consider guarding PR creation when there are no CSS changes.
peter-evans/create-pull-requestwill no-op if the working tree is clean, but the step still runs on every**/*.lesspush even when the compiled output is unchanged (e.g., whitespace-only LESS edits that minify identically). Not a correctness issue, just noise in Actions history — optionally add agit diff --quietcheck before this step to skip early.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/compile-less.yml around lines 42 - 54, The "Create Pull Request" step (id: cpr, uses: peter-evans/create-pull-request@v6) runs even when the compiled CSS hasn't changed; add a guard to skip PR creation when there are no CSS diffs by first running a short check (e.g., a preceding step that runs git diff --quiet <target-files> or compares the compiled CSS output and sets an output like changed=true/false) and then add an if condition on the cpr step (if: steps.<check-step>.outputs.changed == 'true' or similar) so the PR step is skipped when there are no changes to commit._includes/header.html (1)
8-8: Remove the commented-out Home menu item if it’s intentionally retired.Keeping old Liquid/HTML inside comments adds template noise and can still be emitted into generated HTML as a comment.
Cleanup
- <!-- <li{% if page.url == "/" %} class="active"{% endif %}><a href="{{ "/" | relative_url }}">Home</a></li> -->🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@_includes/header.html` at line 8, Remove the commented-out Home menu item in _includes/header.html by deleting the entire commented line that contains the Liquid snippet "<li{% if page.url == "/" %} class="active"{% endif %}><a href="{{ "/" | relative_url }}">Home</a></li>" so the template no longer emits or stores that obsolete HTML comment; if the Home link must be restored later, keep the code in version control history instead of an inline comment.assets/css/_mixins.less (2)
26-26: Mixed indentation (tab vs spaces).Line 26 uses a tab while the rest of
.button-mixinuses spaces. Likely a Stylelint/formatter nit.♻️ Proposed fix
- font: normal 600 0.8888888889rem var(--font-body); + font: normal 600 0.8888888889rem var(--font-body);🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@assets/css/_mixins.less` at line 26, The line inside the .button-mixin uses a tab for indentation while the rest uses spaces; replace the tab before "font: normal 600 0.8888888889rem var(--font-body);" with the project's standard spaces so the .button-mixin indentation is consistent with surrounding lines and satisfies Stylelint/formatter rules.
11-13: Consider@supportsfallbacks for@starting-style.The
@starting-styleat-rule is currently supported in Chrome/Edge 117+, Firefox 129+, and Safari 17.5+ (Web Platform Baseline "Newly available"), which covers >95% of modern browsers. On older clients, the starting state simply won't apply and the overlay appears without the blur-in transition — acceptable as progressive enhancement. For broader compatibility, wrap the rule in@supports (selector(::view-transition-old(root)))or feature-detect at runtime if your support baseline requires coverage below these versions.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@assets/css/_mixins.less` around lines 11 - 13, The `@starting-style` rule currently sets backdrop-filter: blur(0px) which won't apply on older browsers; update the CSS so the `@starting-style` block is wrapped in a feature-detection fallback using `@supports` (selector(::view-transition-old(root))) or a runtime feature check — i.e., keep the existing `@starting-style` { backdrop-filter: blur(0px); } but add a fallback branch that only applies when the view-transition/start styles are supported (using `@supports`(...) or equivalent runtime check) so older clients gracefully skip the blur-in transition while modern browsers retain it..github/workflows/js-minify.yml (1)
2-10: Workflow will recursively retrigger itself.This workflow runs on
pushwhenassets/js/scripts.jschanges, opens a PR, and auto-merges it usingGITHUB_TOKEN. Merges authored byGITHUB_TOKENnormally don't retrigger other workflows — but the merge commit tomainhere doesn't touchscripts.js(onlyscripts.min.js), so in the common case you're fine. However, if a future change modifies thepathsfilter to includescripts.min.js, or if a contributor edits both files and this workflow pushes back, a loop becomes possible. Consider adding a guard:if: github.actor != 'github-actions[bot]'on the job to be safe.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/js-minify.yml around lines 2 - 10, The workflow can self-retrigger when the action's bot merges changes; to prevent loops, add a job-level guard such as if: github.actor != 'github-actions[bot]' to the job(s) that create the PR / auto-merge (the job that uses GITHUB_TOKEN to open/merge the PR and/or any jobs that push commits), placing the if condition at the top of the job definition so the job is skipped when the actor is the GitHub Actions bot._layouts/default.html (1)
25-34: Consider conditionally loading page-specific JS.
entity-modal.jsis only used by/members/and/partners/, and the TOC scripts only matter ontoc-enabledpages. Loading all eight deferred scripts on every page adds a noticeable number of HTTP requests for pages that don't need them. Gating via{% if page.url contains '/members/' or page.url contains '/partners/' %}(or via apage.scriptslist front-matter key) would reduce per-page payload. Defer order will still be preserved within the subset that is emitted.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@_layouts/default.html` around lines 25 - 34, The layout currently unconditionally emits all eight scripts (entity-modal.js, overflow-*.js, toc-*.js), causing unnecessary requests; change _layouts/default.html to conditionally include these assets by checking page metadata or URL — e.g., only emit entity-modal.js when page.url contains '/members/' or '/partners/' (or when a page.scripts front-matter list includes "entity-modal"), only emit toc-wrapper.js/toc-sticky.js/toc-init.js when the page has a TOC flag (e.g., page.toc_enabled or page.scripts contains "toc"), and only emit overflow-*.js when the page requires the table overflow feature; keep defer and relative_url logic the same so load order is preserved within each conditional block.assets/js/toc-sticky.js (1)
53-55: Consider throttling/debouncing resize.
handleResizerunssetInitialStateon everyresizeevent, which fires many times during a window drag. SincesetInitialStateis a no-op when the mobile/desktop state doesn't change, the impact is small, but a simplerequestAnimationFrameguard or debounce would smooth things out.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@assets/js/toc-sticky.js` around lines 53 - 55, The resize handler handleResize currently calls setInitialState on every resize event; wrap or guard it to avoid frequent calls during continuous resizes by adding a requestAnimationFrame or debounce/throttle so setInitialState only runs once per animation frame or after a short delay. Locate the handleResize method and add a RAF guard (e.g., track a pending animation frame id and only call setInitialState when none pending) or a short debounce around setInitialState to coalesce rapid events.assets/js/entity-modal.js (1)
38-50: Minor: guardlogo.srcagainst undefined and dedupe the lookup.
window.getCurrentLogo(element)returnselement.dataset.logo, which isundefinedwhen nodata-logowas set. Assigning that tologo.srcresults in the string"undefined"being resolved to a URL and triggering a 404 fetch;onloadnever fires so the<img>stayshidden(visually fine, but noisy in the network panel). The helper is also called twice here.🧹 Proposed tweak
- logo.hidden = true; - logo.onload = () => logo.hidden = false; - logo.src = window.getCurrentLogo(element); - logo.alt = `${entity.name || 'Entity'} logo`; - - const logoUrl = window.getCurrentLogo(element); const modalLeft = modal.querySelector('.modal-left'); + const logoUrl = window.getCurrentLogo(element); + logo.hidden = true; + logo.alt = `${entity.name || 'Entity'} logo`; + if (logoUrl) { + logo.onload = () => { logo.hidden = false; }; + logo.src = logoUrl; + } else { + logo.removeAttribute('src'); + } if (logoUrl) { const safeLogoUrl = logoUrl.replace(/["\\]/g, '\\$&'); modalLeft.style.setProperty('--logo-url', `url("${safeLogoUrl}")`); } else { modalLeft.style.removeProperty('--logo-url'); }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@assets/js/entity-modal.js` around lines 38 - 50, window.getCurrentLogo(element) is called twice and its undefined result is assigned to logo.src causing a request for "undefined"; first capture the result once (e.g., const logoUrl = window.getCurrentLogo(element)) and use that for both setting logo.src and the CSS --logo-url; before assigning to logo.src only set it when logoUrl is truthy (guarding logo.src against undefined) and keep the existing logo.hidden / logo.onload logic, and continue to sanitize logoUrl when applying modalLeft.style.setProperty('--logo-url', ...) to avoid injection.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@_config.yml`:
- Around line 4-9: Update the site URL and base path in _config.yml so generated
canonical URLs use the production domain: change the url key from
"https://whostacking.github.io" to "https://indierobloxwikis.org" and set
baseurl to an empty string (baseurl: "") instead of "/irwa-website"; verify the
url and baseurl entries are the only ones referencing the staging domain so
jekyll-seo-tag and social metadata will point at the production site.
In `@assets/css/style.less`:
- Around line 443-463: The td border colors are using var(--black) which is
low-contrast on the dark background; update the table cell borders in the table
selector (the nested & td rules) to use var(--neutral-2) (same as the outer
table border) for border-top and border-left so cell separators remain readable
in dark mode, keeping the existing padding and other properties unchanged;
verify the & th rule remains as-is.
In `@assets/css/syntax-highlighting.less`:
- Around line 2-14: The .highlight block lacks horizontal overflow handling
causing long code lines to break layout; update the .highlight and its nested
pre rules (refer to the .highlight selector and its nested & pre block) to
enable horizontal scrolling by adding overflow-x: auto (or overflow: auto) on
the .highlight container and ensure the pre keeps code spacing (set white-space
to a non-wrapping value like pre) so long lines scroll instead of overflowing
the page.
In `@assets/js/scripts.js`:
- Around line 699-713: The code calls localStorage.setItem inside setRowsLayout
(and similarly in the grid layout handler) which can throw and prevent
resetIsotopeLayout() from running; move or duplicate the call to
resetIsotopeLayout() so it always executes, and wrap
localStorage.setItem('persona-theme-selected-layout', ...) in a try/catch that
swallows/storage-unavailable errors. Concretely, in setRowsLayout (and the
corresponding setGridLayout/setColumnsLayout function referenced around lines
729-742), after mutating DOM/classes and before/after calling
resetIsotopeLayout(), surround the localStorage.setItem call with try { ... }
catch (e) { /* ignore or optional debug log */ } so the layout reset
(resetIsotopeLayout) is not skipped when storage is unavailable.
In `@index.html`:
- Around line 32-37: The "12 members" value in the landing-stats block is
hard-coded and must be derived from the data source; replace the static text
inside the landing-stats div (the element showing "12 members") with a computed
count from site.data.members (e.g., site.data.members | size) so it always
reflects members.yml, and reconcile the carousel's limit: 12 (the code that
iterates site.data.members limit: 12) by either removing the fixed limit or
setting it to match the computed count so the UI and carousel remain consistent.
In `@pages/joining.html`:
- Around line 72-75: The decorative arrow <img> inside the "Join our Discord"
link (the <a> with class "btn btn-external") is missing an empty alt attribute;
add alt="" to that <img src=".../arrow_forward.svg" (which already has
aria-hidden="true" and class "img-invert material-symbols") so screen readers
skip the decorative image and don't announce the filename.
In `@pages/legal.html`:
- Around line 10-12: Update the legal copy to use “affiliated with” instead of
“affiliated by” in the Miraheze sentence (the second <p> block shown) and remove
any trailing spaces just before the closing </p> tags in the affected paragraphs
so there are no visible source trailing spaces; ensure the corrected sentence
reads: "We work with certain volunteers from Miraheze to ensure our best
interests are met. However, we are not endorsed, sponsored or affiliated with
Miraheze or WikiTide Foundation."
In `@pages/onboarding.html`:
- Line 14: The hero image currently uses an empty alt and aria-hidden which
hides meaningful content from assistive tech; update the <figure
class="post__image align-center"> <img> tag (the one with src
"/assets/promofiles/OnboardingMainThumbnail.png") to remove the aria-hidden
attribute and supply a concise descriptive alt (e.g., "Onboarding illustration
showing app onboarding flow and features") that accurately describes the image
purpose for screen readers and Open Graph consumers.
- Line 109: The image tag loading from assets.st-note.com should be replaced
with a locally hosted asset to avoid privacy/reliability issues: download the
referenced image(s) into your static assets folder (e.g. /assets/promofiles/),
update the <img> src attributes in pages/onboarding.html (the existing <img
src="https://assets.st-note.com/..."> occurrences) to use the local relative URL
(use the site's relative_url helper pattern used elsewhere), keep the alt and
class values, and optionally add loading="lazy" and explicit width/height
attributes; apply the same replacement for the other hotlinked images noted
(lines 116-118 and 226).
In `@pages/projects.html`:
- Line 27: The pages/projects.html hardcodes a different fallback text ("400+
wikis") for the robloxapi stat than the homepage, causing inconsistent display
when extensionstats.js replaces only the span text; update the span with class
"extension-usage" and data-extension="robloxapi" in pages/projects.html to match
the homepage fallback ("500+ wikis") so both pages show the same initial text
and the JS replacement yields consistent formatting, and verify
extensionstats.js still targets span.extension-usage[data-extension="robloxapi"]
correctly.
---
Duplicate comments:
In `@_data/members.yml`:
- Line 17: Update the description string in members.yml by inserting the missing
article so it reads "housing a comprehensive database" (fix the value for the
description key) and also locate the other sentence with mid-sentence
capitalization (the text at the second noted occurrence) and change the
improperly capitalized word to lowercase so it flows as a normal mid-sentence
word.
In @.github/workflows/compile-less.yml:
- Around line 56-60: The workflow uses gh pr merge with the --admin flag which
requires admin privileges not granted to the default GITHUB_TOKEN; remove the
--admin flag from the gh pr merge invocation (the command that uses
steps.cpr.outputs.pull-request-number) so the merge runs with the existing
token, or replace the GITHUB_TOKEN env used by that run with a Personal Access
Token or GitHub App token that has admin/branch-protection bypass rights if
bypass is actually required.
In @.github/workflows/deploy.yml:
- Around line 3-6: The push trigger in the GitHub Actions workflow is restricted
to branches: ["patch-1"], so deployments won't run when this PR merges to main;
update the deploy workflow's push branch filter (the on: push: branches: setting
in .github/workflows/deploy.yml) to include "main" (or remove the branches
filter to trigger on all pushes) so pushes to main will run the Pages
deployment; ensure the change updates the branches array used by the workflow's
push trigger.
In @.github/workflows/sync-docs.yml:
- Around line 67-71: The workflow step that runs the command `gh pr merge "${{
steps.cpr.outputs.pull-request-number }}" --squash --admin` is authenticating
`gh` with `GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}` which lacks admin/bypass
permissions; either remove the `--admin` flag from the `gh pr merge` invocation
or replace the `GH_TOKEN` env to use an admin-capable token (e.g., a
repository-level PAT or GitHub App token) so the `--admin` option will succeed;
update the `Auto-merge PR` step to use the chosen approach and ensure the
`GH_TOKEN` environment variable reference matches the new secret name if you
switch to a PAT/GitHub App token.
---
Nitpick comments:
In `@_includes/header.html`:
- Line 8: Remove the commented-out Home menu item in _includes/header.html by
deleting the entire commented line that contains the Liquid snippet "<li{% if
page.url == "/" %} class="active"{% endif %}><a href="{{ "/" | relative_url
}}">Home</a></li>" so the template no longer emits or stores that obsolete HTML
comment; if the Home link must be restored later, keep the code in version
control history instead of an inline comment.
In `@_layouts/default.html`:
- Around line 25-34: The layout currently unconditionally emits all eight
scripts (entity-modal.js, overflow-*.js, toc-*.js), causing unnecessary
requests; change _layouts/default.html to conditionally include these assets by
checking page metadata or URL — e.g., only emit entity-modal.js when page.url
contains '/members/' or '/partners/' (or when a page.scripts front-matter list
includes "entity-modal"), only emit toc-wrapper.js/toc-sticky.js/toc-init.js
when the page has a TOC flag (e.g., page.toc_enabled or page.scripts contains
"toc"), and only emit overflow-*.js when the page requires the table overflow
feature; keep defer and relative_url logic the same so load order is preserved
within each conditional block.
In @.github/workflows/compile-less.yml:
- Around line 42-54: The "Create Pull Request" step (id: cpr, uses:
peter-evans/create-pull-request@v6) runs even when the compiled CSS hasn't
changed; add a guard to skip PR creation when there are no CSS diffs by first
running a short check (e.g., a preceding step that runs git diff --quiet
<target-files> or compares the compiled CSS output and sets an output like
changed=true/false) and then add an if condition on the cpr step (if:
steps.<check-step>.outputs.changed == 'true' or similar) so the PR step is
skipped when there are no changes to commit.
In @.github/workflows/js-minify.yml:
- Around line 2-10: The workflow can self-retrigger when the action's bot merges
changes; to prevent loops, add a job-level guard such as if: github.actor !=
'github-actions[bot]' to the job(s) that create the PR / auto-merge (the job
that uses GITHUB_TOKEN to open/merge the PR and/or any jobs that push commits),
placing the if condition at the top of the job definition so the job is skipped
when the actor is the GitHub Actions bot.
In `@assets/css/_mixins.less`:
- Line 26: The line inside the .button-mixin uses a tab for indentation while
the rest uses spaces; replace the tab before "font: normal 600 0.8888888889rem
var(--font-body);" with the project's standard spaces so the .button-mixin
indentation is consistent with surrounding lines and satisfies
Stylelint/formatter rules.
- Around line 11-13: The `@starting-style` rule currently sets backdrop-filter:
blur(0px) which won't apply on older browsers; update the CSS so the
`@starting-style` block is wrapped in a feature-detection fallback using `@supports`
(selector(::view-transition-old(root))) or a runtime feature check — i.e., keep
the existing `@starting-style` { backdrop-filter: blur(0px); } but add a fallback
branch that only applies when the view-transition/start styles are supported
(using `@supports`(...) or equivalent runtime check) so older clients gracefully
skip the blur-in transition while modern browsers retain it.
In `@assets/js/entity-modal.js`:
- Around line 38-50: window.getCurrentLogo(element) is called twice and its
undefined result is assigned to logo.src causing a request for "undefined";
first capture the result once (e.g., const logoUrl =
window.getCurrentLogo(element)) and use that for both setting logo.src and the
CSS --logo-url; before assigning to logo.src only set it when logoUrl is truthy
(guarding logo.src against undefined) and keep the existing logo.hidden /
logo.onload logic, and continue to sanitize logoUrl when applying
modalLeft.style.setProperty('--logo-url', ...) to avoid injection.
In `@assets/js/toc-sticky.js`:
- Around line 53-55: The resize handler handleResize currently calls
setInitialState on every resize event; wrap or guard it to avoid frequent calls
during continuous resizes by adding a requestAnimationFrame or debounce/throttle
so setInitialState only runs once per animation frame or after a short delay.
Locate the handleResize method and add a RAF guard (e.g., track a pending
animation frame id and only call setInitialState when none pending) or a short
debounce around setInitialState to coalesce rapid events.
🪄 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: d36ca821-5fe5-418c-972f-cb1e131e4d0a
⛔ Files ignored due to path filters (91)
Gemfile.lockis excluded by!**/*.lockassets/backgrounds/3PS_Dirt_Thing.pngis excluded by!**/*.pngassets/backgrounds/3PS_Nature.pngis excluded by!**/*.pngassets/backgrounds/3PS_Sun.pngis excluded by!**/*.pngassets/backgrounds/Anime_Vanguards_BG.pngis excluded by!**/*.pngassets/backgrounds/D-DAY_Omaha_Beach.pngis excluded by!**/*.pngassets/backgrounds/Dovedale_Central.pngis excluded by!**/*.pngassets/backgrounds/Dovedale_Sunset.pngis excluded by!**/*.pngassets/backgrounds/Dovedale_Tunnel.pngis excluded by!**/*.pngassets/backgrounds/Fisch_Ancient_Isle.pngis excluded by!**/*.pngassets/backgrounds/Fisch_Toxic_Grove.pngis excluded by!**/*.pngassets/backgrounds/Fisch_Trade_Plaza.pngis excluded by!**/*.pngassets/backgrounds/GBP_London.pngis excluded by!**/*.pngassets/backgrounds/GBP_San_Sebastian.pngis excluded by!**/*.pngassets/backgrounds/PHIGHTING_Crossroads_v2.pngis excluded by!**/*.pngassets/backgrounds/PHIGHTING_Crossroads_v2_2.pngis excluded by!**/*.pngassets/backgrounds/PHIGHTING_Crossroads_v2_3.pngis excluded by!**/*.pngassets/backgrounds/Parkour_Reborn_Fragment.pngis excluded by!**/*.pngassets/backgrounds/Parkour_Reborn_Stack.pngis excluded by!**/*.pngassets/backgrounds/Restaurant_Tycoon_3_Farm.pngis excluded by!**/*.pngassets/backgrounds/Restaurant_Tycoon_3_Restaurant.pngis excluded by!**/*.pngassets/backgrounds/SEWH_Mountain_Lodge.pngis excluded by!**/*.pngassets/backgrounds/SEWH_Ravenrock_Island.pngis excluded by!**/*.pngassets/backgrounds/SEWH_Town.pngis excluded by!**/*.pngassets/backgrounds/UTG_Raven_Ranch.pngis excluded by!**/*.pngassets/backgrounds/UTG_Skylands.pngis excluded by!**/*.pngassets/backgrounds/UTG_Tokyo_Town.pngis excluded by!**/*.pngassets/backgrounds/day-sky.pngis excluded by!**/*.pngassets/backgrounds/frosted-texture.pngis excluded by!**/*.pngassets/backgrounds/futuristic-city.pngis excluded by!**/*.pngassets/dynamic/fonts/lora/lora-italic.woff2is excluded by!**/*.woff2assets/dynamic/fonts/lora/lora.woff2is excluded by!**/*.woff2assets/fonts/Bricolage_Grotesque/BricolageGrotesque-VariableFont_opsz,wdth,wght.ttfis excluded by!**/*.ttfassets/fonts/Cascadia_Code/CascadiaCode-Italic-VariableFont_wght.ttfis excluded by!**/*.ttfassets/fonts/Cascadia_Code/CascadiaCode-VariableFont_wght.ttfis excluded by!**/*.ttfassets/fonts/Instrument_Sans/InstrumentSans-Italic-VariableFont_wdth,wght.ttfis excluded by!**/*.ttfassets/fonts/Instrument_Sans/InstrumentSans-VariableFont_wdth,wght.ttfis excluded by!**/*.ttfassets/icons/arrow_forward.svgis excluded by!**/*.svgassets/icons/dark_mode.svgis excluded by!**/*.svgassets/icons/developer_guide.svgis excluded by!**/*.svgassets/icons/light_mode.svgis excluded by!**/*.svgassets/icons/mail.svgis excluded by!**/*.svgassets/icons/scroll_chevron.svgis excluded by!**/*.svgassets/js/scripts.min.jsis excluded by!**/*.min.jsassets/plugins/pagePrefetching/quicklink.umd.min.jsis excluded by!**/*.min.jsassets/promofiles/Different Wikis Illust.pngis excluded by!**/*.pngassets/promofiles/ExampleImgDDInUse.pngis excluded by!**/*.pngassets/promofiles/OnboardingMainThumbnail.pngis excluded by!**/*.pngassets/promofiles/Pressure_and_GBP_on_ipad.pngis excluded by!**/*.pngassets/promofiles/SEWH_on_macbook.pngis excluded by!**/*.pngassets/promofiles/irwa-messages.pngis excluded by!**/*.pngassets/promofiles/sewh-robloxapi.pngis excluded by!**/*.pngassets/promofiles/utg-robloxapi.pngis excluded by!**/*.pngassets/svg/discord.svgis excluded by!**/*.svgassets/svg/kofi.svgis excluded by!**/*.svgassets/svg/roblox.svgis excluded by!**/*.svgassets/svg/twitter.svgis excluded by!**/*.svgassets/svg/website.svgis excluded by!**/*.svgassets/website/IRWA-Logo1-dynamic.svgis excluded by!**/*.svgassets/website/IRWA-Logo1-white.svgis excluded by!**/*.svgassets/website/IRWA-Logo1.svgis excluded by!**/*.svgassets/wiki-logos/3DPS.svgis excluded by!**/*.svgassets/wiki-logos/AnimeVanguards_White.svgis excluded by!**/*.svgassets/wiki-logos/D-DAY.pngis excluded by!**/*.pngassets/wiki-logos/Dovedale_White.svgis excluded by!**/*.svgassets/wiki-logos/Fisch.pngis excluded by!**/*.pngassets/wiki-logos/HybridCafe_White.svgis excluded by!**/*.svgassets/wiki-logos/IWF Logo.pngis excluded by!**/*.pngassets/wiki-logos/PHIGHTING.pngis excluded by!**/*.pngassets/wiki-logos/ParkourReborn.pngis excluded by!**/*.pngassets/wiki-logos/RT3.pngis excluded by!**/*.pngassets/wiki-logos/SEWH.pngis excluded by!**/*.pngassets/wiki-logos/UTG.pngis excluded by!**/*.pngmedia/files/3DPS.pngis excluded by!**/*.pngmedia/files/CombatInitiation.pngis excluded by!**/*.pngmedia/files/Dovedale.pngis excluded by!**/*.pngmedia/files/JBCStudios.pngis excluded by!**/*.pngmedia/files/Pressure.pngis excluded by!**/*.pngmedia/plugins/lucideIcons/lucide-sprite.svgis excluded by!**/*.svgmedia/plugins/simpleLightboxGallery/venobox.min.jsis excluded by!**/*.min.jsmedia/plugins/syntaxHighlighter/clipboard.min.jsis excluded by!**/*.min.jsmedia/plugins/syntaxHighlighter/prism-autolinker.min.jsis excluded by!**/*.min.jsmedia/plugins/syntaxHighlighter/prism-copy-to-clipboard.min.jsis excluded by!**/*.min.jsmedia/plugins/syntaxHighlighter/prism-inline-color.min.jsis excluded by!**/*.min.jsmedia/plugins/syntaxHighlighter/prism-line-numbers.min.jsis excluded by!**/*.min.jsmedia/plugins/syntaxHighlighter/prism-show-invisibles.min.jsis excluded by!**/*.min.jsmedia/posts/3/1737445656507-hyper-nize-2.pngis excluded by!**/*.pngmedia/posts/7/1737385567463-nizenberg.pngis excluded by!**/*.pngmedia/posts/7/1737385719733-mega-nize.pngis excluded by!**/*.pngmedia/posts/7/1737386088521-ultra-nize.pngis excluded by!**/*.pngmedia/website/IRWA-Logo1.icois excluded by!**/*.ico
📒 Files selected for processing (94)
.github/ISSUE_TEMPLATE/request-wiki-addition.yml.github/workflows/compile-less.yml.github/workflows/deploy.yml.github/workflows/js-minify.yml.github/workflows/sync-docs.yml.vscode/settings.json.well-known/security.txt404.htmlGemfileLICENSELink Select.curNormal Select.curREADME.md_config.yml_data/members.yml_data/partners.yml_includes/entity-modal.html_includes/footer.html_includes/head.html_includes/header.html_layouts/default.html_layouts/page.htmlabout/index.htmlalliance-partners/index.htmlassets/css/_mixins.lessassets/css/members.cssassets/css/members.lessassets/css/overflow.cssassets/css/overflow.lessassets/css/style.cssassets/css/style.lessassets/css/syntax-highlighting.cssassets/css/syntax-highlighting.lessassets/css/toc.cssassets/css/toc.lessassets/js/entity-modal.jsassets/js/extensionstats.jsassets/js/overflow-element.jsassets/js/overflow-init.jsassets/js/overflow-state.jsassets/js/overflow-wrapper.jsassets/js/scripts.jsassets/js/toc-init.jsassets/js/toc-sticky.jsassets/js/toc-wrapper.jsassets/js/wiki-name-tooltip.jsassets/plugins/pagePrefetching/quicklink.umd.jsassets/wiki-logos/GBP.webpassets/wiki-logos/RobloxFandomInterwiki.webpextensionstats.jsindex.htmljoining/index.htmllegal/index.htmlmedia/plugins/simpleLightboxGallery/venobox.min.cssmedia/plugins/syntaxHighlighter/prism-beige.cssmedia/plugins/syntaxHighlighter/prism-black.cssmedia/plugins/syntaxHighlighter/prism-brown.cssmedia/plugins/syntaxHighlighter/prism-gray.cssmedia/plugins/syntaxHighlighter/prism-inline-color.cssmedia/plugins/syntaxHighlighter/prism-violet.cssmedia/plugins/syntaxHighlighter/prism-white.cssmedia/plugins/syntaxHighlighter/prism.jsmedia/posts/3/responsive/1737445656507-hyper-nize-2-lg.webpmedia/posts/3/responsive/1737445656507-hyper-nize-2-md.webpmedia/posts/3/responsive/1737445656507-hyper-nize-2-sm.webpmedia/posts/3/responsive/1737445656507-hyper-nize-2-xl.webpmedia/posts/3/responsive/1737445656507-hyper-nize-2-xs.webpmedia/posts/7/responsive/1737385567463-nizenberg-lg.webpmedia/posts/7/responsive/1737385567463-nizenberg-md.webpmedia/posts/7/responsive/1737385567463-nizenberg-sm.webpmedia/posts/7/responsive/1737385567463-nizenberg-xl.webpmedia/posts/7/responsive/1737385567463-nizenberg-xs.webpmedia/posts/7/responsive/1737385719733-mega-nize-lg.webpmedia/posts/7/responsive/1737385719733-mega-nize-md.webpmedia/posts/7/responsive/1737385719733-mega-nize-sm.webpmedia/posts/7/responsive/1737385719733-mega-nize-xl.webpmedia/posts/7/responsive/1737385719733-mega-nize-xs.webpmedia/posts/7/responsive/1737386088521-ultra-nize-lg.webpmedia/posts/7/responsive/1737386088521-ultra-nize-md.webpmedia/posts/7/responsive/1737386088521-ultra-nize-sm.webpmedia/posts/7/responsive/1737386088521-ultra-nize-xl.webpmedia/posts/7/responsive/1737386088521-ultra-nize-xs.webpmembers/index.htmlpages/about.htmlpages/joining.htmlpages/legal.htmlpages/members.htmlpages/onboarding.htmlpages/partners.htmlpages/privacy.htmlpages/projects.htmlpages/robloxapi.mdprivacy/index.htmlprojects/index.html
💤 Files with no reviewable changes (17)
- privacy/index.html
- media/plugins/syntaxHighlighter/prism-violet.css
- _layouts/page.html
- media/plugins/syntaxHighlighter/prism-inline-color.css
- extensionstats.js
- joining/index.html
- media/plugins/syntaxHighlighter/prism-beige.css
- legal/index.html
- media/plugins/simpleLightboxGallery/venobox.min.css
- media/plugins/syntaxHighlighter/prism-brown.css
- media/plugins/syntaxHighlighter/prism-white.css
- media/plugins/syntaxHighlighter/prism-black.css
- media/plugins/syntaxHighlighter/prism-gray.css
- alliance-partners/index.html
- about/index.html
- members/index.html
- projects/index.html
✅ Files skipped from review due to trivial changes (10)
- .vscode/settings.json
- .well-known/security.txt
- pages/robloxapi.md
- LICENSE
- .github/ISSUE_TEMPLATE/request-wiki-addition.yml
- 404.html
- assets/css/syntax-highlighting.css
- assets/css/toc.less
- README.md
- _data/partners.yml
| # Change to indierobloxwikis.org if the thing goes through | ||
| url: "https://whostacking.github.io" | ||
| # baseurl: "" | ||
| # Set baseurl to the subpath of the GitHub Pages URL if hosting on a subpath. | ||
| # Currently set to "/irwa-website" for testing at https://whostacking.github.io/irwa-website/ | ||
| baseurl: "/irwa-website" |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify deploy-target metadata used by Jekyll SEO output.
set -euo pipefail
sed -n '1,12p' _config.yml
printf '\nCNAME files, if any:\n'
fd -a '^CNAME$' . -x sh -c 'echo "--- $1"; cat "$1"' sh {}Repository: whostacking/irwa-website
Length of output: 656
Update url and baseurl to match the production domain.
The CNAME file exists pointing to indierobloxwikis.org, but _config.yml still references the GitHub Pages staging domain. This causes jekyll-seo-tag to generate canonical URLs and social metadata pointing to https://whostacking.github.io/irwa-website instead of the production site.
Required fix
-url: "https://whostacking.github.io"
+url: "https://indierobloxwikis.org"
-baseurl: "/irwa-website"
+baseurl: ""📝 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.
| # Change to indierobloxwikis.org if the thing goes through | |
| url: "https://whostacking.github.io" | |
| # baseurl: "" | |
| # Set baseurl to the subpath of the GitHub Pages URL if hosting on a subpath. | |
| # Currently set to "/irwa-website" for testing at https://whostacking.github.io/irwa-website/ | |
| baseurl: "/irwa-website" | |
| # Change to indierobloxwikis.org if the thing goes through | |
| url: "https://indierobloxwikis.org" | |
| # baseurl: "" | |
| # Set baseurl to the subpath of the GitHub Pages URL if hosting on a subpath. | |
| # Currently set to "/irwa-website" for testing at https://whostacking.github.io/irwa-website/ | |
| baseurl: "" |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@_config.yml` around lines 4 - 9, Update the site URL and base path in
_config.yml so generated canonical URLs use the production domain: change the
url key from "https://whostacking.github.io" to "https://indierobloxwikis.org"
and set baseurl to an empty string (baseurl: "") instead of "/irwa-website";
verify the url and baseurl entries are the only ones referencing the staging
domain so jekyll-seo-tag and social metadata will point at the production site.
| table { | ||
| border: 1px solid var(--neutral-2); | ||
| border-left: none; | ||
| border-collapse: collapse; | ||
| border-spacing: 0; | ||
| vertical-align: top; | ||
| text-align: left; | ||
| width: 100%; | ||
| overflow-wrap: normal; | ||
|
|
||
| & th { | ||
| font-variation-settings: "wght" var(--font-weight-bold); | ||
| padding: calc(var(--baseline) * 2.5) calc(var(--baseline) * 4) | ||
| } | ||
|
|
||
| & td { | ||
| border-top: 1px solid var(--black); | ||
| border-left: 1px solid var(--black); | ||
| padding: calc(var(--baseline) * 2.5) calc(var(--baseline) * 4) | ||
| } | ||
| } |
There was a problem hiding this comment.
Low-contrast table cell borders.
var(--black) is #000000 and the page sits on --neutral-base (#1C1C1A), so td borders are nearly invisible in dark mode. Consider var(--neutral-2) (matching the outer table border on Line 444) for a readable separator.
🎨 Proposed fix
& td {
- border-top: 1px solid var(--black);
- border-left: 1px solid var(--black);
+ border-top: 1px solid var(--neutral-2);
+ border-left: 1px solid var(--neutral-2);
padding: calc(var(--baseline) * 2.5) calc(var(--baseline) * 4)
}📝 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.
| table { | |
| border: 1px solid var(--neutral-2); | |
| border-left: none; | |
| border-collapse: collapse; | |
| border-spacing: 0; | |
| vertical-align: top; | |
| text-align: left; | |
| width: 100%; | |
| overflow-wrap: normal; | |
| & th { | |
| font-variation-settings: "wght" var(--font-weight-bold); | |
| padding: calc(var(--baseline) * 2.5) calc(var(--baseline) * 4) | |
| } | |
| & td { | |
| border-top: 1px solid var(--black); | |
| border-left: 1px solid var(--black); | |
| padding: calc(var(--baseline) * 2.5) calc(var(--baseline) * 4) | |
| } | |
| } | |
| table { | |
| border: 1px solid var(--neutral-2); | |
| border-left: none; | |
| border-collapse: collapse; | |
| border-spacing: 0; | |
| vertical-align: top; | |
| text-align: left; | |
| width: 100%; | |
| overflow-wrap: normal; | |
| & th { | |
| font-variation-settings: "wght" var(--font-weight-bold); | |
| padding: calc(var(--baseline) * 2.5) calc(var(--baseline) * 4) | |
| } | |
| & td { | |
| border-top: 1px solid var(--neutral-2); | |
| border-left: 1px solid var(--neutral-2); | |
| padding: calc(var(--baseline) * 2.5) calc(var(--baseline) * 4) | |
| } | |
| } |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@assets/css/style.less` around lines 443 - 463, The td border colors are using
var(--black) which is low-contrast on the dark background; update the table cell
borders in the table selector (the nested & td rules) to use var(--neutral-2)
(same as the outer table border) for border-top and border-left so cell
separators remain readable in dark mode, keeping the existing padding and other
properties unchanged; verify the & th rule remains as-is.
| .highlight { | ||
| background: var(--neutral-1); | ||
| border-radius: var(--border-radius); | ||
| padding: calc(var(--baseline) * 6); | ||
|
|
||
| & pre { | ||
| background: transparent; | ||
| padding: 0; | ||
| margin: 0; | ||
| border-radius: 0; | ||
| font-size: 1rem; | ||
| line-height: 1.4; | ||
| } |
There was a problem hiding this comment.
Prevent long code lines from breaking the page width.
.highlight needs horizontal overflow handling; otherwise long Rouge-highlighted lines can force layout overflow on smaller screens.
CSS fix
.highlight {
background: var(--neutral-1);
border-radius: var(--border-radius);
padding: calc(var(--baseline) * 6);
+ overflow-x: auto;
& pre {📝 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.
| .highlight { | |
| background: var(--neutral-1); | |
| border-radius: var(--border-radius); | |
| padding: calc(var(--baseline) * 6); | |
| & pre { | |
| background: transparent; | |
| padding: 0; | |
| margin: 0; | |
| border-radius: 0; | |
| font-size: 1rem; | |
| line-height: 1.4; | |
| } | |
| .highlight { | |
| background: var(--neutral-1); | |
| border-radius: var(--border-radius); | |
| padding: calc(var(--baseline) * 6); | |
| overflow-x: auto; | |
| & pre { | |
| background: transparent; | |
| padding: 0; | |
| margin: 0; | |
| border-radius: 0; | |
| font-size: 1rem; | |
| line-height: 1.4; | |
| } |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@assets/css/syntax-highlighting.less` around lines 2 - 14, The .highlight
block lacks horizontal overflow handling causing long code lines to break
layout; update the .highlight and its nested pre rules (refer to the .highlight
selector and its nested & pre block) to enable horizontal scrolling by adding
overflow-x: auto (or overflow: auto) on the .highlight container and ensure the
pre keeps code spacing (set white-space to a non-wrapping value like pre) so
long lines scroll instead of overflowing the page.
| localStorage.setItem('persona-theme-selected-layout', 'grid'); | ||
| resetIsotopeLayout(); | ||
| } | ||
|
|
||
| function setRowsLayout() { | ||
| gridBtn.classList.remove('is-active'); | ||
| rowsBtn.classList.add('is-active'); | ||
| contentWrapper.classList.add('l-grid--1'); | ||
| articles = contentWrapper.querySelectorAll('.c-card'); | ||
|
|
||
| for (let i = 0; i < articles.length; i++) { | ||
| articles[i].classList.add('c-card--rows'); | ||
| } | ||
|
|
||
| localStorage.setItem('persona-theme-selected-layout', 'rows'); |
There was a problem hiding this comment.
Guard layout preference storage access too.
localStorage can throw when storage is disabled. Here that can skip resetIsotopeLayout() after changing the layout, leaving the grid stale.
Proposed fix
+ function getSavedLayout() {
+ try {
+ return localStorage.getItem('persona-theme-selected-layout');
+ } catch (e) {
+ return null;
+ }
+ }
+
+ function saveLayout(layout) {
+ try {
+ localStorage.setItem('persona-theme-selected-layout', layout);
+ } catch (e) {
+ // Persistence unavailable; keep layout switching functional.
+ }
+ }
+
function setGridLayout() {
gridBtn.classList.add('is-active');
rowsBtn.classList.remove('is-active');
contentWrapper.classList.remove('l-grid--1');
articles = contentWrapper.querySelectorAll('.c-card');
for (let i = 0; i < articles.length; i++) {
articles[i].classList.remove('c-card--rows');
}
- localStorage.setItem('persona-theme-selected-layout', 'grid');
+ saveLayout('grid');
resetIsotopeLayout();
}
function setRowsLayout() {
gridBtn.classList.remove('is-active');
rowsBtn.classList.add('is-active');
contentWrapper.classList.add('l-grid--1');
articles = contentWrapper.querySelectorAll('.c-card');
for (let i = 0; i < articles.length; i++) {
articles[i].classList.add('c-card--rows');
}
- localStorage.setItem('persona-theme-selected-layout', 'rows');
+ saveLayout('rows');
resetIsotopeLayout();
}
@@
window.addEventListener("DOMContentLoaded", function () {
setTimeout(() => {
- if (localStorage.getItem('persona-theme-selected-layout')) {
- let savedLayout = localStorage.getItem('persona-theme-selected-layout');
+ let savedLayout = getSavedLayout();
+ if (savedLayout) {
if (savedLayout === 'grid') {
setGridLayout();
}Also applies to: 729-742
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@assets/js/scripts.js` around lines 699 - 713, The code calls
localStorage.setItem inside setRowsLayout (and similarly in the grid layout
handler) which can throw and prevent resetIsotopeLayout() from running; move or
duplicate the call to resetIsotopeLayout() so it always executes, and wrap
localStorage.setItem('persona-theme-selected-layout', ...) in a try/catch that
swallows/storage-unavailable errors. Concretely, in setRowsLayout (and the
corresponding setGridLayout/setColumnsLayout function referenced around lines
729-742), after mutating DOM/classes and before/after calling
resetIsotopeLayout(), surround the localStorage.setItem call with try { ... }
catch (e) { /* ignore or optional debug log */ } so the layout reset
(resetIsotopeLayout) is not skipped when storage is unavailable.
|
|
||
| <h1>IRWA Onboarding Guide</h1> | ||
|
|
||
| <figure class="post__image align-center"><img loading="lazy" src="{{ "/assets/promofiles/OnboardingMainThumbnail.png" | relative_url }}" alt="" aria-hidden="true" width="800" class="img-rounded aspect-ratio-169 size-cover"></figure> |
There was a problem hiding this comment.
Empty alt on the page hero thumbnail.
This is the onboarding page's main illustrative image (also used as the Open Graph image). Treating it as purely decorative with alt="" + aria-hidden="true" hides meaningful context from screen reader users. Provide a short descriptive alt (and drop aria-hidden) unless the figure is genuinely decorative.
🧰 Tools
🪛 HTMLHint (1.9.2)
[error] 14-14: Special characters must be escaped : [ < ].
(spec-char-escape)
[error] 14-14: Special characters must be escaped : [ > ].
(spec-char-escape)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@pages/onboarding.html` at line 14, The hero image currently uses an empty alt
and aria-hidden which hides meaningful content from assistive tech; update the
<figure class="post__image align-center"> <img> tag (the one with src
"/assets/promofiles/OnboardingMainThumbnail.png") to remove the aria-hidden
attribute and supply a concise descriptive alt (e.g., "Onboarding illustration
showing app onboarding flow and features") that accurately describes the image
purpose for screen readers and Open Graph consumers.
| <h2>Joining Wiki Procedures</h2> | ||
| <p>You are required to complete a few forms and send us a few details upon being accepted into the alliance.</p> | ||
|
|
||
| <img src="https://assets.st-note.com/img/1776491660-spIXlTNAV6EYcBb7takmOKLh.png" alt="Joining procedures" class="img-rounded"> |
There was a problem hiding this comment.
Hotlinked images from assets.st-note.com create reliability and privacy risks.
The inline images on these lines are loaded directly from assets.st-note.com, a third-party CDN outside this site's control.
- Reliability: if note.com reorganizes or removes the asset, onboarding content silently breaks.
- Privacy: every visitor's IP / User-Agent is sent to note.com on page load, which conflicts with the self-hosting privacy posture discussed in prior reviews of
_includes/head.html(Google Fonts). - Performance: you can't control caching, dimensions, or lazy-loading hints on a remote host.
Recommend downloading these assets into /assets/promofiles/ (or similar) and referencing them via relative_url like the rest of the page.
Also applies to: 116-118, 226-226
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@pages/onboarding.html` at line 109, The image tag loading from
assets.st-note.com should be replaced with a locally hosted asset to avoid
privacy/reliability issues: download the referenced image(s) into your static
assets folder (e.g. /assets/promofiles/), update the <img> src attributes in
pages/onboarding.html (the existing <img src="https://assets.st-note.com/...">
occurrences) to use the local relative URL (use the site's relative_url helper
pattern used elsewhere), keep the alt and class values, and optionally add
loading="lazy" and explicit width/height attributes; apply the same replacement
for the other hotlinked images noted (lines 116-118 and 226).
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Summary by CodeRabbit
New Features
Documentation
Style
Chores