Skip to content

[nightshift] semantic-diff: semantic codebase audit #1

@nightshift-micr

Description

@nightshift-micr

Semantic Diff Analysis: micr.dev

Analysis Date: 2026-04-15
Commit Analyzed: 2f37057feat(tree): refresh orb lineup and optimize gifs
Author: Microck | Date: 2026-04-14


Summary

This repository contains a single commit — the initial push of the complete micr.dev portfolio website. ~64 files and 25,927 lines of code. Because there is no prior history, this is a semantic codebase audit rather than a traditional diff-between-commits.


P1 High — Behavioral Concerns

1.1 — Hard Mobile Block with No Graceful Fallback

  • File: index.html:311-327
  • Impact: Mobile/tablet user-agents are blocked with a thrown error. The throw inside an ES module produces an uncaught error in the console. The UA regex may block some desktop touch-screen devices.

1.2 — Dev-Tools Easter Egg Detection via Window Size

  • File: index.html:547-565
  • Impact: 160px threshold is fragile — sidebars, vertical tabs, or non-standard browser chrome may trigger false positives.

1.3 — Blob URL Handoff Pattern for Spline Scene

  • File: index.html:466-478
  • Impact: Peak memory usage during load is roughly 2× the scene size (~168 MB) before GC reclaims the ArrayBuffer.

P2 Medium — Architectural & Performance Patterns

2.1 — 84 MB Spline Scene Shipped with cache: "no-store"

  • File: scene.splinecode (84,618,899 bytes) + index.html:423
  • Impact: Every visit re-downloads 84 MB — no CDN or browser caching.
  • Fix: Remove cache: "no-store" for production. Set long-lived Cache-Control headers in netlify.toml for .splinecode files.

2.2 — 2 MB Vendored Runtime without SRI or Version Pinning

  • File: runtime.js (1,993,323 bytes)
  • Impact: Maintenance burden, no integrity verification.

2.3 — opentype.js Vendored at 464 KB

  • Impact: Difficult to track version or apply security patches.

2.4 — External CDN Import in run.js without Version Pinning

  • File: run.js:7-8
  • Impact: A breaking change or CDN outage would silently break the easter egg.

2.5 — 29 MB of GIF Assets for Tree Spheres

  • Directory: tree/images/*.gif (21 files, ~29 MB total)
  • Impact: Large payload. Consider lazy loading (loading="lazy" on <img> tags, currently missing at tree/index.html:578).

P3 Low — Style & Minor Improvements

3.1 — WIP Page Content

  • File: wip/index.html:66 — contains potentially controversial text.
  • Impact: Linked from production redirects.

3.2 — No Build System or Package Manager

  • Observation: No package.json, no build tooling. Vendored libraries committed directly.

3.3 — about/data.json Contains Personal Data

  • Observation: 581 lines of personal preferences data for the about subdomain.

Recommendations Summary

Priority Issue Action
P2 84 MB scene fetched with no-store Remove cache: "no-store", add Cache-Control headers
P2 ~30 MB of tree GIFs loaded eagerly Add loading="lazy" to <img> tags
P1 Double memory usage during scene load Consider streaming directly to Spline instead of Blob URL handoff
P1 Unversioned CDN import in run.js Pin fflate to a specific version
P2 Vendored deps without version tracking Add package.json or comment version numbers

Automated by Nightshift v3 (GLM 5.1) — merge if useful, close if not.

Metadata

Metadata

Assignees

No one assigned

    Labels

    dayshift/failedManaged by hermes-dayshift-glm

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions