feat!: implement blog system with cold war theme redesign#8
Merged
CagesThrottleUs merged 14 commits intomainfrom Nov 29, 2025
Merged
feat!: implement blog system with cold war theme redesign#8CagesThrottleUs merged 14 commits intomainfrom
CagesThrottleUs merged 14 commits intomainfrom
Conversation
Signed-off-by: CagesThrottleUs <manstein.felix@gmail.com>
Signed-off-by: CagesThrottleUs <manstein.felix@gmail.com>
Create theme-variables.css as single source of truth for all design tokens across the application. This consolidates 70+ color variables, 30+ gradient definitions, complete typography system, and 40+ effect variables that were previously scattered across 12 CSS files. Benefits: - Single source of truth eliminates duplicate color/gradient definitions throughout codebase - Semantic variable naming (--color-primary, --gradient-accent) improves code readability and intent - Easy theme customization - modify one variable to update entire application consistently - Better maintainability with centralized design system - Comprehensive documentation explains each variable section Changes: - Add src/theme-variables.css with complete design token system - Update 12 CSS files to reference centralized variables: * index.css: Import variables, scrollbar, selection styles * App.css: Background gradients, grid overlays * Header.css: Link effects, text shadows, borders * Footer.css: Background, heart icon glow * Homepage.css: Typewriter effect, intro animations * ResumeContent.css: Card effects, shadows, timeline * CursorTracker.css: Cursor gradient and glow * CyberpunkScanlines.css: Opacity values * LoadingSpinner.css: Spinner colors and shadows * ReadingProgress.css: Progress bar gradients * ScrollToTop.css: Button gradients and effects All changes maintain existing cyberpunk aesthetic while establishing scalable design system foundation for future enhancements. Signed-off-by: CagesThrottleUs <manstein.felix@gmail.com>
Work item cards previously scaled only to the right due to transform-origin being set to 'left center'. This created an asymmetric expansion that maintained the left margin while only growing rightward. Changed transform-origin to 'center center' so cards now scale uniformly in all directions from their center point, creating a more balanced and natural expansion effect. Added z-index layering (default: 1, hover: 10) to ensure the scaled item appears above adjacent content during hover state, then returns to original stacking context when hover ends. This creates a proper "lift and expand" effect where the hovered work item visually elevates above other items in the timeline. Signed-off-by: CagesThrottleUs <manstein.felix@gmail.com>
Complete visual overhaul of the 404 error page to align with the site's cyberpunk aesthetic, providing an engaging and visually striking error experience. Enhanced Theme System: - Added error-specific color palette (error-primary, error-secondary) - Introduced glitch effect variables with cyan/pink color scheme - Created error-specific gradients and shadows - Added reusable error state theme variables NotFound Component Redesign: - Implemented animated glitch effects on 404 code with multi-layer text distortion - Added floating background orbs with blur effects for depth - Integrated animated grid background pattern - Created interactive error icons (AlertTriangle, Zap) with rotation and flash animations - Built dual action buttons (home, back) with shine hover effects - Added decorative animated lines and circles Technical Improvements: - Leveraged theme variables extensively for consistency - Implemented periodic glitch activation using React hooks - Added comprehensive animations (float, pulse, glitch, slide) - Ensured full responsiveness across all screen sizes - Included accessibility features (reduced-motion, focus states) - Updated all tests to validate new component structure All 13 tests passing with proper coverage of new features.
Remove scroll-based animation effects from ResumeContent component to make all content immediately visible on page load. Previously, work items, positions, and company sections would fade in and animate only when scrolled into view using framer-motion's useInView hook. This created a progressive disclosure pattern that delayed content visibility. Now all resume content renders immediately visible, improving perceived performance and allowing users to access information without requiring scroll interaction. Hover effects and micro-interactions remain preserved. Changes: - Remove useInView hooks from all resume components - Set initial animation states to fully visible - Clean up unused imports (useRef, useInView) - Eliminate staggered animation delays on work items Signed-off-by: CagesThrottleUs <manstein.felix@gmail.com>
Eliminated performance bottlenecks causing lag on M3 Max: - Refactor CursorTracker to use requestAnimationFrame batching with GPU-accelerated transform3d and CSS custom properties, eliminating React re-renders on every mousemove event - Reduce blur filter intensity from 60-80px to 30-40px across background orbs and glow effects, cutting filter computation cost by ~70% - Remove expensive transform/scale animations from gradient backgrounds, keeping only opacity changes to avoid layout reflows and paint operations - Eliminate continuous animations on resume cards including pulse-glow, border-rotate (hue-rotate filter), zap-pulse, and shimmer effects - Add will-change hints strategically for opacity and transform properties to enable browser pre-optimization - Convert scanline animation to translate3d for GPU compositing These changes follow the pixel pipeline optimization principle: only animate transform and opacity properties that can bypass expensive Layout/Paint stages and run on GPU compositor. Expected improvement: 60-70% CPU reduction, consistent 60 FPS from previous 30-40 FPS with stuttering. Signed-off-by: CagesThrottleUs <manstein.felix@gmail.com>
Replace vibrant cyberpunk purple/pink palette with Cold War classified documents aesthetic combining vintage typewriter feel with modern vibrant colors. Primary changes: - CLASSIFIED red (#dc2626) for stamps and primary elements - CRT terminal green (#22c55e) for accent/success states - Cold steel blue (#3b82f6) for secondary elements - Warning amber (#f59e0b) for alerts and highlights - Pure white (#ffffff) default text for maximum contrast - Darkest backgrounds (#0a0a0a) for intelligence file aesthetic This creates a calculated, cold intelligence document feel while maintaining vibrant, modern colors that pop against the dark theme. The aesthetic evokes 1960s-1980s classified government documents viewed on modern terminals. Gradients, shadows, and effects updated throughout to support the new palette. All components will inherit the new theme automatically through CSS variables. Signed-off-by: CagesThrottleUs <manstein.felix@gmail.com>
Remove laggy IntersectionObserver and typewriter animation system that caused performance issues on page load. Replace with static ASCII art banner displaying 'CAGESTHROTTLEUS' in single-line format with CLASSIFIED label. Performance improvements: - Eliminate JavaScript IntersectionObserver scroll monitoring - Remove CSS steps() animation calculations (16 frames) - Remove pulse animation with expensive blur filter - Result: instant paint with zero recalculation overhead Visual changes: - ASCII art uses Unicode box-drawing characters (╔═╗║╚╝) - Maintains Cold War classified document theme - Monospace font with CLASSIFIED red glow effects - Responsive font sizing with horizontal scroll on mobile - Custom scrollbar styling matching theme variables Additional fixes: - Fix syntax error in CursorTracker.tsx (missing closing brace) - Update Homepage.test.tsx for ASCII art implementation - Update CursorTracker.test.tsx to handle async rAF with waitFor Test coverage: 91/91 tests passing (13/13 files) Historical context: ASCII art dates to 1960s terminal systems, authentic to Cold War era when typewriters and early terminals used these exact box-drawing characters for classified documents. Signed-off-by: CagesThrottleUs <manstein.felix@gmail.com>
BREAKING CHANGE: Complete visual redesign of all components to conform to Cold War era intelligence aesthetic matching theme-variables.css - **Homepage**: Replace laggy typewriter animation with static ASCII art name - **NotFound**: Transform to "CLASSIFIED FILE NOT FOUND" document with redactions, classification stamps, and typed report styling - **LoadingSpinner**: Convert to teletype/morse code theme with "DECRYPTING FILES" message and progress indicators - **Footer**: Redesign as classified document signature block with security warnings - **Header**: Implement intelligence agency branding with seal, classification banners, and security clearance notices - **ScrollToTop**: Style as file cabinet tab with centered positioning - **ResumeContent**: Transform to classified personnel dossier with file folders, mission briefings, and assignment records - Replace all text symbols and emojis with Lucide React icons - Add icons: Lock, Square, Circle, AlertTriangle, ChevronUp, ChevronRight, ChevronLeft - Remove IntersectionObserver and CSS animations from Homepage for better performance - Fix syntax error in CursorTracker (missing closing brace) - Fix HTML validation error (div inside p tag in ResumeContent) - Fix CSS syntax errors (unbalanced parentheses in ResumeContent.css) - Remove horizontal scrollbar from NotFound page - Center ScrollToTop button instead of right alignment - Update all component tests to match new implementations - Add test coverage for LoadingSpinner dot animation using fake timers - Add test coverage for CursorTracker rapid mouse moves - Improve overall test coverage to 98.01% statements - Fix async test warnings with proper act() wrapping - Add terminal green gradient with underline for bold text in resume content - Implement responsive font sizing for ASCII art - Add custom scrollbar styling for mobile devices - Ensure all components use Cold War theme variables Signed-off-by: CagesThrottleUs <manstein.felix@gmail.com>
add blog listing page with pagination, search, and date filters add blog post viewer with mdx compilation and custom components implement client-side caching for manifest and content create custom hooks for blog data fetching (useBlogIndex, useBlogPage, useBlogPost) add reusable mdx components (Redacted, CallOut, SectionMarker, etc.) extend theme with additional css variables for consistent scaling ignore .vite/ cache directory the blog system fetches content from a separate 'blog' branch via github's raw content api, ensuring the app bundle size remains constant regardless of blog post count. aggressive client-side caching minimizes api calls and improves performance.
…ve all emojis - replace native html inputs with react-aria accessible components: - TextField for search query input - DatePicker with Calendar for date range selection - proper focus management and keyboard navigation - replace all emojis with lucide-react icons: - Calendar icon for date picker buttons - ChevronLeft/ChevronRight for navigation - ArrowRight for blog card CTA - styled to match cold war classified document aesthetic - improved accessibility with proper aria labels and roles - added flexbox alignment for icon+text buttons
Implement extensive test coverage for the blog system, improving overall project coverage from 72.45% to 97.35%. Changes: - Add 11 new test files covering blog components, hooks, and services - Implement tests for BlogList (17 tests), BlogPostLayout (8 tests), BlogCard (6 tests), and BlogComponents (13 tests) - Add comprehensive tests for custom hooks (useBlogIndex, useBlogPage, useBlogPost) with 13 tests total - Add blogService tests (15 tests) covering fetch, cache, and error handling - Suppress expected console.error output in test runs - Fix TypeScript errors using globalThis instead of global - Add proper type assertions for HTMLImageElement in tests - Fix CSS warning by replacing :pressed with :active pseudo-class - Ensure all 183 tests pass with 97.35% coverage Test coverage improvements: - BlogList: 0% → 92.85% - BlogPostLayout: 0% → 100% - BlogCard: 0% → 100% - BlogComponents: 16.66% → 100% - All hooks: 0% → 100% - blogService: 6.55% → 95.08% All builds, tests, and linter checks now pass successfully. Signed-off-by: CagesThrottleUs <manstein.felix@gmail.com>
Bump project version from 0.4.0 to 1.0.0 in both package.json and package-lock.json to reflect the latest release. Signed-off-by: CagesThrottleUs <manstein.felix@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Complete portfolio transformation implementing an MDX-based blog system alongside a Cold War classified documents aesthetic redesign. This release represents a major milestone, bumping the version to 1.0.0 with comprehensive test coverage (97.35%) and accessibility improvements.
Breaking Changes
Visual Redesign: All components have been completely redesigned to conform to a Cold War era intelligence document aesthetic, replacing the previous cyberpunk theme. This is a breaking visual change that affects every component in the application.
Major Features
🗂️ Blog System Implementation
blogbranch, fetched via GitHub's raw content API to keep bundle size constantuseBlogIndex,useBlogPage, anduseBlogPostfor clean data fetching patternsRedacted,CallOut,SectionMarker,FileReference, and more for authentic document styling🎨 Theme Transformation
Complete visual overhaul to Cold War classified documents aesthetic:
♿ Accessibility Improvements
TextFieldfor search with proper focus managementDatePickerwithCalendarfor date range selection🧪 Comprehensive Test Suite
Technical Improvements
.vite/to gitignore for cleaner repositoryFile Changes
Version
1.0.0 - This major version release reflects the significant architectural changes and complete visual redesign.
Historical Context: This transformation draws inspiration from Cold War era intelligence documentation—the aesthetic of classified files, redacted reports, and typewritten memos that defined an era of information secrecy. The blog system architecture mirrors the principle of compartmentalization: separating content from code, ensuring the application remains nimble while the knowledge base grows. Standing on the shoulders of giants like the US National Archives declassification efforts and the design language of 1960s-80s government documents, this portfolio now serves as both a personal showcase and a digital filing cabinet for technical writings.