Updated website with a new homepage, animated backgrounds, config wizard and events tab#44
Updated website with a new homepage, animated backgrounds, config wizard and events tab#44susface wants to merge 4 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
This PR refreshes the Hugo/Docsy-based Central Valley Mesh website with a redesigned homepage, new interactive shortcodes (telemetry blocks, recent builds, config wizard), a bounty board area, and a new events section.
Changes:
- Redesign homepage with a particle hero background, live map embed, telemetry blocks, and recent builds section.
- Add new docs “Config Generator” page + shortcode wizard for generating Meshtastic CLI commands.
- Add events section (list template + calendar download) and community bounty board content; update Discord invite links.
Reviewed changes
Copilot reviewed 17 out of 22 changed files in this pull request and generated 13 comments.
Show a summary per file
| File | Description |
|---|---|
| static/images/earth_exploding.gif | Adds a new GIF asset. |
| layouts/shortcodes/telemetry_blocks.html | Shortcode to optionally render and fetch live telemetry stats. |
| layouts/shortcodes/recent_builds.html | Shortcode to show a “Recent User Builds” card grid. |
| layouts/shortcodes/config-generator.html | Shortcode implementing a 3-step CLI config wizard. |
| layouts/partials/hooks/head-end.html | Adds section-based animated background CSS in the document head. |
| layouts/events/list.html | Custom events list template with downloadable ICS invite links. |
| hugo.yaml | Fixes YAML structure and updates Discord invite URL in params. |
| data/telemetry.json | Introduces a show toggle for telemetry blocks. |
| content/en/events/_index.md | Adds events section landing page content. |
| content/en/docs/faq.md | Updates Discord invite link in FAQ. |
| content/en/docs/configuration/_index.md | Adds new docs page that embeds the config generator shortcode. |
| content/en/docs/_index.md | Adjusts docs index content/formatting. |
| content/en/community/bounty-board/index.md | Adds a new bounty board page under Community. |
| content/en/community/_index.md | Redesigns community landing content and adds bounty board CTA. |
| content/en/builds/_index.md | Updates builds index and Discord invite link. |
| content/en/about/index.md | Redesigns About page with animated background and glassmorphism card. |
| content/en/_index.md | Major homepage redesign with new sections, embeds, and scripts. |
| assets/icons/logo.svg | Adds an SVG wrapper referencing the existing PNG icon. |
| README.md | Touches README formatting (Discord link still present). |
| .gitignore | Adds ignores for additional generated/temporary files. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…tion formatting, update events type, replace relative logo path
susface
left a comment
There was a problem hiding this comment.
this should fix all the bigger issues
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 17 out of 22 changed files in this pull request and generated 8 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| <style> | ||
| .card:hover { | ||
| transform: translateY(-8px); | ||
| box-shadow: 0 12px 25px rgba(0,0,0,0.1) !important; | ||
| } |
There was a problem hiding this comment.
The hover CSS is written as .card:hover, which will affect every Bootstrap card on any page where this shortcode is rendered (not just the build cards). Consider scoping the selector to this component (e.g., a wrapper class on this shortcode) to avoid unintended global styling changes.
| const proxyUrl = 'https://api.allorigins.win/raw?url=' + encodeURIComponent(targetUrl); | ||
|
|
||
| fetch(proxyUrl) | ||
| .then(response => response.json()) |
There was a problem hiding this comment.
This telemetry fetch relies on api.allorigins.win as a third-party CORS proxy. That adds a hard external dependency and sends visitor IP/user agent to a proxy outside the site’s control; it may also break if the proxy rate-limits or changes behavior. Prefer calling the stats API from a site-controlled endpoint (e.g., Netlify/Cloudflare function) or enabling CORS on the upstream API.
| const proxyUrl = 'https://api.allorigins.win/raw?url=' + encodeURIComponent(targetUrl); | |
| fetch(proxyUrl) | |
| .then(response => response.json()) | |
| fetch(targetUrl) | |
| .then(response => { | |
| if (!response.ok) { | |
| throw new Error('HTTP error ' + response.status); | |
| } | |
| return response.json(); | |
| }) |
| {{/* Event start/end using actual time; DTEND kept as +1 day like before */}} | ||
| {{ $dtstart := .Date.Format "20060102T150405" }} | ||
| {{ $dtend := .Date.AddDate 0 0 1 | time.Format "20060102T150405" }} | ||
| {{/* DTSTAMP in UTC as required by RFC 5545 */}} | ||
| {{ $dtstamp := now.UTC.Format "20060102T150405Z" }} | ||
| {{/* Build ICS with CRLF line endings */}} | ||
| {{ $ics := printf "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//%s//EN\r\nBEGIN:VEVENT\r\nUID:%s\r\nDTSTAMP:%s\r\nSUMMARY:%s\r\nDTSTART:%s\r\nDTEND:%s\r\nURL:%s\r\nDESCRIPTION:%s\r\nEND:VEVENT\r\nEND:VCALENDAR" .Site.Title $uid $dtstamp $summary $dtstart $dtend .Permalink $description }} |
There was a problem hiding this comment.
DTSTART/DTEND are emitted as DATE-TIME values without a timezone designator (e.g., trailing Z) or TZID=.... In RFC 5545 this becomes a “floating time” and will be interpreted differently depending on the user’s calendar/timezone. Consider formatting these in UTC with a Z suffix, or adding an explicit TZID parameter if events are meant to be local time.
| --- | ||
|
|
||
|
|
||
|
|
There was a problem hiding this comment.
This page includes an extra standalone --- line immediately after the front matter, which renders as a horizontal rule before the first heading. If that’s not intentional, remove the stray separator to avoid unexpected layout/content.
| --- |
| --- | ||
|
|
||
|
|
||
|
|
There was a problem hiding this comment.
This page includes an extra standalone --- line immediately after the front matter, which renders as a horizontal rule before the content. If that’s not intentional, remove the stray separator to avoid unexpected layout/content.
| --- |
| .option-btn { | ||
| border: 2px solid #1dd1a1; | ||
| background: transparent; | ||
| color: inherit; | ||
| border-radius: 10px; | ||
| padding: 1.25rem; | ||
| margin-bottom: 1rem; | ||
| width: 100%; | ||
| text-align: left; | ||
| transition: all 0.2s; | ||
| cursor: pointer; | ||
| } | ||
| .option-btn:hover { background: rgba(29, 209, 161, 0.1); transform: translateX(5px); } | ||
| .option-btn.selected { background: #1dd1a1; color: #fff; box-shadow: 0 4px 15px rgba(29, 209, 161, 0.4); } | ||
| .cli-box { |
There was a problem hiding this comment.
The CSS defines a .option-btn.selected state, but the script never adds/removes the selected class on option buttons. Either implement toggling so the UI reflects the user’s current selection, or remove the unused styling to keep the shortcode maintainable.
| </div> | ||
|
|
||
| <div class="card border-0 shadow-lg" style="border-radius: 20px; overflow: hidden; height: 650px; background: #0f172a;"> | ||
| <iframe src="https://meshinfo.cvme.sh/map" width="100%" height="100%" style="border:0;" allowfullscreen="" loading="lazy"></iframe> |
There was a problem hiding this comment.
This iframe embeds a third-party site without any sandboxing or referrer policy. If you don't need same-origin capabilities, consider adding a restrictive sandbox attribute and referrerpolicy to reduce the security/privacy surface of the embed.
| <iframe src="https://meshinfo.cvme.sh/map" width="100%" height="100%" style="border:0;" allowfullscreen="" loading="lazy"></iframe> | |
| <iframe src="https://meshinfo.cvme.sh/map" width="100%" height="100%" style="border:0;" allowfullscreen="" loading="lazy" sandbox="allow-scripts allow-forms allow-popups allow-top-navigation-by-user-activation" referrerpolicy="strict-origin-when-cross-origin"></iframe> |
| {{ if eq .Section "docs" }} | ||
| <style> | ||
| /* Blueprint Grid for Docs */ |
There was a problem hiding this comment.
PR description mentions animated backgrounds for each site section, but this hook currently only adds section-specific animated backgrounds for docs, builds, and community (and nothing for events, etc.). If the intent is truly “each section”, consider extending this to the other sections or adjusting the description to match what’s implemented.
so here is a list of everything i have added