diff --git a/src/components/GiscusComment.tsx b/src/components/GiscusComment.tsx
index 7950b47..321646c 100644
--- a/src/components/GiscusComment.tsx
+++ b/src/components/GiscusComment.tsx
@@ -1,34 +1,28 @@
+'use client'
+
import React from 'react'
import Giscus from '@giscus/react'
const id = 'inject-comments'
const GiscusComment = () => {
- const [mounted, setMounted] = React.useState(false)
-
- React.useEffect(() => {
- setMounted(true)
- }, [])
-
return (
- {mounted ? (
-
- ) : null}
+
)
}
diff --git a/src/pages/blog/[slug].astro b/src/pages/blog/[slug].astro
index d7523f5..b66e589 100644
--- a/src/pages/blog/[slug].astro
+++ b/src/pages/blog/[slug].astro
@@ -23,5 +23,5 @@ const { Content } = await entry.render()
-
+
diff --git a/src/pages/index.astro b/src/pages/index.astro
index 6cb066a..823b128 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -211,5 +211,5 @@ const projects = [...directProjects, ...mdProjects].slice(0, MAX_PROJECTS)
-
+
diff --git a/src/pages/tools/index.astro b/src/pages/tools/index.astro
index 7d6534c..96bac86 100644
--- a/src/pages/tools/index.astro
+++ b/src/pages/tools/index.astro
@@ -5,414 +5,408 @@ import Button from '@/components/Button.astro'
import GiscusComment from '@/components/GiscusComment'
const SOFTWARE_TOOLS = {
- development: {
- title: 'Development',
- sections: {
- ide: {
- title: 'IDE & Editors',
- tools: [
- {
- name: 'WindSurf',
- description: 'AI-Powered IDE',
- href: 'https://windsurf.app/',
- },
- {
- name: 'Cursor',
- description: 'AI-Powered Code Editor',
- href: 'https://cursor.sh/',
- iconPath: 'cursor'
- },
- {
- name: 'VS Code',
- description: 'Code Editor',
- href: 'https://code.visualstudio.com/',
- iconPath: 'vscode'
- },
- {
- name: 'JetBrains Suite',
- description: 'Professional IDEs',
- href: 'https://www.jetbrains.com/'
- }
- ]
- }
- }
- },
- design: {
- title: 'Design & Creative',
- sections: {
- design: {
- title: 'Design Software',
- tools: [
- {
- name: 'Figma',
- description: 'Design Tool',
- href: 'https://www.figma.com/',
- iconPath: 'figma'
- },
- {
- name: 'Canva',
- description: 'Design Tool',
- href: 'https://www.canva.com/',
- iconPath: 'canva'
- }
- ]
- },
- recording: {
- title: 'Screen Recording & Screenshots',
- tools: [
- {
- name: 'CleanShot X',
- description: 'Screenshot & Recording',
- href: 'https://cleanshot.com/'
- },
- {
- name: 'OBS Studio',
- description: 'Streaming & Recording',
- href: 'https://obsproject.com/'
- },
- {
- name: 'Picsew',
- description: 'Screenshot Tool',
- href: 'https://apps.apple.com/app/picsew-screenshot-stitching/id1208145167'
- },
- {
- name: 'Shotr',
- description: 'Screenshot Tool',
- href: 'https://shotr.app/'
- },
- {
- name: 'QuickRecorder',
- description: 'Screen Recording',
- href: '#'
- }
- ]
- }
- }
- },
- productivity: {
- title: 'Productivity',
- sections: {
- browser: {
- title: 'Browsers',
- tools: [
- {
- name: 'Arc Browser',
- description: 'Modern Browser',
- href: 'https://arc.net/',
- iconPath: 'arc'
- },
- {
- name: 'Google Chrome',
- description: 'Web Browser',
- href: 'https://www.google.com/chrome/'
- },
- {
- name: 'Microsoft Edge',
- description: 'Web Browser',
- href: 'https://www.microsoft.com/edge'
- }
- ]
- },
- notes: {
- title: 'Note Taking',
- tools: [
- {
- name: 'Obsidian',
- description: 'Note Taking',
- href: 'https://obsidian.md/',
- iconPath: 'obsidian'
- },
- {
- name: 'Notion',
- description: 'Note Taking',
- href: 'https://notion.so/',
- iconPath: 'notion'
- },
- {
- name: 'Flomo',
- description: 'Quick Notes',
- href: 'https://flomoapp.com/'
- }
- ]
- },
- tools: {
- title: 'Productivity Tools',
- tools: [
- {
- name: '1Password',
- description: 'Password Manager',
- href: 'https://1password.com/'
- },
- {
- name: 'Raindrop.io',
- description: 'Bookmark Manager',
- href: 'https://raindrop.io/'
- },
- {
- name: 'n8n',
- description: 'Workflow Automation',
- href: 'https://n8n.io/'
- },
- {
- name: 'Follow',
- description: 'RSS Reader',
- href: '#'
- },
- {
- name: '滴答清单',
- description: 'Task Management',
- href: 'https://dida365.com/'
- }
- ]
- }
- }
- },
- ai: {
- title: 'AI Tools',
- sections: {
- assistants: {
- title: 'AI Assistants',
- tools: [
- {
- name: 'ChatGPT',
- description: 'AI Assistant',
- href: 'https://chat.openai.com/',
- iconPath: 'chatgpt'
- },
- {
- name: 'Claude',
- description: 'AI Assistant',
- href: 'https://claude.ai/'
- },
- {
- name: 'Poe',
- description: 'AI Platform',
- href: 'https://poe.com/'
- },
- {
- name: 'Google Notebook LLM',
- description: 'AI Assistant',
- href: 'https://notebooklm.google.com/'
- }
- ]
- }
- }
- },
- media: {
- title: 'Media & Entertainment',
- sections: {
- music: {
- title: 'Music',
- tools: [
- {
- name: 'Apple Music',
- description: 'Music Streaming',
- href: 'https://music.apple.com/'
- },
- {
- name: '网易云音乐',
- description: 'Music Platform',
- href: 'https://music.163.com/'
- }
- ]
- },
- reading: {
- title: 'Reading & Writing',
- tools: [
- {
- name: '微信读书',
- description: 'Reading Platform',
- href: 'https://weread.qq.com/'
- },
- {
- name: 'Personal Blog',
- description: 'Built with Astro',
- href: '/'
- },
- {
- name: 'Hashnode',
- description: 'Blog Platform',
- href: 'https://hashnode.com/'
- }
- ]
- }
- }
- },
- health: {
- title: 'Health & Fitness',
- sections: {
- tracking: {
- title: 'Health Tracking',
- tools: [
- {
- name: 'AutoSleep',
- description: 'Sleep Tracking',
- href: 'https://autosleep.app/'
- },
- {
- name: 'Grow',
- description: 'Health Tracking',
- href: '#'
- },
- {
- name: 'Keep',
- description: 'Fitness App',
- href: 'https://www.gotokeep.com/'
- }
- ]
- }
- }
- }
+ development: {
+ title: 'Development',
+ sections: {
+ ide: {
+ title: 'IDE & Editors',
+ tools: [
+ {
+ name: 'WindSurf',
+ description: 'AI-Powered IDE',
+ href: 'https://windsurf.app/'
+ },
+ {
+ name: 'Cursor',
+ description: 'AI-Powered Code Editor',
+ href: 'https://cursor.sh/',
+ iconPath: 'cursor'
+ },
+ {
+ name: 'VS Code',
+ description: 'Code Editor',
+ href: 'https://code.visualstudio.com/',
+ iconPath: 'vscode'
+ },
+ {
+ name: 'JetBrains Suite',
+ description: 'Professional IDEs',
+ href: 'https://www.jetbrains.com/'
+ }
+ ]
+ }
+ }
+ },
+ design: {
+ title: 'Design & Creative',
+ sections: {
+ design: {
+ title: 'Design Software',
+ tools: [
+ {
+ name: 'Figma',
+ description: 'Design Tool',
+ href: 'https://www.figma.com/',
+ iconPath: 'figma'
+ },
+ {
+ name: 'Canva',
+ description: 'Design Tool',
+ href: 'https://www.canva.com/',
+ iconPath: 'canva'
+ }
+ ]
+ },
+ recording: {
+ title: 'Screen Recording & Screenshots',
+ tools: [
+ {
+ name: 'CleanShot X',
+ description: 'Screenshot & Recording',
+ href: 'https://cleanshot.com/'
+ },
+ {
+ name: 'OBS Studio',
+ description: 'Streaming & Recording',
+ href: 'https://obsproject.com/'
+ },
+ {
+ name: 'Picsew',
+ description: 'Screenshot Tool',
+ href: 'https://apps.apple.com/app/picsew-screenshot-stitching/id1208145167'
+ },
+ {
+ name: 'Shotr',
+ description: 'Screenshot Tool',
+ href: 'https://shotr.app/'
+ },
+ {
+ name: 'QuickRecorder',
+ description: 'Screen Recording',
+ href: '#'
+ }
+ ]
+ }
+ }
+ },
+ productivity: {
+ title: 'Productivity',
+ sections: {
+ browser: {
+ title: 'Browsers',
+ tools: [
+ {
+ name: 'Arc Browser',
+ description: 'Modern Browser',
+ href: 'https://arc.net/',
+ iconPath: 'arc'
+ },
+ {
+ name: 'Google Chrome',
+ description: 'Web Browser',
+ href: 'https://www.google.com/chrome/'
+ },
+ {
+ name: 'Microsoft Edge',
+ description: 'Web Browser',
+ href: 'https://www.microsoft.com/edge'
+ }
+ ]
+ },
+ notes: {
+ title: 'Note Taking',
+ tools: [
+ {
+ name: 'Obsidian',
+ description: 'Note Taking',
+ href: 'https://obsidian.md/',
+ iconPath: 'obsidian'
+ },
+ {
+ name: 'Notion',
+ description: 'Note Taking',
+ href: 'https://notion.so/',
+ iconPath: 'notion'
+ },
+ {
+ name: 'Flomo',
+ description: 'Quick Notes',
+ href: 'https://flomoapp.com/'
+ }
+ ]
+ },
+ tools: {
+ title: 'Productivity Tools',
+ tools: [
+ {
+ name: '1Password',
+ description: 'Password Manager',
+ href: 'https://1password.com/'
+ },
+ {
+ name: 'Raindrop.io',
+ description: 'Bookmark Manager',
+ href: 'https://raindrop.io/'
+ },
+ {
+ name: 'n8n',
+ description: 'Workflow Automation',
+ href: 'https://n8n.io/'
+ },
+ {
+ name: 'Follow',
+ description: 'RSS Reader',
+ href: '#'
+ },
+ {
+ name: '滴答清单',
+ description: 'Task Management',
+ href: 'https://dida365.com/'
+ }
+ ]
+ }
+ }
+ },
+ ai: {
+ title: 'AI Tools',
+ sections: {
+ assistants: {
+ title: 'AI Assistants',
+ tools: [
+ {
+ name: 'ChatGPT',
+ description: 'AI Assistant',
+ href: 'https://chat.openai.com/',
+ iconPath: 'chatgpt'
+ },
+ {
+ name: 'Claude',
+ description: 'AI Assistant',
+ href: 'https://claude.ai/'
+ },
+ {
+ name: 'Poe',
+ description: 'AI Platform',
+ href: 'https://poe.com/'
+ },
+ {
+ name: 'Google Notebook LLM',
+ description: 'AI Assistant',
+ href: 'https://notebooklm.google.com/'
+ }
+ ]
+ }
+ }
+ },
+ media: {
+ title: 'Media & Entertainment',
+ sections: {
+ music: {
+ title: 'Music',
+ tools: [
+ {
+ name: 'Apple Music',
+ description: 'Music Streaming',
+ href: 'https://music.apple.com/'
+ },
+ {
+ name: '网易云音乐',
+ description: 'Music Platform',
+ href: 'https://music.163.com/'
+ }
+ ]
+ },
+ reading: {
+ title: 'Reading & Writing',
+ tools: [
+ {
+ name: '微信读书',
+ description: 'Reading Platform',
+ href: 'https://weread.qq.com/'
+ },
+ {
+ name: 'Personal Blog',
+ description: 'Built with Astro',
+ href: '/'
+ },
+ {
+ name: 'Hashnode',
+ description: 'Blog Platform',
+ href: 'https://hashnode.com/'
+ }
+ ]
+ }
+ }
+ },
+ health: {
+ title: 'Health & Fitness',
+ sections: {
+ tracking: {
+ title: 'Health Tracking',
+ tools: [
+ {
+ name: 'AutoSleep',
+ description: 'Sleep Tracking',
+ href: 'https://autosleep.app/'
+ },
+ {
+ name: 'Grow',
+ description: 'Health Tracking',
+ href: '#'
+ },
+ {
+ name: 'Keep',
+ description: 'Fitness App',
+ href: 'https://www.gotokeep.com/'
+ }
+ ]
+ }
+ }
+ }
}
const DEVICES = {
- computing: {
- title: 'Computing Devices',
- sections: {
- devices: {
- title: 'Devices',
- tools: [
- {
- name: 'Mac Mini M2 Pro',
- description: '主力机 (32GB, 512GB)',
- iconPath: 'apple'
- },
- {
- name: 'MacBook Air M1',
- description: '移动办公 (16GB, 256GB)',
- iconPath: 'apple'
- },
- {
- name: '机械师整机',
- description: '台式机 (i5, 32GB, 512GB)',
- iconPath: 'windows'
- }
- ]
- }
- }
- },
- mobile: {
- title: 'Mobile Devices',
- sections: {
- phone: {
- title: 'Phone',
- tools: [
- {
- name: 'iPhone 13',
- description: '手机 (256GB)',
- iconPath: 'apple'
- }
- ]
- },
- tablet: {
- title: 'Tablet',
- tools: [
- {
- name: 'iPad Mini 5',
- description: '平板',
- iconPath: 'apple'
- }
- ]
- }
- }
- },
- wearables: {
- title: 'Smart Wearables',
- sections: {
- watch: {
- title: 'Smart Watch',
- tools: [
- {
- name: 'Apple Watch S9',
- description: '智能手表',
- iconPath: 'apple'
- }
- ]
- },
- audio: {
- title: 'Audio Devices',
- tools: [
- {
- name: 'AirPods Pro 2',
- description: '无线耳机',
- iconPath: 'apple'
- }
- ]
- }
- }
- },
- imaging: {
- title: 'Imaging Equipment',
- sections: {
- cameras: {
- title: 'Camera System',
- tools: [
- {
- name: '松下 GX9',
- description: '相机',
- iconPath: 'round-photo'
- },
- {
- name: 'Panasonic 14-140mm',
- description: '变焦镜头',
- iconPath: 'tool'
- },
- {
- name: 'Panasonic 25mm',
- description: '定焦镜头',
- iconPath: 'tool'
- },
- {
- name: 'Panasonic 100-300mm',
- description: '长焦镜头',
- iconPath: 'tool'
- },
- {
- name: 'DJI Action 5 Pro',
- description: '运动相机',
- iconPath: 'round-photo'
- }
- ]
- }
- }
- }
+ computing: {
+ title: 'Computing Devices',
+ sections: {
+ devices: {
+ title: 'Devices',
+ tools: [
+ {
+ name: 'Mac Mini M2 Pro',
+ description: '主力机 (32GB, 512GB)',
+ iconPath: 'apple'
+ },
+ {
+ name: 'MacBook Air M1',
+ description: '移动办公 (16GB, 256GB)',
+ iconPath: 'apple'
+ },
+ {
+ name: '机械师整机',
+ description: '台式机 (i5, 32GB, 512GB)',
+ iconPath: 'windows'
+ }
+ ]
+ }
+ }
+ },
+ mobile: {
+ title: 'Mobile Devices',
+ sections: {
+ phone: {
+ title: 'Phone',
+ tools: [
+ {
+ name: 'iPhone 13',
+ description: '手机 (256GB)',
+ iconPath: 'apple'
+ }
+ ]
+ },
+ tablet: {
+ title: 'Tablet',
+ tools: [
+ {
+ name: 'iPad Mini 5',
+ description: '平板',
+ iconPath: 'apple'
+ }
+ ]
+ }
+ }
+ },
+ wearables: {
+ title: 'Smart Wearables',
+ sections: {
+ watch: {
+ title: 'Smart Watch',
+ tools: [
+ {
+ name: 'Apple Watch S9',
+ description: '智能手表',
+ iconPath: 'apple'
+ }
+ ]
+ },
+ audio: {
+ title: 'Audio Devices',
+ tools: [
+ {
+ name: 'AirPods Pro 2',
+ description: '无线耳机',
+ iconPath: 'apple'
+ }
+ ]
+ }
+ }
+ },
+ imaging: {
+ title: 'Imaging Equipment',
+ sections: {
+ cameras: {
+ title: 'Camera System',
+ tools: [
+ {
+ name: '松下 GX9',
+ description: '相机',
+ iconPath: 'round-photo'
+ },
+ {
+ name: 'Panasonic 14-140mm',
+ description: '变焦镜头',
+ iconPath: 'tool'
+ },
+ {
+ name: 'Panasonic 25mm',
+ description: '定焦镜头',
+ iconPath: 'tool'
+ },
+ {
+ name: 'Panasonic 100-300mm',
+ description: '长焦镜头',
+ iconPath: 'tool'
+ },
+ {
+ name: 'DJI Action 5 Pro',
+ description: '运动相机',
+ iconPath: 'round-photo'
+ }
+ ]
+ }
+ }
+ }
}
---
-
-
+
+
-
-
-
Tools & Devices
-
Tools, software, and devices I use daily
-
+
+
+
Tools & Devices
+
Tools, software, and devices I use daily
+
-
+
-
-
-
-
+
+
+
+