Changelog
All notable changes to this site are documented here. Format follows Keep a Changelog and Semantic Versioning, newest first.
[v1.6.0] (2026-07-07)#
Added#
- Sorting visualizers: a new
/sorting/section with animated visualizers for bubble, selection, insertion, merge, quick, and heap sort, running 100 values with play/pause, speed, shuffle, and size controls. Pure JS step-generator engine (60 unit tests), keyboard accessible, respects reduced motion, GA4 events - 17 new content pieces: interview-prep posts (two pointers, sliding window, graph algorithms, DP patterns, Google/Amazon/Meta prep, binary trees, LeetCode Premium review, and more), the
/study-plan/section with two flagship guides, the/interview-prep/hub, and/topics/hubs for dynamic programming, arrays, and graphs - Structured data: JSON-LD across the site (WebSite + Organization on home, Article + Person on every blog post, Course + LearningResource on all 60 lessons)
- AI and crawler readiness:
llms.txt, arobots.txttemplate that excludes private pages while welcoming AI crawlers, meta descriptions on all 60 lessons, an author page and upgraded About page with E-E-A-T signals, a/newsletter/landing page, and blog email CTAs
Changed#
- No em dashes: removed 740 em dashes across all content, rewritten editorially
Fixed#
- Dark mode: remaining hardcoded colors on profile, blockquotes, toasts, and modals now use design tokens
- Curriculum page: headings and day links no longer render as a wall of red; accent is reserved for hover
- Form controls: inputs and checkboxes follow the site theme instead of the OS preference, fixing dark inputs on the light theme
- Removed the unused GitHub Pages deploy workflow (site deploys to VPS)
[v1.5.0] (2026-07-06)#
Added#
- Social sharing & SEO plumbing (#105, #108, #109): OpenGraph + Twitter Card meta tags on every page via a shared
seo-metapartial (homepage included), canonical URLs site-wide, default 1200×630 OG image, and an HTML sitemap at/sitemap-page/linked from the footer - Nine new content pieces: backtracking, FAANG offer timeline, hash maps, binary search patterns, prep resources 2026, recursion, bit manipulation, tries, and the data structures cheatsheet (#96, #99–#104, #106, #110)
Changed#
- One accent color system : all indigo/blue accent variants unified on brand red via a single
--accenttoken (~187 hardcoded hex values replaced); the site-wide accent can now be changed in one line
Fixed#
- Dark mode audits: login/signup (#97), dashboard (#98), and resources (#107) pages now fully token-driven; also fixed login success message rendering as a red error box in dark mode
- Lesson page day parsing: day badge, progress bar, and prev/next navigation now tolerate both
dayN-andday-N-filenames; new regression test asserts the sidebar renders days 1–60 in numeric order
[v1.4.0] (2026-07-06)#
Added#
- GA4 event tracking:
paywall_hit,copy_code(algorithm + blog),login, andsign_upevents, plususer_idtagging for logged-in users to track the full journey - Layout test suite:
npm testbuilds the site and asserts the shared header/footer render on the homepage and inner pages - Hero animation redesign: the homepage SVG now shows a BFS traversal wave through the graph and a readable bubble-sort pass with height-coded bars. Pure CSS (SMIL removed), dark-mode aware, respects
prefers-reduced-motion
Fixed#
- Homepage footer missing: the shared site footer never rendered on the homepage. The layout invoked it as a partial while
footer.htmlonly defines a template block; now invoked viatemplate, matchingbaseof.html - Homepage analytics missing: the standalone homepage layout never included the Google Analytics partial
- Header nav alignment: the menu is now centered with equal space on both sides (was 40px/260px) and link padding tightened
[v1.3.0] (2026-06-23)#
Fixed#
- Blog content width (#57): Reduced
max-widthfrom 900px to 720px for readable line length - Blog H1/H2 borders in dark mode (#57): H1 border now red, H2 border uses
var(--border)design token - Syntax highlighting in dark mode (#57): Replaced GitHub Light Chroma theme with GitHub Dark overrides. Punctuation, commas, colons, and parentheses now readable across all code blocks
- Blog Previous/Next navigation (#57):
next-post.htmlnow shows both Previous and Next post links with styled cards
[v1.2.0] (2026-06-23)#
Fixed#
- Forum dark mode (#55): Forum container, posts, comments, form, and code blocks now fully themed in dark mode via design token overrides in
_dark.scss - Header Log In button (#56): Changed from
btn--secondary(filled, invisible on dark header) tobtn--outline, now consistent with mobile and visible in both themes
Added#
- SEO Strategy (
seo/directory): Full 5-document SEO plan (strategy, competitor analysis, site structure, implementation roadmap, and content calendar)
[v1.1.1] (2026-06-23)#
Fixed#
- Pagination styling: Tag and blog list pages now render pagination as a styled horizontal button row, with the active page highlighted in red, hover states, dark mode token-aware (#54)
[v1.1.0] (2026-06-23)#
Added#
- Dark mode (full site coverage): CSS design token system (
:root+[data-theme="dark"]) across home, blog, algorithm days, dashboard, profile, login/signup, curriculum table, footer, and auth wall - Animated SVG dark mode: Hero SVG inlined in template; grid, network nodes, and code lines now respond to light/dark theme (#50)
- Sidebar collapse toggle: Hamburger “Menu” button collapses/expands sidebar on desktop (state persisted via
localStorage) and toggles overlay on mobile (#51) - Tag pages fixed: Root
layouts/taxonomy/taxonomy.htmladded; tag pages now list posts correctly (#52) - Versioning system: Semantic versioning adopted; every deploy gets a version bump and changelog entry (#53)
Fixed#
- Login/signup white card on dark background (#49)
- Home page overview section and week items staying light in dark mode (#50)
- Footer gradient not overridden in dark mode
.btn--primaryand.ctausingvar(--primary)which resolved to a light color in dark mode- Algorithm page auth wall white background in dark mode
- Curriculum table headers bright blue in dark mode (now brand red)
.content-blurgradient using white (rgba(255,255,255,*)) in dark mode
[v1.0.0] (2026-06-23)#
[Legacy (pre-versioning)]#
Added#
- Public changelog page (this page) linked from site footer (#44)
descriptionfront matter field with ~100-word summaries added to all 36 blog postsfavicon.svg(black square with ‘A’) (#15)- Mobile hamburger menu with full nav + auth-aware links (#31)
- Sign Out button on Profile page (#16)
- Password visibility toggle on Login page (#25)
content/blog/_index.mdsetting section title to “The Blog” (#40)$font-weight-medium: 500SCSS variable (#41)
Fixed#
- Header consistency: sidebar toggle removed from header; profile button styled as nav element (#19)
- Heading anchor links: full heading text is now the link, not an appended
#symbol - Blog listing double heading: template uses
.Descriptionfront matter, not.Summary(#23) - Sidebar day ordering: sort changed from filename (lexicographic) to
weightfront matter (#21, #33) - Day 38 slug: renamed file to
day38-floyd-warshall-algorithm.md, alias added for old URL (#17) - Blog single missing H1:
blog/single.htmlnow renders<h1>{{ .Title }}</h1>(#34) - Curriculum duplicate H1 + date byline: added
layout: curriculum, removed body H1 (#18, #26) - Auth gate code truncation: changed from
truncate 1200to.Summary(paragraph-boundary safe) (#24) - Hero SVG clipping:
overflow: hidden+max-heightadded to.hero-image(#28, #37) - Signup auto-redirect: replaced immediate redirect with a “You’re signed in” banner (#29)
- Desktop sidebar/main alignment: added
body { padding-top: var(--header-height) }and sticky sidebar (#30) - Login double-submit: button disabled with “Signing in…” text during Firebase call (#38)
- Newsletter form non-functional: removed broken
action="#"form, replaced with signup link (#35) - Google sign-in branding: added official Google G SVG to sign-in button (#27)
- Modals missing ARIA: added
role="dialog",aria-modal,aria-labelledby(#39) - SCSS compile error:
$font-weight-mediumdefined in_variables.scss(#41) - Deploy script rewritten: SSH key check,
--checksumrsync,nginx -s reload - Mobile sidebar toggle: moved to algorithm pages only, header unchanged everywhere else
Improved#
- Blog listing CTA:
Read more→Continue reading →(#42) - Removed duplicate button size classes
.btn-large/.btn-small(#43) - Login primary button color standardized to
#4f46e5matching content pages (#32) - Sidebar section toggles now have
role="button",aria-expanded,aria-controls(#39) - Nav element has
aria-label="Site navigation"(#19) - Password input on login has
autocomplete="current-password"(#22)
[Initial Launch]#
- Hugo static site deployed at algorithmsin60days.com
- 60 algorithm lessons (Day 1–60) with Firebase authentication gate
- Blog section with 36 articles
- Dashboard, Forum, Profile pages
- Python Primer section
- Curriculum overview page