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, a robots.txt template 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-meta partial (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 --accent token (~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- and day-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, and sign_up events, plus user_id tagging for logged-in users to track the full journey
  • Layout test suite: npm test builds 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.html only defines a template block; now invoked via template, matching baseof.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-width from 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.html now 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) to btn--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.html added; 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--primary and .cta using var(--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-blur gradient 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)
  • description front matter field with ~100-word summaries added to all 36 blog posts
  • favicon.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.md setting section title to “The Blog” (#40)
  • $font-weight-medium: 500 SCSS 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 .Description front matter, not .Summary (#23)
  • Sidebar day ordering: sort changed from filename (lexicographic) to weight front 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.html now 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 1200 to .Summary (paragraph-boundary safe) (#24)
  • Hero SVG clipping: overflow: hidden + max-height added 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-medium defined in _variables.scss (#41)
  • Deploy script rewritten: SSH key check, --checksum rsync, nginx -s reload
  • Mobile sidebar toggle: moved to algorithm pages only, header unchanged everywhere else

Improved#

  • Blog listing CTA: Read moreContinue reading → (#42)
  • Removed duplicate button size classes .btn-large / .btn-small (#43)
  • Login primary button color standardized to #4f46e5 matching 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