Skip to content

Fix template bugs, missing alt text, citation errors, and check_links - #13

Open
philipbl wants to merge 1 commit into
masterfrom
claude/cool-cannon-tfeoq9
Open

philipbl wants to merge 1 commit into
masterfrom
claude/cool-cannon-tfeoq9

Conversation

@philipbl

Copy link
Copy Markdown
Member

Second-pass audit follow-up to #12. Every item below was reproduced against the built site before and after the change.

Template bugs affecting rendered output

  • pages/people.html — the faculty bio was gated on {% if person.link %} rather than person.description, so a faculty member with a bio but no personal website would render no bio at all. Masked today only because the one entry in faculty.yaml has both fields.
  • pages/people.html — student photos used alt="{{ person.name }}", but the student data files only define first_name/last_name. Result: 19 portraits built with alt="" and were announced as decorative. html-proofer stays silent on this because the attribute is technically present.
  • pages/articles.html — {% if index == 1 %} referenced an undefined variable (Liquid's counter is forloop.index), so the spacer div never rendered — 0 occurrences in the built output.
  • pages/papers.html — id="description" sat inside the per-paper loop, emitting 22 duplicate ids. js/main.js locates the panel positionally via .parent().next(), so the id was unused; removed rather than uniquified.
  • pages/main.html / _includes/head.html — the leading space sat inside the Liquid string literal ({{ " /papers" | prepend: site.baseurl }}), emitting href=" /papers". Harmless at the current empty baseurl, but would produce /net /papers under any non-root baseurl. 8 occurrences.
  • pages/main.html — the logo was the repo's only relative asset path; made absolute for consistency.

Accessibility

Added alt text to the nav, home and mission logos and to article and project images — clearing all ~30 missing-alt failures. The favicon link on the subprotocols page pointed at assets/favicon.ico, which does not exist; repointed at the real icons in /icon/.

Content and citations

Fix File
Ulaanbataar → Ulaanbaatar (spelled correctly elsewhere in the same file) papers.yaml
protocols,characterize → add space papers.yaml
6~GHz LaTeX artifact → 6 GHz papers.yaml
_real-time_ rendered as literal underscores — abstracts are not markdownified papers.yaml
IEEE Vehicle Networking Conference → Vehicular papers.yaml
a electric heater → an electric heater projects.yaml
WLSK author order corrected to match papers.yaml (Arvonen/Palacios were transposed) subprotocols.html
L Landon → L. Landon, Willie K Harrison → Willie K. Harrison subprotocols.html
LEO-NET venue name aligned with papers.yaml subprotocols.html
Two paper URLs switched from http to https papers.yaml

Tooling

make check_links was dead — it passed html-proofer 3.x flags (--empty_alt_ignore, --url-swap, --url-ignore) to the installed 5.x and died immediately on OptionParser::InvalidOption. Translated to --ignore-empty-alt / --swap-urls / --ignore-urls, and dropped --check-html (removed in 4.x). The target runs clean now.

Verification

html-proofer on the built site: 32 failures → finishes successfully. Duplicate ids 22 → 0, empty student alts 19 → 0, leading-space hrefs 6 → 0, spacer div 0 → 1.

Deliberately not included

Left for a separate decision: dead code (js/material.js, unused _layouts/post.html/page.html, empty _includes/footer.html, unimported _sass/_faculty.scss, dead selectors, unused colors: in _config.yml), and the Sass deprecation warnings (slash-div, @import, global-builtin, color-functions) which will become hard errors at Dart Sass 2.0.

External link liveness is unverified — the audit environment has no outbound network egress, so every URL including jsdelivr returned 000. Worth running make check_links locally now that the target works.


🤖 Generated with Claude Code

https://claude.ai/code/session_013Kuu16A3q7arLfDyjUb3RX


Generated by Claude Code

Template/rendering bugs:
- people.html: faculty bio was gated on {% if person.link %} instead of
  person.description, hiding the bio of anyone without a personal website
- people.html: student photos used alt="{{ person.name }}", a field the
  student data files never define, so 19 portraits rendered alt=""
- articles.html: {% if index == 1 %} referenced an undefined variable;
  Liquid's counter is forloop.index, so the spacer never rendered
- papers.html: id="description" sat inside the per-paper loop, emitting 22
  duplicate ids; js/main.js locates the panel positionally so the id is unused
- main.html/head.html: the leading space sat inside the Liquid string literal
  ({{ " /papers" | ... }}), emitting href=" /papers" and breaking any non-root
  baseurl
- main.html: logo used a relative src while every other reference is absolute

Accessibility:
- Add alt text to the nav/home/mission logos and to article and project images,
  clearing all ~30 missing-alt failures reported by html-proofer

Content and citations:
- "Ulaanbataar" -> "Ulaanbaatar"; "protocols,characterize" -> add space;
  "6~GHz" LaTeX artifact -> "6 GHz"; "_real-time_" rendered literally since
  abstracts are not markdownified; "a electric" -> "an electric"
- "IEEE Vehicle Networking Conference" -> "Vehicular"
- subprotocols.html: correct WLSK author order to match papers.yaml, add
  missing periods to "L Landon" and "Willie K Harrison", and align the
  LEO-NET venue name with papers.yaml
- Switch two paper URLs from http to https

Tooling:
- Makefile check_links passed html-proofer 3.x flags to the installed 5.x and
  died on OptionParser::InvalidOption; translate to --ignore-empty-alt,
  --swap-urls, --ignore-urls and drop --check-html (removed in 4.x)

html-proofer now finishes clean; previously 32 failures.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013Kuu16A3q7arLfDyjUb3RX

This branch has not been deployed

No deployments
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.

2 participants