Skip to content

Rough pass at an architectural, journal-style look - #19

Open
loganfinney27 wants to merge 305 commits into
mainfrom
claude/optimistic-darwin-jwkhyf
Open

loganfinney27 wants to merge 305 commits into
mainfrom
claude/optimistic-darwin-jwkhyf

Conversation

@loganfinney27

@loganfinney27 loganfinney27 commented Sep 28, 2026 •

Copy link
Copy Markdown
Member

User description

A redesign of the site as a ruled, print-style page on a 1.5rem graph-paper grid, plus a full rewrite of the Résumé.

Design

  • Grid: sizes, spacing and text baselines all land on 1.5rem squares. Hard 1px rules and square outlined buttons; no rounded corners, shadows or hover lifts.
  • Type: DejaVu Sans, Gelasio and Cousine (regular, bold and italic), served from the site with their licenses.
  • Palette: five color tokens per theme, light and dark. All text meets WCAG AAA (7:1).
  • Header and footer: shared includes on every page. The footer carries the copyright and the colophon.
  • Theme toggle: moon/sun; the choice lasts for the browser session.

Home page

  • Photo: six captioned photos rotate in a shuffled order. The photo overlay has a top gradient and a bottom gradient; the caption is sticky so it shows on load.
  • Bio: "Logan Finney is an award-winning reporter who covers politics, elections, and government. …" It is a shared include (_includes/bio.html) that the Résumé also uses.
  • Contact: email, Signal and WhatsApp.
  • Links: a tabbed block (Meet, Post, View, Find, Tip) using accessible tablist/tab/tabpanel markup, arrow-key and Home/End navigation, and tooltips on hover and focus. With scripts off, every panel shows.

Résumé

  • Rewritten from public sources (NATAS, Telly, WorldFest, Idaho Press Club, ISBA, Mountain States Policy Center, Wayback archives) and Logan's records.
  • Sections: Experience, Recognition, Memberships, Education.
  • One structure throughout: organization heading, then dated rows with role and items. Items follow one grammar, "Thing · detail · detail."
  • Dates give months wherever they are known.

Folio

  • The Work page is renamed Folio. Chicago style and middle-dot separators. The "On Air" video and podcast lists moved here from the Résumé.

Checks

  • pa11y-ci passes on all pages (the same check CI runs).
  • Full-page screenshots reviewed at 1280px and 390px.

Deferred to the next PR: Folio CV-style rewrite, pa11y-ci 5.0.0 upgrade and subdomains.

🤖 Generated with Claude Code

https://claude.ai/code/session_014e9aGs3SxNfCer3Nmunb6e


CodeAnt-AI Description

Redesign the site as a print-style home for the CV and portfolio

What Changed

  • Replaces the separate Resume and Work pages with a home page containing the CV, awards, publications, and Folio; previous Resume and Work addresses now lead to the home page.
  • Adds a ruled-paper design, light and dark themes, and a theme choice that lasts for the browser session.
  • Rotates captioned landscape photos and adds email, Signal, and WhatsApp contact links.
  • Provides a printable CV layout that includes web addresses for its links; publishing checks the home and not-found pages in both themes for accessibility issues.

Impact

✅ CV and portfolio together on one page
✅ Theme choice remembered during the visit
✅ CV printouts include web addresses for links

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

@cr-gpt

cr-gpt Bot commented Sep 28, 2026

Copy link
Copy Markdown

Seems you are using me but didn't get OPENAI_API_KEY seted in Variables/Secrets for this repo. you could follow readme for more information

@gitnotebooks

gitnotebooks Bot commented Sep 28, 2026

Copy link
Copy Markdown

Review these changes at https://app.gitnotebooks.com/LAF-US/loganfinney/pull/19

@code-genius-code-coverage

Copy link
Copy Markdown

The files' contents are under analysis for test generation.

@semanticdiff-com

semanticdiff-com Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

Review changes with  SemanticDiff

Changed Files
File Status
  .github/workflows/jekyll-gh-pages.yml  5% smaller
  .github/CODEOWNERS Unsupported file format
  .github/FUNDING.yml  0% smaller
  .github/ISSUE_TEMPLATE/config.yml  0% smaller
  .github/ISSUE_TEMPLATE/problem.yml  0% smaller
  .github/SECURITY.md Unsupported file format
  .github/dependabot.yml  0% smaller
  .github/pull_request_template.md Unsupported file format
  .github/requirements-pip.txt Unsupported file format
  .github/requirements.txt Unsupported file format
  .github/scripts/fonts-for-rendercv.py  0% smaller
  .github/scripts/icons.py  0% smaller
  .github/scripts/rendercv-copy.py  0% smaller
  .github/scripts/rendercv-include.py  0% smaller
  .github/scripts/rendercv-options.py  0% smaller
  .github/tests/.pa11yci.json  0% smaller
  .github/tests/package-lock.json  0% smaller
  .github/tests/package.json  0% smaller
  .gitignore Unsupported file format
  .well-known/security.txt Unsupported file format
  .well-known/webfinger Unsupported file format
  404.html  0% smaller
  CNAME Unsupported file format
  _config.yml  0% smaller
  _includes/contact.html  0% smaller
  _includes/footer.html  0% smaller
  _includes/head.html  0% smaller
  _includes/header.html  0% smaller
  _includes/seo.html Unsupported file format
  _includes/vcard-line.txt Unsupported file format
  _layouts/default.html  0% smaller
  bug-draft.txt Unsupported file format
  config.js Unsupported file format
  cv-old.yaml  0% smaller
  cv-template.yaml  0% smaller
  cv.yaml  0% smaller
  favicon.svg Unsupported file format
  fire.js  0% smaller
  fonts/LICENSE-Cousine.txt Unsupported file format
  fonts/LICENSE-DejaVu.txt Unsupported file format
  fonts/LICENSE-Gelasio.txt Unsupported file format
  fonts/cousine-bold.woff2 Unsupported file format
  fonts/cousine-italic.woff2 Unsupported file format
  fonts/cousine.woff2 Unsupported file format
  fonts/dejavu-sans-bold.woff2 Unsupported file format
  fonts/dejavu-sans-oblique.woff2 Unsupported file format
  fonts/dejavu-sans.woff2 Unsupported file format
  fonts/gelasio-italic.woff2 Unsupported file format
  fonts/gelasio.woff2 Unsupported file format
  humans.txt Unsupported file format
  images/hero/164.jpg Unsupported file format
  images/hero/177.jpg Unsupported file format
  images/hero/249.jpg Unsupported file format
  images/hero/262.jpg Unsupported file format
  images/hero/270.jpg Unsupported file format
  images/hero/278.jpg Unsupported file format
  images/hero/334.jpg Unsupported file format
  images/hero/55.jpg Unsupported file format
  images/hero/83.jpg Unsupported file format
  images/hero/anderson-ranch.jpg Unsupported file format
  images/hero/blackfoot.jpg Unsupported file format
  images/hero/bruneau-river.jpg Unsupported file format
  images/hero/coeur-dalene.jpg Unsupported file format
  images/hero/me-award.jpg Unsupported file format
  images/hero/me-capitol-rotunda.jpg Unsupported file format
  images/hero/me-capitol-steps.jpg Unsupported file format
  images/hero/me-dialogue.jpg Unsupported file format
  images/hero/me-ktvb-2022.jpg Unsupported file format
  images/hero/me-nicar.jpg Unsupported file format
  images/hero/me-ptv-mosaic.jpg Unsupported file format
  images/hero/me-ptv-portrait.jpg Unsupported file format
  images/hero/me-sand-dunes.jpg Unsupported file format
  images/hero/me-selfie-mountains.jpg Unsupported file format
  images/hero/me-studio-guests.jpg Unsupported file format
  images/hero/owyhee-reservoir.jpg Unsupported file format
  images/hero/priest-lake.jpg Unsupported file format
  images/hero/schweitzer.jpg Unsupported file format
  images/hero/shoshone-falls.jpg Unsupported file format
  images/hero/south-fork-payette.jpg Unsupported file format
  images/hero/sq1.jpg Unsupported file format
  images/hero/sq4.jpg Unsupported file format
  images/hero/state-capitol-pride.jpg Unsupported file format
  images/hero/state-capitol-protest.jpg Unsupported file format
  index.html  0% smaller
  index.md.txt Unsupported file format
  llms-full.txt Unsupported file format
  llms.txt Unsupported file format
  logan.vcf Unsupported file format
  resume.html  0% smaller
  robots.txt Unsupported file format
  site.webmanifest Unsupported file format
  styles.css Unsupported file format
  theme.js Unsupported file format
  work.html  0% smaller

@codereviewbot-ai

codereviewbot-ai Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

LGTM


🤖 Reviewed by codereviewbot.ai - Catch bugs before your team does.

@codesherlock-ai

Copy link
Copy Markdown

Your 14-day trial has expired!

You have already exhausted your 14th day trial period. Please upgrade your subscription to continue new analysis.

Upgrade by visiting: View Dashboard

@sourcery-ai

sourcery-ai Bot commented Sep 28, 2026

Copy link
Copy Markdown

Reviewer's Guide

This PR replaces the previous soft, elevated UI with a ruled, journal-style system: text-based theme controls and typographic masthead, numbered sections, ledger layouts, bordered cells, responsive resume rows, and print-inspired footer/page framing, while retaining the existing palette, themes, frosted header, and hero treatment.

File-Level Changes

Change Details Files
Reworked the site chrome and theme switch to use a minimal ruled, type-led masthead.
  • Replaced icon-based theme control with a text button naming the destination theme.
  • Removed aria-pressed synchronization and preserved theme persistence behavior.
  • Applied Courier navigation styling, underlined links, hard header/footer rules, and added a footer colophon.
config.js
index.html
resume.html
work.html
styles.css
Converted page structure and content presentation from elevated cards and timeline visuals to print-like ledgers.
  • Added numbered section headings, italic Georgia subheads, ruled page frames, and square outlined buttons.
  • Changed cards to bordered grid cells and story lists to two-column ruled ledgers.
  • Rebuilt resume entries as responsive date-and-content ledger rows.
  • Removed rounded corners, shadows, pill treatments, hover lifts, and replaced them with rule/background hover states.
styles.css
Updated typography, spacing, and link treatments consistently across all three pages for the new architectural visual language.
  • Shifted headings, ledes, entries, metadata, contact details, and footer text to the specified Georgia, Verdana, and Courier roles.
  • Added underlines and updated hover/current-page treatments for navigation and content links.
  • Retained the existing palette, theme support, frosted header, and hero wash while adjusting responsive layouts.
styles.css
index.html
resume.html
work.html

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@coderabbitai

coderabbitai Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Note

Reviews paused

It 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 reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: fc99b348-0cdc-46d9-b73e-c55bebe5cc20

📥 Commits

Reviewing files that changed from the base of the PR and between 80bffe5 and bbf72da.

📒 Files selected for processing (3)
  • index.html
  • styles.css
  • work.html
🚧 Files skipped from review as they are similar to previous changes (2)
  • work.html
  • styles.css

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

📝 Walkthrough

The site updates its theme controls and visual presentation across the home, work, and resume pages. The stylesheet changes navigation, hero content, page sections, cards, story lists, resume entries, and footer styling. Each page also adds a typeface and update-date colophon.

Changes: Site presentation

Layer / File(s) Summary
Theme controls and navigation
config.js, index.html, resume.html, work.html, styles.css
Theme buttons show “Dark” and “Light” text instead of icons. The script no longer synchronizes aria-pressed; theme switching and persistence remain. Header links use an underlined text style, with updated responsive spacing.
Home hero and actions
index.html, styles.css
The home page body gains the home class. Hero spacing, typography, and photo wash change. Buttons and social links use square outlined styles.
Sections, cards, stories, and resume
styles.css
Section headings gain generated numbering and ruled styles. Cards and story lists lose raised treatments, and resume entries use a ruled two-column layout that becomes one column on small screens.
Footer and contact presentation
index.html, resume.html, work.html, styles.css
Each page adds a colophon with typefaces and the September 2026 update date. Footer and contact links use updated typography, underlines, and hover colors.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Feature

Suggested reviewers: claude

Merge Risk: ⚪ Minimal · up to bbf72

The checked font assets and preloads align, and the Latest button points to an external portfolio URL rather than a removed section. No concrete regression is established; the change appears ready for normal checks.

### Architecture Summary

Architecture risk: 🔵 Low · up to bbf72

The change affects 6 systems.

Changed systems: fonts, config.js, index.html, resume.html, styles.css, work.html

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — fonts (service) was modified; 3 changed files map to changed impact.
  • observed — config.js (service) was modified; 1 changed file maps to changed impact.
  • observed — index.html (service) was modified; 1 changed file maps to changed impact.
  • observed — resume.html (service) was modified; 1 changed file maps to changed impact.

Before / after behavior

  • observed — Modified behavior in config.js: HERO_IMAGES is reordered from 278.jpg, 334.jpg, 260.jpg, 177.jpg to 334.jpg, 278.jpg, 177.jpg, 260.jpg.
  • observed — Modified behavior in config.js: initThemeToggle now sets an aria-label naming the theme the button will switch to, and updates it initially, when the system color scheme changes, and after clicks. It removes the previous aria-pressed synchronization.
  • observed — Modified behavior in fonts/LICENSE-Cousine.txt: Added the Cousine copyright notice and SIL Open Font License 1.1, including its permissions, distribution and naming conditions, termination clause, and warranty and liability disclaimer.
  • observed — Modified behavior in fonts/LICENSE-DejaVu.txt: Adds Bitstream Vera attribution and license terms: notices must accompany copies, modified fonts must avoid “Bitstream” and “Vera” in their names, typefaces cannot be sold alone, and warranty, liability, and promotional-use restrictions apply.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 1 files. (3 skipped: 3 …
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: a journal-style redesign across the site and a résumé page rewrite.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

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

❤️ Share

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

@precogs-ai

precogs-ai Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

✅ Precogs scan complete — No security issues found

Commit 09c1516 on claude/optimistic-darwin-jwkhyf · 1 files scanned

🔴 Critical 🟠 High 🔵 Medium 🟢 Low 🎯 Risk Score
0 0 0 0 0.0

✅ All clear. We scanned for SQL injection, XSS, hardcoded secrets, vulnerable dependencies, IaC misconfigurations, and PII exposure. No security vulnerabilities were detected in this PR.

✅ Passed checks (3)
Check Status Details
Code scan (SAST) ✅ Passed No critical/high vulnerabilities
Dependency audit ✅ Passed No known CVEs in dependencies
Secrets scan ✅ Passed No hardcoded credentials found

💬 @precogs-ai help for commands · 🔗 View report

Precogs.ai · Detect. Fix. Merge.

@inspect-review inspect-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

inspect review

Triage: 65 entities analyzed | 0 critical, 0 high, 61 medium, 4 low
Verdict: standard_review

Findings (0)


Reviewed by inspect | Entity-level triage found 0 high-risk changes

@codelens-ai

codelens-ai Bot commented Sep 28, 2026

Copy link
Copy Markdown

🤖 CodeLens AI Review

⚠️ Review failed for config.js: All LLM providers failed: gemini: 404 This model models/gemini-2.0-flash is no longer available. Ple

@pr-insights-tagger

Copy link
Copy Markdown

PR Analysis Summary

Risk Level Complexity Files Changed

📧 Email-friendly summary
Risk: 🔴 High Risk | Complexity: 🟡 5.5/10 | Files: 5

Change Metrics

Metric Value
Lines Added +236
Lines Deleted -265
Files Modified 5
Complexity Score 🟡 5.5/10
Risk Assessment 🔴 High Risk

Risk factors:

  • config.js (application configuration changes)

Classification

size:large type:style risk:high complexity:medium lang:javascript lang:html lang:styling

Files by Type

html ▰▰▰▰▰▰▱▱▱▱▱▱▱▱▱▱▱▱▱▱ 3 files
js ▰▰▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱ 1 file
css ▰▰▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱ 1 file

💡 Recommendations

  1. High-risk changes detected - extra review attention recommended

Analyzed by Woden Tagger • Automated PR insights for better code reviews
💡 Want enhanced Github Projects/Notes and to turn Issues into a Service Desk? Check out Woden Desk on the GitHub Marketplace

@seoguard

seoguard Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

🔴 SEO Review - 27 issues introduced by this PR

8 deploy-blocking issues were introduced here - fix before this ships.

🔴 Critical (8) - fix before deploy

File Issue Fix
_includes/seo.html Missing <h1> tag
Every page must have exactly one <h1> tag. It signals the primary topic of the page to search engines.
Add exactly one <h1>Your Primary Topic</h1> tag to the page
_includes/seo.html Missing lang attribute on <html>
The lang attribute on the <html> element tells search engines and screen readers what language the page is in.
Add lang="en" to your <html> tag: <html lang="en">. Replace 'en' with the correct BCP 47 language code.
_includes/seo.html Missing viewport meta tag
Without a viewport meta tag, mobile browsers render the page at desktop width, causing poor mobile UX and hurting mobil…
Add <meta name="viewport" content="width=device-width, initial-scale=1" /> inside <head>
_includes/seo.html (line 31) Invalid JSON in JSON-LD block
A JSON-LD structured data block contains invalid JSON. Search engines will ignore it entirely.
Fix the JSON syntax error in your <script type="application/ld+json"> block. Use https://validator.schema.org to validate.
_layouts/default.html Missing <title> tag
Every page must have a unique <title> tag. This is the primary signal search engines use to understand page topic and d…
Add <title>Your Page Title (50-60 chars)</title> inside <head>
_layouts/default.html Missing meta description
Meta descriptions are used as SERP snippets. Without one, Google auto-generates one from page content, which is typical…
Add <meta name="description" content="Your description here (150-160 chars)" /> inside <head>
_layouts/default.html Missing <h1> tag
Every page must have exactly one <h1> tag. It signals the primary topic of the page to search engines.
Add exactly one <h1>Your Primary Topic</h1> tag to the page
_layouts/default.html Missing viewport meta tag
Without a viewport meta tag, mobile browsers render the page at desktop width, causing poor mobile UX and hurting mobil…
Add <meta name="viewport" content="width=device-width, initial-scale=1" /> inside <head>
🟡 Warnings (8) · 🔵 Info (11) - expand to review

🟡 Warnings (8)

File Issue Fix
_includes/seo.html (line 7) Title tag too long
Title tags over 60 characters are truncated in Google SERPs, reducing click-through rate. Current length: 141 chars.
Trim your <title> to under 60 characters. Current: 141 chars.
_includes/seo.html Missing charset declaration
Without a charset declaration, browsers may misinterpret the page encoding, causing garbled text.
Add <meta charset="UTF-8" /> as the first tag inside <head>
_layouts/default.html Missing og:title
Open Graph title is required for proper social sharing previews on Facebook, LinkedIn, Slack, and others.
Add <meta property="og:title" content="Your Page Title" /> inside <head>
_layouts/default.html Missing og:description
Open Graph description is displayed when pages are shared on social platforms.
Add <meta property="og:description" content="Your description" /> inside <head>
_layouts/default.html Missing og:image
Social shares without og:image show no image, severely reducing engagement. Image should be at least 1200x630px. Google…
Add <meta property="og:image" content="https://yourdomain.com/og-image.jpg" /> inside <head>. Recommended size: 1200x630px.
_layouts/default.html Missing twitter:card
Without twitter:card, X (Twitter) will not show a rich preview when your page is shared.
Add <meta name="twitter:card" content="summary_large_image" /> inside <head>
_layouts/default.html Missing charset declaration
Without a charset declaration, browsers may misinterpret the page encoding, causing garbled text.
Add <meta charset="UTF-8" /> as the first tag inside <head>
_layouts/default.html Missing canonical tag
Without a canonical tag, search engines may index duplicate versions of your page (e.g., with/without trailing slash, w…
Add <link rel="canonical" href="https://yourdomain.com/this-page" /> inside <head>. For JavaScript pages, ensure this matches the canonical in the pre-rendered HTML.

🔵 Info (11)

File Issue Fix
_includes/seo.html (line 11) Meta description too short
Descriptions under 70 characters are too brief to convey page value. Current: 26 chars.
Expand meta description to at least 70 characters. Current: 26 chars.
_includes/seo.html Missing twitter:title
twitter:title overrides og:title specifically for X (Twitter) cards.
Add <meta name="twitter:title" content="Your Title" /> inside <head>
_includes/seo.html Missing twitter:image
twitter:image is shown in X (Twitter) card previews. Recommended minimum 1200x628px.
Add <meta name="twitter:image" content="https://yourdomain.com/twitter-image.jpg" /> inside <head>
_includes/seo.html Missing favicon
A favicon improves brand recognition in browser tabs and bookmarks. Google displays favicons in SERPs. Google requires …
Add <link rel="icon" href="/favicon.ico" type="image/x-icon" /> inside <head>. Ensure the favicon has a 1:1 aspect ratio and is at least 48x48px. Confirm Googlebot can crawl both the favicon file (via Googlebot-Image) and your home page (via Googlebot).
_includes/seo.html (line 17) Missing image metadata for Search/Discover thumbnails
Google uses both schema.org markup and the og:image tag as sources when determining image thumbnails in Google Search a…
Add og:image: <meta property="og:image" content="https://yourdomain.com/preferred-image.jpg" /> and include the same image URL in your JSON-LD: {"@type":"Article","image":"https://yourdomain.com/preferred-image.jpg"}
_layouts/default.html Missing og:url
og:url sets the canonical URL for social sharing, preventing duplicate content issues on social platforms.
Add <meta property="og:url" content="https://yourdomain.com/page" /> inside <head>
_layouts/default.html Missing og:type
og:type tells social platforms what kind of content this is (website, article, product, etc.).
Add <meta property="og:type" content="website" /> inside <head>. Use 'article' for blog posts.
_layouts/default.html Missing twitter:title
twitter:title overrides og:title specifically for X (Twitter) cards.
Add <meta name="twitter:title" content="Your Title" /> inside <head>
_layouts/default.html Missing twitter:image
twitter:image is shown in X (Twitter) card previews. Recommended minimum 1200x628px.
Add <meta name="twitter:image" content="https://yourdomain.com/twitter-image.jpg" /> inside <head>
_layouts/default.html Missing favicon
A favicon improves brand recognition in browser tabs and bookmarks. Google displays favicons in SERPs. Google requires …
Add <link rel="icon" href="/favicon.ico" type="image/x-icon" /> inside <head>. Ensure the favicon has a 1:1 aspect ratio and is at least 48x48px. Confirm Googlebot can crawl both the favicon file (via Googlebot-Image) and your home page (via Googlebot).
_layouts/default.html No structured data (JSON-LD) found
Structured data helps search engines understand your content and can unlock rich results (star ratings, breadcrumbs, et…
Add a JSON-LD script block: <script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":"Page Title"}</script>
✅ 542 checks passed
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • missing-title
  • title-too-short
  • missing-meta-description
  • meta-description-too-long
  • missing-og-title
  • missing-og-description
  • missing-og-image
  • missing-og-url
  • missing-og-type
  • missing-og-locale
  • missing-twitter-card
  • multiple-h1
  • heading-hierarchy
  • empty-heading
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • missing-canonical
  • accidental-noindex
  • missing-json-ld
  • missing-preload-lcp
  • faq-schema-deprecated
  • back-button-hijacking
  • robots-meta-outside-head
  • favicon-aspect-ratio
  • inp-core-web-vital
  • breadcrumbs-desktop-only
  • video-transparency
  • mobile-version-links
  • review-snippet-requires-comment
  • practice-problem-schema-deprecated
  • special-announcement-schema-deprecated
  • missing-hreflang
  • sitemap-recommended
  • json-ld-recommended-format
  • read-more-deeplink
  • javascript-non-200-rendering
  • hreflang-no-combined-attributes
  • review-no-multiple-reviewed-entities
  • robots-txt-unsupported-fields
  • merchant-shipping-policy-schema
  • video-indexing-criteria
  • explicit-content-video-crawlable
  • indexing-api-spam-detection
  • avif-image-format-supported
  • c2pa-metadata
  • ai-mode-search-console
  • loyalty-program-schema
  • merchant-return-policy-schema
  • product-structured-data-single-product
  • url-parameters-best-practice
  • safe-search-explicit-tagging
  • organization-markup
  • site-name-schema
  • preferred-sources-feature
  • event-structured-data-requirements
  • dataset-schema-phased-out
  • generative-ai-optimization
  • spam-policies-apply-to-ai-responses
  • follow-feature-removed
  • sitelinks-searchbox-removed
  • googlebot-file-size-limits
  • recipe-thumbnail-property
  • core-updates-continuous
  • south-africa-carousel-structured-data
  • llms-txt-not-required
  • ai-features-snippet-eligibility
  • agent-friendly-website
  • speakable-schema-deprecated
  • schema-org-shipping-vocabulary-updated
  • faq-rich-result-documentation-removed
  • html-standard-for-seo
  • oai-searchbot-crawl-eligibility
  • markdown-content-no-seo-advantage
  • google-video-schema-creator-property
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • title-too-long
  • title-too-short
  • meta-description-too-long
  • meta-description-too-short
  • missing-og-locale
  • multiple-h1
  • heading-hierarchy
  • empty-heading
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • missing-lang
  • accidental-noindex
  • invalid-json-ld
  • missing-preload-lcp
  • faq-schema-deprecated
  • back-button-hijacking
  • robots-meta-outside-head
  • favicon-aspect-ratio
  • inp-core-web-vital
  • image-preferred-source-metadata
  • breadcrumbs-desktop-only
  • video-transparency
  • mobile-version-links
  • review-snippet-requires-comment
  • practice-problem-schema-deprecated
  • special-announcement-schema-deprecated
  • missing-hreflang
  • sitemap-recommended
  • json-ld-recommended-format
  • read-more-deeplink
  • javascript-non-200-rendering
  • hreflang-no-combined-attributes
  • review-no-multiple-reviewed-entities
  • robots-txt-unsupported-fields
  • merchant-shipping-policy-schema
  • video-indexing-criteria
  • explicit-content-video-crawlable
  • indexing-api-spam-detection
  • avif-image-format-supported
  • c2pa-metadata
  • ai-mode-search-console
  • loyalty-program-schema
  • merchant-return-policy-schema
  • product-structured-data-single-product
  • url-parameters-best-practice
  • safe-search-explicit-tagging
  • organization-markup
  • site-name-schema
  • preferred-sources-feature
  • event-structured-data-requirements
  • dataset-schema-phased-out
  • generative-ai-optimization
  • spam-policies-apply-to-ai-responses
  • follow-feature-removed
  • sitelinks-searchbox-removed
  • googlebot-file-size-limits
  • recipe-thumbnail-property
  • core-updates-continuous
  • south-africa-carousel-structured-data
  • llms-txt-not-required
  • ai-features-snippet-eligibility
  • agent-friendly-website
  • speakable-schema-deprecated
  • schema-org-shipping-vocabulary-updated
  • faq-rich-result-documentation-removed
  • html-standard-for-seo
  • oai-searchbot-crawl-eligibility
  • markdown-content-no-seo-advantage
  • google-video-schema-creator-property
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats
  • image-missing-alt
  • image-empty-alt
  • image-missing-lazy-loading
  • image-url-consistency
  • vague-link-text
  • external-link-no-rel
  • image-preferred-source-metadata
  • video-transparency
  • avif-image-format-supported
  • c2pa-metadata
  • geo-robots-ai-agents
  • schema-nested-graph
  • schema-entity-sameas
  • geo-ssr-hydration
  • schema-faqpage-completeness
  • geo-bluf-structure
  • geo-passage-containment
  • geo-unanchored-stats

SEOCode · Docs & troubleshooting

@scan-ai-slop-aislop

Copy link
Copy Markdown

aislop skipped this PR

This workspace does not have an active paid scanaislop plan. Choose a plan to resume hosted scans and PR gates:

Choose a paid plan

This comment appears once per PR. Further pushes will be skipped silently until the workspace has paid access.

@qwed-security

qwed-security Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

QWED Security Verification Report

49 files scanned | 0 blocked | 2 warnings | 0 info | 0 suppressed | 48 verified

Advisory Warnings

File Line Context Issue
.github/scripts/rendercv-copy.py L36 RUNTIME_CODE subprocess invocation detected.
.github/scripts/rendercv-copy.py L54 RUNTIME_CODE subprocess invocation detected.

Engines

  • ci_scan: ✅
  • codeguard: ✅
  • dependency_scan: ✅
  • entropy_scan: ✅
  • js_patterns: ✅
  • lockfile_scan: ✅
  • pattern_scan: ⚠️ 2 finding(s)
  • python_ast: ⚠️ 2 finding(s)
  • python_deep_ast: ✅
  • secret_scan: ✅
  • taint_analysis: ✅
  • verification_integrity: ✅

Verified Files

  • .github/CODEOWNERS
  • .github/FUNDING.yml
  • .github/ISSUE_TEMPLATE/config.yml
  • .github/ISSUE_TEMPLATE/problem.yml
  • .github/SECURITY.md
  • .github/dependabot.yml
  • .github/pull_request_template.md
  • .github/requirements-pip.txt
  • .github/requirements.txt
  • .github/scripts/fonts-for-rendercv.py
  • .github/scripts/icons.py
  • .github/scripts/rendercv-include.py
  • .github/scripts/rendercv-options.py
  • .github/tests/.pa11yci.json
  • .github/tests/package-lock.json
  • .github/tests/package.json
  • .github/workflows/jekyll-gh-pages.yml
  • .gitignore
  • .well-known/security.txt
  • .well-known/webfinger
  • 404.html
  • _config.yml
  • _includes/contact.html
  • _includes/footer.html
  • _includes/head.html
  • _includes/header.html
  • _includes/seo.html
  • _includes/vcard-line.txt
  • _layouts/default.html
  • bug-draft.txt
  • config.js
  • cv-old.yaml
  • cv-template.yaml
  • cv.yaml
  • fire.js
  • fonts/LICENSE-Cousine.txt
  • fonts/LICENSE-DejaVu.txt
  • fonts/LICENSE-Gelasio.txt
  • humans.txt
  • index.html
  • index.md.txt
  • llms-full.txt
  • llms.txt
  • logan.vcf
  • robots.txt
  • site.webmanifest
  • styles.css
  • theme.js

Verified by QWED — deterministic security verification. No LLM used.

Verification Context v1.0
{
  "spec_version": "1.0",
  "object": {
    "formal_statement": "LAF-US/loganfinney@0e2cce53 (PR #19) is safe to merge"
  },
  "context": {
    "interpretation": {
      "theory": "deterministic security verification",
      "logic": "evidence-context-policy pipeline"
    },
    "proof": {
      "verifier": "QWED Security",
      "verifier_version": "qwed-security-ruleset/12",
      "configuration": {
        "repo": "LAF-US/loganfinney",
        "head_sha": "0e2cce53e1f6482e17be5b88e0ea3c934155d772",
        "files_scanned": 49
      },
      "theory_scope": "PR security scan against QWED deterministic rule set",
      "trusted_dependencies": [
        "qwed-security"
      ],
      "outcome_treatment": "unknown/timeout/error resolve to UNVERIFIABLE or BLOCKED"
    },
    "evidence": {
      "evidence": {
        "status": "UNVERIFIABLE",
        "agent_message": "PR requires review: 4 advisory finding(s).",
        "developer_fields": {
          "total_warnings": 4,
          "advisory_checks": []
        },
        "is_authoritative": false,
        "scan_evidence": {
          "repo": "LAF-US/loganfinney",
          "head_sha": "0e2cce53e1f6482e17be5b88e0ea3c934155d772",
          "pr_number": 19,
          "files_scanned": 49,
          "engine_results": 142,
          "conclusion": "neutral",
          "rule_set": "qwed-security-ruleset/12",
          "engines": [
            "ci_scan",
            "codeguard",
            "dependency_scan",
            "entropy_scan",
            "js_patterns",
            "lockfile_scan",
            "pattern_scan",
            "python_ast",
            "python_deep_ast",
            "secret_scan",
            "taint_analysis",
            "verification_integrity"
          ]
        },
        "repo": "LAF-US/loganfinney",
        "head_sha": "0e2cce53e1f6482e17be5b88e0ea3c934155d772",
        "files_scanned": 49
      },
      "proof_ref": null
    },
    "decision": {
      "admission": "DENY"
    }
  },
  "verdict": "UNVERIFIABLE"
}

@gitginie gitginie Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

@loganfinney27
Thank you for your contribution to this repository! We appreciate your effort in opening pull request.
Happy coding!

@cr-gpt

cr-gpt Bot commented Sep 28, 2026

Copy link
Copy Markdown

Seems you are using me but didn't get OPENAI_API_KEY seted in Variables/Secrets for this repo. you could follow readme for more information

@codereviewbot-ai

codereviewbot-ai Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

LGTM


🤖 Reviewed by codereviewbot.ai - Catch bugs before your team does.

@precogs-ai

precogs-ai Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

✅ Precogs scan complete — No security issues found

Commit 30a8677 on claude/optimistic-darwin-jwkhyf · 1 files scanned

🔴 Critical 🟠 High 🔵 Medium 🟢 Low 🎯 Risk Score
0 0 0 0 0.0

✅ All clear. We scanned for SQL injection, XSS, hardcoded secrets, vulnerable dependencies, IaC misconfigurations, and PII exposure. No security vulnerabilities were detected in this PR.

✅ Passed checks (3)
Check Status Details
Code scan (SAST) ✅ Passed No critical/high vulnerabilities
Dependency audit ✅ Passed No known CVEs in dependencies
Secrets scan ✅ Passed No hardcoded credentials found

💬 @precogs-ai help for commands · 🔗 View report

Precogs.ai · Detect. Fix. Merge.

@pr-insights-tagger

Copy link
Copy Markdown

PR Analysis Summary

Risk Level Complexity Files Changed

📧 Email-friendly summary
Risk: 🔴 High Risk | Complexity: 🟡 5.5/10 | Files: 5

Change Metrics

Metric Value
Lines Added +241
Lines Deleted -270
Files Modified 5
Complexity Score 🟡 5.5/10
Risk Assessment 🔴 High Risk

Risk factors:

  • config.js (application configuration changes)

Classification

size:large type:style risk:high complexity:medium lang:javascript lang:html lang:styling

Files by Type

html ▰▰▰▰▰▰▱▱▱▱▱▱▱▱▱▱▱▱▱▱ 3 files
js ▰▰▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱ 1 file
css ▰▰▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱ 1 file

💡 Recommendations

  1. High-risk changes detected - extra review attention recommended

Analyzed by Woden Tagger • Automated PR insights for better code reviews
💡 Want enhanced Github Projects/Notes and to turn Issues into a Service Desk? Check out Woden Desk on the GitHub Marketplace

@codelens-ai

codelens-ai Bot commented Sep 28, 2026

Copy link
Copy Markdown

🤖 CodeLens AI Review

⚠️ Review failed for config.js: All LLM providers failed: gemini: 404 This model models/gemini-2.0-flash is no longer available. Ple

@inspect-review inspect-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

inspect review

Triage: 65 entities analyzed | 0 critical, 0 high, 61 medium, 4 low
Verdict: standard_review

Findings (0)


Reviewed by inspect | Entity-level triage found 0 high-risk changes

The copy is RenderCV 2.8 plus the IMDb fix and the 20 new social networks,
pinned to a full commit ID. Both jobs that render cv.yaml try the regular
RenderCV first and swap in the copy only if it fails, so the site goes back
to the regular one on its own once a release Dependabot proposes can read
cv.yaml.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014e9aGs3SxNfCer3Nmunb6e
@cr-gpt

cr-gpt Bot commented Oct 17, 2026

Copy link
Copy Markdown

Seems you are using me but didn't get OPENAI_API_KEY seted in Variables/Secrets for this repo. you could follow readme for more information

@codeant-ai

codeant-ai Bot commented Oct 17, 2026

Copy link
Copy Markdown

🤖 CodeAnt AI — Review Status

Status Commit Started (UTC) Finished (UTC)
🔄 Incremental review in progress… 267359e Oct 17, 2026 · 07:17 —

@pr-insights-tagger

Copy link
Copy Markdown

PR Analysis Summary

Risk Level Complexity Files Changed

📧 Email-friendly summary
Risk: 🔴 High Risk | Complexity: 🔴 10/10 | Files: 29

Change Metrics

Metric Value
Lines Added +599
Lines Deleted -27
Files Modified 29
Complexity Score 🔴 10/10
Risk Assessment 🔴 High Risk

Risk factors:

  • High complexity score (10.0/10)
  • .github/ISSUE_TEMPLATE/config.yml (application configuration changes)
  • .github/requirements.txt (Python dependency changes)
  • .github/tests/package.json (dependency changes)
  • .github/workflows/jekyll-gh-pages.yml (CI/CD workflow changes)
  • .well-known/security.txt (security-related changes)
  • _config.yml (application configuration changes)

Classification

size:large type:style risk:high complexity:high lang:python lang:html docs:markdown config:files dependencies

Files by Type

html ▰▰▰▰▰▰▰▰▰▰▰▰▰▰▱▱▱▱▱▱ 7 files
yml ▰▰▰▰▰▰▰▰▰▰▰▰▱▱▱▱▱▱▱▱ 6 files
py ▰▰▰▰▰▰▰▰▰▰▱▱▱▱▱▱▱▱▱▱ 5 files
txt ▰▰▰▰▰▰▱▱▱▱▱▱▱▱▱▱▱▱▱▱ 3 files
md ▰▰▰▰▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱ 2 files

+5 more file types

💡 Recommendations

  1. Many files changed - ensure changes are logically related
  2. High-risk changes detected - extra review attention recommended
  3. High complexity score - consider adding detailed testing
  4. Multiple file types changed - ensure consistency across changes
  5. Significant code additions - ensure adequate test coverage

🚫 Files Excluded from Analysis

1 file(s) excluded (1,227 lines) - generated, minified, or binary files that don't need review

  • .github/tests/package-lock.json - Package lock file (auto-generated)

Analyzed by Woden Tagger • Automated PR insights for better code reviews
💡 Want enhanced Github Projects/Notes and to turn Issues into a Service Desk? Check out Woden Desk on the GitHub Marketplace

@precogs-ai

precogs-ai Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

✅ Precogs scan complete — No security issues found

Commit 267359e on claude/optimistic-darwin-jwkhyf · 8 files scanned

🔴 Critical 🟠 High 🔵 Medium 🟢 Low 🎯 Risk Score
0 0 0 0 0.0

✅ All clear. We scanned for SQL injection, XSS, hardcoded secrets, vulnerable dependencies, IaC misconfigurations, and PII exposure. No security vulnerabilities were detected in this PR.

✅ Passed checks (3)
Check Status Details
Code scan (SAST) ✅ Passed No critical/high vulnerabilities
Dependency audit ✅ Passed No known CVEs in dependencies
Secrets scan ✅ Passed No hardcoded credentials found

💬 @precogs-ai help for commands · 🔗 View report

Precogs.ai · Detect. Fix. Merge.

@zaxion-governance

Copy link
Copy Markdown

🛡️ Zaxion Policy Status: ⏳ PENDING

Analyzing Risk...

📋 View Full Governance Report

Queued for analysis...


Visit the Full Report for detailed metrics, findings, and interactive remediation.

@inspect-review inspect-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

inspect review

Triage: 174 entities analyzed | 0 critical, 0 high, 73 medium, 101 low
Verdict: standard_review

Findings (0)


Reviewed by inspect | Entity-level triage found 0 high-risk changes

@codelens-ai

codelens-ai Bot commented Oct 17, 2026

Copy link
Copy Markdown

🤖 CodeLens AI Review

⚠️ Review failed for .github/scripts/fonts-for-rendercv.py: All LLM providers failed: gemini: 404 This model models/gemini-2.0-flash is no longer available. Ple


⚠️ Review failed for .github/scripts/icons.py: All LLM providers failed: gemini: 404 This model models/gemini-2.0-flash is no longer available. Ple


⚠️ Review failed for .github/scripts/rendercv-copy.py: All LLM providers failed: gemini: 404 This model models/gemini-2.0-flash is no longer available. Ple


⚠️ Review failed for .github/scripts/rendercv-include.py: All LLM providers failed: gemini: 404 This model models/gemini-2.0-flash is no longer available. Ple


⚠️ Review failed for .github/scripts/rendercv-options.py: All LLM providers failed: gemini: 404 This model models/gemini-2.0-flash is no longer available. Ple

Comment thread _layouts/default.html
@@ -0,0 +1,14 @@
<!DOCTYPE html>
<html lang="en">
<head>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Missing viewport meta tag - Add inside

Suggested change
<head>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />

Comment thread _layouts/default.html
@@ -0,0 +1,14 @@
<!DOCTYPE html>
<html lang="en">
<head>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Missing charset declaration - Add as the first tag inside

Suggested change
<head>
<head>
<meta charset="utf-8" />

@tenki-reviewer

Copy link
Copy Markdown

Insufficient balance to process this code review. Please add funds or upgrade your plan in billing.


cv = Path(__file__).resolve().parents[2] / "cv.yaml"
with tempfile.TemporaryDirectory() as folder:
check = subprocess.run(
Comment thread .github/scripts/rendercv-copy.py Outdated
else:
print(f"::notice::The regular RenderCV ({version('rendercv')}) can't read cv.yaml, so the build uses LAF-US's copy")
print(check.stdout, check.stderr, sep="\n")
subprocess.run([sys.executable, "-m", "pip", "install", "--no-deps", "--force-reinstall", f"rendercv @ {COPY}"], check=True)
@zaxion-governance

Copy link
Copy Markdown

🛡️ Zaxion Policy Status: 🔴 BLOCK

Gateway Blocked

📋 View Full Governance Report

  • Status: 🔴 BLOCK
  • Risk Analysis: 🟢 Safe
  • Changes: 93 files

Visit the Full Report for detailed metrics, findings, and interactive remediation.

@sieve-by-fendora

Copy link
Copy Markdown

Sieve Security Scan ✅

No likely vulnerabilities found in changed files.

0 real · 0 suppressed · 0 FP · 0 total

@codeant-ai

codeant-ai Bot commented Oct 17, 2026

Copy link
Copy Markdown

🤖 CodeAnt AI — Review Status

Status Commit Started (UTC) Finished (UTC)
✅ Incremental review completed 267359e Oct 17, 2026 · 07:18 07:18

@mergestorm-vortex mergestorm-vortex Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Auto land this PR in Mergestorm

Review progress ██████████ 93/93 files

Request changes — found 3 issue(s) at 267359e.

Actionable comments posted: 3

🤖 Prompt for AI agents
Verify each finding against current code. Fix only still-valid concrete bugs, skip the
rest with a brief reason, keep changes minimal, and validate. Skip Decision required,
policy forks, and "consider X" alternatives. Do not add new features, refactors, or
architecture beyond the fix; prefer the smallest diff.

Findings to address:
1. In `@.github/workflows/jekyll-gh-pages.yml` (line 108, Important):
   `rendercv render cv.yaml` publishes the CV with profiles under `cv.social_networks`, but `_includes/head.html`, `_includes/seo.html`, and `llms.txt` still read `cv.custom_connections`. As a result, the deployed page omits the `rel="me"` links (including Mastodon verification), JSON-LD `sameAs`, and the profile list in `llms.txt`, even though those profiles appear in the rendered CV.

Additional findings outside changed lines:
1. In `@index.html` (line 33, Blocker):
   `{% include rendercv.html %}` renders the CV generated from `cv.yaml`, and that file still holds ...
   `{% include rendercv.html %}` renders the CV generated from `cv.yaml`, and that file still holds RenderCV's sample content. Verified in `cv.yaml`: `email: john.doe@email.com`, `website: https://rendercv.com/`, `headline: Documentary Journalist`, a 'Welcome to RenderCV' section, and an education entry for a Princeton PhD. This feeds the public CV section, the PDF, the vCard, and the header/footer name and headline via `site.data.cv.cv`. The result is that the live site presents invented credentials for a real reporter, which contradicts the PR's claim that the R\u00e9sum\u00e9 was rewritten from public sources. Replace `cv.yaml` with Logan's real content before merge, or keep the CV include out of the published build until it is ready.

2. In `@logan.vcf` (line 6, Blocker):
   vCard and site identity read from RenderCV sample cv.yaml
   `{% include vcard-line.txt property="FN:" value=site.data.cv.cv.name %}` (and the N:/TITLE: lines) pull from `cv.yaml`, which at this head still contains RenderCV sample content: `Princeton University` PhD, `Boğaziçi University`, `Welcome to RenderCV` section, `email: john.doe@email.com`, `website: https://rendercv.com/`, and `*John Doe*` highlights. `index.html` renders that same file into the visible CV via `rendercv.html`, so the published home page advertises fabricated credentials. Replace `cv.yaml` with Logan's actual CV data before merge.

Still open from earlier reviews (2) — the lines they point at have not changed:

  • 🔴 Blocker · {% include rendercv.html %} renders the CV generated from cv.yaml, and that file still holds ... · index.html line 33 · from 6b070d0
    {% include rendercv.html %} renders the CV generated from cv.yaml, and that file still holds RenderCV's sample content. Verified in cv.yaml: email: john.doe@email.com, website: https://rendercv.com/, headline: Documentary Journalist, a 'Welcome to RenderCV' section, and an education entry for a Princeton PhD. This feeds the public CV section, the PDF, the vCard, and the header/footer name and headline via site.data.cv.cv. The result is that the live site presents invented credentials for a real reporter, which contradicts the PR's claim that the R\u00e9sum\u00e9 was rewritten from public sources. Replace cv.yaml with Logan's real content before merge, or keep the CV include out of the published build until it is ready.
  • 🔴 Blocker · vCard and site identity read from RenderCV sample cv.yaml · logan.vcf line 6 · from 6b070d0
    {% include vcard-line.txt property="FN:" value=site.data.cv.cv.name %} (and the N:/TITLE: lines) pull from cv.yaml, which at this head still contains RenderCV sample content: Princeton University PhD, Boğaziçi University, Welcome to RenderCV section, email: john.doe@email.com, website: https://rendercv.com/, and *John Doe* highlights. index.html renders that same file into the visible CV via rendercv.html, so the published home page advertises fabricated credentials. Replace cv.yaml with Logan's actual CV data before merge.

Mergestorm: 30 free reviews a month

run: |
options=$(python3 .github/scripts/rendercv-options.py)
mapfile -t options <<< "$options"
rendercv render cv.yaml "${options[@]}" -nopng -o "$RUNNER_TEMP/rendercv"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue · Important

CV profiles are not propagated to site metadata

rendercv render cv.yaml publishes the CV with profiles under cv.social_networks, but _includes/head.html, _includes/seo.html, and llms.txt still read cv.custom_connections. As a result, the deployed page omits the rel="me" links (including Mastodon verification), JSON-LD sameAs, and the profile list in llms.txt, even though those profiles appear in the rendered CV.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid concrete bugs, skip the
rest with a brief reason, keep changes minimal, and validate. Skip Decision required,
policy forks, and "consider X" alternatives. Do not add new features, refactors, or
architecture beyond the fix; prefer the smallest diff.

In `@.github/workflows/jekyll-gh-pages.yml` (line 108, Important):
`rendercv render cv.yaml` publishes the CV with profiles under `cv.social_networks`, but `_includes/head.html`, `_includes/seo.html`, and `llms.txt` still read `cv.custom_connections`. As a result, the deployed page omits the `rel="me"` links (including Mastodon verification), JSON-LD `sameAs`, and the profile list in `llms.txt`, even though those profiles appear in the rendered CV.

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

2 issues found across 2 files (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name=".github/workflows/jekyll-gh-pages.yml">

<violation number="1" location=".github/workflows/jekyll-gh-pages.yml:57">
P2: This step installs an unreleased RenderCV fork from a git URL into the job that builds the artifact deployed to production, and it bypasses the pip cooldown this PR's own threat model relies on. Pinning the commit SHA limits tampering, but it leaves the fork's code running unreviewed in the publish path. Consider vendoring the two needed changes or gating the fallback on a reviewed artifact. The fallback also fires on any render failure, not only the cv.yaml read errors it targets.</violation>

<violation number="2" location=".github/workflows/jekyll-gh-pages.yml:58">
P2: Update the site metadata consumers to read `cv.social_networks`; otherwise profiles accepted by this RenderCV fallback are omitted from `rel="me"`, JSON-LD `sameAs`, and `llms.txt`.</violation>
</file>

Tip: Get a Slack DM when cubic finishes reviewing your PRs. Connect Slack

View guided diff | Turn on auto-fix | Re-trigger cubic

python-version: "3.13"
- name: Install RenderCV (versions in .github/requirements.txt)
run: pip install -r .github/requirements.txt
- name: Use LAF-US's copy of RenderCV if the regular one can't read cv.yaml (.github/scripts/rendercv-copy.py)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2: This step installs an unreleased RenderCV fork from a git URL into the job that builds the artifact deployed to production, and it bypasses the pip cooldown this PR's own threat model relies on. Pinning the commit SHA limits tampering, but it leaves the fork's code running unreviewed in the publish path. Consider vendoring the two needed changes or gating the fallback on a reviewed artifact. The fallback also fires on any render failure, not only the cv.yaml read errors it targets.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At .github/workflows/jekyll-gh-pages.yml, line 57:

<comment>This step installs an unreleased RenderCV fork from a git URL into the job that builds the artifact deployed to production, and it bypasses the pip cooldown this PR's own threat model relies on. Pinning the commit SHA limits tampering, but it leaves the fork's code running unreviewed in the publish path. Consider vendoring the two needed changes or gating the fallback on a reviewed artifact. The fallback also fires on any render failure, not only the cv.yaml read errors it targets.</comment>

<file context>
@@ -54,6 +54,8 @@ jobs:
           python-version: "3.13"
       - name: Install RenderCV (versions in .github/requirements.txt)
         run: pip install -r .github/requirements.txt
+      - name: Use LAF-US's copy of RenderCV if the regular one can't read cv.yaml (.github/scripts/rendercv-copy.py)
+        run: python3 .github/scripts/rendercv-copy.py
       - name: Compare the CV as of the last successful run with the CV today
</file context>

- name: Install RenderCV (versions in .github/requirements.txt)
run: pip install -r .github/requirements.txt
- name: Use LAF-US's copy of RenderCV if the regular one can't read cv.yaml (.github/scripts/rendercv-copy.py)
run: python3 .github/scripts/rendercv-copy.py

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2: Update the site metadata consumers to read cv.social_networks; otherwise profiles accepted by this RenderCV fallback are omitted from rel="me", JSON-LD sameAs, and llms.txt.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At .github/workflows/jekyll-gh-pages.yml, line 58:

<comment>Update the site metadata consumers to read `cv.social_networks`; otherwise profiles accepted by this RenderCV fallback are omitted from `rel="me"`, JSON-LD `sameAs`, and `llms.txt`.</comment>

<file context>
@@ -54,6 +54,8 @@ jobs:
       - name: Install RenderCV (versions in .github/requirements.txt)
         run: pip install -r .github/requirements.txt
+      - name: Use LAF-US's copy of RenderCV if the regular one can't read cv.yaml (.github/scripts/rendercv-copy.py)
+        run: python3 .github/scripts/rendercv-copy.py
       - name: Compare the CV as of the last successful run with the CV today
         id: compare
</file context>

Comment thread .github/scripts/rendercv-copy.py Outdated
…ery package

The swap now stands in only for RenderCV 2.8, the version LAF-US's copy is
built on. Any other RenderCV that can't read cv.yaml fails the build instead
of being quietly replaced, so a Dependabot pull request for a release that
breaks the CV fails as it did before the swap existed.

Installing the copy builds it from source; its build tool is now pinned
(uv_build 0.10.12) instead of taking the newest in its range.

Every pip install now takes only versions uploaded at least 7 days ago
(PIP_UPLOADED_PRIOR_TO=P7D), the same wait Dependabot keeps, including the 27
packages that RenderCV and the others bring in and no file pins. pip 26.1
and newer follow that setting and older ones ignore it, so each job installs
pip 26.2.1 first (.github/requirements-pip.txt, kept current by Dependabot).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014e9aGs3SxNfCer3Nmunb6e
@cr-gpt

cr-gpt Bot commented Oct 17, 2026

Copy link
Copy Markdown

Seems you are using me but didn't get OPENAI_API_KEY seted in Variables/Secrets for this repo. you could follow readme for more information

@codeant-ai

codeant-ai Bot commented Oct 17, 2026

Copy link
Copy Markdown

🤖 CodeAnt AI — Review Status

Status Commit Started (UTC) Finished (UTC)
🔄 Incremental review in progress… 0e2cce5 Oct 17, 2026 · 13:44 —

@precogs-ai

precogs-ai Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

✅ Precogs scan complete — No security issues found

Commit 0e2cce5 on claude/optimistic-darwin-jwkhyf · 8 files scanned

🔴 Critical 🟠 High 🔵 Medium 🟢 Low 🎯 Risk Score
0 0 0 0 0.0

✅ All clear. We scanned for SQL injection, XSS, hardcoded secrets, vulnerable dependencies, IaC misconfigurations, and PII exposure. No security vulnerabilities were detected in this PR.

✅ Passed checks (3)
Check Status Details
Code scan (SAST) ✅ Passed No critical/high vulnerabilities
Dependency audit ✅ Passed No known CVEs in dependencies
Secrets scan ✅ Passed No hardcoded credentials found

💬 @precogs-ai help for commands · 🔗 View report

Precogs.ai · Detect. Fix. Merge.

@pr-insights-tagger

Copy link
Copy Markdown

PR Analysis Summary

Risk Level Complexity Files Changed

📧 Email-friendly summary
Risk: 🔴 High Risk | Complexity: 🔴 10/10 | Files: 29

Change Metrics

Metric Value
Lines Added +624
Lines Deleted -27
Files Modified 29
Complexity Score 🔴 10/10
Risk Assessment 🔴 High Risk

Risk factors:

  • High complexity score (10.0/10)
  • .github/ISSUE_TEMPLATE/config.yml (application configuration changes)
  • .github/requirements.txt (Python dependency changes)
  • .github/tests/package.json (dependency changes)
  • .github/workflows/jekyll-gh-pages.yml (CI/CD workflow changes)
  • .well-known/security.txt (security-related changes)
  • _config.yml (application configuration changes)

Classification

size:large type:style risk:high complexity:high lang:python lang:html docs:markdown config:files dependencies

Files by Type

yml ▰▰▰▰▰▰▰▰▰▰▰▰▱▱▱▱▱▱▱▱ 6 files
html ▰▰▰▰▰▰▰▰▰▰▰▰▱▱▱▱▱▱▱▱ 6 files
py ▰▰▰▰▰▰▰▰▰▰▱▱▱▱▱▱▱▱▱▱ 5 files
txt ▰▰▰▰▰▰▰▰▱▱▱▱▱▱▱▱▱▱▱▱ 4 files
md ▰▰▰▰▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱ 2 files

+5 more file types

💡 Recommendations

  1. Many files changed - ensure changes are logically related
  2. High-risk changes detected - extra review attention recommended
  3. High complexity score - consider adding detailed testing
  4. Multiple file types changed - ensure consistency across changes
  5. Significant code additions - ensure adequate test coverage

🚫 Files Excluded from Analysis

1 file(s) excluded (1,227 lines) - generated, minified, or binary files that don't need review

  • .github/tests/package-lock.json - Package lock file (auto-generated)

Analyzed by Woden Tagger • Automated PR insights for better code reviews
💡 Want enhanced Github Projects/Notes and to turn Issues into a Service Desk? Check out Woden Desk on the GitHub Marketplace

@inspect-review inspect-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

inspect review

Triage: 176 entities analyzed | 0 critical, 0 high, 73 medium, 103 low
Verdict: standard_review

Findings (0)


Reviewed by inspect | Entity-level triage found 0 high-risk changes

@codelens-ai

codelens-ai Bot commented Oct 17, 2026

Copy link
Copy Markdown

🤖 CodeLens AI Review

⚠️ Review failed for .github/scripts/fonts-for-rendercv.py: All LLM providers failed: gemini: 404 This model models/gemini-2.0-flash is no longer available. Ple


⚠️ Review failed for .github/scripts/icons.py: All LLM providers failed: gemini: 404 This model models/gemini-2.0-flash is no longer available. Ple


⚠️ Review failed for .github/scripts/rendercv-copy.py: All LLM providers failed: gemini: 404 This model models/gemini-2.0-flash is no longer available. Ple


⚠️ Review failed for .github/scripts/rendercv-include.py: All LLM providers failed: gemini: 404 This model models/gemini-2.0-flash is no longer available. Ple


⚠️ Review failed for .github/scripts/rendercv-options.py: All LLM providers failed: gemini: 404 This model models/gemini-2.0-flash is no longer available. Ple

Comment thread _layouts/default.html
@@ -0,0 +1,14 @@
<!DOCTYPE html>
<html lang="en">
<head>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Missing viewport meta tag - Add inside

Suggested change
<head>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />

Comment thread _layouts/default.html
@@ -0,0 +1,14 @@
<!DOCTYPE html>
<html lang="en">
<head>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Missing charset declaration - Add as the first tag inside

Suggested change
<head>
<head>
<meta charset="utf-8" />

@tenki-reviewer

Copy link
Copy Markdown

Insufficient balance to process this code review. Please add funds or upgrade your plan in billing.

@sieve-by-fendora

Copy link
Copy Markdown

Sieve Security Scan ✅

No likely vulnerabilities found in changed files.

0 real · 0 suppressed · 0 FP · 0 total

@zaxion-governance

Copy link
Copy Markdown

🛡️ Zaxion Policy Status: ⏳ PENDING

Analyzing Risk...

📋 View Full Governance Report

Queued for analysis...


Visit the Full Report for detailed metrics, findings, and interactive remediation.

@zaxion-governance

Copy link
Copy Markdown

🛡️ Zaxion Policy Status: 🔴 BLOCK

Gateway Blocked

📋 View Full Governance Report

  • Status: 🔴 BLOCK
  • Risk Analysis: 🟢 Safe
  • Changes: 94 files

Visit the Full Report for detailed metrics, findings, and interactive remediation.

@codeant-ai

codeant-ai Bot commented Oct 17, 2026

Copy link
Copy Markdown

🤖 CodeAnt AI — Review Status

Status Commit Started (UTC) Finished (UTC)
✅ Incremental review completed 0e2cce5 Oct 17, 2026 · 13:46 13:46

@mergestorm-vortex mergestorm-vortex Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Auto land this PR in Mergestorm

Review progress ██████████ 94/94 files

Request changes — found 2 issue(s) outside changed lines at 0e2cce5.

Actionable comments posted: 2

🤖 Prompt for AI agents
Verify each finding against current code. Fix only still-valid concrete bugs, skip the
rest with a brief reason, keep changes minimal, and validate. Skip Decision required,
policy forks, and "consider X" alternatives. Do not add new features, refactors, or
architecture beyond the fix; prefer the smallest diff.

Findings to address:
1. In `@index.html` (line 33, Blocker):
   `{% include rendercv.html %}` renders the CV generated from `cv.yaml`, and that file still holds ...
   `{% include rendercv.html %}` renders the CV generated from `cv.yaml`, and that file still holds RenderCV's sample content. Verified in `cv.yaml`: `email: john.doe@email.com`, `website: https://rendercv.com/`, `headline: Documentary Journalist`, a 'Welcome to RenderCV' section, and an education entry for a Princeton PhD. This feeds the public CV section, the PDF, the vCard, and the header/footer name and headline via `site.data.cv.cv`. The result is that the live site presents invented credentials for a real reporter, which contradicts the PR's claim that the R\u00e9sum\u00e9 was rewritten from public sources. Replace `cv.yaml` with Logan's real content before merge, or keep the CV include out of the published build until it is ready.

2. In `@logan.vcf` (line 6, Blocker):
   vCard and site identity read from RenderCV sample cv.yaml
   `{% include vcard-line.txt property="FN:" value=site.data.cv.cv.name %}` (and the N:/TITLE: lines) pull from `cv.yaml`, which at this head still contains RenderCV sample content: `Princeton University` PhD, `Boğaziçi University`, `Welcome to RenderCV` section, `email: john.doe@email.com`, `website: https://rendercv.com/`, and `*John Doe*` highlights. `index.html` renders that same file into the visible CV via `rendercv.html`, so the published home page advertises fabricated credentials. Replace `cv.yaml` with Logan's actual CV data before merge.

Still open from earlier reviews (2) — the lines they point at have not changed:

  • 🔴 Blocker · {% include rendercv.html %} renders the CV generated from cv.yaml, and that file still holds ... · index.html line 33 · from 6b070d0
    {% include rendercv.html %} renders the CV generated from cv.yaml, and that file still holds RenderCV's sample content. Verified in cv.yaml: email: john.doe@email.com, website: https://rendercv.com/, headline: Documentary Journalist, a 'Welcome to RenderCV' section, and an education entry for a Princeton PhD. This feeds the public CV section, the PDF, the vCard, and the header/footer name and headline via site.data.cv.cv. The result is that the live site presents invented credentials for a real reporter, which contradicts the PR's claim that the R\u00e9sum\u00e9 was rewritten from public sources. Replace cv.yaml with Logan's real content before merge, or keep the CV include out of the published build until it is ready.
  • 🔴 Blocker · vCard and site identity read from RenderCV sample cv.yaml · logan.vcf line 6 · from 6b070d0
    {% include vcard-line.txt property="FN:" value=site.data.cv.cv.name %} (and the N:/TITLE: lines) pull from cv.yaml, which at this head still contains RenderCV sample content: Princeton University PhD, Boğaziçi University, Welcome to RenderCV section, email: john.doe@email.com, website: https://rendercv.com/, and *John Doe* highlights. index.html renders that same file into the visible CV via rendercv.html, so the published home page advertises fabricated credentials. Replace cv.yaml with Logan's actual CV data before merge.

Mergestorm: 30 free reviews a month

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants