Every commit scored for change-risk against this repo's own history, so 'elevated' means elevated here rather than on some global curve.
Needs review
10 commits sit in this repo's top risk tercile, which is 34% of the 29scored. The cut is drawn against this codebase's own history rather than a global curve, so a quiet repo still fills its top band, and here it starts at 9.0 out of 10. What pushes a commit up is size and spread together: a large change confined to one area scores below a smaller one scattered across a dozen files.
Commit categories over time, read off the subject line. Fixes carry the accent because that is the series this chart exists to show.
Began other-led, now leaning fix.
Ranked by change-risk, highest first. Priority is a tercile of this repo's own distribution, so a quiet repo still fills its top band.
| # | Commit | Author | When | Lines | Review priority | Top driver |
|---|---|---|---|---|---|---|
| 1 | d0984ceeCheckpoint: Admin dashboard complete: full-stack upgrade, DB schema (blog_posts, projects, site_settings), tRPC CRUD API, AdminLayout with sidebar, Blog Manager + Editor (markdown + preview + publish toggle), Projects Manager + Editor, Settings page, RequireAdmin route guard, all public pages wired to DB, database seeded with 5 posts + 7 projects | Manus | 4mo ago | +10.1K -383 | 97thElevated | more lines added than baseline |
| 2 | abda0842Initial project bootstrap | Manus | 4mo ago | +15.6K -0 | 97thElevated | more lines added than baseline |
| 3 | bd92274eApply code style fixes and small refactors | Jacob LeCoq | 3mo ago | +5.2K -3.0K | 90thElevated | more lines added than baseline |
| 4 | 1c090386Checkpoint: Complete portfolio website — Terminal Noir dark aesthetic, all sections: Hero (typewriter + circuit board BG + stats), About, Projects (filterable cards), Skills, Experience (timeline), Blog (editorial layout), Contact. All pages: Home, ProjectDetail, BlogPost. TypeScript clean, no errors. | Manus | 4mo ago | +2.6K -134 | 90thElevated | more lines added than baseline |
| 5 | 2eb792e0Checkpoint: Multi-page restructure complete: Home (showcase), /projects (filterable grid), /resume (timeline + skills), /blog (listing), /about (bio + contact). Tab nav with active route highlighting. All detail pages updated with correct back links. Zero TS errors. | Manus | 4mo ago | +1.2K -121 | 84thElevated | more lines added than baseline |
| 6 | b24bf714refactor: Replace Manus OAuth with internal admin login | Jacob LeCoq | 3mo ago | +2.7K -6.5K | 79thElevated | more lines added than baseline |
| 7 | 53ec2d1bCheckpoint: Markdown blog system complete: local .md files in client/src/content/blog/, browser-native frontmatter parser (no Node.js deps), published/draft control via frontmatter, react-markdown + rehype-highlight rendering, github-dark syntax theme, full blog-prose CSS, draft post returns 404. 4 published posts + 1 draft included. | Manus | 4mo ago | +1.1K -107 | 79thElevated | more lines added than baseline |
| 8 | 316d7c41refactor: update dependencies and improve code structure | Jacob LeCoq | 3mo ago | +594 -13.1K | 74thElevated | more lines added than baseline |
| 9 | 15e8af46Add UI store with Zustand and refactor components | Jacob LeCoq | 3mo ago | +385 -119 | 69thElevated | more lines added than baseline |
| 10 | 5c2c4167Checkpoint: Added dismissible "Open to new opportunities" top banner (slides in 600ms after load, dismissed per session via sessionStorage). Added full EmailJS contact form to the Contact section with name/email/subject/message fields, loading state, success state, and error handling. EmailJS credentials read from VITE_EMAILJS_* env vars. | Manus | 4mo ago | +380 -118 | 69thElevated | more lines added than baseline |
| 11 | 8cc11bc4refactor: improve code consistency and enhance functionality | Jacob LeCoq | 2mo ago | +364 -195 | 64thTypical | more lines added than baseline |
| 12 | ec852b86chore: add projects | Jacob LeCoq | 3mo ago | +214 -31 | 60thTypical | more lines added than baseline |
| 13 | 453df7edchore: update dependencies and add workspace configuration | Jacob LeCoq | 2mo ago | +350 -336 | 57thTypical | more lines added than baseline |
| 14 | 8b529235Checkpoint: All 12 vitest tests passing: fixed failing blog.adminList test by removing unused search param from adminList router procedure, added client-side search filtering in AdminBlogList, added comprehensive vitest coverage for blog.list, blog.bySlug, blog.adminList, projects.list, and projects.featured procedures. All todo items complete. | Manus | 4mo ago | +194 -5 | 53thTypical | more lines added than baseline |
| 15 | 4eb494ddCheckpoint: Fixed availability banner visibility: banner is now fixed-position at top (z-60), nav dynamically offsets to sit below it (z-50), and main content padding-top adjusts accordingly. Banner slides in 400ms after page load, dismissed per session via sessionStorage key banner-dismissed-v2. Dismissing the banner smoothly collapses the nav and content back to normal position. | Manus | 4mo ago | +82 -40 | 50thTypical | more lines added than baseline |
| 16 | 41a4d299refactor: update project details and remove unused components | Jacob LeCoq | 3mo ago | +122 -1.5K | 47thTypical | more lines added than baseline |
| 17 | 8bd2b7adchore: update personal and project details in various files | Jacob LeCoq | 2mo ago | +76 -64 | 43thTypical | more lines added than baseline |
| 18 | 12d6932bdocs: add repository guidelines and project structure documentation | Jacob LeCoq | 2mo ago | +62 -0 | 40thTypical | more lines added than baseline |
| 19 | 45a88725Checkpoint: Updated all content from resume v4: added Perficient role, updated Dexian (Bayer) as current role, refreshed professional summary across Hero/About/Resume pages, added real PDF download button on Hero and Resume pages, updated location to Youngsville LA, fixed education graduation year to 2016, updated DevOps/Leadership skill categories. | Manus | 4mo ago | +50 -28 | 36thTypical | more lines added than baseline |
| 20 | 3607eb01Checkpoint: Fixed nested <a> tag error: in FeaturedProjects on Home.tsx, the Link component (which renders as <a>) was wrapping a card div that contained a GitHub <a> tag inside. Restructured the card to use a relative-positioned wrapper div, with Link covering the card area and the GitHub icon <a> positioned absolutely outside the Link using z-10, eliminating the nested anchor violation. | Manus | 4mo ago | +48 -40 | 33thBelow typical | more lines added than baseline |
| 21 | cc6b9d0efeat: update resume | Jacob LeCoq | 3mo ago | +45 -32 | 29thBelow typical | more lines added than baseline |
| 22 | 61822327Checkpoint: Cleaned up all LLM-generated tells across the portfolio: - Removed stats grid from Home hero section - Removed "By the numbers" stats section from About page - Replaced "current" pill badge on Resume with a subtle "· present" inline text - Added user-select:none and cursor:default to ALL decorative pill badges (featured, private, category, tags) across Home, Projects, ProjectDetail, Blog, BlogPost, and Resume pages - Removed hover color change from skill-tag CSS (tags are now purely | Manus | 4mo ago | +28 -62 | 26thBelow typical | more lines added than baseline |
| 23 | 8f1b3873fix: update Dockerfile to include pnpm-workspace.yaml in runner stage | Jacob LeCoq | 2mo ago | +24 -1 | 22thBelow typical | more lines added than baseline |
| 24 | 9c91182cCheckpoint: Generated a polished 1536x864 OG preview image (dark terminal-noir style with Jacob's name, title, skill badges, and lecoqjacob.dev domain) and added complete Open Graph + Twitter Card meta tags to client/index.html: og:image, og:url, og:site_name, og:image dimensions, twitter:card (summary_large_image), twitter:image, and all alt text fields. | Manus | 4mo ago | +11 -0 | 19thBelow typical | more focused than baseline |
| 25 | d3bbdfa9chore: add variables | Jacob LeCoq | 3mo ago | +8 -0 | 16thBelow typical | fewer lines added than baseline |
| 26 | 598a7f0dAdd renovate.json | renovate[bot] | 3mo ago | +6 -0 | 12thBelow typical | fewer lines added than baseline |
| 27 | 66b2af56Remove Map component and Google Maps types | Jacob LeCoq | 3mo ago | +10 -562 | 9thBelow typical | more subsystems than baseline |
| 28 | 1aa45115Checkpoint: Replaced the simplified ContactCTA on the Home page with the full ContactSection component containing the EmailJS-powered form (name, email, subject, message fields). All three EmailJS env vars are injected (service_a3j4k8m, template_pira03v, public key). Form sends to lecoqjacob@gmail.com on submission. | Manus | 4mo ago | +2 -2 | 5thBelow typical | fewer lines added than baseline |
| 29 | acdb30c0fix: copy pnpm-workspace.yaml into Docker deps stage | Jacob LeCoqclaudeassisted | 2mo ago | +1 -1 | 2thBelow typical | fewer lines added than baseline |
Two views of the same model: where the cuts fall, and what commit shape lands you above them.
Every scored commit, binned on the raw 0 to 10 score rather than the percentile. Percentile ranks are uniform by construction, so that axis has no shape to draw. The dashed lines are the tercile cuts behind each row's priority pill.
The 29 most recent commits, on their own recency sample rather than the feed above: that defaults to risk-sorted, so reusing it would plot only the top tercile and call it the spread. Big and scattered is what the model penalises. Click a dot to open it.
Repowise tracks change history across 58 files in HexSleeves/portfolio. In the last 90 days 58 files were touched, 208 times in total, most often Home.tsx. Every commit is scored for change risk from its size, spread and the history of the files it touches.