{"schemaVersion":1,"generatedAt":"2026-07-10T07:56:55.882Z","count":120,"items":[{"id":"action-home","kind":"action","title":"Open studio home","description":"Return to the first viewport and workbench.","href":"/","meta":"Home","keywords":["home","studio","workbench"]},{"id":"action-writing","kind":"action","title":"Browse writing","description":"Open the full essay archive.","href":"/blog","meta":"Archive","keywords":["blog","writing","essays"]},{"id":"action-projects","kind":"action","title":"View selected work","description":"Open project case studies and systems work.","href":"/projects","meta":"Portfolio","keywords":["projects","work","case study"]},{"id":"action-about","kind":"about","title":"Meet Ray","description":"Open the studio profile, principles, timeline, and contact routes.","href":"/about","meta":"Design engineer","keywords":["about","profile","principles","timeline","capabilities"]},{"id":"action-uses","kind":"uses","title":"Open uses","description":"Browse the studio tools, workflows, and publishing pipeline.","href":"/uses","meta":"12 tools","keywords":["uses","tools","stack","workflow","setup"]},{"id":"action-knowledge","kind":"knowledge","title":"Browse knowledge","description":"Open the public memory layer for patterns, snippets, and decisions.","href":"/knowledge","meta":"17 entries","keywords":["knowledge","notes","snippets","references","decisions"]},{"id":"action-lab","kind":"lab","title":"Open component lab","description":"Browse reusable patterns, interaction proofs, and quality gates.","href":"/lab","meta":"15 components","keywords":["lab","components","registry","patterns","quality"]},{"id":"action-photos","kind":"photo","title":"Open photos","description":"Browse the studio visual memory layer.","href":"/photos","meta":"6 frames","keywords":["photos","media","gallery","lightbox"]},{"id":"action-music","kind":"music","title":"Play studio mix","description":"Open the current writing and refactoring mix.","href":"/music","meta":"4 tracks","keywords":["music","mix","player","now playing"]},{"id":"action-contact","kind":"contact","title":"Open contact routes","description":"Open the public contact routes, brief template, and project discussion path.","href":"/contact","meta":"Routes","keywords":["contact","github","issues","about","route","brief"]},{"id":"action-collaboration","kind":"collaboration","title":"Read collaboration guide","description":"Open contribution flow, governance surfaces, creative audit, and idea backlog.","href":"/collaboration","meta":"Governance","keywords":["collaboration","contributing","governance","ideas","creative","review"]},{"id":"action-writing-chinese","kind":"action","title":"Open Chinese writing","description":"Open the writing archive filtered to Chinese product memory and phase notes.","href":"/blog?language=%E4%B8%AD%E6%96%87","meta":"Query","keywords":["中文","Chinese","writing","language","blog","query","filter"]},{"id":"action-writing-product-systems","kind":"action","title":"Open Product Systems essays","description":"Open writing filtered to product systems and durable studio decisions.","href":"/blog?tag=Product+Systems","meta":"Query","keywords":["Product Systems","writing","blog","query","filter","systems"]},{"id":"action-knowledge-decisions","kind":"action","title":"Open Decision knowledge","description":"Open knowledge entries that record durable product and architecture decisions.","href":"/knowledge?kind=Decision","meta":"Query","keywords":["knowledge","decision","query","filter","IA","architecture"]},{"id":"action-projects-github","kind":"action","title":"Open GitHub-backed projects","description":"Open project case studies filtered to GitHub-backed implementation work.","href":"/projects?stack=GitHub","meta":"Query","keywords":["projects","GitHub","work","query","filter","source"]},{"id":"post-ursb-personal-site-object-grammar","kind":"post","title":"ursb.me 的个人主页对象语法","description":"ursb.me 证明个人主页可以不是简历、博客目录或作品集模板，而是一套把身份、项目、日志、媒体、工具和生活状态串起来的对象系统。","href":"/blog/ursb-personal-site-object-grammar","meta":"6 min read","keywords":["中文","Homepage","Personal OS","External proof"]},{"id":"post-external-proof-over-portfolio-theater","kind":"post","title":"外部证据比作品集叙事更重要","description":"一个成熟的个人主页不应该只证明自己会搭个人主页。它必须把外部问题、外部交付、外部证据和清晰取舍带到公开表面。","href":"/blog/external-proof-over-portfolio-theater","meta":"6 min read","keywords":["中文","Portfolio","Evidence","Product Systems"]},{"id":"post-anyreader-deep-reading-interface-teardown","kind":"post","title":"AnyReader 深度阅读界面拆解","description":"AnyReader 的价值在于把阅读、追问、数学公式、QA 记录和工作区状态放进同一个界面承诺里；风险也正来自这些承诺的边界。","href":"/blog/anyreader-deep-reading-interface-teardown","meta":"7 min read","keywords":["中文","Reading UX","Knowledge","Interface"]},{"id":"post-openprofile-as-agentic-profile-infrastructure","kind":"post","title":"OpenProfile as Agentic Profile Infrastructure","description":"OpenProfile is strongest when read as infrastructure: agent roles, context memory, decision logs, CI, and release discipline around a public developer surface.","href":"/blog/openprofile-as-agentic-profile-infrastructure","meta":"6 min read","keywords":["AI Workflow","GitHub","Portfolio","Documentation"]},{"id":"post-case-study-diff-as-portfolio-format","kind":"post","title":"Case Study Diff as a Portfolio Format","description":"The case study diff is a compact portfolio pattern: name the previous state, the changed state, the proof, and what the change did not solve.","href":"/blog/case-study-diff-as-portfolio-format","meta":"5 min read","keywords":["Portfolio","Evidence","Writing Systems"]},{"id":"post-raynode-standalone-deployment","kind":"post","title":"RayNode 自托管部署复盘","description":"把个人主页从 Vercel 扩展到 RayNode 自托管时，真正重要的不是命令顺利，而是承认小服务器不能承受远端构建，并把部署策略改成本地 standalone 产物。","href":"/blog/raynode-standalone-deployment","meta":"7 min read","keywords":["部署","Next.js","RayNode","Operations"]},{"id":"post-homepage-truth-source-audit","kind":"post","title":"个人主页先说真话","description":"一次针对个人主页的事实源审计：先修 canonical、RSS、sitemap、假状态和腐烂证据，再继续追求更复杂的个人操作系统。","href":"/blog/homepage-truth-source-audit","meta":"6 min read","keywords":["产品判断","SEO","Evidence","中文写作"]},{"id":"post-agent-handoff-loop","kind":"post","title":"AI Agent 交接不是聊天记录","description":"把 AI agent 当成长期协作者时，真正重要的是 handoff：当前状态、下一步、验证命令、阻塞条件和不能重来的决策。","href":"/blog/agent-handoff-loop","meta":"6 min read","keywords":["AI 协作","Knowledge","Workflow","中文写作"]},{"id":"post-evidence-without-precision-theater","kind":"post","title":"Evidence Without Precision Theater","description":"Evidence packs are useful when they reveal source, deployment, verification, and tradeoffs. They become harmful when they hard-code volatile numbers for decorative precision.","href":"/blog/evidence-without-precision-theater","meta":"5 min read","keywords":["Evidence","Portfolio","Trust"]},{"id":"post-designing-command-surfaces","kind":"post","title":"Designing Command Surfaces That Earn Their Place","description":"A command menu earns its place when results are real, keyboard behavior is reliable, focus is contained, and closing the menu returns the user to where they started.","href":"/blog/designing-command-surfaces","meta":"5 min read","keywords":["Command Center","Accessibility","Interaction"]},{"id":"post-homepage-density-case-study","kind":"post","title":"Homepage Density Is a Product Decision","description":"A case study in reducing the Ray Studio homepage: fewer first-screen objects, clearer Read/Work paths, and command UI demoted from hero object to utility.","href":"/blog/homepage-density-case-study","meta":"5 min read","keywords":["Homepage","Information Architecture","Design Engineering"]},{"id":"post-chinese-as-product-memory","kind":"post","title":"把中文作为产品记忆","description":"一次中文内容试点：把中文放进博客、Knowledge、Uses 和 About，让个人主页开始记录更真实的判断过程。","href":"/blog/chinese-as-product-memory","meta":"5 min read","keywords":["中文写作","Knowledge","Product Systems"]},{"id":"post-interface-is-a-promise","kind":"post","title":"The Interface is a Promise","description":"Good interfaces are agreements between human intent and system behavior. This essay frames affordance, feedback, and failure as promises the product must keep.","href":"/blog/interface-is-a-promise","meta":"8 min read","keywords":["Design Engineering","Interaction","Product Systems"]},{"id":"post-calm-systems-for-creative-work","kind":"post","title":"Calm Systems for Creative Work","description":"A personal studio should preserve attention, memory, and momentum. This note sketches the operating principles behind the site roadmap.","href":"/blog/calm-systems-for-creative-work","meta":"6 min read","keywords":["Systems","Writing","Personal OS"]},{"id":"post-commands-that-respect-attention","kind":"post","title":"Commands That Respect Attention","description":"Command palettes should compress intent, not show off. The useful details are ranking, recovery, provenance, and keyboard rhythm.","href":"/blog/commands-that-respect-attention","meta":"5 min read","keywords":["Command UI","Micro-interactions","Research"]},{"id":"project-openprofile-agent-workflow","kind":"project","title":"OpenProfile Agent Workflow","description":"A reproducible workflow for keeping a GitHub Profile, companion site, docs, and agent team aligned through explicit context, decisions, releases, and quality gates.","href":"/projects/openprofile-agent-workflow","meta":"Shipped","keywords":["GitHub","Copilot Agents","Astro","CI"]},{"id":"project-anyreader-interface-teardown","kind":"project","title":"AnyReader Interface Teardown","description":"A structured teardown of AnyReader as a reading workspace: what the interface promises, where the code proves it, and which engineering guardrails should come before more features.","href":"/projects/anyreader-interface-teardown","meta":"Active","keywords":["React","Vite","Markdown","KaTeX","Knowledge UX"]},{"id":"project-codex-feishu-bridge","kind":"project","title":"Codex Feishu Bridge","description":"A lightweight operating loop for syncing project maps, decisions, phase progress, and audit actions between local Markdown and Feishu Wiki.","href":"/projects/codex-feishu-bridge","meta":"Active","keywords":["Feishu CLI","Markdown","Codex","GitHub"]},{"id":"project-lumen","kind":"project","title":"Lumen Design System","description":"A reusable component language for warm, developer-oriented product surfaces.","href":"/projects/lumen","meta":"Active","keywords":["React","TypeScript","Design Tokens"]},{"id":"project-studio-knowledge-base","kind":"project","title":"Studio Knowledge Base","description":"A cloud-readable project map that keeps requirements, decisions, assets, versions, and progress synchronized.","href":"/projects/studio-knowledge-base","meta":"Shipped","keywords":["Feishu CLI","GitHub","Vercel","Markdown"]},{"id":"knowledge-personal-site-object-grammar","kind":"knowledge","title":"个人站对象语法","description":"高级个人主页不是堆模块，而是把身份、项目、内容、状态、工具和证据组织成可探索对象。","href":"/knowledge/personal-site-object-grammar","meta":"Pattern","keywords":["Pattern","Evergreen","Phase 36 ursb.me external reference review","中文","Homepage","Personal OS","IA"]},{"id":"knowledge-truth-source-before-polish","kind":"knowledge","title":"事实源先于视觉打磨","description":"当主域名、RSS、sitemap、证据和 README 不一致时，继续打磨视觉只会放大不可信。","href":"/knowledge/truth-source-before-polish","meta":"Decision","keywords":["Decision","Evergreen","2026-07-03 audit","中文","SEO","Evidence","Phase 25"]},{"id":"knowledge-deployment-is-product-surface","kind":"knowledge","title":"部署也是产品表面","description":"自托管、反代、systemd、RSS、sitemap 和回滚路径都会影响用户与搜索引擎对站点的信任。","href":"/knowledge/deployment-is-product-surface","meta":"Pattern","keywords":["Pattern","Working","RayNode deployment review","中文","Deployment","Operations","Trust"]},{"id":"knowledge-agent-handoff-contract","kind":"knowledge","title":"Agent handoff is a contract","description":"长周期 AI 协作不能依赖聊天记忆，必须依赖当前上下文、恢复点、验证命令和明确阻塞条件。","href":"/knowledge/agent-handoff-contract","meta":"Decision","keywords":["Decision","Evergreen","Agent collaboration review","AI","Workflow","Handoff","Traceability"]},{"id":"knowledge-evidence-without-precision-theater","kind":"knowledge","title":"Evidence without precision theater","description":"证据应该说明来源、部署、验证方式和行为覆盖，不应该手写容易腐烂的测试数量和旧部署 ID。","href":"/knowledge/evidence-without-precision-theater","meta":"Pattern","keywords":["Pattern","Evergreen","Phase 25 audit","Evidence","Portfolio","Testing","Trust"]},{"id":"knowledge-public-reachable-before-internal-complete","kind":"knowledge","title":"公开可达优先于内部完成","description":"一个页面、组件或知识条目只有在用户能从公开路径进入时，才算真正进入产品系统。","href":"/knowledge/public-reachable-before-internal-complete","meta":"Decision","keywords":["Decision","Evergreen","Phase 13-16 review","中文","IA","Navigation","Traceability"]},{"id":"knowledge-interfaces-are-promises","kind":"knowledge","title":"Interfaces are promises","description":"A durable interface should make system behavior legible before the user commits attention or effort.","href":"/knowledge/interfaces-are-promises","meta":"Pattern","keywords":["Pattern","Evergreen","Essay thread","Interaction","Writing","Trust"]},{"id":"knowledge-filters-before-search","kind":"knowledge","title":"Filters before full search","description":"Visible filters are cheaper and clearer than a separate search index while content volume is still small.","href":"/knowledge/filters-before-search","meta":"Decision","keywords":["Decision","Working","Phase 4 research","Filtering","IA","Phase 4"]},{"id":"knowledge-copyable-knowledge-refs","kind":"knowledge","title":"Copyable knowledge refs","description":"Each public knowledge card should expose a stable permalink so ideas can move between issues, docs, and Feishu comments.","href":"/knowledge/copyable-knowledge-refs","meta":"Snippet","keywords":["Snippet","Working","Studio workflow","Workflow","References","GitHub"]},{"id":"knowledge-diataxis-for-personal-knowledge","kind":"knowledge","title":"Diataxis as a quiet taxonomy","description":"Use tutorial, guide, reference, and explanation as content intent labels, not as rigid visible sections.","href":"/knowledge/diataxis-for-personal-knowledge","meta":"Reference","keywords":["Reference","Queued","Documentation IA","Documentation","Taxonomy","Learning"]},{"id":"knowledge-local-graph-not-global-graph","kind":"knowledge","title":"Prefer local trails over global graphs","description":"A small public knowledge base benefits more from related links and context trails than from a decorative full graph.","href":"/knowledge/local-graph-not-global-graph","meta":"Pattern","keywords":["Pattern","Evergreen","PKM research","Knowledge","Links","Restraint"]},{"id":"knowledge-external-proof-over-self-reference","kind":"knowledge","title":"外部证据优先于自指叙事","description":"个人主页可以展示自身系统，但不能长期只证明自己会建设个人主页。","href":"/knowledge/external-proof-over-self-reference","meta":"Decision","keywords":["Decision","Evergreen","Phase 26 external proof review","中文","Portfolio","Evidence","Phase 26"]},{"id":"knowledge-project-evidence-minimum-standard","kind":"knowledge","title":"项目证据最低标准","description":"一个公开项目至少需要真实问题、真实约束、真实交付物、真实链接和真实结果。","href":"/knowledge/project-evidence-minimum-standard","meta":"Reference","keywords":["Reference","Evergreen","Phase 26 delivery standard","Evidence","Portfolio","Checklist"]},{"id":"knowledge-socratic-reading-surfaces","kind":"knowledge","title":"Socratic reading surfaces","description":"A reading interface becomes interesting when selection, question, context, answer, and return path stay connected.","href":"/knowledge/socratic-reading-surfaces","meta":"Pattern","keywords":["Pattern","Working","AnyReader teardown","Reading UX","AI","Knowledge","Interaction"]},{"id":"knowledge-selection-anchors-are-product-state","kind":"knowledge","title":"Selection anchors are product state","description":"When a user selects text or math, the product receives a durable intent, not a temporary highlight.","href":"/knowledge/selection-anchors-are-product-state","meta":"Snippet","keywords":["Snippet","Working","AnyReader codebase research","Reading UX","Anchors","Testing"]},{"id":"knowledge-agent-team-as-product-surface","kind":"knowledge","title":"Agent team as product surface","description":"Agent roles become product infrastructure when their responsibilities, handoff rules, and quality gates are inspectable.","href":"/knowledge/agent-team-as-product-surface","meta":"Pattern","keywords":["Pattern","Evergreen","OpenProfile workflow review","AI Workflow","Agents","Documentation"]},{"id":"knowledge-case-study-diff-format","kind":"knowledge","title":"Case study diff format","description":"Before, after, proof, and tradeoff are often a better portfolio unit than a long process narrative.","href":"/knowledge/case-study-diff-format","meta":"Pattern","keywords":["Pattern","Evergreen","Phase 26 portfolio format","Portfolio","Writing","Evidence"]},{"id":"uses-nextjs","kind":"uses","title":"Next.js","description":"The default surface for fast editorial pages, MDX routes, and production deploys.","href":"/uses#nextjs","meta":"Code","keywords":["Code","React framework","App Router / Metadata / Static routes"]},{"id":"uses-typescript","kind":"uses","title":"TypeScript","description":"Keeps content models, component props, and route contracts legible as the studio grows.","href":"/uses#typescript","meta":"Code","keywords":["Code","Language","Strict enough for structure, light enough for iteration"]},{"id":"uses-mdx","kind":"uses","title":"MDX","description":"Turns essays, project notes, and technical examples into versioned source files.","href":"/uses#mdx","meta":"Writing","keywords":["Writing","Content format","Portable writing with code-native components"]},{"id":"uses-vercel","kind":"uses","title":"Vercel","description":"Production previews, deploy history, and a tight feedback loop from commit to public URL.","href":"/uses#vercel","meta":"Automation","keywords":["Automation","Deployment","Small releases, traceable deployments"]},{"id":"uses-figma","kind":"uses","title":"Figma","description":"Used for visual direction, component thinking, and sharpening page-level intent.","href":"/uses#figma","meta":"Design","keywords":["Design","Interface design","Design before density"]},{"id":"uses-raycast","kind":"uses","title":"Raycast","description":"The command layer for quicklinks, scripts, clipboard, windows, and project jumps.","href":"/uses#raycast","meta":"Automation","keywords":["Automation","Launcher","Keyboard-first access to repeated moves"]},{"id":"uses-cursor","kind":"uses","title":"Cursor","description":"A focused place for code edits, refactors, and local reasoning over the repo.","href":"/uses#cursor","meta":"Code","keywords":["Code","AI code editor","Agentic coding with local context"]},{"id":"uses-linear","kind":"uses","title":"Linear","description":"A model for calm planning, clear status, and lightweight operational surfaces.","href":"/uses#linear","meta":"Automation","keywords":["Automation","Issue tracking","Status without dashboard noise"]},{"id":"uses-github","kind":"uses","title":"GitHub","description":"The trace layer for commits, issues, milestones, and release decisions.","href":"/uses#github","meta":"Code","keywords":["Code","Source control","Every meaningful change gets provenance"]},{"id":"uses-feishu","kind":"uses","title":"Feishu","description":"Cloud reading, comments, project maps, and phase reviews synced from local Markdown.","href":"/uses#feishu","meta":"Writing","keywords":["Writing","Knowledge cloud","Local source of truth, cloud collaboration layer"]},{"id":"uses-playwright","kind":"uses","title":"Playwright","description":"Used for rendered checks, screenshots, interaction proof, and responsive validation.","href":"/uses#playwright","meta":"Automation","keywords":["Automation","Browser QA","Trust the browser, not just the build"]},{"id":"uses-openai","kind":"uses","title":"OpenAI","description":"Supports visual concepting, product reasoning, writing synthesis, and implementation reviews.","href":"/uses#openai","meta":"Design","keywords":["Design","Concept partner","Use AI to clarify taste, not to hide weak structure"]},{"id":"uses-workflow-00","kind":"uses","title":"中文复盘","description":"把阶段判断、页面边界、验证结果和下一步写成中文，先进入本地 Markdown，再同步飞书。","href":"/uses#workspace-rhythm","meta":"Workflow","keywords":["uses","workflow","rhythm","Before shipping"]},{"id":"uses-workflow-01","kind":"uses","title":"Deep work","description":"Write, design, or code before messages reshape the day.","href":"/uses#workspace-rhythm","meta":"Workflow","keywords":["uses","workflow","rhythm","09:00 - 12:00"]},{"id":"uses-workflow-02","kind":"uses","title":"Sync and respond","description":"Review comments, GitHub issues, Feishu notes, and small decisions.","href":"/uses#workspace-rhythm","meta":"Workflow","keywords":["uses","workflow","rhythm","12:00 - 13:00"]},{"id":"uses-workflow-03","kind":"uses","title":"Build and iterate","description":"Ship focused increments with visible QA and deploy traces.","href":"/uses#workspace-rhythm","meta":"Workflow","keywords":["uses","workflow","rhythm","13:00 - 17:00"]},{"id":"uses-workflow-04","kind":"uses","title":"Capture and close","description":"Update the project map, record the next slice, and leave clean trails.","href":"/uses#workspace-rhythm","meta":"Workflow","keywords":["uses","workflow","rhythm","17:00 - 18:00"]},{"id":"lab-global-command-menu","kind":"lab","title":"GlobalCommandMenu","description":"Shows visitors that the site can be operated, not merely browsed.","href":"/lab#global-command-menu","meta":"Stable","keywords":["lab","Command","Command Center","src/components/global-command-menu.tsx","Use it when a new route, content type, or quick action should become reachable in one keystroke.","Navigation","Search","Quick actions"]},{"id":"lab-filter-bar","kind":"lab","title":"FilterBar","description":"Makes archives feel controlled by the visitor instead of hidden behind page order.","href":"/lab#filter-bar","meta":"Stable","keywords":["lab","System","Segmented filter","src/components/content/filter-bar.tsx","Use it for any list where the filter state should be visible, countable, and reversible.","Archives","Media","Component inventory"]},{"id":"lab-status-panel","kind":"lab","title":"StatusPanel","description":"Gives the homepage a live studio signal without turning the first screen into a dashboard.","href":"/lab#status-panel","meta":"Stable","keywords":["lab","System","Current work signal","src/components/status-panel.tsx","Use it when the page needs current context, but the context must stay calm and editorial.","Home","About","Lab quality summary"]},{"id":"lab-personal-os-zoo","kind":"lab","title":"PersonalOsZoo","description":"Lets experimental personal-OS ideas stay inspectable before they are allowed into the homepage.","href":"/lab#personal-os-zoo","meta":"Iterating","keywords":["lab","System","Personal OS calibration","src/components/personal-os-zoo.tsx","Use it as the holding area for playful interactions, density tests, and source-backed modules.","Home","Lab","About","Contact","Portfolio OS"]},{"id":"lab-knowledge-card","kind":"lab","title":"KnowledgeCard","description":"Turns a private project rule into a public object that can be cited and reopened.","href":"/lab#knowledge-card","meta":"Stable","keywords":["lab","Content","Knowledge reference","src/components/content/knowledge-card.tsx","Use it for decisions, patterns, snippets, and lessons that should outlive one blog post.","Knowledge","Notes","Decision records"]},{"id":"lab-uses-explorer","kind":"lab","title":"UsesShelf","description":"Explains how the studio actually works, not just which logos belong in the stack.","href":"/lab#uses-explorer","meta":"Iterating","keywords":["lab","Content","Tool shelf","src/components/content/uses-explorer.tsx","Use it when tools need to be connected to workflow, cadence, and decision criteria.","Uses","Workflow","Stack pages"]},{"id":"lab-about-profile","kind":"lab","title":"AboutProfile","description":"Makes the person behind the system legible without collapsing into a resume template.","href":"/lab#about-profile","meta":"Iterating","keywords":["lab","Profile","Studio profile","src/components/content/about-profile.tsx","Use it for profile sections that must balance personality, capability, and collaboration rules.","About","Contact","Portfolio OS"]},{"id":"lab-mini-player","kind":"lab","title":"MiniPlayer","description":"Adds atmosphere through real controls instead of pretending that mood is a background image.","href":"/lab#mini-player","meta":"Stable","keywords":["lab","Media","Music state","src/components/media/mini-player.tsx","Use it when a media surface should show state, taste, and interaction in a compact frame.","Music","Home media","Now playing"]},{"id":"lab-photo-grid","kind":"lab","title":"PhotoGrid","description":"Lets personal memory become browsable without making photos feel like stock decoration.","href":"/lab#photo-grid","meta":"Stable","keywords":["lab","Media","Photo memory","src/components/media/photo-grid.tsx","Use it for visual archives where tags, featured moments, and focused viewing all matter.","Photos","Albums","Project media"]},{"id":"lab-code-block","kind":"lab","title":"CodeBlock","description":"Lets technical texture appear where it helps comprehension, not as decorative code noise.","href":"/lab#code-block","meta":"Stable","keywords":["lab","Content","Code frame","src/components/content/code-block.tsx","Use it whenever code examples should be copied, trusted, and read inside long-form writing.","Blog","Knowledge","Lab examples"]},{"id":"lab-collaboration-guide","kind":"lab","title":"CollaborationGuide","description":"Shows how feedback becomes structured work instead of disappearing into chat history.","href":"/lab#collaboration-guide","meta":"Stable","keywords":["lab","System","Governance surface","src/app/collaboration/page.tsx","Use it for public collaboration rules, creative intake, and contribution expectations.","Governance","Creative backlog","Contribution flow"]},{"id":"lab-command-trace-toast","kind":"lab","title":"CommandTraceToast","description":"Makes navigation feel executable while still telling the visitor what actually happened.","href":"/lab#command-trace-toast","meta":"Iterating","keywords":["lab","Command","Command execution trace","src/components/command-trace-toast.tsx","Use it after keyboard actions, copy actions, and route transitions that deserve lightweight confirmation.","Command Center","Navigation feedback","Developer signature"]},{"id":"lab-source-reveal","kind":"lab","title":"SourceReveal","description":"Lets a curious visitor inspect provenance without forcing source paths into the main reading layer.","href":"/lab#source-reveal","meta":"Stable","keywords":["lab","System","Source provenance","src/components/content/source-reveal.tsx","Use it wherever a visible object should expose its file, ref, or implementation trail on demand.","Knowledge","Projects","Lab","Case studies"]},{"id":"lab-reading-focus-lens","kind":"lab","title":"ReadingFocusLens","description":"Gives long-form posts a small interactive signature that helps rather than interrupts reading.","href":"/lab#reading-focus-lens","meta":"Iterating","keywords":["lab","Content","Article focus trace","src/components/content/article-interactions.tsx","Use it on dense articles, Knowledge details, and case studies that benefit from stable section references.","Blog","Knowledge detail","Project case studies","Reading focus lens"]},{"id":"lab-component-preview","kind":"lab","title":"ComponentPreview","description":"Turns Lab from a list of component names into an inspectable design-system workbench.","href":"/lab#component-preview","meta":"Iterating","keywords":["lab","System","Isolated component preview","src/components/content/lab-explorer.tsx","Use it when a component needs to show route behavior, provenance, reuse intent, and source access together.","Lab","Design system","Component QA"]},{"id":"lab-experiment-01","kind":"lab","title":"Component registry","description":"Make reusable surfaces searchable, copyable, traceable, and understandable to a first-time visitor.","href":"/lab#lab-experiment-title","meta":"Stable","keywords":["lab","experiment","Stable"]},{"id":"lab-experiment-02","kind":"lab","title":"Preview states","description":"Let a selected component expose visitor value, source, route, reuse targets, quality proof, and import path.","href":"/lab#lab-experiment-title","meta":"Iterating","keywords":["lab","experiment","Iterating"]},{"id":"lab-experiment-03","kind":"lab","title":"ComponentPreview","description":"Render richer component examples when static metadata can no longer explain the interaction contract.","href":"/lab#lab-experiment-title","meta":"Iterating","keywords":["lab","experiment","Iterating"]},{"id":"lab-experiment-04","kind":"lab","title":"ReactionBar","description":"Add reader feedback only after content pages have enough repeat traffic to justify it.","href":"/lab#lab-experiment-title","meta":"Planned","keywords":["lab","experiment","Planned"]},{"id":"lab-experiment-05","kind":"lab","title":"Signature interactions","description":"Prototype Command Trace and Source Hover before any mascot or high-intensity visual effect.","href":"/lab#lab-experiment-title","meta":"Iterating","keywords":["lab","experiment","Iterating"]},{"id":"lab-experiment-06","kind":"lab","title":"Reading focus","description":"Give long-form writing a subtle active-section lens, stable ref copy, and code-like reading trace.","href":"/lab#lab-experiment-title","meta":"Iterating","keywords":["lab","experiment","Iterating"]},{"id":"lab-experiment-07","kind":"lab","title":"Personal OS Zoo","description":"Calibrate Studio Pulse, guided prompts, source-backed modules, and density guardrails before expanding the homepage.","href":"/lab#lab-experiment-title","meta":"Iterating","keywords":["lab","experiment","Iterating"]},{"id":"about-principle-chinese-context","kind":"about","title":"中文承载判断","description":"当项目讨论、飞书评论和阶段复盘都以中文推进时，中文应该进入公开系统。","href":"/about#principles","meta":"Principle","keywords":["about","principle","rust"]},{"id":"about-principle-clarity","kind":"about","title":"Clarity before theatre","description":"A page should reveal what matters before it shows how clever it is.","href":"/about#principles","meta":"Principle","keywords":["about","principle","rust"]},{"id":"about-principle-systems","kind":"about","title":"Systems that stay humane","description":"Reusable components should make the site easier to extend, not harder to feel.","href":"/about#principles","meta":"Principle","keywords":["about","principle","sage"]},{"id":"about-principle-code","kind":"about","title":"Code as product material","description":"The implementation is part of the design, not a downstream translation.","href":"/about#principles","meta":"Principle","keywords":["about","principle","blue"]},{"id":"about-timeline-2026","kind":"about","title":"Elegant Developer Studio","description":"Building a public studio around writing, projects, knowledge, media, tools, and experiments.","href":"/about#timeline","meta":"2026","keywords":["about","timeline","Personal operating system"]},{"id":"about-timeline-2024 - 2026","kind":"about","title":"AI-native product work","description":"Exploring how AI can sharpen product taste, accelerate implementation, and keep decisions traceable.","href":"/about#timeline","meta":"2024 - 2026","keywords":["about","timeline","Design systems / frontend"]},{"id":"about-timeline-2021 - 2024","kind":"about","title":"Developer-facing interfaces","description":"Shipped calm tools for technical users where speed, reliability, and explainability mattered more than decoration.","href":"/about#timeline","meta":"2021 - 2024","keywords":["about","timeline","Product design and engineering"]},{"id":"about-timeline-Earlier","kind":"about","title":"Foundations","description":"Built the habit of treating software as both an exact system and a visual medium.","href":"/about#timeline","meta":"Earlier","keywords":["about","timeline","Computer science / visual systems"]},{"id":"about-capability-Product interface design","kind":"about","title":"Product interface design","description":"IA, interaction models, page systems","href":"/about#capabilities","meta":"Advanced","keywords":["about","capability","Advanced"]},{"id":"about-capability-Frontend engineering","kind":"about","title":"Frontend engineering","description":"React, Next.js, TypeScript, MDX","href":"/about#capabilities","meta":"Advanced","keywords":["about","capability","Advanced"]},{"id":"about-capability-Design systems","kind":"about","title":"Design systems","description":"Tokens, components, documentation","href":"/about#capabilities","meta":"Advanced","keywords":["about","capability","Advanced"]},{"id":"about-capability-Product sense","kind":"about","title":"Product sense","description":"Scope, sequence, trade-off framing","href":"/about#capabilities","meta":"Strong","keywords":["about","capability","Strong"]},{"id":"about-capability-Writing and synthesis","kind":"about","title":"Writing and synthesis","description":"PRD, research notes, phase reviews","href":"/about#capabilities","meta":"Strong","keywords":["about","capability","Strong"]},{"id":"photo-morning-studio-desk","kind":"photo","title":"Morning studio desk","description":"The desk before the day becomes loud: notes open, keyboard ready, coffee still warm. It anchors the homepage's warm studio tone without pretending to be a personal documentary photo.","href":"/photos","meta":"Generated / Atmospheric","keywords":["Studio","Writing","Warmth","Generated","Atmospheric","GPT image generated studio preview"]},{"id":"photo-code-window-after-rain","kind":"photo","title":"Code window after rain","description":"A small reminder that code can feel tactile when the surrounding system is quiet enough. It keeps a credible code-window texture for the media layer while real desk photography is still absent.","href":"/photos","meta":"Unsplash / Reference","keywords":["Code","Night","Tools","Unsplash","Reference","Unsplash reference photo"]},{"id":"photo-atelier-wall","kind":"photo","title":"Atelier wall","description":"A visual checkpoint for component language: enough structure to repeat, enough warmth to read. It records the design-system mood board that shaped the current homepage language.","href":"/photos","meta":"Generated / Atmospheric","keywords":["Design","System","Review","Generated","Atmospheric","Generated Lumen design-system asset"]},{"id":"photo-workshop-light","kind":"photo","title":"Workshop light","description":"The kind of room where a fuzzy product idea becomes a diagram, then a component, then a habit. It stands in for the collaborative prototype-room feeling until a real workshop album exists.","href":"/photos","meta":"Unsplash / Reference","keywords":["Prototype","Space","Light","Unsplash","Reference","Unsplash reference photo"]},{"id":"photo-listening-corner","kind":"photo","title":"Listening corner","description":"A small listening ritual for the part of the day when implementation starts to slow down. It gives the music route a warm listening cue without claiming real playback metadata.","href":"/photos","meta":"Unsplash / Reference","keywords":["Music","Evening","Focus","Unsplash","Reference","Unsplash reference photo"]},{"id":"photo-city-shadow-note","kind":"photo","title":"City shadow note","description":"Not every reference starts in software. Some of the best interface decisions begin as light, rhythm, and edges. It preserves the visual rule that interface ideas can start as light, rhythm, and edges.","href":"/photos","meta":"Unsplash / Reference","keywords":["Observation","Texture","Travel","Unsplash","Reference","Unsplash reference photo"]},{"id":"music-track-atelier-late-night","kind":"music","title":"Atelier - late night","description":"Homepage preview cue and first writing-state track.","href":"/music","meta":"Track / Mock","keywords":["Focus","Warm","Loop","Writing draft","Warm","Mock"]},{"id":"music-track-quiet-refactor","kind":"music","title":"Quiet refactor","description":"Refactor and review mode in the track list.","href":"/music","meta":"Track / Mock","keywords":["Code","Review","Deep work","Code review","Precise","Mock"]},{"id":"music-track-window-state","kind":"music","title":"Window state","description":"Late debugging mood for player state transitions.","href":"/music","meta":"Track / Mock","keywords":["Night","Debug","Ambient","Debugging","Dim","Mock"]},{"id":"music-track-small-systems","kind":"music","title":"Small systems","description":"Design-system review track and Lumen visual bridge.","href":"/music","meta":"Track / Mock","keywords":["Design","Tokens","System","Design system pass","Clear","Mock"]},{"id":"creative-command-trace","kind":"collaboration","title":"Command Trace","description":"After a Command Center navigation, briefly show a subtle trace line such as `cmd.open('/lab')` near the destination header.","href":"/collaboration#command-trace","meta":"Now","keywords":["collaboration","creative","idea","Interaction","Now"]},{"id":"creative-source-hover","kind":"collaboration","title":"Source Hover","description":"On Lab, Knowledge, and project cards, hover can reveal a tiny source path or reference token in a mono caption.","href":"/collaboration#source-hover","meta":"Now","keywords":["collaboration","creative","idea","UI","Now"]},{"id":"creative-reading-focus-lens","kind":"collaboration","title":"Reading Focus Lens","description":"Refine the existing reader glow into a selectable paragraph focus mode with copy-link and outline sync.","href":"/collaboration#reading-focus-lens","meta":"Next","keywords":["collaboration","creative","idea","Interaction","Next"]},{"id":"creative-memory-map","kind":"collaboration","title":"Memory Map","description":"Connect posts, projects, photos, tools, and knowledge entries through a small related-object rail.","href":"/collaboration#memory-map","meta":"Next","keywords":["collaboration","creative","idea","Content","Next"]},{"id":"creative-case-study-diff","kind":"collaboration","title":"Case Study Diff","description":"Project pages can show before/after decisions as a visual diff: problem, constraint, tradeoff, shipped result.","href":"/collaboration#case-study-diff","meta":"Next","keywords":["collaboration","creative","idea","Component","Next"]},{"id":"creative-studio-companion","kind":"collaboration","title":"Studio Companion","description":"A tiny contextual helper that appears only in empty states or long pauses, never as a persistent pet.","href":"/collaboration#studio-companion","meta":"Later","keywords":["collaboration","creative","idea","Interaction","Later"]}]}