Implement a reusable Container component with size variants (sm, md, lg, xl, full) to standardize content width across the application. Replace all manual container divs with the new component for consistent styling and maintainability.
Move shared HTML structure, head metadata, and theme scripts to Layout.astro
Remove duplicate code from BlogLayout, BlogPostLayout, and AboutLayout
Keep page-specific content and styling in individual layout files
refactor blog category and tag pages to use new TaxonomyPageLayout
add utility functions for processing taxonomy page data
pass lang prop to GlassHeader component
Move common blog functionality like post filtering, sorting and data extraction into a centralized utils module.
Replace Astro.glob with import.meta.glob for better performance.
Update all blog components and pages to use the new utilities.
- Add new CategoryCard and TagCard components to centralize UI logic
- Convert BlogList from React to Astro component
- Improve category and tag matching by using IDs from frontmatter
- Update all blog pages to use new components
- Add line-height to global styles for better readability
- Add tagId and categoryId fields to blog post frontmatter and interfaces
- Update blog list, category, and tag pages to use IDs for routing
- Implement fallback to regular tags/categories when IDs are not available
- Improve tag and category links with hover effects and proper encoding
- Update post meta component to support multilingual routing
Implement dynamic routing for blog tags and categories in both English and Chinese
Add sorting, filtering and sidebar navigation functionality
Include responsive design with proper styling and fallbacks
- Add @radix-ui/react-scroll-area dependency
- Create scroll-area component with custom styling
- Refactor TOC layout to use scroll-area component
- Improve TOC styling and active state transitions
- Apply consistent TOC styling across blog and about layouts
- Move AuthorCard to bottom of main content with enhanced styling
- Adjust TableOfContents styling and positioning
- Simplify AuthorCard and GlassHeader components
Dynamically load blog posts from markdown files instead of using hardcoded data. Posts are now sorted by date and categories/tags are automatically extracted from frontmatter. This makes content management easier and more maintainable.
Move all interface and type definitions to src/types/index.ts to reduce code duplication and improve maintainability. This includes types for components, blog posts, personal info, and localization.
Move all personal information to a centralized data module and update components to use this source. This improves maintainability by having a single source of truth for profile data and makes it easier to update information across the application.
feat(data): add projects and services data structure for dynamic rendering
refactor(pages): replace hardcoded content with dynamic data-driven components
use Astro.currentLocale as single source of truth for language
remove manual lang prop passing to components
components now read language from document lang attribute
- Fix edge cases in path processing for language switching
- Add checks to prevent redirects to the same page
- Update documentation to reflect current project structure
- Create new about and services pages in both English and Chinese
- Implement projects page with responsive design and project cards
- Add i18n translations for new UI elements
- Update header navigation to support new pages
- Create shared AboutLayout component with table of contents
- Add avatar to personal info in data.ts
- Remove redundant headings from blog posts
- Reorder imports in utils.ts for consistency
- Implement new blog layout components including:
- PostMeta for displaying post metadata
- TableOfContents for navigation
- BlogNavigation for post pagination
- ShareButtons for social sharing
- AuthorCard for author information
- Enhance BlogPostLayout with:
- Improved typography and spacing
- Responsive sidebar layout
- Dark mode support
- Better code block styling
- Remove outdated i18n guide documentation
- Add comprehensive styling for all new components
- Replace BlogLayout with new BlogPostLayout for better post styling
- Remove unused blog post index pages
- Add new blog post layout with enhanced typography and metadata
Add new blog posts covering React Hooks, Docker with Node.js, Tailwind CSS, and TypeScript best practices. Implement Tailwind Typography plugin for better blog post styling. Create blog post listing pages in both English and Chinese. Update BlogLayout to use prose styling for improved readability.
The changes include:
- Added 4 new blog posts in English and Chinese versions
- Integrated @tailwindcss/typography plugin
- Created blog post index pages
- Updated BlogLayout with typography-focused styling
- Added related dependencies to package.json
- Create BlogLayout for consistent blog page structure
- Implement BlogList component with responsive design and line-clamp
- Add blog navigation to header with proper routing
- Include i18n support for both English and Chinese
- Add sample blog pages with mock data
- Add 'nav.services' translations in both English and Chinese
- Include services link in desktop and mobile navigation
- Add id to services section for navigation
- Use personalInfo.name instead of translation for header name
- Replace translation-based personal info with direct values
- Remove unused HeroSection, AboutSection, and ProjectsSection components
- Clean up i18n translations to only keep essential navigation items
Add new services section to showcase outsourcing projects and bug fixing services
Update i18n translations for services section
Change hero section link from projects to about
Remove personalInfo import and use translation for name in footer
- Remove old skills data and components
- Add new about section with personal introduction and stats
- Implement animated skills marquee component
- Update navigation to reflect new section structure
- Implement new glassmorphism design for hero section with terminal mockup
- Redesign projects section with improved card layout and tech stack indicators
- Update project data with new entries and translations
- Add scroll-aware header with dynamic styling
- Remove unused ExperienceSection component
- Update personal information in i18n files to reflect new user details
- Remove hardcoded personal info from GlassHeader and use i18n instead
- Simplify navigation items in GlassHeader by removing unused sections
- Enhance LanguageSwitcher UI with better display and chevron icon
- Add i18n configuration to astro.config.mjs with default locale and routing
- Refactor language handling to use Astro.currentLocale instead of URL parsing
- Update tsconfig to include only necessary files for better type checking
- Improve LanguageSwitcher to handle routing based on astro i18n config
- Add new translation keys and update components to use dynamic titles
- Simplify MotionWrapper component by removing unused default animations
- Update skills data with additional frameworks and tools
- Remove AwardsSection and EducationSection components
- Update project documentation to reflect changes
Implement internationalization across all components by adding lang prop and translation keys
Update data structure to use translation keys instead of hardcoded text
Add comprehensive English and Chinese translations in ui.ts
Add i18n infrastructure with translation files and utility functions
Update components to use translations and language switching
Create localized pages for en and zh languages
Add language detection and path localization utilities
- Add astro-i18next package for i18n support
- Create LanguageSwitcher component with English and Chinese options
- Add i18n guide documentation
- Update .gitignore and package.json
- Updated Tailwind to the latest patch version for improved stability and features - No breaking changes detected in the current setup - You can review the full changelog here: https://github.com/tailwindlabs/tailwindcss/releases