[{"id":"frogie","repo":"frogie","title":"Frogie","emoji":"🐸","description":{"en":"A local-first home for your AI agents. Chat, tools, and sessions in one place.","zh":"AI 智能体的本地工作台，把对话、工具与会话放在一起。"},"category":"ai","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/frogie","subject":"Full-body green frog with musical notes","reference":true,"logo":{"kind":"original","original":"/logos/originals/frogie-2026-09-06.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/frogie/blob/e965214c3efe99f4c4b459e6716e2014184dc32d/logo.png","modified":false,"width":2048,"height":2048,"bytes":3588507,"sha256":"752fae79301d175093cc726313c470b4cef4b7b56d299d2e802a4a0f59e39a2b","thumbnail":"/logos/display/frogie-160.webp","display":"/logos/display/frogie-1024.webp"},"theme":{"background":{"value":"220 14% 94%","source":"packages/web/src/index.css --background"},"ink":{"value":"0 0% 12%","source":"packages/web/src/index.css --foreground"},"primary":{"value":"142 71% 45%","source":"packages/web/src/index.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Local-first web shell for an agent engine — chat, MCP, sessions on Bun + React","repositoryRevision":"e965214c3efe99f4c4b459e6716e2014184dc32d"},"colors":{"primary":"#21c45d","background":"#eeeff2","ink":"#1f1f1f","palette":[{"color":"#21c45d","role":"primary","source":"packages/web/src/index.css --primary: 142 71% 45%"},{"color":"#eeeff2","role":"background","source":"packages/web/src/index.css --background: 220 14% 94%"},{"color":"#bbcb9e","role":"background","label":{"en":"Sage field","zh":"鼠尾草底色"},"source":"Selected Frogie presentation, finishing 03; background.base in archived settings.json"},{"color":"#86c32c","role":"primary","label":{"en":"Leaf green","zh":"叶绿"},"source":"Frogie native generation 2097aa50fe3a, sampled sRGB pixel (1065, 512); palette.json"},{"color":"#fbf4a8","role":"accent","label":{"en":"Warm yellow","zh":"暖黄"},"source":"Frogie native generation 2097aa50fe3a, sampled sRGB pixel (1024, 1331); palette.json"},{"color":"#3b1220","role":"accent","label":{"en":"Plum","zh":"深梅紫"},"source":"Frogie native generation 2097aa50fe3a, sampled sRGB pixel (1085, 717); palette.json"},{"color":"#f78571","role":"accent","label":{"en":"Coral","zh":"珊瑚橘"},"source":"Frogie native generation 2097aa50fe3a, sampled sRGB pixel (1167, 860); palette.json"},{"color":"#56c8ee","role":"accent","label":{"en":"Cyan","zh":"青蓝"},"source":"Frogie native generation 2097aa50fe3a, sampled sRGB pixel (1597, 307); palette.json"},{"color":"#9a4fbd","role":"accent","label":{"en":"Violet","zh":"紫罗兰"},"source":"Frogie native generation 2097aa50fe3a, sampled sRGB pixel (1803, 713); palette.json"}]},"family":{"id":"2026-09-06-01","finishing":"03","root":"/logos/family/frogie/2026-09-06-01/03","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/frogie/2026-09-06-01","model":"Azure Foundry · gpt-image-2","previous":{"original":"/logos/originals/frogie.png","sourceUrl":"https://github.com/nocoo/frogie/blob/3643e162ef3e3b784a1f8a7c88bd433fae0d5e45/logo.png","width":2048,"height":2048,"sha256":"cf53c0a17c5a025dcfa4b3b1eb50e1088a62aa89c1d51813881f8a751c61fbb6"},"direction":[{"aspect":"composition","title":{"en":"A diagonal balance","zh":"顺着音符，向右上延伸"},"description":{"en":"The seated frog carries the lower-left weight. Six colorful musical shapes lead the eye into the upper-right space.","zh":"蹲坐的小青蛙稳住左下方的重心，六个彩色音符把视线带向右上方的留白。"}},{"aspect":"drawing","title":{"en":"Flat, connected facets","zh":"平面的色块，连贯的轮廓"},"description":{"en":"Broad planes clarify the face and belly. Smaller polygons describe the eyes, open mouth, and familiar little toes.","zh":"脸和肚子由大块平面构成，眼睛、张开的嘴巴和脚趾用更细的多边形刻画，保留熟悉的表情。"}},{"aspect":"presentation","title":{"en":"A deeper sage field","zh":"更有层次的鼠尾草绿"},"description":{"en":"Deeper sage, visible tonal curves, fine grain, and soft shadows give the green character a matte paper setting.","zh":"加深的鼠尾草绿、清晰的同色弧线、细微颗粒与柔和阴影，为绿色角色增添哑光纸面的层次。"}}],"palette":[{"color":"#bbcb9e","role":"background","label":{"en":"Sage field","zh":"鼠尾草底色"},"source":"Selected Frogie presentation, finishing 03; background.base in archived settings.json"},{"color":"#86c32c","role":"primary","label":{"en":"Leaf green","zh":"叶绿"},"source":"Frogie native generation 2097aa50fe3a, sampled sRGB pixel (1065, 512); palette.json"},{"color":"#fbf4a8","role":"accent","label":{"en":"Warm yellow","zh":"暖黄"},"source":"Frogie native generation 2097aa50fe3a, sampled sRGB pixel (1024, 1331); palette.json"},{"color":"#3b1220","role":"accent","label":{"en":"Plum","zh":"深梅紫"},"source":"Frogie native generation 2097aa50fe3a, sampled sRGB pixel (1085, 717); palette.json"},{"color":"#f78571","role":"accent","label":{"en":"Coral","zh":"珊瑚橘"},"source":"Frogie native generation 2097aa50fe3a, sampled sRGB pixel (1167, 860); palette.json"},{"color":"#56c8ee","role":"accent","label":{"en":"Cyan","zh":"青蓝"},"source":"Frogie native generation 2097aa50fe3a, sampled sRGB pixel (1597, 307); palette.json"},{"color":"#9a4fbd","role":"accent","label":{"en":"Violet","zh":"紫罗兰"},"source":"Frogie native generation 2097aa50fe3a, sampled sRGB pixel (1803, 713); palette.json"}],"sizeNote":{"en":"At 16 px the green silhouette and open mouth lead; individual facets and musical notes merge into small color accents.","zh":"缩到 16 px 时，绿色轮廓和张开的嘴巴承担辨识度，细碎的切面与音符会合并成小小的色彩点缀。"},"status":"adopted","updated":"2026-09-07","foreground":{"original":"/logos/family/frogie/2026-09-06-01/03/transparent.png","display":"/logos/family/frogie/2026-09-06-01/03/transparent-1024.webp","width":2048,"height":2048,"sha256":"752fae79301d175093cc726313c470b4cef4b7b56d299d2e802a4a0f59e39a2b"}},"archived":false,"overview":{"goal":{"en":"Work on local project directories through a web coding assistant, keeping conversations, tool execution, MCP tools and resumable sessions together.","zh":"通过网页编程助手处理本地项目，把对话、工具执行、MCP 工具和可续接会话放在一起。"},"techStack":[{"name":"TypeScript / Bun","role":{"en":"Service code, runtime and builds","zh":"服务代码、运行与构建"}},{"name":"Hono / WebSocket","role":{"en":"HTTP APIs and streaming conversation events","zh":"HTTP API 与流式会话事件"}},{"name":"Anthropic SDK","role":{"en":"Model calls and the custom tool loop","zh":"模型调用与自定义工具循环"}},{"name":"MCP TypeScript SDK","role":{"en":"stdio connections and tool discovery","zh":"stdio 服务连接与工具发现"}},{"name":"SQLite / JSON","role":{"en":"Settings, session indexes and conversation files","zh":"设置、会话索引与对话文件"}},{"name":"React / Vite / Zustand","role":{"en":"Web interface and client state","zh":"网页界面与客户端状态"}},{"name":"Tailwind CSS / Radix UI","role":{"en":"Styling and interactive components","zh":"样式与交互组件"}},{"name":"react-markdown / remark-gfm / rehype-highlight","role":{"en":"Markdown and code highlighting","zh":"Markdown 与代码高亮"}}],"verified":{"date":"2026-09-08","revision":"79e16babfb6067dcd90ad59b900fa76ad282f35c","sources":["package.json","packages/server/package.json","packages/web/package.json","packages/server/src/index.ts","packages/server/src/auth/middleware.ts","packages/server/src/routes/settings.ts","packages/server/src/routes/sessions.ts","packages/server/src/routes/ws-chat.ts","packages/server/src/engine/frogie-agent.ts","packages/server/src/engine/builtin-tools.ts","packages/server/src/engine/session-sync.ts","packages/server/src/mcp/client.ts","packages/server/src/db/connection.ts","packages/web/src/App.tsx","packages/web/src/pages/PromptsPage.tsx","packages/web/src/viewmodels/models.viewmodel.ts","packages/web/vite.config.ts"]}}},{"id":"pew","repo":"pew","title":"Pew","emoji":"🦓","description":{"en":"A contribution graph for the AI-native era. See your coding tokens tell a story.","zh":"AI 时代的贡献图，把不同编程工具的 Token 使用记录变成可见的轨迹。"},"category":"ai","website":"https://pew.md","websiteSource":"GitHub repository homepage","repository":"https://github.com/nocoo/pew","subject":"Zebra portrait with a rainbow tongue","reference":true,"logo":{"kind":"original","original":"/logos/originals/pew-2026-09-07.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/pew/blob/5e3ed1dcbd00003ecf8b44fd4f1418711d89b67b/logo.png","modified":false,"width":2048,"height":2048,"bytes":3043802,"sha256":"5c002bb5dcfb31f4db5ca52958e58175ad32bf0a34288828ddf443375b573ecb","thumbnail":"/logos/display/pew-160.webp","display":"/logos/display/pew-1024.webp"},"theme":{"background":{"value":"260 20% 95%","source":"packages/web/src/app/globals.css --background"},"ink":{"value":"260 10% 10%","source":"packages/web/src/app/globals.css --foreground"},"primary":{"value":"270 85% 52%","source":"packages/web/src/app/globals.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Contribution graph for AI-native developers — track token usage across tools","repositoryRevision":"5e3ed1dcbd00003ecf8b44fd4f1418711d89b67b"},"colors":{"primary":"#851ded","background":"#f1f0f5","ink":"#19171c","palette":[{"color":"#851ded","role":"primary","source":"packages/web/src/app/globals.css --primary: 270 85% 52%"},{"color":"#f1f0f5","role":"background","source":"packages/web/src/app/globals.css --background: 260 20% 95%"},{"color":"#bfb2cf","role":"background","label":{"en":"Lilac field","zh":"丁香紫底色"},"source":"Selected Pew presentation, finishing 04; background.base in archived settings.json"},{"color":"#fcf8f0","role":"primary","label":{"en":"Ivory","zh":"象牙白"},"source":"Pew native generation efa6aff9f478, sampled sRGB pixel (1510, 1740); palette.json"},{"color":"#232637","role":"accent","label":{"en":"Charcoal","zh":"炭黑"},"source":"Pew native generation efa6aff9f478, sampled sRGB pixel (1140, 415); palette.json"},{"color":"#827f8e","role":"accent","label":{"en":"Quiet gray","zh":"柔灰"},"source":"Pew native generation efa6aff9f478, sampled sRGB pixel (770, 334); palette.json"},{"color":"#fb9383","role":"accent","label":{"en":"Coral","zh":"珊瑚橘"},"source":"Pew native generation efa6aff9f478, sampled sRGB pixel (593, 1620); palette.json"},{"color":"#73dce7","role":"accent","label":{"en":"Cyan","zh":"青蓝"},"source":"Pew native generation efa6aff9f478, sampled sRGB pixel (589, 1759); palette.json"},{"color":"#b97ce6","role":"accent","label":{"en":"Violet","zh":"紫罗兰"},"source":"Pew native generation efa6aff9f478, sampled sRGB pixel (631, 1806); palette.json"}]},"archived":false,"family":{"id":"2026-09-06-01","model":"Azure Foundry · gpt-image-2","previous":{"original":"/logos/originals/pew.png","sourceUrl":"https://github.com/nocoo/pew/blob/44351912506d0584bf59fdcefaec9b4e2be7eeef/logo.png","width":2048,"height":2048,"sha256":"2b94fa9b0b0521008a08caa3bae34552f68785fd591c8dc578ceee943addc35e"},"direction":[{"aspect":"composition","title":{"en":"Just inside the frame","zh":"自然探入画面"},"description":{"en":"The continuous neck enters from the bottom and right edge, with the ears, wink, muzzle, and rainbow tongue kept inside the rounded tile.","zh":"颈部从底部与右侧自然延伸出画面，耳朵、眨眼、鼻口和彩虹舌头完整留在圆角图标内。"}},{"aspect":"drawing","title":{"en":"Stripes become facets","zh":"条纹构成连贯的切面"},"description":{"en":"Broad ivory and charcoal planes carry the familiar zebra. Smaller facets articulate the wink, dark nose, and little rainbow tongue.","zh":"大块象牙白与炭黑平面保留熟悉的斑马，细一些的切面刻画眨眼、深色鼻子与彩虹舌头。"}},{"aspect":"presentation","title":{"en":"A rhythm of its own","zh":"斑马自己的节奏"},"description":{"en":"Tapered stripes fan through the lilac negative space, with fine light edges and shallow shadows. Their geometry echoes the zebra’s markings and belongs only to Pew.","zh":"舒展的条纹掠过淡紫色留白，细亮边与浅阴影带出浮雕质感。纹样呼应斑马的条纹，为 Pew 单独设计。"}}],"palette":[{"color":"#bfb2cf","role":"background","label":{"en":"Lilac field","zh":"丁香紫底色"},"source":"Selected Pew presentation, finishing 04; background.base in archived settings.json"},{"color":"#fcf8f0","role":"primary","label":{"en":"Ivory","zh":"象牙白"},"source":"Pew native generation efa6aff9f478, sampled sRGB pixel (1510, 1740); palette.json"},{"color":"#232637","role":"accent","label":{"en":"Charcoal","zh":"炭黑"},"source":"Pew native generation efa6aff9f478, sampled sRGB pixel (1140, 415); palette.json"},{"color":"#827f8e","role":"accent","label":{"en":"Quiet gray","zh":"柔灰"},"source":"Pew native generation efa6aff9f478, sampled sRGB pixel (770, 334); palette.json"},{"color":"#fb9383","role":"accent","label":{"en":"Coral","zh":"珊瑚橘"},"source":"Pew native generation efa6aff9f478, sampled sRGB pixel (593, 1620); palette.json"},{"color":"#73dce7","role":"accent","label":{"en":"Cyan","zh":"青蓝"},"source":"Pew native generation efa6aff9f478, sampled sRGB pixel (589, 1759); palette.json"},{"color":"#b97ce6","role":"accent","label":{"en":"Violet","zh":"紫罗兰"},"source":"Pew native generation efa6aff9f478, sampled sRGB pixel (631, 1806); palette.json"}],"sizeNote":{"en":"At 16 px the striped silhouette leads; the wink and individual facets merge, while the rainbow tongue becomes a small color accent.","zh":"缩到 16 px 时，黑白条纹轮廓承担辨识度；眨眼与细碎切面会合并，彩虹舌头成为一小点彩色装饰。"},"status":"adopted","updated":"2026-09-07","finishing":"04","root":"/logos/family/pew/2026-09-06-01/04","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/pew/2026-09-06-01","foreground":{"original":"/logos/family/pew/2026-09-06-01/04/transparent.png","display":"/logos/family/pew/2026-09-06-01/04/transparent-1024.webp","width":2048,"height":2048,"sha256":"5c002bb5dcfb31f4db5ca52958e58175ad32bf0a34288828ddf443375b573ecb"}},"overview":{"goal":{"en":"Understand AI coding-tool usage through token and session statistics, with analysis by time, model, device, and project.","zh":"汇总 AI 编程工具的 token 与会话统计，按时间、模型、设备和项目分析使用情况。"},"techStack":[{"name":"TypeScript","role":{"en":"CLI, application, and shared data types","zh":"CLI、应用与共享数据类型"}},{"name":"Node.js","role":{"en":"Published CLI runtime","zh":"已发布 CLI 的运行环境"}},{"name":"Bun","role":{"en":"Workspaces, collection runtime, and tests","zh":"工作区、采集运行环境与测试"}},{"name":"Next.js","role":{"en":"Dashboard and application APIs","zh":"仪表盘与应用 API"}},{"name":"React","role":{"en":"Interactive analytics pages","zh":"交互分析页面"}},{"name":"Basalt","role":{"en":"Reusable interface components","zh":"界面组件"}},{"name":"Tailwind CSS","role":{"en":"Interface styling","zh":"界面样式"}},{"name":"Recharts","role":{"en":"Usage charts","zh":"用量图表"}},{"name":"Auth.js","role":{"en":"Google sign-in and sessions","zh":"Google 登录与会话"}},{"name":"Cloudflare Workers","role":{"en":"Ingestion, queries, and pricing synchronization","zh":"数据写入、查询与价格同步"}},{"name":"Cloudflare D1","role":{"en":"Usage and application data","zh":"用量与应用数据"}},{"name":"Cloudflare KV","role":{"en":"Query and model-price caches","zh":"查询与模型价格缓存"}},{"name":"Cloudflare R2","role":{"en":"Team and organization logo storage","zh":"团队与组织 Logo 存储"}}],"verified":{"date":"2026-09-08","revision":"6eeccb962fe41a03e43c543592900673b9795211","sources":["package.json","packages/cli/package.json","packages/web/package.json","packages/core/src/types.ts","packages/cli/src/bin.ts","packages/cli/src/drivers/registry.ts","packages/cli/src/commands/session-sync-helpers.ts","packages/cli/src/utils/hash-project-ref.ts","packages/cli/src/commands/login.ts","packages/cli/src/notifier/registry.ts","packages/web/src/lib/navigation.ts","packages/web/src/lib/pricing.ts","packages/web/src/lib/invite.ts","packages/web/src/lib/db.ts","packages/web/src/lib/r2.ts","packages/web/src/auth.ts","packages/worker/wrangler.toml","packages/worker-read/wrangler.toml","packages/worker-read/src/sync/orchestrator.ts"]}}},{"id":"firefly","repo":"firefly","title":"Firefly","emoji":"🔥","description":{"en":"A modern home for writing, publishing, and the ideas worth keeping.","zh":"写作、发布，也留住值得记录的想法。由 WordPress 迁移而来的博客平台。"},"category":"everyday","website":"https://lizheng.blog","websiteSource":"nocoo/nocoo README.md Writing link","repository":"https://github.com/nocoo/firefly","subject":"Broad-winged faceted firefly with a small campfire","reference":false,"logo":{"kind":"original","original":"/logos/originals/firefly-2026-09-06.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/firefly/blob/70a4de51b9fe6f152805298c031ca92165754c40/logo.png","modified":false,"width":2048,"height":2048,"bytes":2583578,"sha256":"a2c29a6601fb041c27c7fcc4a4493ae8b0ae09dc72d3d0da6e475400dd167759","thumbnail":"/logos/display/firefly-160.webp","display":"/logos/display/firefly-1024.webp"},"theme":{"background":{"value":"220 14% 94%","source":"src/app/styles/tokens.css --background"},"ink":{"value":"0 0% 12%","source":"src/app/styles/tokens.css --foreground"},"primary":{"value":"217 91% 60%","source":"src/app/styles/tokens.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Modern blog platform — Next.js 16 + Cloudflare D1 + R2, migrated from WordPress","repositoryRevision":"70a4de51b9fe6f152805298c031ca92165754c40"},"colors":{"primary":"#3c83f6","background":"#eeeff2","ink":"#1f1f1f","palette":[{"color":"#3c83f6","role":"primary","source":"src/app/styles/tokens.css --primary: 217 91% 60%"},{"color":"#eeeff2","role":"background","source":"src/app/styles/tokens.css --background: 220 14% 94%"},{"color":"#10282e","role":"background","label":{"en":"Midnight field","zh":"午夜底色"},"source":"Adopted Firefly presentation, finishing 02; background.base in archived settings.json"},{"color":"#fbaa3a","role":"primary","label":{"en":"Amber","zh":"琥珀金"},"source":"Firefly native generation 384fff12838b1e9b282879ffb008f9b9aa8af110ba28400050ef6cd489f48d25, sampled sRGB pixel (940, 695); palette.json"},{"color":"#fcf375","role":"accent","label":{"en":"Living light","zh":"萤光黄"},"source":"Firefly native generation 384fff12838b1e9b282879ffb008f9b9aa8af110ba28400050ef6cd489f48d25, sampled sRGB pixel (1390, 1370); palette.json"},{"color":"#fae1b1","role":"accent","label":{"en":"Champagne","zh":"香槟色"},"source":"Firefly native generation 384fff12838b1e9b282879ffb008f9b9aa8af110ba28400050ef6cd489f48d25, sampled sRGB pixel (1586, 429); palette.json"},{"color":"#271815","role":"accent","label":{"en":"Charcoal","zh":"炭褐"},"source":"Firefly native generation 384fff12838b1e9b282879ffb008f9b9aa8af110ba28400050ef6cd489f48d25, sampled sRGB pixel (833, 795); palette.json"},{"color":"#706170","role":"accent","label":{"en":"Violet","zh":"灰紫"},"source":"Firefly native generation 384fff12838b1e9b282879ffb008f9b9aa8af110ba28400050ef6cd489f48d25, sampled sRGB pixel (1348, 695); palette.json"},{"color":"#fc8816","role":"accent","label":{"en":"Fire orange","zh":"火焰橙"},"source":"Firefly native generation 384fff12838b1e9b282879ffb008f9b9aa8af110ba28400050ef6cd489f48d25, sampled sRGB pixel (452, 1474); palette.json"}]},"archived":false,"family":{"id":"2026-09-06-10","status":"adopted","updated":"2026-09-07","finishing":"02","root":"/logos/family/firefly/2026-09-06-10/02","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/firefly/2026-09-06-10","model":"Azure Foundry · gpt-image-2","foreground":{"subject":{"en":"Broad-winged faceted firefly with a small campfire","zh":"展开双翼的切面萤火虫，与一小簇篝火"},"original":"/logos/family/firefly/2026-09-06-10/02/transparent.png","display":"/logos/family/firefly/2026-09-06-10/02/transparent-1024.webp","width":2048,"height":2048,"sha256":"a2c29a6601fb041c27c7fcc4a4493ae8b0ae09dc72d3d0da6e475400dd167759"},"previous":{"original":"/logos/originals/firefly.png","sourceUrl":"https://github.com/nocoo/firefly/blob/94a16050f87867458d530e63442b99229603e72b/logo.png","width":2048,"height":2048,"sha256":"2c07a3d70ee783d69d2f839ad7f3bc0ca340804a6e66e2702fbe0bc36a845269"},"direction":[{"aspect":"composition","title":{"en":"Room for the wings","zh":"展翼，也留出呼吸的空间"},"description":{"en":"The broad-winged firefly leads the mark. A small fire below its gaze supplies the second point of interest, with clear space around the complete silhouette.","zh":"舒展双翼的萤火虫占据主体，视线下方的小篝火形成第二处兴趣点。完整的轮廓四周留出空间，让翅尖远离圆角边缘。"}},{"aspect":"drawing","title":{"en":"Faceted light, living fire","zh":"切面的萤光，立体的火焰"},"description":{"en":"Connected champagne, bronze, and gold planes describe the insect. Two visible eyes give its gaze direction; curved flame and wood grain add tactile depth to the small campfire.","zh":"香槟色、青铜色与金色的连续切面构成萤火虫，两只清楚的眼睛交代视线。弯曲的火焰与木纹为小篝火增添立体质感。"}},{"aspect":"presentation","title":{"en":"Two lights after dark","zh":"深夜里的两处微光"},"description":{"en":"A deep blue-green field carries a quiet crescent, sparse stars, and cloud contours. Warm light around the flame and abdomen lifts the mark from the matte night surface.","zh":"深蓝绿色底面上浮现安静的月牙、疏星与云纹。火焰和尾部的暖光，让主体从哑光的夜色中轻轻浮起。"}}],"palette":[{"color":"#10282e","role":"background","label":{"en":"Midnight field","zh":"午夜底色"},"source":"Adopted Firefly presentation, finishing 02; background.base in archived settings.json"},{"color":"#fbaa3a","role":"primary","label":{"en":"Amber","zh":"琥珀金"},"source":"Firefly native generation 384fff12838b1e9b282879ffb008f9b9aa8af110ba28400050ef6cd489f48d25, sampled sRGB pixel (940, 695); palette.json"},{"color":"#fcf375","role":"accent","label":{"en":"Living light","zh":"萤光黄"},"source":"Firefly native generation 384fff12838b1e9b282879ffb008f9b9aa8af110ba28400050ef6cd489f48d25, sampled sRGB pixel (1390, 1370); palette.json"},{"color":"#fae1b1","role":"accent","label":{"en":"Champagne","zh":"香槟色"},"source":"Firefly native generation 384fff12838b1e9b282879ffb008f9b9aa8af110ba28400050ef6cd489f48d25, sampled sRGB pixel (1586, 429); palette.json"},{"color":"#271815","role":"accent","label":{"en":"Charcoal","zh":"炭褐"},"source":"Firefly native generation 384fff12838b1e9b282879ffb008f9b9aa8af110ba28400050ef6cd489f48d25, sampled sRGB pixel (833, 795); palette.json"},{"color":"#706170","role":"accent","label":{"en":"Violet","zh":"灰紫"},"source":"Firefly native generation 384fff12838b1e9b282879ffb008f9b9aa8af110ba28400050ef6cd489f48d25, sampled sRGB pixel (1348, 695); palette.json"},{"color":"#fc8816","role":"accent","label":{"en":"Fire orange","zh":"火焰橙"},"source":"Firefly native generation 384fff12838b1e9b282879ffb008f9b9aa8af110ba28400050ef6cd489f48d25, sampled sRGB pixel (452, 1474); palette.json"}],"sizeNote":{"en":"At 24–32 px, the broad wings, amber abdomen, and small fire carry the identity. At 16 px, eyes, fine legs, and wood grain simplify into the warm silhouette.","zh":"在 24–32 px 下，展开的翅膀、琥珀色尾部与小篝火承担辨识度。缩到 16 px 时，眼睛、细腿与木纹会合并进暖色轮廓。"}},"overview":{"goal":{"en":"Write, publish and organize a personal blog through a web console and AI clients sharing the same content.","zh":"写作、发布和整理个人博客，让网页后台与 AI 客户端共用一套内容。"},"techStack":[{"name":"TypeScript","role":{"en":"Application code and scripts","zh":"应用代码与脚本"}},{"name":"Next.js","role":{"en":"Blog, admin console and server APIs","zh":"博客、后台与服务端 API"}},{"name":"React","role":{"en":"Reading and administration interfaces","zh":"阅读与管理界面"}},{"name":"Tailwind CSS","role":{"en":"Page styles and themes","zh":"页面样式与主题"}},{"name":"Cloudflare Workers","role":{"en":"D1 proxy and search endpoints","zh":"D1 代理与搜索接口"}},{"name":"Cloudflare D1","role":{"en":"Blog records and full-text indexes","zh":"博客数据与全文索引"}},{"name":"Cloudflare R2","role":{"en":"Image storage through the S3 API","zh":"通过 S3 API 存储图片"}},{"name":"Auth.js","role":{"en":"Google sign-in and admin sessions","zh":"Google 登录与管理会话"}},{"name":"MCP SDK","role":{"en":"OAuth-protected writing tools","zh":"经过 OAuth 授权的写作工具"}},{"name":"Vercel AI SDK","role":{"en":"Excerpts and link text generation","zh":"摘要与链接文本生成"}},{"name":"Bun","role":{"en":"Dependencies, scripts and test runners","zh":"依赖、脚本与测试运行器"}}],"verified":{"date":"2026-09-08","revision":"dcdea91001928e374c1a64db9290f8ec83ebbd5e","sources":["package.json","worker/package.json","worker/wrangler.toml","worker/src/index.ts","worker/src/fts.ts","src/lib/auth.ts","src/lib/auth-utils.ts","src/lib/r2-client.ts","src/lib/mcp/server.ts","src/lib/mcp/entities/author-post.ts","src/app/api/mcp/route.ts","src/app/api/comments/route.ts","src/app/api/search/route.ts","src/data/backup-export.ts","src/models/backup-schema.ts","src/services/post-service.ts","src/services/ai.ts","src/proxy.ts","scripts/migrations/db-adapter.ts","scripts/migrations/runner.ts","scripts/run-e2e.ts",".github/workflows/ci.yml","docs/30-social-preview.md","LICENSE"]}}},{"id":"bogo","repo":"bogo","title":"Bogo","emoji":"📚","description":{"en":"A personal knowledge home for documents, people, and the connections between them.","zh":"把文档、人物与工作空间放在一起，整理个人知识和它们之间的联系。"},"category":"everyday","website":"https://bogo.hexly.ai","websiteSource":"CLAUDE.md Live-check","repository":"https://github.com/nocoo/bogo","subject":"Winking faceted buffalo with a plain muzzle and one rainbow flower sprig","reference":false,"logo":{"kind":"original","original":"/logos/originals/bogo-2026-09-07.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/bogo/blob/77e211a294a885fff2830d0aba2e48a10299dff1/logo.png","modified":false,"width":2048,"height":2048,"bytes":3637079,"sha256":"54bff5a21a25489a94b5ad3d816332dc7082ed4a41510d782a3c33a05a17fac1","thumbnail":"/logos/display/bogo-160.webp","display":"/logos/display/bogo-1024.webp"},"theme":{"background":{"value":"oklch(0.94 0.012 230)","source":"packages/ui/src/index.css --background"},"ink":{"value":"oklch(0.15 0.02 230)","source":"packages/ui/src/index.css --foreground"},"primary":{"value":"oklch(0.45 0.2 250)","source":"packages/ui/src/index.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Personal knowledge base for documents, people, and workspaces — React + Hono + Cloudflare D1","repositoryRevision":"77e211a294a885fff2830d0aba2e48a10299dff1"},"colors":{"primary":"#0051bd","background":"#e3edf2","ink":"#030d12","palette":[{"color":"#0051bd","role":"primary","source":"packages/ui/src/index.css --primary: oklch(0.45 0.2 250)"},{"color":"#e3edf2","role":"background","source":"packages/ui/src/index.css --background: oklch(0.94 0.012 230)"},{"color":"#b7a186","role":"background","label":{"en":"Warm mineral","zh":"暖矿色"},"source":"Bogo study 05 local presentation, finishing 04; archived background.base and mineral horn arches"},{"color":"#6d4c3c","role":"primary","label":{"en":"Walnut","zh":"胡桃棕"},"source":"Bogo native generation 40919d744626f8def06dcc98ebfd7b85d3474e00387d7edf68b0591ca6b8a1db, sampled sRGB pixel (980, 650); palette.json"},{"color":"#fac15e","role":"accent","label":{"en":"Horn gold","zh":"牛角金"},"source":"Bogo native generation 40919d744626f8def06dcc98ebfd7b85d3474e00387d7edf68b0591ca6b8a1db, sampled sRGB pixel (449, 150); palette.json"},{"color":"#4d3529","role":"accent","label":{"en":"Deep brown","zh":"深褐"},"source":"Bogo native generation 40919d744626f8def06dcc98ebfd7b85d3474e00387d7edf68b0591ca6b8a1db, sampled sRGB pixel (1210, 830); palette.json"},{"color":"#e43e3e","role":"accent","label":{"en":"Coral","zh":"珊瑚红"},"source":"Bogo native generation 40919d744626f8def06dcc98ebfd7b85d3474e00387d7edf68b0591ca6b8a1db, sampled sRGB pixel (236, 1300); palette.json"},{"color":"#81b64f","role":"accent","label":{"en":"Leaf","zh":"嫩叶绿"},"source":"Bogo native generation 40919d744626f8def06dcc98ebfd7b85d3474e00387d7edf68b0591ca6b8a1db, sampled sRGB pixel (1395, 1630); palette.json"},{"color":"#0c7b6b","role":"accent","label":{"en":"Teal","zh":"青绿"},"source":"Bogo native generation 40919d744626f8def06dcc98ebfd7b85d3474e00387d7edf68b0591ca6b8a1db, sampled sRGB pixel (1315, 1595); palette.json"},{"color":"#0e8eb1","role":"accent","label":{"en":"Blue","zh":"湖蓝"},"source":"Bogo native generation 40919d744626f8def06dcc98ebfd7b85d3474e00387d7edf68b0591ca6b8a1db, sampled sRGB pixel (1388, 1698); palette.json"},{"color":"#863a9a","role":"accent","label":{"en":"Violet","zh":"紫罗兰"},"source":"Bogo native generation 40919d744626f8def06dcc98ebfd7b85d3474e00387d7edf68b0591ca6b8a1db, sampled sRGB pixel (371, 1800); palette.json"}]},"archived":false,"family":{"id":"2026-09-07-05","status":"adopted","updated":"2026-09-07","finishing":"04","root":"/logos/family/bogo/2026-09-07-05/04","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/bogo/2026-09-07-05","model":"Azure Foundry · gpt-image-2","foreground":{"subject":{"en":"Winking faceted buffalo with a plain muzzle and one rainbow flower sprig","zh":"自然探头的切面水牛，眨眼表情与一枝彩色花叶"},"original":"/logos/family/bogo/2026-09-07-05/04/transparent.png","display":"/logos/family/bogo/2026-09-07-05/04/transparent-1024.webp","width":2048,"height":2048,"sha256":"54bff5a21a25489a94b5ad3d816332dc7082ed4a41510d782a3c33a05a17fac1"},"previous":{"original":"/logos/originals/bogo.png","sourceUrl":"https://github.com/nocoo/bogo/blob/2e2d986edffd9d320a3e172f37affe5e3406cabe/logo.png","width":2048,"height":2048,"sha256":"eeaf1c419feb02f3990451d642432dbf2fbda2c5ddd1d71269d804e3ce8dd3a1"},"direction":[{"aspect":"composition","title":{"en":"A close encounter","zh":"自然探头的瞬间"},"description":{"en":"The face and flower sprig share a close portrait. A short natural neck enters through the lower frame, with room around the horns, ears, and the complete colorful gesture.","zh":"脸部与花枝组成紧凑的特写，短而自然的颈部从下方入画。牛角、耳朵和完整的彩色花枝四周留出空间，保留探头时的轻松神态。"}},{"aspect":"drawing","title":{"en":"One bright gesture","zh":"趣味集中在一枝花上"},"description":{"en":"Broad walnut and gold facets shape the head, curved horns, and relaxed shoulders. A plain muzzle keeps attention on the wink and the single mouth-held rainbow sprig.","zh":"胡桃棕与金色的大切面构成脸部、弯角和自然的肩线。鼻部保持干净，多彩装饰集中在嘴边的一枝花叶上。"}},{"aspect":"presentation","title":{"en":"Warm mineral relief","zh":"暖矿色的浅浮雕"},"description":{"en":"Broken angular arches sit quietly in the warm mineral field. Fine grain and soft contact shadows give the flat facets a tactile setting.","zh":"断开的折线拱纹安静地铺在暖矿色底面上，细腻颗粒与柔和接触阴影，为平面的碎片带来触手可及的质感。"}}],"palette":[{"color":"#b7a186","role":"background","label":{"en":"Warm mineral","zh":"暖矿色"},"source":"Bogo study 05 local presentation, finishing 04; archived background.base and mineral horn arches"},{"color":"#6d4c3c","role":"primary","label":{"en":"Walnut","zh":"胡桃棕"},"source":"Bogo native generation 40919d744626f8def06dcc98ebfd7b85d3474e00387d7edf68b0591ca6b8a1db, sampled sRGB pixel (980, 650); palette.json"},{"color":"#fac15e","role":"accent","label":{"en":"Horn gold","zh":"牛角金"},"source":"Bogo native generation 40919d744626f8def06dcc98ebfd7b85d3474e00387d7edf68b0591ca6b8a1db, sampled sRGB pixel (449, 150); palette.json"},{"color":"#4d3529","role":"accent","label":{"en":"Deep brown","zh":"深褐"},"source":"Bogo native generation 40919d744626f8def06dcc98ebfd7b85d3474e00387d7edf68b0591ca6b8a1db, sampled sRGB pixel (1210, 830); palette.json"},{"color":"#e43e3e","role":"accent","label":{"en":"Coral","zh":"珊瑚红"},"source":"Bogo native generation 40919d744626f8def06dcc98ebfd7b85d3474e00387d7edf68b0591ca6b8a1db, sampled sRGB pixel (236, 1300); palette.json"},{"color":"#81b64f","role":"accent","label":{"en":"Leaf","zh":"嫩叶绿"},"source":"Bogo native generation 40919d744626f8def06dcc98ebfd7b85d3474e00387d7edf68b0591ca6b8a1db, sampled sRGB pixel (1395, 1630); palette.json"},{"color":"#0c7b6b","role":"accent","label":{"en":"Teal","zh":"青绿"},"source":"Bogo native generation 40919d744626f8def06dcc98ebfd7b85d3474e00387d7edf68b0591ca6b8a1db, sampled sRGB pixel (1315, 1595); palette.json"},{"color":"#0e8eb1","role":"accent","label":{"en":"Blue","zh":"湖蓝"},"source":"Bogo native generation 40919d744626f8def06dcc98ebfd7b85d3474e00387d7edf68b0591ca6b8a1db, sampled sRGB pixel (1388, 1698); palette.json"},{"color":"#863a9a","role":"accent","label":{"en":"Violet","zh":"紫罗兰"},"source":"Bogo native generation 40919d744626f8def06dcc98ebfd7b85d3474e00387d7edf68b0591ca6b8a1db, sampled sRGB pixel (371, 1800); palette.json"}],"sizeNote":{"en":"At 32 px, the broad golden horns, brown face, and colorful sprig carry the identity. At 16 px, the wink and separate petals simplify into the silhouette and a small rainbow accent.","zh":"在 32 px 下，宽阔的金色牛角、棕色脸部与彩色花枝承担辨识度。缩到 16 px 时，眨眼和独立花瓣会合并为轮廓与一小片彩色点缀。"}},"overview":{"goal":{"en":"Keep reporting relationships, documents and revision history together in workspaces, with web and CLI access to the same knowledge base.","zh":"围绕人物和工作空间整理组织关系、文档和版本记录，并用网页与命令行维护同一份知识库。"},"techStack":[{"name":"TypeScript / Bun / Turborepo","role":{"en":"Typed workspaces and local development","zh":"类型、工作区与本地开发"}},{"name":"Cloudflare Workers / Hono","role":{"en":"HTTP API and authentication","zh":"HTTP API 与认证"}},{"name":"Cloudflare D1","role":{"en":"People, documents, revisions, fields and views","zh":"人物、文档、版本、字段与视图存储"}},{"name":"React / Vite / Tailwind CSS","role":{"en":"Web interface and styling","zh":"网页界面与样式"}},{"name":"React Query / React Router","role":{"en":"Server data and navigation","zh":"服务端数据与页面导航"}},{"name":"React Flow / Dagre","role":{"en":"Interactive reporting chart and layout","zh":"交互组织图与布局"}},{"name":"marked / js-yaml / @pierre/diffs","role":{"en":"Markdown, frontmatter and revision comparison","zh":"Markdown、frontmatter 与版本差异"}},{"name":"clip","role":{"en":"CLI generation from the API schema","zh":"从 API schema 生成 CLI"}}],"verified":{"date":"2026-09-08","revision":"2e2d986edffd9d320a3e172f37affe5e3406cabe","sources":["package.json","packages/worker/package.json","packages/worker/src/index.ts","packages/worker/src/middleware/access-auth.ts","packages/worker/src/routes/workspaces.ts","packages/worker/src/routes/persons.ts","packages/worker/src/routes/documents.ts","packages/worker/src/routes/table-views.ts","packages/worker/wrangler.toml","packages/ui/package.json","packages/ui/src/App.tsx","packages/ui/src/components/document/VersionDiff.tsx","packages/ui/src/viewmodels/person/person-tree-layout.ts","packages/ui/src/viewmodels/table/use-table-grid.ts","packages/cli/scripts/build.ts","clip.yaml"]}}},{"id":"steed","repo":"steed","title":"Steed","emoji":"🐎","description":{"en":"A shared home for AI agents, their assets, and the relationships between them.","zh":"面向多智能体的 AI 工作台，管理各个 Agent 的资源与关联。"},"overview":{"goal":{"en":"Give users a shared inventory of agents, CLI tools and their bindings across hosts, so they can check status, ownership and business categories.","zh":"集中盘点多台主机上的 Agent、CLI 工具资源与绑定关系，帮助使用者核对运行状态、资源归属和业务分类。"},"techStack":[{"name":"TypeScript","role":{"en":"Shared types","zh":"共享类型"}},{"name":"Bun","role":{"en":"CLI & host service","zh":"CLI 与主机服务"}},{"name":"React","role":{"en":"Web console","zh":"Web 控制台"}},{"name":"Vite","role":{"en":"Frontend build","zh":"前端构建"}},{"name":"React Flow","role":{"en":"Relationship map","zh":"关系图"}},{"name":"Hono","role":{"en":"API routes","zh":"API 路由"}},{"name":"Cloudflare Workers","role":{"en":"Application hosting","zh":"应用托管"}},{"name":"D1","role":{"en":"Asset storage","zh":"资产存储"}},{"name":"Cloudflare Access","role":{"en":"Console access","zh":"控制台访问"}}],"verified":{"date":"2026-09-08","revision":"bcab1f113b9b7cde65898bbd23705c7dac339634","sources":["package.json","apps/web/package.json","apps/web/worker/index.ts","apps/web/wrangler.toml","packages/api/src/server/router.ts","packages/worker/src/routes/bindings.ts","packages/cli/src/config/defaults.ts","packages/cli/src/service/scanner/data-source.ts","packages/cli/src/commands/init.ts"]}},"category":"ai","website":"https://steed.hexly.ai","websiteSource":"apps/web/wrangler.toml routes","repository":"https://github.com/nocoo/steed","subject":"Chestnut horse portrait with an ivory blaze and one colorful bird","reference":false,"logo":{"kind":"original","original":"/logos/originals/steed-family-2026-09-07-02-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/steed/blob/bcab1f113b9b7cde65898bbd23705c7dac339634/logo.png","modified":false,"width":2048,"height":2048,"bytes":3189966,"sha256":"a58914242de4d8f074ed64d8eb4dfb234354334618940c08d5f4e941edb35a44","thumbnail":"/logos/display/steed-160.webp","display":"/logos/display/steed-1024.webp"},"theme":{"background":{"value":"180 10% 94%","source":"apps/web/src/index.css --background"},"ink":{"value":"180 10% 10%","source":"apps/web/src/index.css --foreground"},"primary":{"value":"175 70% 38%","source":"apps/web/src/index.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"AI Hub for the multi-agent era — asset visibility and relationship management across agents","repositoryRevision":"bcab1f113b9b7cde65898bbd23705c7dac339634"},"colors":{"primary":"#1da599","background":"#eef1f1","ink":"#171c1c","palette":[{"color":"#1da599","role":"primary","source":"apps/web/src/index.css --primary: 175 70% 38%"},{"color":"#eef1f1","role":"background","source":"apps/web/src/index.css --background: 180 10% 94%"},{"color":"#4d3428","source":"Native steed 5ff814fe012b, sampled sRGB pixel (1165, 638); artwork/logo-family/steed/2026-09-07-02/palette.json","role":"accent"},{"color":"#f3d2a9","source":"Native steed 5ff814fe012b, sampled sRGB pixel (1153, 982); artwork/logo-family/steed/2026-09-07-02/palette.json","role":"accent"},{"color":"#309eaf","source":"Native steed 5ff814fe012b, sampled sRGB pixel (1632, 1233); artwork/logo-family/steed/2026-09-07-02/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-02","finishing":"01","root":"/logos/family/steed/2026-09-07-02/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/steed/2026-09-07-02","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Chestnut horse portrait with an ivory blaze and one colorful bird","zh":"栗棕色骏马头像、象牙白额纹与一只多彩小鸟"},"original":"/logos/family/steed/2026-09-07-02/01/transparent.png","display":"/logos/family/steed/2026-09-07-02/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"a58914242de4d8f074ed64d8eb4dfb234354334618940c08d5f4e941edb35a44"},"previous":{"original":"/logos/originals/steed.png","sourceUrl":"https://github.com/nocoo/steed/blob/1159f3769ec3c0a00a9a2bf32e914cf7cff00e33/logo.png","width":2048,"height":2048,"sha256":"9543be6d4d51cca7174ddd485f1bfd87540c22c79c52c8f1186a1fb0efac1719"},"direction":[{"aspect":"composition","title":{"en":"A small visitor","zh":"一位小访客"},"description":{"en":"The horse turns with relaxed ears and a soft muzzle. A small bird sits at the outer mane edge, visibly extending into negative space; natural shoulder anatomy continues below and to the right.","zh":"马儿转头，耳朵放松、口鼻柔和。一只小鸟停在鬃毛外缘，伸入留白；自然肩部向下方与右侧延续。"}},{"aspect":"drawing","title":{"en":"Chestnut, chocolate, ivory","zh":"栗棕、巧克力与象牙白"},"description":{"en":"Broad chestnut coat planes meet a dark chocolate mane and a quiet ivory blaze. The single jewel-colored bird carries the multicolored detail.","zh":"宽阔栗棕毛色切面与深巧克力色鬃毛、安静的象牙白额纹相接。多彩细节集中在一只宝石色小鸟上。"}},{"aspect":"presentation","title":{"en":"Canter pleats","zh":"慢跑风褶"},"description":{"en":"Unequal long wind folds lean across a deep petrol-teal field. Fine grain and shallow shadows separate the warm horse from its cooler setting.","zh":"长短不一的风褶斜穿深汽油青色底纹，细颗粒与浅阴影让暖色马儿从偏冷背景中显现。"}}],"palette":[{"color":"#53817c","role":"background","label":{"en":"Canter pleats","zh":"慢跑风褶"},"source":"Selected Steed presentation, 2026-09-07-02/01; background.base in archived settings.json"},{"color":"#ba7135","role":"primary","label":{"en":"Chestnut coat","zh":"栗棕毛色"},"source":"Native steed 5ff814fe012b, sampled sRGB pixel (659, 480); artwork/logo-family/steed/2026-09-07-02/palette.json"},{"color":"#4d3428","role":"accent","label":{"en":"Chocolate mane","zh":"巧克力色鬃毛"},"source":"Native steed 5ff814fe012b, sampled sRGB pixel (1165, 638); artwork/logo-family/steed/2026-09-07-02/palette.json"},{"color":"#f3d2a9","role":"accent","label":{"en":"Ivory blaze","zh":"象牙白额纹"},"source":"Native steed 5ff814fe012b, sampled sRGB pixel (1153, 982); artwork/logo-family/steed/2026-09-07-02/palette.json"},{"color":"#309eaf","role":"accent","label":{"en":"Bird turquoise","zh":"小鸟松石色"},"source":"Native steed 5ff814fe012b, sampled sRGB pixel (1632, 1233); artwork/logo-family/steed/2026-09-07-02/palette.json"},{"color":"#eb8361","role":"accent","label":{"en":"Bird coral","zh":"小鸟珊瑚色"},"source":"Native steed 5ff814fe012b, sampled sRGB pixel (1459, 1107); artwork/logo-family/steed/2026-09-07-02/palette.json"}],"sizeNote":{"en":"The complete ears, mane tips, face and bird retain at least 214.5 px of protected clearance. Only natural lower/right shoulder entries cross the frame. Two native requests were made: study 01 was rejected because its bird stayed inside the mane; study 02 is selected.","zh":"完整双耳、鬃毛尖、面部与小鸟保留至少 214.5 px 的保护留白，仅自然的下方与右侧肩部穿过边框。共生成两次：第一版小鸟陷在鬃毛内部，最终选择第二版。"},"model":"gpt-image-2"}},{"id":"ellie","repo":"ellie","title":"Ellie","emoji":"🐘","description":{"en":"A modern forum for thoughtful conversations, with a companion terminal client.","zh":"为认真交流而做的现代论坛，也提供可以在终端里使用的客户端。"},"category":"everyday","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/ellie","subject":"Mineral-gray elephant portrait with a curled trunk and one paper airplane","reference":false,"logo":{"kind":"original","original":"/logos/originals/ellie-family-2026-09-07-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/ellie/blob/300b8540eac51ae21803a8d58ebffbe3d90efa24/logo.png","modified":false,"width":2048,"height":2048,"bytes":2690184,"sha256":"85b062e3d5546262bf3cbeef8f4a6815acdf96ddf1213251df539a85bfe9ab4d","thumbnail":"/logos/display/ellie-160.webp","display":"/logos/display/ellie-1024.webp"},"theme":{"background":{"value":"0 0% 100%","source":"apps/web/src/app/tailwind.css --background"},"ink":{"value":"0 0% 12%","source":"apps/web/src/app/tailwind.css --foreground"},"primary":{"value":"200 99% 30%","source":"apps/web/src/app/tailwind.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Modern forum platform on Next.js + Cloudflare Workers + D1, with a Rust TUI client","repositoryRevision":"300b8540eac51ae21803a8d58ebffbe3d90efa24"},"colors":{"primary":"#016698","background":"#ffffff","ink":"#1f1f1f","palette":[{"color":"#016698","role":"primary","source":"apps/web/src/app/tailwind.css --primary: 200 99% 30%"},{"color":"#ffffff","role":"background","source":"apps/web/src/app/tailwind.css --background: 0 0% 100%"},{"color":"#395970","source":"Native ellie 5f05992e1b8a, sampled sRGB pixel (1480, 1164); artwork/logo-family/ellie/2026-09-07-01/palette.json","role":"accent"},{"color":"#e9dac5","source":"Native ellie 5f05992e1b8a, sampled sRGB pixel (1234, 1345); artwork/logo-family/ellie/2026-09-07-01/palette.json","role":"accent"},{"color":"#248aa0","source":"Native ellie 5f05992e1b8a, sampled sRGB pixel (1762, 677); artwork/logo-family/ellie/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"01","root":"/logos/family/ellie/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/ellie/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Mineral-gray elephant portrait with a curled trunk and one paper airplane","zh":"矿石灰大象头像、卷起的鼻子与一架纸飞机"},"original":"/logos/family/ellie/2026-09-07-01/01/transparent.png","display":"/logos/family/ellie/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"85b062e3d5546262bf3cbeef8f4a6815acdf96ddf1213251df539a85bfe9ab4d"},"previous":{"original":"/logos/originals/ellie.png","sourceUrl":"https://github.com/nocoo/ellie/blob/a53769b75c9220fc2ad02eb9cba5d8e342a6be3a/logo.png","width":2048,"height":2048,"sha256":"03f8da981d89188fdbeeec38dcd9e32a693960d5b8af2020b48beaaa86844a13"},"direction":[{"aspect":"composition","title":{"en":"An inquisitive lift","zh":"好奇地抬起鼻尖"},"description":{"en":"The broad ear and cheek carry the portrait while the trunk curls close to the face. A small paper airplane balances the gesture; only the natural lower neck enters the frame edge.","zh":"宽大的耳朵和脸颊承担头像主体，象鼻在脸旁卷起，小纸飞机平衡动作。仅自然延续的颈部穿过底边。"}},{"aspect":"drawing","title":{"en":"Mineral planes","zh":"矿石色切面"},"description":{"en":"Slate and blue-gray facets establish the elephant as one clear mass. Warm ivory anatomy stays opaque; the airplane concentrates the colorful folded panels.","zh":"岩蓝与蓝灰色切面把大象组织成清晰整体，象牙白部位保留不透明度，多彩折面集中于纸飞机。"}},{"aspect":"presentation","title":{"en":"Listening folds","zh":"聆听折面"},"description":{"en":"Unequal broad mineral panels meet along open diagonal seams. A deeper blue field, fine grain and two shallow shadows separate the ear and trunk.","zh":"不等宽的矿石折面沿开放斜缝相接，深蓝底色、细颗粒和两层浅阴影托起象耳与鼻子。"}}],"palette":[{"color":"#537b93","role":"background","label":{"en":"Mineral listening folds","zh":"聆听折面"},"source":"Selected Ellie presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#9dabb7","role":"primary","label":{"en":"Mineral gray","zh":"矿石灰"},"source":"Native ellie 5f05992e1b8a, sampled sRGB pixel (1096, 759); artwork/logo-family/ellie/2026-09-07-01/palette.json"},{"color":"#395970","role":"accent","label":{"en":"Slate planes","zh":"岩蓝色面"},"source":"Native ellie 5f05992e1b8a, sampled sRGB pixel (1480, 1164); artwork/logo-family/ellie/2026-09-07-01/palette.json"},{"color":"#e9dac5","role":"accent","label":{"en":"Ivory tusk","zh":"象牙白"},"source":"Native ellie 5f05992e1b8a, sampled sRGB pixel (1234, 1345); artwork/logo-family/ellie/2026-09-07-01/palette.json"},{"color":"#248aa0","role":"accent","label":{"en":"Airplane teal","zh":"纸飞机青色"},"source":"Native ellie 5f05992e1b8a, sampled sRGB pixel (1762, 677); artwork/logo-family/ellie/2026-09-07-01/palette.json"},{"color":"#9379a2","role":"accent","label":{"en":"Airplane plum","zh":"纸飞机浅紫色"},"source":"Native ellie 5f05992e1b8a, sampled sRGB pixel (1881, 852); artwork/logo-family/ellie/2026-09-07-01/palette.json"}],"sizeNote":{"en":"Ear edges, eye, tusk, curled trunk and the complete airplane retain at least 148.5 px of rounded-edge clearance. Only the lower neck crosses the frame. Admin marks stay transparent; separately configured forum logos and favicon remain independent.","zh":"象耳、眼睛、象牙、卷鼻与整架纸飞机距圆角边界至少 148.5 px，仅下方颈部穿过边框。管理后台使用透明小标，用户配置的论坛标识与 favicon 保持独立。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Browse and maintain the Tongji Network forum, bringing historical Discuz content into a current community interface.","zh":"浏览与维护同济网论坛，将 Discuz 历史内容接入新的社区界面。"},"techStack":[{"name":"TypeScript","role":{"en":"Applications, shared packages and migration tools","zh":"应用、共享包与迁移工具"}},{"name":"Next.js","role":{"en":"Forum, admin console and server API proxies","zh":"论坛、后台与服务端 API 代理"}},{"name":"React","role":{"en":"Community and administration interfaces","zh":"社区与管理交互界面"}},{"name":"Cloudflare Workers","role":{"en":"Forum API and scheduled jobs","zh":"论坛 API 与定时任务"}},{"name":"Cloudflare D1","role":{"en":"Forum records and search indexes","zh":"论坛数据与搜索索引"}},{"name":"Cloudflare KV","role":{"en":"Caches and runtime state","zh":"缓存与运行状态"}},{"name":"Cloudflare R2","role":{"en":"Uploaded files","zh":"上传文件存储"}},{"name":"Auth.js","role":{"en":"Forum credentials and admin Google sessions","zh":"论坛密码登录与后台 Google 会话"}},{"name":"Rust","role":{"en":"Terminal API client","zh":"终端 API 客户端"}},{"name":"ratatui","role":{"en":"Terminal browsing interface","zh":"终端浏览界面"}},{"name":"Bun","role":{"en":"Workspaces, SQLite migration and tests","zh":"工作区、SQLite 迁移与测试"}}],"verified":{"date":"2026-09-08","revision":"5b59a96419ca72d6a3b27fe004f08d79fec2728c","sources":["package.json","apps/web/package.json","apps/admin/package.json","apps/worker/package.json","apps/worker/wrangler.toml","apps/worker/src/index.ts","apps/worker/src/middleware/apiKey.ts","apps/worker/src/handlers/search.ts","apps/web/src/auth.ts","apps/admin/src/auth.ts","apps/worker/.dev.vars.example","packages/cli-rs/Cargo.toml","packages/cli-rs/ellie-core/src/config.rs","packages/cli-rs/ellie-tui/src/app.rs","packages/migrate/src/index.ts","scripts/run-l2.ts","scripts/run-l3-admin.ts","tests/e2e/fixtures/base.ts",".github/workflows/release.yml","LICENSE"]}}},{"id":"neo","repo":"neo","title":"Neo","emoji":"🔐","description":{"en":"Your two-factor codes, together. Encrypted storage, easy imports, and offline access.","zh":"把双重验证口令放在一起，支持加密存储、多格式导入与离线访问。"},"category":"everyday","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/neo","subject":"Golden retriever portrait","reference":false,"logo":{"kind":"original","original":"/logos/originals/neo.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/neo/blob/0d750484792449914b07e9b3e3404a823493f8a5/logo.png","modified":false,"width":2048,"height":2048,"bytes":4237355,"sha256":"2939c3edb084df9e8e0f823dc1433a87374e4432b6af9c94097c10d7dd36bb2d","thumbnail":"/logos/display/neo-160.webp","display":"/logos/display/neo-1024.webp"},"theme":{"background":{"value":"220 14% 94%","source":"app/globals.css --background"},"ink":{"value":"0 0% 12%","source":"app/globals.css --foreground"},"primary":{"value":"217 91% 60%","source":"app/globals.css imports @nocoo/basalt/styles"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Modern TOTP/HOTP authenticator — encrypted storage, 18+ import formats, PWA","repositoryRevision":"0d750484792449914b07e9b3e3404a823493f8a5"},"colors":{"primary":"#3c83f6","background":"#eeeff2","ink":"#1f1f1f","palette":[{"color":"#3c83f6","role":"primary","source":"app/globals.css imports @nocoo/basalt/styles: 217 91% 60%"},{"color":"#eeeff2","role":"background","source":"app/globals.css --background: 220 14% 94%"},{"color":"#ffdebc","role":"accent","source":"Preserved project artwork, sampled pixel"},{"color":"#b17157","role":"accent","source":"Preserved project artwork, sampled pixel"},{"color":"#f3be7f","role":"accent","source":"Preserved project artwork, sampled pixel"}]},"archived":false,"family":{"id":"2026-09-07-03","finishing":"01","root":"/logos/family/neo/2026-09-07-03/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/neo/2026-09-07-03","method":"retained-original","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Original golden faceted retriever with a relaxed smile","zh":"保留原图的金色碎片化寻回犬与放松笑容"},"original":"/logos/family/neo/2026-09-07-03/01/transparent.png","display":"/logos/family/neo/2026-09-07-03/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"2939c3edb084df9e8e0f823dc1433a87374e4432b6af9c94097c10d7dd36bb2d"},"previous":{"original":"/logos/originals/neo.png","sourceUrl":"https://github.com/nocoo/neo/blob/856e487050327aa471ff9761c9d111822f2b46db/logo.png","width":2048,"height":2048,"sha256":"2939c3edb084df9e8e0f823dc1433a87374e4432b6af9c94097c10d7dd36bb2d"},"direction":[{"aspect":"composition","title":{"en":"Keep the relaxed smile","zh":"保留放松的笑容"},"description":{"en":"The original face, ears, smile, tongue, and lower-frame entry stay unchanged. No elongated-neck candidate or new paw is substituted for the owner-retained portrait.","zh":"原来的脸、耳朵、笑容、舌头与下方入框关系全部保留，不以延长颈部的候选或新增爪子替换用户选定的头像。"}},{"aspect":"drawing","title":{"en":"Warm gold on clear facets","zh":"清晰碎片上的暖金色"},"description":{"en":"Golden and cream planes carry the dog, with its existing rose tongue and dark nose. The original transparency, color, anatomy, and framing are copied byte-for-byte.","zh":"金色与奶油色面构成小狗，保留原来的玫瑰舌头和深色鼻尖。透明度、色彩、解剖与构图均逐字节复制。"}},{"aspect":"presentation","title":{"en":"Broad folds of blue light","zh":"蓝色底面的宽幅光束"},"description":{"en":"Unequal oblique paper planes cross the blue negative space. The cooler setting separates the golden face, while fine grain and a shallow shadow keep the family material consistent.","zh":"宽窄不一的斜向纸面穿过蓝色留白，清凉底色突出金色面部，细颗粒与浅阴影保持家族材质的一致。"}}],"palette":[{"color":"#5c7eaa","role":"background","label":{"en":"Folded sunlight","zh":"展示底色"},"source":"Selected Neo presentation, finishing 01; background.base in archived settings.json"},{"color":"#f4be7e","label":{"en":"Golden coat","zh":"金色毛发"},"source":"Original neo 2939c3edb084, sampled sRGB pixel (1447, 448); palette.json","role":"primary"},{"color":"#ffdebb","label":{"en":"Cream light","zh":"奶油高光"},"source":"Original neo 2939c3edb084, sampled sRGB pixel (1040, 504); palette.json","role":"accent"},{"color":"#b17158","label":{"en":"Warm shadow","zh":"暖色阴影"},"source":"Original neo 2939c3edb084, sampled sRGB pixel (345, 729); palette.json","role":"accent"},{"color":"#e88089","label":{"en":"Tongue rose","zh":"舌头玫瑰"},"source":"Original neo 2939c3edb084, sampled sRGB pixel (919, 1539); palette.json","role":"accent"},{"color":"#322a37","label":{"en":"Nose charcoal","zh":"鼻尖炭黑"},"source":"Original neo 2939c3edb084, sampled sRGB pixel (855, 1120); palette.json","role":"accent"}],"sizeNote":{"en":"The golden ears, dark nose, and open smile remain clear at 32 px. Finer coat planes simplify at 16 px. Sidebar and browser marks stay transparent; touch and install icons use platform-specific presentations.","zh":"32 像素时金色耳朵、深色鼻尖与张嘴笑容依然清晰；16 像素时细毛色面会合并。侧栏和浏览器保持透明，触屏与安装图标使用各自平台的展示版本。"}},"overview":{"goal":{"en":"Manage authentication secrets and TOTP codes in a browser, move data between authenticators, and maintain encrypted backup archives.","zh":"在浏览器中管理认证密钥和 TOTP 验证码，在认证器之间迁移数据，并维护加密备份归档。"},"techStack":[{"name":"TypeScript","role":{"en":"Application and OTP logic","zh":"应用与 OTP 逻辑"}},{"name":"Next.js","role":{"en":"Web application and server actions","zh":"Web 应用与服务端操作"}},{"name":"React","role":{"en":"Secret management interface","zh":"密钥管理界面"}},{"name":"Tailwind CSS","role":{"en":"Interface styles","zh":"界面样式"}},{"name":"Cloudflare D1","role":{"en":"User-scoped data through the HTTP API","zh":"经 HTTP API 存储用户数据"}},{"name":"Auth.js","role":{"en":"Google sign-in and sessions","zh":"Google 登录与会话"}},{"name":"Web Crypto","role":{"en":"TOTP and AES-GCM backup encryption","zh":"TOTP 与 AES-GCM 备份加密"}},{"name":"Serwist","role":{"en":"PWA caching and offline fallback","zh":"PWA 缓存与离线回退"}}],"verified":{"date":"2026-09-08","revision":"4e7a2ab145d021addf932c7a154416e99a8bf451","sources":["package.json","auth.ts","lib/db/d1-client.ts","lib/db/scoped.ts","viewmodels/useSecretsViewModel.ts","models/backup-archive.ts","models/import-parsers.ts","app/sw.ts","worker/src/index.ts"]}}},{"id":"giraffe","repo":"giraffe","title":"Giraffe","emoji":"🦒","description":{"en":"A personal GitHub observatory for repositories, workflows, and encrypted snapshots.","zh":"个人 GitHub 观察台，集中查看仓库、工作流与加密的访问令牌快照。"},"category":"tools","website":"https://giraffe.hexly.ai","websiteSource":"GitHub repository homepage","repository":"https://github.com/nocoo/giraffe","subject":"Honey-colored giraffe portrait nibbling one colorful acacia sprig","reference":false,"logo":{"kind":"original","original":"/logos/originals/giraffe-family-2026-09-07-01-02.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/giraffe/blob/c71543478405f580e6dd36ebac18174f7ae6e474/logo.png","modified":false,"width":2048,"height":2048,"bytes":3073843,"sha256":"68144efac72c45b858868fe82c6321a3f23b7428581daec62372259c72d20339","thumbnail":"/logos/display/giraffe-160.webp","display":"/logos/display/giraffe-1024.webp"},"theme":{"primary":{"value":"87 53% 33%","source":"src/client/index.css --basalt-primary"},"background":{"value":"220 14% 94%","source":"@nocoo/basalt/styles tokens --basalt-background"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Personal GitHub monitoring console with encrypted PAT snapshots","repositoryRevision":"c71543478405f580e6dd36ebac18174f7ae6e474"},"colors":{"primary":"#598128","background":"#eeeff2","ink":"#884812","palette":[{"color":"#598128","role":"primary","source":"src/client/index.css --basalt-primary: 87 53% 33%"},{"color":"#eeeff2","role":"background","source":"@nocoo/basalt/styles tokens --basalt-background: 220 14% 94%"},{"color":"#884812","source":"Native giraffe 55739caf938b, sampled sRGB pixel (260, 1830); artwork/logo-family/giraffe/2026-09-07-01/palette.json","role":"accent"},{"color":"#f3d49e","source":"Native giraffe 55739caf938b, sampled sRGB pixel (957, 923); artwork/logo-family/giraffe/2026-09-07-01/palette.json","role":"accent"},{"color":"#828731","source":"Native giraffe 55739caf938b, sampled sRGB pixel (1649, 1388); artwork/logo-family/giraffe/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"02","root":"/logos/family/giraffe/2026-09-07-01/02","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/giraffe/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Honey-colored giraffe portrait nibbling one colorful acacia sprig","zh":"轻咬一枝多彩金合欢叶的蜜金色长颈鹿头像"},"original":"/logos/family/giraffe/2026-09-07-01/02/transparent.png","display":"/logos/family/giraffe/2026-09-07-01/02/transparent-1024.webp","width":2048,"height":2048,"sha256":"68144efac72c45b858868fe82c6321a3f23b7428581daec62372259c72d20339"},"previous":{"original":"/logos/originals/giraffe.png","sourceUrl":"https://github.com/nocoo/giraffe/blob/13083cd48ff37f4d47f1b5848d980eaa72fba80f/logo.png","width":1408,"height":1408,"sha256":"169ba1ff6951014dd9fdedb750bc4d65d7099c250eb1f941570bfb3c509db0fe"},"direction":[{"aspect":"composition","title":{"en":"The last tender leaf","zh":"最后一片嫩叶"},"description":{"en":"A broad cheek, natural ear spread and a gently diagonal neck form one portrait. The mouth-held acacia sprig stays close; the lower neck continues through the viewfinder.","zh":"宽阔脸颊、自然展开的双耳与倾斜颈部构成统一头像。衔住的金合欢叶靠近嘴边，下方颈部自然延续到取景框外。"}},{"aspect":"drawing","title":{"en":"Honey and chestnut","zh":"蜜金与栗棕"},"description":{"en":"Ochre planes and broad chestnut patches preserve the giraffe’s species cues. One colored leaf sprig replaces the enclosing wreath and competing decorative fragments.","zh":"赭黄色面与宽阔栗棕斑纹保留物种特征。一枝多彩叶片取代外圈花环与分散的装饰碎片。"}},{"aspect":"presentation","title":{"en":"Acacia canopy relief","zh":"金合欢树冠压纹"},"description":{"en":"Staggered flat-topped canopies and open branching stems sit in an olive field. Unequal spans add quiet structure around the ears and leaf gesture.","zh":"错落的平顶树冠与开放枝干压在橄榄色底纹上，不同跨度的形状在双耳与叶片周围提供安静的结构。"}}],"palette":[{"color":"#79865b","role":"background","label":{"en":"Acacia canopy relief","zh":"金合欢树冠压纹"},"source":"Selected Giraffe presentation, 2026-09-07-01/02; background.base in archived settings.json"},{"color":"#e6a328","role":"primary","label":{"en":"Honey coat","zh":"蜜金皮毛"},"source":"Native giraffe 55739caf938b, sampled sRGB pixel (1396, 1263); artwork/logo-family/giraffe/2026-09-07-01/palette.json"},{"color":"#884812","role":"accent","label":{"en":"Chestnut patches","zh":"栗棕斑纹"},"source":"Native giraffe 55739caf938b, sampled sRGB pixel (260, 1830); artwork/logo-family/giraffe/2026-09-07-01/palette.json"},{"color":"#f3d49e","role":"accent","label":{"en":"Cream planes","zh":"奶油色面"},"source":"Native giraffe 55739caf938b, sampled sRGB pixel (957, 923); artwork/logo-family/giraffe/2026-09-07-01/palette.json"},{"color":"#828731","role":"accent","label":{"en":"Olive leaves","zh":"橄榄叶色"},"source":"Native giraffe 55739caf938b, sampled sRGB pixel (1649, 1388); artwork/logo-family/giraffe/2026-09-07-01/palette.json"},{"color":"#c76036","role":"accent","label":{"en":"Coral leaf","zh":"珊瑚色叶片"},"source":"Native giraffe 55739caf938b, sampled sRGB pixel (1648, 1477); artwork/logo-family/giraffe/2026-09-07-01/palette.json"}],"sizeNote":{"en":"Ossicones, both ears, face and every leaf keep at least 164.64 px of rounded-edge clearance. A one-pixel placement correction preserves the native extraction and closes the lower neck entry. The historical original is 1408 px; the new artwork is native 2048 px.","zh":"角、双耳、面部与每片叶子距圆角边界至少 164.64 px。一次 1 px 位置修正保持抠图原样，并让颈部自然接到底边。历史原图为 1408 px，新图为原生 2048 px。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Review repositories, open work, alerts, and daily changes across GitHub accounts in a personal console with on-demand data refreshes.","zh":"在个人控制台查看多个 GitHub 账号的仓库、待办、告警和每日变化，按需同步 GitHub 数据。"},"techStack":[{"name":"TypeScript","role":{"en":"Application, Worker, and tooling logic","zh":"应用、Worker 与工具脚本逻辑"}},{"name":"React","role":{"en":"Console pages and interactions","zh":"控制台页面与交互"}},{"name":"Basalt","role":{"en":"Shared interface components","zh":"界面组件"}},{"name":"Hono","role":{"en":"Worker HTTP routes and middleware","zh":"Worker HTTP 路由与中间件"}},{"name":"Cloudflare Workers","role":{"en":"GitHub collection and static hosting","zh":"GitHub 数据采集与静态托管"}},{"name":"Cloudflare D1","role":{"en":"Accounts, encrypted PATs, and snapshots","zh":"账号、加密 PAT 与快照"}},{"name":"Cloudflare Access","role":{"en":"Deployment access and API identity","zh":"部署入口与 API 身份认证"}},{"name":"GitHub API","role":{"en":"REST and GraphQL repository and notification data","zh":"REST 与 GraphQL 仓库和通知数据"}},{"name":"Vite","role":{"en":"Local development and frontend builds","zh":"本地开发与前端构建"}}],"verified":{"date":"2026-09-08","revision":"d772268203e31098f7efa40a032afee2efa91916","sources":["package.json","src/server/index.ts","src/server/env.ts","src/server/lib/token-crypto.ts","src/server/lib/db/schema.sql","src/server/routes/accounts.ts","src/server/routes/refresh.ts","src/server/routes/notifications.ts","src/server/lib/collect.ts","src/server/lib/github-map.ts","src/server/lib/insights.ts","src/server/lib/digest.ts","src/server/middleware/access.ts","src/server/middleware/origin.ts","src/server/lib/access-config.ts","src/server/lib/author-profile.ts","src/client/app.tsx","src/client/routes/settings.tsx","src/client/routes/repo-detail.tsx","src/client/viewmodels/accounts.ts","src/client/viewmodels/digest.ts","vite.config.ts","wrangler.toml","scripts/dev.ts","scripts/ensure-dev-vars.ts","scripts/run-e2e.ts","scripts/run-e2e-bdd.ts","dev.vars.example"]}}},{"id":"backy","repo":"backy","title":"Backy","emoji":"🐢","description":{"en":"A dependable home for AI-agent backups. Store, inspect, and restore with confidence.","zh":"给 AI 智能体的备份服务，集中接收、存储、预览和恢复数据。"},"category":"tools","website":"https://backy.hexly.ai","websiteSource":"GitHub repository homepage","repository":"https://github.com/nocoo/backy","subject":"Small olive tortoise with one folded multicolored leaf on its shell","reference":false,"logo":{"kind":"original","original":"/logos/originals/backy-family-2026-09-07-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/backy/blob/5b23349c94ac6778f2242a857386e8b01dac4f1c/logo.png","modified":false,"width":2048,"height":2048,"bytes":2447370,"sha256":"a89f2303bd3f791f240b514665325c8be7bce60f6a2338bc3efcad2248a6c7ef","thumbnail":"/logos/display/backy-160.webp","display":"/logos/display/backy-1024.webp"},"theme":{"background":{"value":"220 14% 94%","source":"apps/web/src/index.css --background"},"ink":{"value":"0 0% 12%","source":"apps/web/src/index.css --foreground"},"primary":{"value":"146 49% 35%","source":"apps/web/src/index.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"AI backup service for receiving, storing, previewing, and restoring backups","repositoryRevision":"5b23349c94ac6778f2242a857386e8b01dac4f1c"},"colors":{"primary":"#2e8553","background":"#eeeff2","ink":"#1f1f1f","palette":[{"color":"#2e8553","role":"primary","source":"apps/web/src/index.css --primary: 146 49% 35%"},{"color":"#eeeff2","role":"background","source":"apps/web/src/index.css --background: 220 14% 94%"},{"color":"#344b2f","source":"Native backy 79f10e2d2a84, sampled sRGB pixel (551, 995); artwork/logo-family/backy/2026-09-07-01/palette.json","role":"accent"},{"color":"#d5b455","source":"Native backy 79f10e2d2a84, sampled sRGB pixel (926, 772); artwork/logo-family/backy/2026-09-07-01/palette.json","role":"accent"},{"color":"#d77656","source":"Native backy 79f10e2d2a84, sampled sRGB pixel (819, 435); artwork/logo-family/backy/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"01","root":"/logos/family/backy/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/backy/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Small olive tortoise with one folded multicolored leaf on its shell","zh":"橄榄色小陆龟，龟壳上托着一片折叠的多彩叶子"},"original":"/logos/family/backy/2026-09-07-01/01/transparent.png","display":"/logos/family/backy/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"a89f2303bd3f791f240b514665325c8be7bce60f6a2338bc3efcad2248a6c7ef"},"previous":{"original":"/logos/originals/backy.png","sourceUrl":"https://github.com/nocoo/backy/blob/8bf91fc7dcad5abe51323bdcc1e39f0906faa55a/logo.png","width":2048,"height":2048,"sha256":"297d5e88c91484612d1fc34aed41b01b872f1bd24fd92a8fcdd49d0eb7801ef0"},"direction":[{"aspect":"composition","title":{"en":"A leaf along for the ride","zh":"搭便车的小叶子"},"description":{"en":"A compact tortoise pauses during a slow step and turns toward the viewer. A domed shell, short neck and natural feet give it a clear whole-animal silhouette.","zh":"紧凑的小陆龟在缓慢迈步时停下，转头看向镜头。圆拱龟壳、短颈和自然脚掌形成清晰的全身轮廓。"}},{"aspect":"drawing","title":{"en":"Olive scutes, one leaf","zh":"橄榄色盾片与一片叶子"},"description":{"en":"Broad olive and ochre facets describe the shell without noisy scales. One folded coral, teal and violet leaf rises above the shell as the only colorful accessory.","zh":"宽阔橄榄绿和赭黄色面描绘龟壳，避免琐碎鳞片。一片珊瑚、青与紫色的折叶从壳边升起，成为唯一的彩色装饰。"}},{"aspect":"presentation","title":{"en":"Shell saddles","zh":"龟壳弧面"},"description":{"en":"Unequal broad scute impressions cross a deep sage field. Interrupted seams and soft contact shadows echo the shell with room to breathe.","zh":"大小不一的宽阔盾片压纹铺过深鼠尾草色底纹，断开的接缝与浅接触阴影呼应龟壳，并保留充分留白。"}}],"palette":[{"color":"#829178","role":"background","label":{"en":"Shell saddles","zh":"龟壳弧面"},"source":"Selected Backy presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#818a45","role":"primary","label":{"en":"Olive","zh":"橄榄绿"},"source":"Native backy 79f10e2d2a84, sampled sRGB pixel (869, 1165); artwork/logo-family/backy/2026-09-07-01/palette.json"},{"color":"#344b2f","role":"accent","label":{"en":"Forest green","zh":"森林绿"},"source":"Native backy 79f10e2d2a84, sampled sRGB pixel (551, 995); artwork/logo-family/backy/2026-09-07-01/palette.json"},{"color":"#d5b455","role":"accent","label":{"en":"Ochre","zh":"赭黄色"},"source":"Native backy 79f10e2d2a84, sampled sRGB pixel (926, 772); artwork/logo-family/backy/2026-09-07-01/palette.json"},{"color":"#d77656","role":"accent","label":{"en":"Leaf coral","zh":"叶片珊瑚色"},"source":"Native backy 79f10e2d2a84, sampled sRGB pixel (819, 435); artwork/logo-family/backy/2026-09-07-01/palette.json"},{"color":"#518c99","role":"accent","label":{"en":"Leaf teal","zh":"叶片青色"},"source":"Native backy 79f10e2d2a84, sampled sRGB pixel (802, 474); artwork/logo-family/backy/2026-09-07-01/palette.json"}],"sizeNote":{"en":"The complete animal and accessory have at least 275.5 px clearance from the actual rounded outline. Ten export sizes preserve one uniform placement. Small app/browser marks use the transparent foreground; fine facets and accessory details simplify at 16 px.","zh":"完整动物和兴趣点距离真实圆角轮廓至少 275.5 px。十种导出尺寸保持同一组等比位置，小型 UI 与浏览器使用透明主体；细小切面和装饰细节在 16 px 时会简化。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Collect application backups, inspect content and history by project, and retrieve original files.","zh":"集中接收应用备份，按项目查看内容、追踪记录，并取回原始文件。"},"techStack":[{"name":"TypeScript","role":{"en":"Shared types, API logic and scripts","zh":"共享类型、API 逻辑与脚本"}},{"name":"Bun workspaces","role":{"en":"Workspace dependencies and local tooling","zh":"工作区依赖与本地工具"}},{"name":"Vite","role":{"en":"Dashboard development and static builds","zh":"管理界面开发与静态构建"}},{"name":"React","role":{"en":"Backup management interface","zh":"备份管理界面"}},{"name":"Hono","role":{"en":"HTTP routes and middleware","zh":"HTTP 路由与中间件"}},{"name":"Cloudflare Workers","role":{"en":"API, scheduled jobs and static assets","zh":"API、定时任务与静态资源"}},{"name":"Cloudflare D1","role":{"en":"Projects, backup metadata and logs","zh":"项目、备份元数据与日志"}},{"name":"Cloudflare R2","role":{"en":"Backup files and direct uploads","zh":"备份文件与直传"}},{"name":"AWS S3 SDK","role":{"en":"Signed URLs and object copying","zh":"签名 URL 与对象复制"}},{"name":"Cloudflare Access","role":{"en":"Dashboard sign-in","zh":"管理界面登录"}}],"verified":{"date":"2026-09-08","revision":"5b23349c94ac6778f2242a857386e8b01dac4f1c","sources":["package.json","apps/web/package.json","apps/worker/package.json","apps/cli/src/index.ts","apps/web/vite.config.ts","apps/worker/wrangler.toml","apps/worker/src/index.ts","apps/worker/src/middleware/access-auth.ts","apps/worker/src/middleware/is-localhost.ts","apps/worker/src/middleware/ctx.ts","packages/api/src/handlers/webhook.ts","packages/api/src/handlers/restore.ts","packages/api/src/handlers/webhook-direct.ts","packages/api/src/handlers/backups.ts","packages/api/src/handlers/cron.ts","packages/api/src/handlers/gc.ts","packages/api/src/lib/direct-upload.ts","packages/api/src/lib/backup/extractors.ts","packages/api/src/lib/db/schema.ts","packages/api/src/lib/r2/s3-adapter.ts","apps/worker/migrations/0001_direct_uploads.sql","scripts/run-e2e.ts","scripts/run-e2e-bdd.ts",".github/workflows/release.yml","LICENSE"]}}},{"id":"otter","repo":"otter","title":"Otter","emoji":"🦦","description":{"en":"Keep your Mac development setup safe with snapshots, diffs, and cloud backups.","zh":"用快照、差异比较与云端备份，保存 Mac 开发环境的每一次变化。"},"category":"tools","website":"https://otter.hexly.ai","websiteSource":"GitHub repository homepage","repository":"https://github.com/nocoo/otter","subject":"Brown otter in a relaxed curl holding one colorful river shell","reference":false,"logo":{"kind":"original","original":"/logos/originals/otter-family-2026-09-07-01-02.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/otter/blob/0c87197fc9b67d74f9ed6ee70c7ea8c9c4567fe3/logo.png","modified":false,"width":2048,"height":2048,"bytes":2941233,"sha256":"8902636945ce93cd1a6f39a8e545d6462f0b5dd09c3d4d16d66f037d8bf10933","thumbnail":"/logos/display/otter-160.webp","display":"/logos/display/otter-1024.webp"},"theme":{"background":{"value":"220 14% 94%","source":"packages/web/src/globals.css --background"},"ink":{"value":"0 0% 12%","source":"packages/web/src/globals.css --foreground"},"primary":{"value":"186 72% 38%","source":"packages/web/src/globals.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"macOS dev environment backup with snapshot diffing, cloud sync, web dashboard","repositoryRevision":"0c87197fc9b67d74f9ed6ee70c7ea8c9c4567fe3"},"colors":{"primary":"#1b99a7","background":"#eeeff2","ink":"#1f1f1f","palette":[{"color":"#1b99a7","role":"primary","source":"packages/web/src/globals.css --primary: 186 72% 38%"},{"color":"#eeeff2","role":"background","source":"packages/web/src/globals.css --background: 220 14% 94%"},{"color":"#61462f","source":"Native otter eeca4aa68c5f, sampled sRGB pixel (850, 1091); artwork/logo-family/otter/2026-09-07-01/palette.json","role":"accent"},{"color":"#ead0a5","source":"Native otter eeca4aa68c5f, sampled sRGB pixel (863, 544); artwork/logo-family/otter/2026-09-07-01/palette.json","role":"accent"},{"color":"#409999","source":"Native otter eeca4aa68c5f, sampled sRGB pixel (1128, 424); artwork/logo-family/otter/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"02","root":"/logos/family/otter/2026-09-07-01/02","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/otter/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Brown otter in a relaxed curl holding one colorful river shell","zh":"棕色水獭放松蜷起身体，捧着一枚多彩贝壳"},"original":"/logos/family/otter/2026-09-07-01/02/transparent.png","display":"/logos/family/otter/2026-09-07-01/02/transparent-1024.webp","width":2048,"height":2048,"sha256":"8902636945ce93cd1a6f39a8e545d6462f0b5dd09c3d4d16d66f037d8bf10933"},"previous":{"original":"/logos/originals/otter.png","sourceUrl":"https://github.com/nocoo/otter/blob/10f4b2d4d137a9afa79c61622afd68fa03fff80e/logo.png","width":2048,"height":2048,"sha256":"c811a8f167c11b250bd19b5cd569477e109ece11777cbf6d04c80de4be8eed78"},"direction":[{"aspect":"composition","title":{"en":"A small river treasure","zh":"河边的小宝物"},"description":{"en":"The otter pauses in a relaxed curl and holds a shell beside its muzzle. Small ears, cream whisker pads, natural paws and a tapering tail make the species clear.","zh":"水獭放松地蜷起身体，将贝壳捧在嘴边。小耳朵、奶油色须垫、自然爪子与渐细长尾让物种特征更加清晰。"}},{"aspect":"drawing","title":{"en":"Brown carries the identity","zh":"让棕色建立辨识度"},"description":{"en":"Chestnut, umber and cream replace the competing body colors. A single fan-shaped shell carries turquoise, coral, violet and gold beside the face.","zh":"栗棕、深棕与奶油色取代相互争抢的身体色块。一枚扇形贝壳在脸旁集中呈现松石、珊瑚、紫与金色。"}},{"aspect":"presentation","title":{"en":"Riverbank sweeps","zh":"河岸回旋"},"description":{"en":"Two broad offset eddies and a low bank sweep cross a blue-gray field. Open curves and fine grain give the warm animal a cooler, quiet setting.","zh":"两道宽阔错位的回旋和一条低岸曲线穿过蓝灰底色，开放曲线与细颗粒为暖色主体提供安静的冷色背景。"}}],"palette":[{"color":"#648691","role":"background","label":{"en":"Riverbank sweeps","zh":"河岸回旋"},"source":"Selected Otter presentation, 2026-09-07-01/02; background.base in archived settings.json"},{"color":"#a97542","role":"primary","label":{"en":"Chestnut","zh":"栗棕色"},"source":"Native otter eeca4aa68c5f, sampled sRGB pixel (847, 273); artwork/logo-family/otter/2026-09-07-01/palette.json"},{"color":"#61462f","role":"accent","label":{"en":"Umber","zh":"深棕色"},"source":"Native otter eeca4aa68c5f, sampled sRGB pixel (850, 1091); artwork/logo-family/otter/2026-09-07-01/palette.json"},{"color":"#ead0a5","role":"accent","label":{"en":"Cream","zh":"奶油色"},"source":"Native otter eeca4aa68c5f, sampled sRGB pixel (863, 544); artwork/logo-family/otter/2026-09-07-01/palette.json"},{"color":"#409999","role":"accent","label":{"en":"Shell teal","zh":"贝壳青色"},"source":"Native otter eeca4aa68c5f, sampled sRGB pixel (1128, 424); artwork/logo-family/otter/2026-09-07-01/palette.json"},{"color":"#e99178","role":"accent","label":{"en":"Shell coral","zh":"贝壳珊瑚色"},"source":"Native otter eeca4aa68c5f, sampled sRGB pixel (1227, 348); artwork/logo-family/otter/2026-09-07-01/palette.json"}],"sizeNote":{"en":"The complete animal and accessory have at least 224.5 px clearance from the actual rounded outline. Ten export sizes preserve one uniform placement. Small app/browser marks use the transparent foreground; fine facets and accessory details simplify at 16 px.","zh":"完整动物和兴趣点距离真实圆角轮廓至少 224.5 px。十种导出尺寸保持同一组等比位置，小型 UI 与浏览器使用透明主体；细小切面和装饰细节在 16 px 时会简化。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Save macOS development settings and inventories as snapshots for inspection and migration.","zh":"保存 macOS 开发环境配置与清单快照，方便查看变化和迁移电脑。"},"techStack":[{"name":"TypeScript","role":{"en":"CLI, collectors, API and web application","zh":"CLI、采集器、API 与 Web 应用"}},{"name":"Node.js / @nocoo/base-cli","role":{"en":"Command-line runtime, login and configuration","zh":"命令行运行、登录与配置"}},{"name":"Bun workspaces","role":{"en":"Dependencies and development scripts","zh":"依赖管理与开发脚本"}},{"name":"Hono / Cloudflare Workers","role":{"en":"Single Worker for API and static assets","zh":"单 Worker 提供 API 与静态资源"}},{"name":"Cloudflare D1","role":{"en":"Users, tokens, webhooks and snapshot indexes","zh":"用户、Token、Webhook 与快照索引"}},{"name":"Cloudflare R2","role":{"en":"Snapshot JSON and application icons","zh":"快照 JSON 与应用图标"}},{"name":"Vite / React","role":{"en":"Snapshot browsing and JSON export","zh":"快照查看与 JSON 导出"}},{"name":"Cloudflare Access / jose","role":{"en":"Browser identity and JWT verification","zh":"浏览器身份与 JWT 校验"}}],"verified":{"date":"2026-09-08","revision":"74276e49d667df345cac4d6590e01469f35c1115","sources":["package.json","packages/cli/package.json","packages/core/package.json","packages/api/package.json","packages/web/package.json","packages/worker/package.json","packages/cli/src/cli.ts","packages/cli/src/commands/login.ts","packages/cli/src/commands/backup.ts","packages/cli/src/commands/snapshot.ts","packages/cli/src/config/manager.ts","packages/cli/src/storage/local.ts","packages/cli/src/collectors/index.ts","packages/cli/src/collectors/claude-config.ts","packages/cli/src/collectors/hermes.ts","packages/cli/src/collectors/shell-config.ts","packages/cli/src/utils/redact.ts","packages/cli/src/uploader/webhook.ts","packages/worker/src/index.ts","packages/worker/wrangler.toml","packages/api/src/app.ts","packages/api/src/middleware/access-auth.ts","packages/api/src/middleware/api-key-auth.ts","packages/api/src/routes/auth-cli.ts","packages/api/src/routes/api-snapshots.ts","packages/api/src/lib/snapshot-repo.ts","packages/api/src/routes/live.ts","packages/web/vite.config.ts","packages/web/src/pages/SnapshotsPage.tsx","packages/web/src/components/snapshot/export-section.tsx","scripts/run-api-e2e.ts","scripts/run-e2e-spa.ts","vitest.l2.config.ts","packages/cli/e2e/cli-binary.test.ts","packages/web/e2e/playwright.config.ts","playwright.config.ts","e2e/bdd/app.spec.ts",".github/workflows/ci.yml",".github/workflows/release.yml","scripts/release.ts","LICENSE"]}}},{"id":"gecko","repo":"gecko","title":"Gecko","emoji":"🦎","description":{"en":"A little perspective on your screen time, with a Mac tracker and a synced dashboard.","zh":"用 Mac 时间追踪器和同步仪表盘，看看自己的时间花在了哪里。"},"category":"everyday","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/gecko","subject":"Original sandstone-colored gecko with a complete curled tail and toes","reference":false,"logo":{"kind":"original","original":"/logos/originals/gecko.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/gecko/blob/f259be7fe740ce260c9257e2870b57dec8d9e7b3/logo.png","modified":false,"width":2048,"height":2048,"bytes":2799098,"sha256":"8808c313490254f126fa050aee2af4d6d9496e20c007b15036a26d4c06e478d3","thumbnail":"/logos/display/gecko-160.webp","display":"/logos/display/gecko-1024.webp"},"theme":{"background":{"value":"140 14% 94%","source":"apps/web-dashboard/src/app/globals.css --background"},"ink":{"value":"0 0% 12%","source":"apps/web-dashboard/src/app/globals.css --foreground"},"primary":{"value":"146 49% 35%","source":"apps/web-dashboard/src/app/globals.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"macOS menu bar screen time tracker with cloud-synced dashboard","repositoryRevision":"f259be7fe740ce260c9257e2870b57dec8d9e7b3"},"colors":{"primary":"#2e8553","background":"#eef2ef","ink":"#1f1f1f","palette":[{"color":"#2e8553","role":"primary","source":"apps/web-dashboard/src/app/globals.css --primary: 146 49% 35%"},{"color":"#eef2ef","role":"background","source":"apps/web-dashboard/src/app/globals.css --background: 140 14% 94%"},{"color":"#bd9f6d","source":"Native gecko 8808c3134902, sampled sRGB pixel (1645, 317); artwork/logo-family/gecko/2026-09-07-01/palette.json","role":"accent"},{"color":"#bd9f6d","source":"Native gecko 8808c3134902, sampled sRGB pixel (1645, 317); artwork/logo-family/gecko/2026-09-07-01/palette.json","role":"accent"},{"color":"#e4d4b0","source":"Native gecko 8808c3134902, sampled sRGB pixel (1338, 267); artwork/logo-family/gecko/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"01","root":"/logos/family/gecko/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/gecko/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Original sandstone-colored gecko with a complete curled tail and toes","zh":"保留原样的砂岩色壁虎，卷尾和脚趾完整可见"},"original":"/logos/family/gecko/2026-09-07-01/01/transparent.png","display":"/logos/family/gecko/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"8808c313490254f126fa050aee2af4d6d9496e20c007b15036a26d4c06e478d3"},"previous":{"original":"/logos/originals/gecko.png","sourceUrl":"https://github.com/nocoo/gecko/blob/db35d40b4c30e115914b591ac0475f2cc8961375/logo.png","width":2048,"height":2048,"sha256":"8808c313490254f126fa050aee2af4d6d9496e20c007b15036a26d4c06e478d3"},"direction":[{"aspect":"composition","title":{"en":"A familiar pause","zh":"熟悉的停顿"},"description":{"en":"The liked whole gecko keeps its exact native placement, broad face, curled tail and spread toes. The comparison intentionally shows the same animal.","zh":"喜爱的壁虎全身保留原有位置、宽脸、卷尾和展开的脚趾，前后对比有意展示同一个主体。"}},{"aspect":"drawing","title":{"en":"Sandstone stays intact","zh":"完整保留砂岩色"},"description":{"en":"Warm sandstone, clay, cream and quiet sage facets remain byte for byte unchanged. No redraw or new accessory is introduced.","zh":"温暖的砂岩、陶土、奶油与柔和鼠尾草色色面逐字节保留，没有重绘或添加新的装饰。"}},{"aspect":"presentation","title":{"en":"Sandstone shelves","zh":"砂岩层架"},"description":{"en":"Staggered broad ledges and short rising seams sit on a warmer clay field. The low relief gives the gecko a distinct place within the family.","zh":"错落的宽阔层架和短竖缝铺在暖陶土色底纹上，用浅浮雕为壁虎形成独有的家族背景。"}}],"palette":[{"color":"#926d60","role":"background","label":{"en":"Sandstone shelves","zh":"砂岩层架"},"source":"Selected Gecko presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#c4a576","role":"primary","label":{"en":"Sandstone","zh":"砂岩色"},"source":"Native gecko 8808c3134902, sampled sRGB pixel (1645, 318); artwork/logo-family/gecko/2026-09-07-01/palette.json"},{"color":"#bd9f6d","role":"accent","label":{"en":"Clay","zh":"陶土色"},"source":"Native gecko 8808c3134902, sampled sRGB pixel (1645, 317); artwork/logo-family/gecko/2026-09-07-01/palette.json"},{"color":"#bd9f6d","role":"accent","label":{"en":"Sage","zh":"鼠尾草色"},"source":"Native gecko 8808c3134902, sampled sRGB pixel (1645, 317); artwork/logo-family/gecko/2026-09-07-01/palette.json"},{"color":"#e4d4b0","role":"accent","label":{"en":"Cream","zh":"奶油色"},"source":"Native gecko 8808c3134902, sampled sRGB pixel (1338, 267); artwork/logo-family/gecko/2026-09-07-01/palette.json"},{"color":"#bd9f6d","role":"accent","label":{"en":"Dark brown","zh":"深棕色"},"source":"Native gecko 8808c3134902, sampled sRGB pixel (1645, 317); artwork/logo-family/gecko/2026-09-07-01/palette.json"}],"sizeNote":{"en":"The original 2048 px foreground and placement are retained exactly. Existing nearest rounded-outline clearance is 114.5 px with no clipped pixels. Fine facets and small sparks simplify at 16 px; app and browser marks use the transparent source.","zh":"原有 2048 px 透明主体与位置保持完全一致，距圆角轮廓最近处为 114.5 px，没有像素被裁掉。细小切面与电光在 16 px 时会简化，小型 UI 与浏览器使用透明主体。"},"method":"retained-original"},"overview":{"goal":{"en":"Record app and window usage on a Mac, review daily activity in a synced web dashboard, and optionally generate an AI-assisted daily review.","zh":"记录 Mac 上的应用和窗口使用时间，在同步后的 Web 控制台回看每日活动，并按需生成 AI 每日回顾。"},"techStack":[{"name":"Swift / SwiftUI","role":{"en":"macOS tracking app","zh":"macOS 跟踪应用"}},{"name":"AppKit / AppleScript","role":{"en":"Window and browser context","zh":"窗口与浏览器信息"}},{"name":"SQLite / GRDB","role":{"en":"Local session storage","zh":"本地会话存储"}},{"name":"React / TypeScript","role":{"en":"Activity dashboard","zh":"活动控制台"}},{"name":"vinext / Vite","role":{"en":"Web pages and Node.js server","zh":"Web 页面与 Node.js 服务"}},{"name":"Cloudflare D1","role":{"en":"Synced data over the REST API","zh":"通过 REST API 存储同步数据"}},{"name":"NextAuth","role":{"en":"Google sign-in","zh":"Google 登录"}},{"name":"AI SDK","role":{"en":"Optional daily analysis","zh":"可选的每日分析"}}],"verified":{"date":"2026-09-08","revision":"f259be7fe740ce260c9257e2870b57dec8d9e7b3","sources":["apps/mac-client/project.yml","apps/mac-client/Gecko/Sources/Services/TrackingEngine.swift","apps/mac-client/Gecko/Sources/Services/SettingsManager.swift","apps/mac-client/Gecko/Sources/Services/BrowserURLFetcher.swift","apps/mac-client/Gecko/Sources/Services/SyncService.swift","apps/web-dashboard/package.json","apps/web-dashboard/Dockerfile","apps/web-dashboard/src/lib/d1.ts","apps/web-dashboard/src/auth.ts","apps/web-dashboard/src/services/analyze-core.ts","apps/web-dashboard/src/lib/auto-analyze.ts"]}}},{"id":"dove","repo":"dove","title":"Dove","emoji":"🕊️","description":{"en":"A self-hosted email relay with webhooks, reusable templates, and delivery insights.","zh":"可自行托管的邮件中继，支持 Webhook、邮件模板与用量查看。"},"category":"tools","website":"https://dove.hexly.ai","websiteSource":"wrangler.toml routes","repository":"https://github.com/nocoo/dove","subject":"Dove portrait with pink blossoms","reference":false,"logo":{"kind":"original","original":"/logos/originals/dove.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/dove/blob/7454e3d93d8345e5aa09dc778240b65dbbed69d0/logo.png","modified":false,"width":2048,"height":2048,"bytes":4062349,"sha256":"25be5b3506f84b454b9e5a9c469a353955e41fc16123aa6bf7a28088d74bd1aa","thumbnail":"/logos/display/dove-160.webp","display":"/logos/display/dove-1024.webp"},"theme":{"background":{"value":"330 20% 94%","source":"src/client/styles/globals.css --background"},"ink":{"value":"0 0% 12%","source":"src/client/styles/globals.css --foreground"},"primary":{"value":"340 50% 55%","source":"src/client/styles/globals.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Self-hosted email relay with webhook triggers, templates, and usage dashboard","repositoryRevision":"7454e3d93d8345e5aa09dc778240b65dbbed69d0"},"colors":{"primary":"#c65379","background":"#f3edf0","ink":"#1f1f1f","palette":[{"color":"#c65379","role":"primary","source":"src/client/styles/globals.css --primary: 340 50% 55%"},{"color":"#f3edf0","role":"background","source":"src/client/styles/globals.css --background: 330 20% 94%"},{"color":"#7f78a5","role":"accent","source":"Preserved project artwork, sampled pixel"},{"color":"#4c5778","role":"accent","source":"Preserved project artwork, sampled pixel"},{"color":"#fbcbc6","role":"accent","source":"Preserved project artwork, sampled pixel"}]},"archived":false,"family":{"id":"2026-09-07-03","finishing":"01","root":"/logos/family/dove/2026-09-07-03/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/dove/2026-09-07-03","method":"retained-original","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Original violet and teal faceted dove with pink blossoms","zh":"保留原图的紫青色碎片化鸽子与粉色花枝"},"original":"/logos/family/dove/2026-09-07-03/01/transparent.png","display":"/logos/family/dove/2026-09-07-03/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"25be5b3506f84b454b9e5a9c469a353955e41fc16123aa6bf7a28088d74bd1aa"},"previous":{"original":"/logos/originals/dove.png","sourceUrl":"https://github.com/nocoo/dove/blob/2f7e96b0217a800f09c2685065024ae10c34918f/src/client/public/logo.png","width":2048,"height":2048,"sha256":"25be5b3506f84b454b9e5a9c469a353955e41fc16123aa6bf7a28088d74bd1aa"},"direction":[{"aspect":"composition","title":{"en":"The original blossom portrait","zh":"保留原来的花枝头像"},"description":{"en":"The dove, shoulder curve, watchful eye, and surrounding blossom group retain their original layout. This pass does not use any superseded neck-extension study.","zh":"鸽子、肩部曲线、专注眼神与周围花枝均保留原来布局，不采用此前已撤回的延长颈部版本。"}},{"aspect":"drawing","title":{"en":"One blossom group","zh":"一个完整的花枝点缀"},"description":{"en":"Violet, blue, and mint facets remain the original bird; the existing pink blossoms form the signature accent group. All foreground pixels and detached petals are preserved.","zh":"紫、蓝和薄荷色碎片构成原来的鸟，既有粉色花枝是标志性的点缀组。所有前景像素与飘落花瓣均保留。"}},{"aspect":"presentation","title":{"en":"Petals pressed into violet paper","zh":"紫色纸面上的花瓣压纹"},"description":{"en":"Sparse elongated petals sit at the corners of a muted violet field. Fine grain, offset edge light, and a shallow shadow keep the real blossom group in front.","zh":"稀疏修长的花瓣纹位于柔和紫色底面的角落，细颗粒、偏移边光与浅阴影让真正的花枝点缀保持在视觉前方。"}}],"palette":[{"color":"#83759b","role":"background","label":{"en":"Pressed petals","zh":"展示底色"},"source":"Selected Dove presentation, finishing 01; background.base in archived settings.json"},{"color":"#8079a5","label":{"en":"Iris violet","zh":"鸢尾紫"},"source":"Original dove 25be5b3506f8, sampled sRGB pixel (885, 372); palette.json","role":"primary"},{"color":"#4c5777","label":{"en":"Blue feather","zh":"蓝羽"},"source":"Original dove 25be5b3506f8, sampled sRGB pixel (1237, 783); palette.json","role":"accent"},{"color":"#fbccc6","label":{"en":"Petal pink","zh":"花瓣粉"},"source":"Original dove 25be5b3506f8, sampled sRGB pixel (336, 482); palette.json","role":"accent"},{"color":"#65c8b6","label":{"en":"Mint feather","zh":"薄荷羽色"},"source":"Original dove 25be5b3506f8, sampled sRGB pixel (1101, 1055); palette.json","role":"accent"},{"color":"#d4b7a9","label":{"en":"Warm beak","zh":"暖色鸟喙"},"source":"Original dove 25be5b3506f8, sampled sRGB pixel (1196, 474); palette.json","role":"accent"}],"sizeNote":{"en":"The violet silhouette and pink blossom arc remain distinct at 32 px. At 16 px small petals and feather facets merge; use the transparent foreground for browser and sidebar marks.","zh":"32 像素时紫色轮廓与粉色花枝弧线仍能区分；16 像素时细花瓣与羽毛碎片会合并。浏览器和侧栏标记使用透明前景。"}},"overview":{"goal":{"en":"Manage email templates for personal projects, send notifications through webhooks, and inspect sending records.","zh":"为个人项目集中管理邮件模板，通过 Webhook 发送通知并查询发送记录。"},"techStack":[{"name":"TypeScript","role":{"en":"Application and sending logic","zh":"应用与发送逻辑"}},{"name":"Cloudflare Workers","role":{"en":"API runtime and static asset hosting","zh":"API 运行时与静态资源托管"}},{"name":"Hono","role":{"en":"Dashboard API and webhook routes","zh":"管理 API 与 Webhook 路由"}},{"name":"Cloudflare D1","role":{"en":"Projects, templates, logs and sending state","zh":"项目、模板、日志与发送状态存储"}},{"name":"React","role":{"en":"Email management dashboard","zh":"邮件管理界面"}},{"name":"Vite","role":{"en":"Dashboard build","zh":"管理界面构建"}},{"name":"Cloudflare Access","role":{"en":"Administrator authentication","zh":"管理员身份验证"}},{"name":"Resend","role":{"en":"API email sending backend","zh":"通过 API 发送邮件"}},{"name":"Cloudflare Email Routing","role":{"en":"Email sending through the Worker binding","zh":"通过 Worker 绑定发送邮件"}},{"name":"Bun","role":{"en":"Dependencies, scripts and HTTP tests","zh":"依赖、脚本与 HTTP 测试"}}],"verified":{"date":"2026-09-08","revision":"a010ab2daf92fd3cda45dee41a18132f444d1780","sources":["package.json","vite.config.ts","wrangler.toml","src/server/index.ts","src/server/middleware/auth-session.ts","src/server/routes/webhook.ts","src/server/routes/templates.ts","src/server/routes/providers.ts","src/server/lib/email/provider.ts","src/lib/email/providers/resend.ts","src/lib/email/providers/cloudflare.ts","src/client/routes/projects/$id.tsx","src/server/schema.sql","scripts/setup-ci-env.ts","scripts/run-e2e.ts","playwright.config.ts",".github/workflows/release.yml","LICENSE"]}}},{"id":"pika","repo":"pika","title":"Pika","emoji":"⚡","description":{"en":"Replay, search, and rediscover your AI coding conversations.","zh":"回放、搜索和重新发现 AI 编程会话，让过去的思路更容易找回来。"},"category":"ai","website":"https://pika.hexly.ai","websiteSource":"packages/web-worker/wrangler.toml routes","repository":"https://github.com/nocoo/pika","subject":"Original yellow Pika with its complete lightning gesture","reference":false,"logo":{"kind":"original","original":"/logos/originals/pika.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/pika/blob/bb9b497372809e5ca00eaef4b04e1aa51e4256a3/logo.png","modified":false,"width":2048,"height":2048,"bytes":2575312,"sha256":"2dc5121317e88001e8459d007419d5b9ca998a95f91bee4992b70bba96aacd2b","thumbnail":"/logos/display/pika-160.webp","display":"/logos/display/pika-1024.webp"},"theme":{"background":{"value":"220 14% 94%","source":"packages/web/src/globals.css --background"},"ink":{"value":"0 0% 12%","source":"packages/web/src/globals.css --foreground"},"primary":{"value":"42 82% 42%","source":"packages/web/src/globals.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"AI coding session replay and search — parse, upload, and full-text search","repositoryRevision":"bb9b497372809e5ca00eaef4b04e1aa51e4256a3"},"colors":{"primary":"#c38e13","background":"#eeeff2","ink":"#1f1f1f","palette":[{"color":"#c38e13","role":"primary","source":"packages/web/src/globals.css --primary: 42 82% 42%"},{"color":"#eeeff2","role":"background","source":"packages/web/src/globals.css --background: 220 14% 94%"},{"color":"#fdc904","source":"Native pika 2dc5121317e8, sampled sRGB pixel (1681, 1223); artwork/logo-family/pika/2026-09-07-01/palette.json","role":"accent"},{"color":"#fdc904","source":"Native pika 2dc5121317e8, sampled sRGB pixel (1681, 1223); artwork/logo-family/pika/2026-09-07-01/palette.json","role":"accent"},{"color":"#fdc904","source":"Native pika 2dc5121317e8, sampled sRGB pixel (1681, 1223); artwork/logo-family/pika/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"01","root":"/logos/family/pika/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/pika/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Original yellow Pika with its complete lightning gesture","zh":"保留原样的黄色 Pika 与完整闪电动作"},"original":"/logos/family/pika/2026-09-07-01/01/transparent.png","display":"/logos/family/pika/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"2dc5121317e88001e8459d007419d5b9ca998a95f91bee4992b70bba96aacd2b"},"previous":{"original":"/logos/originals/pika.png","sourceUrl":"https://github.com/nocoo/pika/blob/d9b12caf26a4715aca440d8a6fe1ed929adcadb3/logo.png","width":2048,"height":2048,"sha256":"2dc5121317e88001e8459d007419d5b9ca998a95f91bee4992b70bba96aacd2b"},"direction":[{"aspect":"composition","title":{"en":"Keep the charge","zh":"保留原来的动势"},"description":{"en":"The original forward leap, ears, tail and lightning fragments remain exactly where they were. No source pixels, placement or colors are changed.","zh":"原来的前跃动作、耳朵、尾巴和闪电碎片全部保留原位，主体像素、位置与颜色均未改变。"}},{"aspect":"drawing","title":{"en":"Original yellow facets","zh":"原有的黄色切面"},"description":{"en":"Golden-yellow and lemon facets retain their native contrast and small colored sparks. This pass adds presentation layers without a generation request.","zh":"金黄与柠檬黄色面保持原有对比和小块彩色电光。本轮只添加展示层，没有调用生图模型。"}},{"aspect":"presentation","title":{"en":"Charge steps","zh":"充电阶梯"},"description":{"en":"Large offset zigzag steps cut through a deeper olive-gold field. Their low tonal contrast supports the original lightning gesture.","zh":"大块错位折线阶梯穿过较深的橄榄金色底纹，用克制的明暗层次承托原有闪电动作。"}}],"palette":[{"color":"#918451","role":"background","label":{"en":"Charge steps","zh":"充电阶梯"},"source":"Selected Pika presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#fdc904","role":"primary","label":{"en":"Golden yellow","zh":"金黄色"},"source":"Native pika 2dc5121317e8, sampled sRGB pixel (1681, 1223); artwork/logo-family/pika/2026-09-07-01/palette.json"},{"color":"#fdc904","role":"accent","label":{"en":"Lemon","zh":"柠檬黄"},"source":"Native pika 2dc5121317e8, sampled sRGB pixel (1681, 1223); artwork/logo-family/pika/2026-09-07-01/palette.json"},{"color":"#fdc904","role":"accent","label":{"en":"Charcoal","zh":"炭灰色"},"source":"Native pika 2dc5121317e8, sampled sRGB pixel (1681, 1223); artwork/logo-family/pika/2026-09-07-01/palette.json"},{"color":"#fdc904","role":"accent","label":{"en":"Coral","zh":"珊瑚色"},"source":"Native pika 2dc5121317e8, sampled sRGB pixel (1681, 1223); artwork/logo-family/pika/2026-09-07-01/palette.json"},{"color":"#fdc904","role":"accent","label":{"en":"Electric blue","zh":"电光蓝"},"source":"Native pika 2dc5121317e8, sampled sRGB pixel (1681, 1223); artwork/logo-family/pika/2026-09-07-01/palette.json"}],"sizeNote":{"en":"The original 2048 px foreground and placement are retained exactly. Existing nearest rounded-outline clearance is 26.5 px with no clipped pixels. Fine facets and small sparks simplify at 16 px; app and browser marks use the transparent source.","zh":"原有 2048 px 透明主体与位置保持完全一致，距圆角轮廓最近处为 26.5 px，没有像素被裁掉。细小切面与电光在 16 px 时会简化，小型 UI 与浏览器使用透明主体。"},"method":"retained-original"},"overview":{"goal":{"en":"Collect coding-agent sessions to search, read and organize across tools.","zh":"集中保存不同 AI 编程工具的会话，方便搜索、阅读和整理。"},"techStack":[{"name":"TypeScript","role":{"en":"Shared types, parsers and API logic","zh":"共享类型、解析器与 API 逻辑"}},{"name":"Bun","role":{"en":"CLI runtime and workspace tooling","zh":"CLI 运行时与工作区工具"}},{"name":"@nocoo/base-cli","role":{"en":"CLI commands and browser login","zh":"CLI 命令与浏览器登录"}},{"name":"Vite","role":{"en":"SPA development and builds","zh":"SPA 开发与构建"}},{"name":"React","role":{"en":"Session browsing and management","zh":"会话阅读与管理界面"}},{"name":"Hono","role":{"en":"HTTP routing and middleware","zh":"HTTP 路由与中间件"}},{"name":"Cloudflare Workers","role":{"en":"API and static assets in one service","zh":"同一服务中的 API 与静态资源"}},{"name":"Cloudflare D1","role":{"en":"Session metadata and full-text search","zh":"会话元数据与全文搜索"}},{"name":"Cloudflare R2","role":{"en":"Compressed canonical messages and raw content","zh":"压缩后的标准化消息及原始内容"}},{"name":"Cloudflare Access","role":{"en":"Browser authentication","zh":"浏览器身份认证"}}],"verified":{"date":"2026-09-08","revision":"02487858f8c567a7e3c780cf951abc957c54623d","sources":["package.json","packages/cli/package.json","packages/web/package.json","packages/web-worker/package.json","packages/cli/src/cli.ts","packages/cli/src/config/manager.ts","packages/cli/src/api/client.ts","packages/cli/src/commands/login.ts","packages/cli/src/commands/sync.ts","packages/cli/src/commands/sync-pipeline.ts","packages/cli/src/drivers/registry.ts","packages/core/src/constants.ts","packages/web/src/App.tsx","packages/web/src/pages/dashboard/sessions/page.tsx","packages/web/vite.config.ts","packages/web/vitest.config.ts","packages/web-worker/wrangler.toml","packages/web-worker/src/index.ts","packages/web-worker/src/middleware/access-auth.ts","packages/web-worker/src/middleware/api-key-auth.ts","packages/web-worker/src/routes/auth-cli.ts","packages/web-worker/src/api/ingest.ts","packages/web-worker/src/data/search.ts","packages/web-worker/test/e2e/global-setup.ts","scripts/migrations/001-init.sql","scripts/migrations/006-api-tokens.sql","packages/core/test/migration.test.ts",".github/workflows/ci.yml",".github/workflows/release.yml","LICENSE"]}}},{"id":"raven","repo":"raven","title":"Raven","emoji":"🐦‍⬛","description":{"en":"Connect GitHub Copilot to Anthropic- and OpenAI-compatible tools and track usage.","zh":"为 GitHub Copilot 提供兼容 Anthropic 与 OpenAI 的接口，并查看使用情况。"},"category":"ai","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/raven","subject":"Purple-indigo raven portrait","reference":false,"logo":{"kind":"original","original":"/logos/originals/raven-family-2026-09-07-04-02.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/raven/blob/c59fe3ad5a0aea2e849b2b9ee00be189091c9faf/logo.png","modified":false,"width":2048,"height":2048,"bytes":2327803,"sha256":"9b5f6ee551ad4e2e082b6f99ce690bcd782db67fc0d90fdfcf46f6e28af28319","thumbnail":"/logos/display/raven-160.webp","display":"/logos/display/raven-1024.webp"},"theme":{"primary":{"value":"255 55% 52%","source":"packages/dashboard/src/app/globals.css --basalt-primary"},"background":{"value":"220 14% 94%","source":"@nocoo/basalt/styles tokens --basalt-background"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Copilot proxy for Anthropic/OpenAI APIs with usage dashboard","repositoryRevision":"c59fe3ad5a0aea2e849b2b9ee00be189091c9faf"},"colors":{"primary":"#6341c8","background":"#eeeff2","ink":"#101633","palette":[{"color":"#6341c8","role":"primary","source":"packages/dashboard/src/app/globals.css --basalt-primary: 255 55% 52%"},{"color":"#eeeff2","role":"background","source":"@nocoo/basalt/styles tokens --basalt-background: 220 14% 94%"},{"color":"#31356a","role":"accent","source":"Native raven 778f2af775a2, sampled sRGB pixel (729, 1056); artwork/logo-family/raven/2026-09-07-04/palette.json"},{"color":"#65408f","role":"accent","source":"Native raven 778f2af775a2, sampled sRGB pixel (223, 1203); artwork/logo-family/raven/2026-09-07-04/palette.json"},{"color":"#9bdfc6","role":"accent","source":"Native raven 778f2af775a2, sampled sRGB pixel (1324, 404); artwork/logo-family/raven/2026-09-07-04/palette.json"}]},"archived":false,"family":{"id":"2026-09-07-04","finishing":"02","root":"/logos/family/raven/2026-09-07-04/02","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/raven/2026-09-07-04","model":"gpt-image-2","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Right-facing indigo raven with a faceted eye, violet feathers, and mint accents","zh":"向右看的靛蓝渡鸦，保留碎片眼睛、紫色羽毛与薄荷点缀"},"original":"/logos/family/raven/2026-09-07-04/02/transparent.png","display":"/logos/family/raven/2026-09-07-04/02/transparent-1024.webp","width":2048,"height":2048,"sha256":"9b5f6ee551ad4e2e082b6f99ce690bcd782db67fc0d90fdfcf46f6e28af28319"},"previous":{"original":"/logos/originals/raven.png","sourceUrl":"https://github.com/nocoo/raven/blob/2e082931954fc48131177c57138c6956b1cd67c9/logo.png","width":2048,"height":2048,"sha256":"4de4df89c83e1fe24a02c6446e158793ccef0edfb7e4ee953a538edcf2004bf8"},"direction":[{"aspect":"composition","title":{"en":"A glance through the viewfinder","zh":"取景框中的凝视"},"description":{"en":"The eye and slightly parted beak retain their familiar angle. Restored rear feathers lead into a folded wing root at the lower-left edge, with no round neck stump.","zh":"眼睛与微张鸟喙保持熟悉角度，补全后脑羽毛并自然连接左下边缘的折叠翼根，消除圆形颈部截断。"}},{"aspect":"drawing","title":{"en":"Indigo feather planes","zh":"靛蓝羽毛切面"},"description":{"en":"Connected broad indigo and violet facets carry the portrait. The existing mint and cyan plumage remains restrained; the animal gains no extra prop or competing accent.","zh":"连贯的大块靛蓝与紫色切面构成头像，沿用克制的薄荷与青色羽毛，不增加道具或竞争点缀。"}},{"aspect":"presentation","title":{"en":"Quill pennants","zh":"羽翎浮纹"},"description":{"en":"Staggered pointed feather impressions sit in a lavender field. Broad relief, fine grain, and shallow shadow support the dark bird without repeating another project’s pattern.","zh":"错落的尖羽压纹落在淡紫底面上，以宽阔浮纹、细颗粒与浅阴影衬托深色渡鸦，采用独立的项目纹理。"}}],"palette":[{"color":"#b0a6c5","role":"background","label":{"en":"Quill pennants","zh":"展示底色"},"source":"Selected Raven presentation, 2026-09-07-04/02; background.base in archived settings.json"},{"color":"#31356a","role":"primary","label":{"en":"Indigo feathers","zh":"靛蓝羽毛"},"source":"Native raven 778f2af775a2, sampled sRGB pixel (729, 1056); artwork/logo-family/raven/2026-09-07-04/palette.json"},{"color":"#65408f","role":"accent","label":{"en":"Violet planes","zh":"紫色切面"},"source":"Native raven 778f2af775a2, sampled sRGB pixel (223, 1203); artwork/logo-family/raven/2026-09-07-04/palette.json"},{"color":"#9bdfc6","role":"accent","label":{"en":"Mint crown","zh":"薄荷头冠"},"source":"Native raven 778f2af775a2, sampled sRGB pixel (1324, 404); artwork/logo-family/raven/2026-09-07-04/palette.json"},{"color":"#4fb6d0","role":"accent","label":{"en":"Cyan plumage","zh":"青色羽毛"},"source":"Native raven 778f2af775a2, sampled sRGB pixel (898, 1359); artwork/logo-family/raven/2026-09-07-04/palette.json"},{"color":"#101633","role":"accent","label":{"en":"Deep navy","zh":"深海蓝"},"source":"Native raven 778f2af775a2, sampled sRGB pixel (1347, 792); artwork/logo-family/raven/2026-09-07-04/palette.json"}],"sizeNote":{"en":"At 32 px, the hooked beak, bright eye, and indigo silhouette remain the strongest cues. At 16 px the feather facets simplify into a dark profile with cool highlights.","zh":"32 像素时，弯喙、亮眼与靛蓝轮廓最易辨认；16 像素时羽毛切面会简化为带冷色高光的深色侧影。"}},"overview":{"goal":{"en":"Connect compatible clients to GitHub Copilot and custom model upstreams through a local API proxy, with request analytics and live diagnostics.","zh":"通过本机 API 代理将兼容客户端接入 GitHub Copilot 与自定义模型上游，并查看调用统计和实时诊断信息。"},"techStack":[{"name":"Bun / TypeScript / Hono","role":{"en":"Proxy runtime, HTTP routing and SSE","zh":"代理运行环境、HTTP 路由与 SSE"}},{"name":"SQLite","role":{"en":"Request records, keys, settings and providers","zh":"请求记录、密钥、设置与 provider"}},{"name":"Next.js / React","role":{"en":"Dashboard and server routes","zh":"Dashboard 与服务端接口"}},{"name":"Basalt / Tailwind CSS","role":{"en":"Components and styling","zh":"组件与样式"}},{"name":"SWR / Recharts","role":{"en":"Data updates and analytics charts","zh":"数据更新与统计图表"}},{"name":"NextAuth / Google OAuth","role":{"en":"Optional dashboard login","zh":"可选的 Dashboard 登录"}},{"name":"Zod / gpt-tokenizer","role":{"en":"Validation and token estimates","zh":"校验与 token 估算"}},{"name":"socks / Tavily","role":{"en":"Optional outbound proxy and web search","zh":"可选出站代理与网络搜索"}}],"verified":{"date":"2026-09-08","revision":"a668dbf4fa318429e34686f7bf86731ca1494fd4","sources":["package.json","packages/proxy/package.json","packages/proxy/src/index.ts","packages/proxy/src/app.ts","packages/proxy/src/core/router.ts","packages/proxy/src/composition/strategy-registry.ts","packages/proxy/src/middleware.ts","packages/proxy/src/lib/token.ts","packages/proxy/src/lib/app-dirs.ts","packages/proxy/src/db/providers.ts","packages/dashboard/package.json","packages/dashboard/src/auth.ts","packages/dashboard/src/lib/proxy.ts","packages/dashboard/src/components/layout/sidebar.tsx"]}}},{"id":"bat","repo":"bat","title":"Bat","emoji":"🦇","description":{"en":"A lightweight watchtower for your servers, with a Rust probe and a clear dashboard.","zh":"轻量的服务器观察台，用 Rust 探针采集状态，在仪表盘里集中查看。"},"category":"tools","website":"https://bat.hexly.ai","websiteSource":"CLAUDE.md Live-check","repository":"https://github.com/nocoo/bat","subject":"Upright plum bat with folded wings and one colorful fig","reference":false,"logo":{"kind":"original","original":"/logos/originals/bat-family-2026-09-07-01-02.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/bat/blob/46f5c95a6c134487130e2a6d9336ec5e8895a0f7/logo.png","modified":false,"width":2048,"height":2048,"bytes":2092682,"sha256":"882034b5b3e7511560a999422199cb486c80ee3fc00eb586d6584326fa4f1e1d","thumbnail":"/logos/display/bat-160.webp","display":"/logos/display/bat-1024.webp"},"theme":{"background":{"value":"220 14% 94%","source":"packages/ui/src/index.css --background"},"ink":{"value":"0 0% 12%","source":"packages/ui/src/index.css --foreground"},"primary":{"value":"340 70% 58%","source":"packages/ui/src/index.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Lightweight VPS monitoring — Rust probe, Cloudflare Worker, Next.js dashboard","repositoryRevision":"46f5c95a6c134487130e2a6d9336ec5e8895a0f7"},"colors":{"primary":"#df497b","background":"#eeeff2","ink":"#1f1f1f","palette":[{"color":"#df497b","role":"primary","source":"packages/ui/src/index.css --primary: 340 70% 58%"},{"color":"#eeeff2","role":"background","source":"packages/ui/src/index.css --background: 220 14% 94%"},{"color":"#a589a4","source":"Native bat 1935dbb8272e, sampled sRGB pixel (1495, 1347); artwork/logo-family/bat/2026-09-07-01/palette.json","role":"accent"},{"color":"#302935","source":"Native bat 1935dbb8272e, sampled sRGB pixel (981, 1196); artwork/logo-family/bat/2026-09-07-01/palette.json","role":"accent"},{"color":"#d78b8f","source":"Native bat 1935dbb8272e, sampled sRGB pixel (1226, 1136); artwork/logo-family/bat/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"02","root":"/logos/family/bat/2026-09-07-01/02","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/bat/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Upright plum bat with folded wings and one colorful fig","zh":"正向站立、收翼的梅紫蝙蝠与一颗多彩无花果"},"original":"/logos/family/bat/2026-09-07-01/02/transparent.png","display":"/logos/family/bat/2026-09-07-01/02/transparent-1024.webp","width":2048,"height":2048,"sha256":"882034b5b3e7511560a999422199cb486c80ee3fc00eb586d6584326fa4f1e1d"},"previous":{"original":"/logos/originals/bat.png","sourceUrl":"https://github.com/nocoo/bat/blob/99e48ef72afeaf178422c17875728128fe06615c/logo.png","width":2048,"height":2048,"sha256":"24b80b738e8425f05eac0e83a9a78ece9d22c7390fc56a33d50c7fdc0a05ee62"},"direction":[{"aspect":"composition","title":{"en":"A pause before a bite","zh":"开吃前的片刻"},"description":{"en":"A friendly upright bat holds its wings close and pauses beside a fig. Complete ears and feet stay inside the frame; a small wing thumb supports the fruit.","zh":"温和的小蝙蝠正向站立、收拢翅膀，在无花果旁停顿。双耳和脚趾完整留在画面内，小翼拇指托住果实。"}},{"aspect":"drawing","title":{"en":"Plum without menace","zh":"温和的梅紫色"},"description":{"en":"Broad mauve and charcoal planes describe the face, body and folded membranes. The bright fig forms one color group; its stem extends into nearby empty space.","zh":"宽阔灰紫与炭灰色面描绘脸部、身体和收拢的翼膜。鲜艳果实构成单一色彩组，果梗伸入旁边的留白。"}},{"aspect":"presentation","title":{"en":"Dusk scallops","zh":"暮色弧褶"},"description":{"en":"Unequal shallow scallops cross a deeper mauve field. Fine grain and offset folds give the wings separation while keeping the expression calm.","zh":"深灰紫底色上横穿不等宽的浅弧褶。细颗粒与错位折面分离翅膀轮廓，让表情保持平静。"}}],"palette":[{"color":"#9a7e90","role":"background","label":{"en":"Dusk scallops","zh":"暮色弧褶"},"source":"Selected Bat presentation, 2026-09-07-01/02; background.base in archived settings.json"},{"color":"#72556f","role":"primary","label":{"en":"Plum","zh":"梅紫色"},"source":"Native bat 1935dbb8272e, sampled sRGB pixel (1315, 1476); artwork/logo-family/bat/2026-09-07-01/palette.json"},{"color":"#a589a4","role":"accent","label":{"en":"Mauve","zh":"灰紫色"},"source":"Native bat 1935dbb8272e, sampled sRGB pixel (1495, 1347); artwork/logo-family/bat/2026-09-07-01/palette.json"},{"color":"#302935","role":"accent","label":{"en":"Charcoal","zh":"炭灰色"},"source":"Native bat 1935dbb8272e, sampled sRGB pixel (981, 1196); artwork/logo-family/bat/2026-09-07-01/palette.json"},{"color":"#d78b8f","role":"accent","label":{"en":"Fig coral","zh":"无花果珊瑚色"},"source":"Native bat 1935dbb8272e, sampled sRGB pixel (1226, 1136); artwork/logo-family/bat/2026-09-07-01/palette.json"},{"color":"#639ea2","role":"accent","label":{"en":"Fig turquoise","zh":"无花果松石色"},"source":"Native bat 1935dbb8272e, sampled sRGB pixel (1453, 1172); artwork/logo-family/bat/2026-09-07-01/palette.json"}],"sizeNote":{"en":"The complete animal and accessory have at least 145.5 px clearance from the actual rounded outline. Ten export sizes preserve one uniform placement. Small app/browser marks use the transparent foreground; fine facets and accessory details simplify at 16 px.","zh":"完整动物和兴趣点距离真实圆角轮廓至少 145.5 px。十种导出尺寸保持同一组等比位置，小型 UI 与浏览器使用透明主体；细小切面和装饰细节在 16 px 时会简化。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Collect Linux host metrics to inspect fleet status, alerts and infrastructure assets.","zh":"采集 Linux 主机指标，集中查看主机状态、告警与基础设施资产。"},"techStack":[{"name":"Rust","role":{"en":"Linux host metric collection","zh":"Linux 主机指标采集"}},{"name":"Tokio / reqwest","role":{"en":"Async collection and HTTPS upload","zh":"异步采集与 HTTPS 上报"}},{"name":"TypeScript","role":{"en":"Worker, dashboard and CLI logic","zh":"Worker、仪表盘与 CLI 逻辑"}},{"name":"Bun / Turborepo","role":{"en":"Workspace dependencies and builds","zh":"工作区依赖与构建"}},{"name":"Hono / Cloudflare Workers","role":{"en":"Ingestion, API, scheduled jobs and static assets","zh":"采集接入、API、定时任务与静态资源"}},{"name":"Cloudflare D1","role":{"en":"Metrics, alerts, events and assets","zh":"指标、告警、事件与资产数据"}},{"name":"Cloudflare KV","role":{"en":"Optional caches for frequent queries","zh":"热点查询的可选缓存"}},{"name":"Vite / React","role":{"en":"Dashboard interface and builds","zh":"仪表盘界面与构建"}},{"name":"Recharts","role":{"en":"Metric trends","zh":"指标趋势图"}},{"name":"Cloudflare Access","role":{"en":"Browser authentication","zh":"浏览器认证"}}],"verified":{"date":"2026-09-08","revision":"ab6984c18475e4c38723777f09f31e381d3e2f96","sources":["package.json","packages/ui/package.json","packages/ui/vite.config.ts","packages/ui/playwright.config.ts","packages/worker/package.json","packages/worker/wrangler.toml","packages/worker/src/index.ts","packages/worker/src/middleware/entry-control.ts","packages/worker/src/middleware/access-auth.ts","packages/worker/src/middleware/api-key.ts","packages/worker/src/routes/setup.ts","packages/worker/src/routes/cli-auth.ts","packages/worker/src/routes/monitoring.ts","packages/worker/src/routes/events-ingest.ts","packages/worker/src/routes/heartbeat.ts","packages/worker/src/adapters/d1/aggregation.ts","packages/worker/src/lib/host-meta-cache.ts","packages/worker/src/services/status.ts","packages/worker/test/e2e/global-setup.ts","packages/shared/src/settings.ts","packages/shared/src/alerts.ts","packages/cli/package.json","packages/cli/src/bin/bat-cli.ts","packages/cli/src/commands/login.ts","packages/cli/src/commands/service/run.ts","packages/cli/src/commands/service/install.ts","probe/Cargo.toml","probe/src/main.rs","probe/src/config.rs","probe/dist/bat-probe.service","probe/Dockerfile.build","scripts/l3-setup.sh","scripts/l3-webserver.sh",".github/workflows/ci.yml",".github/workflows/release.yml","LICENSE"]}}},{"id":"lyre","repo":"lyre","title":"Lyre","emoji":"🎶","description":{"en":"Recordings, transcripts, and word-by-word playback, beautifully in sync.","zh":"整理录音和转写文本，让逐字高亮跟着声音一起播放。"},"category":"everyday","website":"https://lyre.hexly.ai","websiteSource":"GitHub repository homepage","repository":"https://github.com/nocoo/lyre","subject":"Lyrebird portrait","reference":false,"logo":{"kind":"original","original":"/logos/originals/lyre.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/lyre/blob/78b3a126f27a5adc53e4eaf4097b785ac7cb609e/logo.png","modified":false,"width":2048,"height":2048,"bytes":3656299,"sha256":"1ba1c248228610d3e88e3428359391702f638cb44f1b42045c6a16861c2e581a","thumbnail":"/logos/display/lyre-160.webp","display":"/logos/display/lyre-1024.webp"},"theme":{"primary":{"value":"13 62% 33%","source":"apps/web/src/styles.css --basalt-primary"},"background":{"value":"220 14% 94%","source":"@nocoo/basalt/styles tokens --basalt-background"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Audio recording management and transcription with word-level karaoke playback","repositoryRevision":"78b3a126f27a5adc53e4eaf4097b785ac7cb609e"},"colors":{"primary":"#883720","background":"#eeeff2","ink":"#2a0f0f","palette":[{"color":"#883720","role":"primary","source":"apps/web/src/styles.css --basalt-primary: 13 62% 33%"},{"color":"#eeeff2","role":"background","source":"@nocoo/basalt/styles tokens --basalt-background: 220 14% 94%"},{"color":"#5d2f24","role":"accent","source":"Preserved project artwork, sampled pixel"},{"color":"#a45d3b","role":"accent","source":"Preserved project artwork, sampled pixel"},{"color":"#dfc39e","role":"accent","source":"Preserved project artwork, sampled pixel"}]},"archived":false,"family":{"id":"2026-09-07-03","finishing":"01","root":"/logos/family/lyre/2026-09-07-03/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/lyre/2026-09-07-03","method":"retained-original","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Original chestnut faceted lyrebird with a curled feather crest","zh":"保留原图的栗色碎片化琴鸟与卷曲羽冠"},"original":"/logos/family/lyre/2026-09-07-03/01/transparent.png","display":"/logos/family/lyre/2026-09-07-03/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"1ba1c248228610d3e88e3428359391702f638cb44f1b42045c6a16861c2e581a"},"previous":{"original":"/logos/originals/lyre.png","sourceUrl":"https://github.com/nocoo/lyre/blob/c2c5cf883fef4cf775c98eba6dce883c56653fe7/logo.png","width":2048,"height":2048,"sha256":"1ba1c248228610d3e88e3428359391702f638cb44f1b42045c6a16861c2e581a"},"direction":[{"aspect":"composition","title":{"en":"The original attentive turn","zh":"保留专注回望的姿态"},"description":{"en":"The portrait, beak, eye, curled crest, and native spacing remain the original artwork. This pass preserves the existing neck silhouette and adds no extension.","zh":"头像、鸟喙、眼神、卷曲羽冠与原有留白均沿用原图，保留现有颈部轮廓，没有补画或拉伸。"}},{"aspect":"drawing","title":{"en":"Chestnut, cream, and copper","zh":"栗棕、奶油色与铜橙"},"description":{"en":"The existing warm facets and expressive feather crest carry the identity. Every original pixel is retained; no new rainbow accessory or model output is introduced.","zh":"暖色碎片与灵动的羽冠继续承担识别特征。所有原始像素均保留，不新增彩虹配饰，也不重新生图。"}},{"aspect":"presentation","title":{"en":"A pressed feather fan","zh":"压印的扇羽"},"description":{"en":"Unequal feather ribs open around a chestnut paper field. Small raised edges, fine grain, and a shallow shadow separate the bird from its warm setting.","zh":"疏密不一的扇羽纹围绕栗棕纸面展开，细亮边、微颗粒与浅阴影将鸟的轮廓从暖色底面中托出。"}}],"palette":[{"color":"#a16850","role":"background","label":{"en":"Lyrebird fan","zh":"展示底色"},"source":"Selected Lyre presentation, finishing 01; background.base in archived settings.json"},{"color":"#a35d3b","label":{"en":"Chestnut","zh":"栗棕"},"source":"Original lyre 1ba1c2482286, sampled sRGB pixel (1408, 138); palette.json","role":"primary"},{"color":"#d7884d","label":{"en":"Copper","zh":"铜橙"},"source":"Original lyre 1ba1c2482286, sampled sRGB pixel (1161, 1515); palette.json","role":"accent"},{"color":"#dfc39e","label":{"en":"Cream throat","zh":"奶油色喉羽"},"source":"Original lyre 1ba1c2482286, sampled sRGB pixel (1225, 1199); palette.json","role":"accent"},{"color":"#5d2e24","label":{"en":"Deep umber","zh":"深赭棕"},"source":"Original lyre 1ba1c2482286, sampled sRGB pixel (1414, 223); palette.json","role":"accent"},{"color":"#f2a965","label":{"en":"Amber eye","zh":"琥珀眼"},"source":"Original lyre 1ba1c2482286, sampled sRGB pixel (877, 548); palette.json","role":"accent"}],"sizeNote":{"en":"The eye, beak, and warm silhouette remain legible at sidebar size. Individual crest facets simplify at 16 px; use the transparent original for browser and menu bar marks.","zh":"侧栏尺寸仍能辨认眼睛、鸟喙和暖色轮廓；16 像素时羽冠碎片会简化，浏览器与菜单栏标识使用透明原图。"}},"overview":{"goal":{"en":"Manage recordings, transcribe speech and follow the text during audio playback.","zh":"管理录音、转写文字，并在回听时查看对应内容。"},"techStack":[{"name":"TypeScript / Bun","role":{"en":"Web and API logic, workspaces and development scripts","zh":"Web 与 API 逻辑、工作区与开发脚本"}},{"name":"Vite / React / Basalt","role":{"en":"Recording management, playback and transcript interface","zh":"录音管理、播放与转写界面"}},{"name":"Hono / Cloudflare Workers","role":{"en":"API, static assets and scheduled job polling","zh":"API、静态资源与定时任务轮询"}},{"name":"Cloudflare D1 / Drizzle ORM","role":{"en":"Recording metadata, transcripts, jobs and settings","zh":"录音资料、转写文字、任务与设置"}},{"name":"Aliyun OSS","role":{"en":"Audio files and raw transcription results","zh":"音频文件与原始转写结果"}},{"name":"Aliyun DashScope","role":{"en":"Asynchronous speech transcription","zh":"异步语音转写"}},{"name":"Vercel AI SDK / @nocoo/next-ai","role":{"en":"Configurable model providers for summaries","zh":"可配置模型供应商的摘要生成"}},{"name":"Swift / SwiftUI","role":{"en":"Native macOS menu bar application","zh":"原生 macOS 菜单栏应用"}},{"name":"ScreenCaptureKit / AVFoundation","role":{"en":"System and microphone audio capture and encoding","zh":"系统与麦克风声音采集、编码"}},{"name":"Cloudflare Access / jose","role":{"en":"Browser identity verification","zh":"浏览器身份校验"}}],"verified":{"date":"2026-09-08","revision":"78b3a126f27a5adc53e4eaf4097b785ac7cb609e","sources":["package.json","bun.lock","apps/web/package.json","apps/web/vite.config.ts","apps/web/src/components/upload-dialog.tsx","apps/web/src/pages/recordings-list.tsx","apps/web/src/pages/recording-detail.tsx","apps/web/src/pages/settings.tsx","apps/api/package.json","apps/api/wrangler.toml","apps/api/src/index.ts","apps/api/src/lib/env.ts","apps/api/src/middleware/access-auth.ts","apps/api/src/middleware/bearer-auth.ts","apps/api/src/routes/recordings.ts","apps/api/src/routes/backy.ts","packages/api/package.json","packages/api/src/handlers/upload.ts","packages/api/src/handlers/recordings.ts","packages/api/src/handlers/jobs.ts","packages/api/src/handlers/settings-oss.ts","packages/api/src/handlers/settings-asr.ts","packages/api/src/handlers/settings-tokens.ts","packages/api/src/handlers/settings-backup.ts","packages/api/src/services/asr-provider.ts","packages/api/src/services/asr.ts","packages/api/src/services/job-processor.ts","packages/api/src/services/ai.ts","packages/api/src/services/backup.ts","packages/api/migrations/README.md","apps/macos/project.yml","apps/macos/Lyre/LyreApp.swift","apps/macos/Lyre/Audio/RecordingManager.swift","apps/macos/Lyre/Audio/AudioEncoder.swift","apps/macos/Lyre/Network/UploadManager.swift","apps/macos/Lyre/Config/AppConfig.swift","apps/macos/Lyre/Meeting/MeetingDetectionSettings.swift","apps/macos/LyreTests/RecordingE2ETests.swift","scripts/build-dmg.sh","scripts/run-e2e.ts","scripts/pre-push.ts","e2e/schema.sql","e2e/api/asr-multitrack.test.ts","playwright.config.ts",".github/workflows/ci.yml",".github/workflows/release.yml","LICENSE"]}}},{"id":"pokepocket","repo":"pokepocket","title":"Poké Pocket","emoji":"🎮","description":{"en":"GB / GBC / GBA collection with browser play and local saves","zh":"GB / GBC / GBA 游戏收藏盘，支持浏览器游玩与本地存档。"},"category":"games","website":"https://pokepocket.hexly.ai","websiteSource":"GitHub repository homepage","repository":"https://github.com/nocoo/pokepocket","subject":"Red-capped trainer turning with a Poké Ball","reference":false,"logo":{"kind":"original","original":"/logos/originals/pokepocket-family-2026-09-07-03-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/pokepocket/blob/019798f1c8fae7a6e7c0beb2368279c9980c7188/logo.png","modified":false,"width":960,"height":960,"bytes":547985,"sha256":"eed19029ccc4a84efd6c4f9704566218820b98fee182fff93b628812b5fd278d","thumbnail":"/logos/display/pokepocket-160.webp","display":"/logos/display/pokepocket-1024.webp"},"theme":{"primary":{"value":"#294138","source":"src/styles.css --ink"},"background":{"value":"#f7f8f2","source":"src/styles.css :root background"}},"source":{"profileRevision":"bf9076bff46ea58fba5885a9185cce8b71f9b09a","profileSection":"Games","description":"GB / GBC / GBA collection with browser play and local saves ([Play](https://pokepocket.hexly.ai))","repositoryRevision":"019798f1c8fae7a6e7c0beb2368279c9980c7188"},"colors":{"primary":"#294138","background":"#f7f8f2","ink":"#163e34","palette":[{"color":"#294138","role":"primary","source":"src/styles.css --ink: #294138"},{"color":"#f7f8f2","role":"background","source":"src/styles.css :root background: #f7f8f2"},{"color":"#f55d5c","source":"Native pokepocket 806f144dbb40, sampled sRGB pixel (327, 140); artwork/logo-family/pokepocket/2026-09-07-03/palette.json","role":"accent"},{"color":"#2e2836","source":"Native pokepocket 806f144dbb40, sampled sRGB pixel (520, 164); artwork/logo-family/pokepocket/2026-09-07-03/palette.json","role":"accent"},{"color":"#fafafa","source":"Native pokepocket 806f144dbb40, sampled sRGB pixel (450, 327); artwork/logo-family/pokepocket/2026-09-07-03/palette.json","role":"accent"},{"color":"#fae6cd","source":"Native pokepocket 806f144dbb40, sampled sRGB pixel (487, 572); artwork/logo-family/pokepocket/2026-09-07-03/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-03","series":"character","finishing":"01","root":"/logos/family/pokepocket/2026-09-07-03/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/pokepocket/2026-09-07-03","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Red-capped trainer turning with a Poké Ball","zh":"红帽少年回头举起精灵球"},"original":"/logos/family/pokepocket/2026-09-07-03/01/transparent.png","display":"/logos/family/pokepocket/2026-09-07-03/01/transparent-1024.webp","width":960,"height":960,"sha256":"eed19029ccc4a84efd6c4f9704566218820b98fee182fff93b628812b5fd278d"},"previous":{"original":"/logos/originals/pokepocket.svg","sourceUrl":"https://github.com/nocoo/pokepocket/blob/48894ea4a1712c755d1bb60a9766a5f67bf15221/public/favicon.svg","width":64,"height":64,"sha256":"45996e3f23bd37f18ea26b35ee2dc3f13174da07a2aa7fcffbb1a17167d62e29"},"direction":[{"aspect":"composition","title":{"en":"A backward glance","zh":"回头的一瞬"},"description":{"en":"The supplied trainer turns toward the viewer with a complete raised ball beside the face. One uniform inset protects the cap and fingers while the lower jacket and forearm enter naturally through the frame.","zh":"参考人物回头看向观者，完整举球动作紧邻脸部。整体等比缩放为帽子和手指留白，下方外套与前臂自然延伸出取景框。"}},{"aspect":"drawing","title":{"en":"The original illustration","zh":"保留原插画"},"description":{"en":"The supplied 960 px illustration retains its red cap, charcoal ink contours, ivory clothing and calm expression. Extraction removes only the beige field; larger exports are explicitly resampled.","zh":"保留 960 像素原插画的红帽、深色墨线、象牙色衣服与平静表情；提取时只去除米色底，较大尺寸明确标注为放大导出。"}},{"aspect":"presentation","title":{"en":"Pocket orbits","zh":"口袋轨道"},"description":{"en":"Offset interrupted ball orbits and short curved seams, impressed into a warm vermilion paper field. The field, grain and contact shadow are independent of transparent app marks.","zh":"朱红纸面上的偏心球体轨道与弧形接缝，呼应口袋里的冒险。 底色、颗粒与接触阴影均独立于透明应用标记。"}}],"palette":[{"color":"#af4b4a","role":"background","label":{"en":"Pocket orbits","zh":"口袋轨道"},"source":"Adopted Poké Pocket presentation, 2026-09-07-03/01; background.base in archived settings.json"},{"color":"#f55d5c","role":"primary","label":{"en":"Cap red","zh":"帽子红"},"source":"Native pokepocket 806f144dbb40, sampled sRGB pixel (327, 140); artwork/logo-family/pokepocket/2026-09-07-03/palette.json"},{"color":"#2e2836","role":"accent","label":{"en":"Ink charcoal","zh":"墨线深灰"},"source":"Native pokepocket 806f144dbb40, sampled sRGB pixel (520, 164); artwork/logo-family/pokepocket/2026-09-07-03/palette.json"},{"color":"#fafafa","role":"accent","label":{"en":"Warm ivory","zh":"暖象牙白"},"source":"Native pokepocket 806f144dbb40, sampled sRGB pixel (450, 327); artwork/logo-family/pokepocket/2026-09-07-03/palette.json"},{"color":"#fae6cd","role":"accent","label":{"en":"Skin warmth","zh":"肤色暖光"},"source":"Native pokepocket 806f144dbb40, sampled sRGB pixel (487, 572); artwork/logo-family/pokepocket/2026-09-07-03/palette.json"}],"sizeNote":{"en":"At 128/64 px, the red cap, face and raised red-white ball remain clear. At 32/24/16 px, the compact silhouette and dominant colors carry recognition; fine material detail, printed marks and background lines naturally merge. Native source: 960 px; 1024/2048 exports are resampling, not new detail.","zh":"128/64 px 能辨认红帽、面孔与举起的红白球；32/24/16 px 以紧凑轮廓和主色维持识别，精细材质、印记与背景线条自然合并。 原始素材为 960 px；1024/2048 为放大导出，不代表新增细节。"},"method":"reference-adaptation"},"overview":{"goal":{"en":"Play user-supplied GB, GBC, and GBA Pokémon cartridges in a browser collection while keeping controls and progress for each ROM.","zh":"在浏览器卡带收藏盘中游玩自备的 GB、GBC、GBA 宝可梦，管理操作设置和每枚 ROM 的进度。"},"techStack":[{"name":"TypeScript","role":{"en":"Application and Worker logic","zh":"应用与 Worker 逻辑"}},{"name":"React","role":{"en":"Cartridge collection and handheld controls","zh":"卡带收藏盘与掌机操作界面"}},{"name":"mGBA","role":{"en":"GB, GBC, and GBA emulation core","zh":"GB、GBC 与 GBA 模拟器核心"}},{"name":"WebAssembly","role":{"en":"Browser execution of the emulator","zh":"在浏览器运行模拟器"}},{"name":"IndexedDB","role":{"en":"Local ROMs, battery saves, and save states","zh":"本地卡带、电池存档与即时存档"}},{"name":"Vite","role":{"en":"Development server and application builds","zh":"开发服务器与应用构建"}},{"name":"Cloudflare Workers","role":{"en":"Protected static hosting and application metadata","zh":"受访问控制保护的静态托管与应用信息"}},{"name":"Cloudflare Access","role":{"en":"Hosted site authentication","zh":"托管站点认证"}}],"verified":{"date":"2026-09-08","revision":"461f4c3bb65480c43bdb5a8c27a054eba8da39ad","sources":["package.json","src/App.tsx","src/data/editions.json","src/lib/emulator.ts","src/lib/cartridge.ts","src/lib/storage.ts","src/lib/settings.ts","src/lib/key-bindings.ts","src/lib/input.ts","scripts/local-roms.ts","scripts/run-l3.mjs","scripts/check-no-roms.mjs","worker/index.ts","vite.config.ts","wrangler.jsonc","THIRD_PARTY_NOTICES.md"]}}},{"id":"dogfight","repo":"dogfight","title":"Dogfight","emoji":"✈️","description":{"en":"An arcade dogfight in the browser. Take an F-22 into a sky full of Su-35s.","zh":"驾驶 F-22 迎战苏-35，在浏览器里体验街机风格的三维空战。"},"category":"games","website":"https://dogfight.hexly.ai","websiteSource":"GitHub repository homepage","repository":"https://github.com/nocoo/dogfight","subject":"Titanium F-22 desk model caught in a banking turn","reference":false,"logo":{"kind":"original","original":"/logos/originals/dogfight-family-2026-09-07-01-02.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/dogfight/blob/b5ab075a963a78516aaa351d6ca0178c64994729/logo.png","modified":false,"width":2048,"height":2048,"bytes":2743288,"sha256":"274611f248e476334769d4c4c670a1dbd0d20263fc1d210b665b2fb7b9867fc4","thumbnail":"/logos/display/dogfight-160.webp","display":"/logos/display/dogfight-1024.webp"},"theme":{"primary":{"value":"#c0e9dc","source":"src/styles.css --mint"},"background":{"value":"#101c27","source":"src/styles.css :root background"},"ink":{"value":"#e9eee9","source":"src/styles.css :root color"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Games","description":"Arcade 3D F-22 vs Su-35s dogfight in the browser ([Play](https://dogfight.hexly.ai))","repositoryRevision":"b5ab075a963a78516aaa351d6ca0178c64994729"},"colors":{"primary":"#c0e9dc","background":"#101c27","ink":"#e9eee9","palette":[{"color":"#c0e9dc","role":"primary","source":"src/styles.css --mint: #c0e9dc"},{"color":"#101c27","role":"background","source":"src/styles.css :root background: #101c27"},{"color":"#878f95","source":"Native dogfight 0ef348789c21, sampled sRGB pixel (715, 700); artwork/logo-family/dogfight/2026-09-07-01/palette.json","role":"accent"},{"color":"#694d2c","source":"Native dogfight 0ef348789c21, sampled sRGB pixel (401, 1453); artwork/logo-family/dogfight/2026-09-07-01/palette.json","role":"accent"},{"color":"#bcbfbd","source":"Native dogfight 0ef348789c21, sampled sRGB pixel (1040, 956); artwork/logo-family/dogfight/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","series":"material","finishing":"02","root":"/logos/family/dogfight/2026-09-07-01/02","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/dogfight/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Titanium F-22 desk model caught in a banking turn","zh":"掠过镜头的钛灰 F-22 模型"},"original":"/logos/family/dogfight/2026-09-07-01/02/transparent.png","display":"/logos/family/dogfight/2026-09-07-01/02/transparent-1024.webp","width":2048,"height":2048,"sha256":"274611f248e476334769d4c4c670a1dbd0d20263fc1d210b665b2fb7b9867fc4"},"previous":{"original":"/logos/originals/dogfight.svg","sourceUrl":"https://github.com/nocoo/dogfight/blob/9ec76522713a527bc831f8fa37ec7a50967e24e4/public/favicon.svg","width":64,"height":64,"sha256":"229e0e5757f8bddb9a9c2dce88b3a69b0e30640e6d4ecdf98c527d719f9d2080"},"direction":[{"aspect":"composition","title":{"en":"A turn held in metal","zh":"定格的金属转弯"},"description":{"en":"A broad-winged F-22 collectible banks diagonally toward the viewer. A gentle elevated product camera preserves the nose, both tail fins and the complete wing silhouette.","zh":"宽翼 F-22 模型斜向观者转弯。略俯视的产品镜头完整保留机鼻、双尾翼和两侧机翼。"}},{"aspect":"drawing","title":{"en":"Titanium and amber","zh":"钛灰与琥珀"},"description":{"en":"Satin titanium and blue-gray panel faces define a real die-cast object. The amber canopy is the single warm material accent; there are no detached trails or effects.","zh":"缎面钛灰与蓝灰机身面板表现压铸模型，琥珀座舱是唯一暖色点缀，不添加脱离主体的尾迹。"}},{"aspect":"presentation","title":{"en":"Banking vectors","zh":"转弯航迹"},"description":{"en":"Three swept flight lanes and short altitude ticks crossing a pale blue atmospheric field. The field, grain and contact shadow are independent of transparent app marks.","zh":"浅蓝纸面上的弯转航线与高度短刻度，呼应空战游戏。 底色、颗粒与接触阴影均独立于透明应用标记。"}}],"palette":[{"color":"#d0dfe9","role":"background","label":{"en":"Banking vectors","zh":"转弯航迹"},"source":"Adopted Dogfight presentation, 2026-09-07-01/02; background.base in archived settings.json"},{"color":"#878f95","role":"primary","label":{"en":"Titanium","zh":"钛灰"},"source":"Native dogfight 0ef348789c21, sampled sRGB pixel (715, 700); artwork/logo-family/dogfight/2026-09-07-01/palette.json"},{"color":"#694d2c","role":"accent","label":{"en":"Canopy amber","zh":"琥珀座舱"},"source":"Native dogfight 0ef348789c21, sampled sRGB pixel (401, 1453); artwork/logo-family/dogfight/2026-09-07-01/palette.json"},{"color":"#bcbfbd","role":"accent","label":{"en":"Panel highlight","zh":"面板高光"},"source":"Native dogfight 0ef348789c21, sampled sRGB pixel (1040, 956); artwork/logo-family/dogfight/2026-09-07-01/palette.json"}],"sizeNote":{"en":"At 128/64 px, the broad wings and amber canopy remain clear. At 32/24/16 px, the compact silhouette and dominant colors carry recognition; fine material detail, printed marks and background lines naturally merge.","zh":"128/64 px 能辨认宽翼与琥珀座舱；32/24/16 px 以紧凑轮廓和主色维持识别，精细材质、印记与背景线条自然合并。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Fly an F-22 through a complete browser arcade mission using target locks, missiles, a cannon, and countermeasures.","zh":"在浏览器中驾驶 F-22，运用锁定、导弹、机炮和干扰完成一场街机空战。"},"techStack":[{"name":"TypeScript","role":{"en":"Flight and combat simulation","zh":"飞行与战斗模拟"}},{"name":"React","role":{"en":"HUD, mission flow, and settings","zh":"HUD、任务流程与设置"}},{"name":"Three.js","role":{"en":"Procedural aircraft and 3D environment","zh":"程序化机体与三维环境"}},{"name":"WebGL","role":{"en":"Browser 3D rendering","zh":"浏览器三维渲染"}},{"name":"Web Audio","role":{"en":"Synthesized engine, weapon, and alert sounds","zh":"合成引擎、武器与警报音效"}},{"name":"localStorage","role":{"en":"Highest winning score","zh":"胜利最高分"}},{"name":"Vite","role":{"en":"Development and static builds","zh":"开发与静态构建"}},{"name":"Cloudflare Workers","role":{"en":"Static game hosting","zh":"游戏静态托管"}}],"verified":{"date":"2026-09-08","revision":"b5ab075a963a78516aaa351d6ca0178c64994729","sources":["package.json","src/App.tsx","src/game/simulation.ts","src/game/engine.ts","src/game/aircraft.ts","src/game/world.ts","src/game/clouds.ts","src/game/audio.ts","scripts/browser-smoke.mjs","vite.config.ts","wrangler.jsonc",".github/workflows/ci.yml"]}}},{"id":"gaga","repo":"gaga","title":"Gaga","emoji":"🧸","description":{"en":"A tiny 3D playroom where Taotao can explore, wander, and discover toys.","zh":"给陶陶的小小三维玩具房，自由走动，探索喜欢的玩具。"},"category":"games","website":"https://gaga.hexly.ai","websiteSource":"GitHub repository homepage","repository":"https://github.com/nocoo/gaga","subject":"Naturally crouched biscuit-colored rabbit with one colorful carrot","reference":false,"logo":{"kind":"original","original":"/logos/originals/gaga-family-2026-09-07-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/gaga/blob/76260f08329784eead9b30912c7692b8ea0d3d56/logo.png","modified":false,"width":2048,"height":2048,"bytes":2357751,"sha256":"3bbfa196509e08de9c0d0b1ac18e944e3414b7082e70740898a2a09f6ed8f076","thumbnail":"/logos/display/gaga-160.webp","display":"/logos/display/gaga-1024.webp"},"theme":{"primary":{"value":"#4c5342","source":"src/style.css :root color"},"background":{"value":"#f3f0e8","source":"src/style.css :root background"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Games","description":"Tiny 3D playroom where Taotao freely explores toys ([Play](https://gaga.hexly.ai))","repositoryRevision":"76260f08329784eead9b30912c7692b8ea0d3d56"},"colors":{"primary":"#4c5342","background":"#f3f0e8","ink":"#997040","palette":[{"color":"#4c5342","role":"primary","source":"src/style.css :root color: #4c5342"},{"color":"#f3f0e8","role":"background","source":"src/style.css :root background: #f3f0e8"},{"color":"#ecd3a5","source":"Native gaga cfe8aeeef77b, sampled sRGB pixel (244, 1120); artwork/logo-family/gaga/2026-09-07-01/palette.json","role":"accent"},{"color":"#997040","source":"Native gaga cfe8aeeef77b, sampled sRGB pixel (582, 1759); artwork/logo-family/gaga/2026-09-07-01/palette.json","role":"accent"},{"color":"#ed7520","source":"Native gaga cfe8aeeef77b, sampled sRGB pixel (1867, 1632); artwork/logo-family/gaga/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"01","root":"/logos/family/gaga/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/gaga/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Naturally crouched biscuit-colored rabbit with one colorful carrot","zh":"自然蹲伏的饼干色小兔与一根多彩胡萝卜"},"original":"/logos/family/gaga/2026-09-07-01/01/transparent.png","display":"/logos/family/gaga/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"3bbfa196509e08de9c0d0b1ac18e944e3414b7082e70740898a2a09f6ed8f076"},"previous":{"original":"/logos/originals/gaga.svg","sourceUrl":"https://github.com/nocoo/gaga/blob/b960a12ce78a579ac9e99c4b985aaf85d5b8c8aa/public/favicon.svg","width":64,"height":64,"sha256":"abfcdf4a83a692c90f0e3f9b40380fb3f3a701923291c7a45a71778386146995"},"direction":[{"aspect":"composition","title":{"en":"A small discovery","zh":"一个小发现"},"description":{"en":"A rabbit pauses in a natural crouch beside a carrot. The whole animal includes its ears, haunches, short forepaws and small tail; the face carries the moment.","zh":"小兔在胡萝卜旁自然蹲伏，完整呈现耳朵、后腿轮廓、短前爪和小尾巴，用脸部表情捕捉这一刻。"}},{"aspect":"drawing","title":{"en":"Biscuit and cream","zh":"饼干色与奶油色"},"description":{"en":"Large warm tan and cream facets keep the body soft and readable. One carrot and its colorful leaves form a single accent group beside the muzzle.","zh":"大块暖褐与奶油色切面让身体柔和易读，一根胡萝卜及其彩色叶片在嘴边构成单一兴趣点。"}},{"aspect":"presentation","title":{"en":"Playroom folds","zh":"游戏室折面"},"description":{"en":"Offset rounded paper folds sit on a warm clay field. Their gentle corners and broad openings give the rabbit a tactile, quiet setting.","zh":"错位的圆角纸面铺在暖陶土色底色上，柔和转角和宽阔开口营造安静的触感背景。"}}],"palette":[{"color":"#b38c77","role":"background","label":{"en":"Playroom folds","zh":"游戏室折面"},"source":"Selected Gaga presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#c39c65","role":"primary","label":{"en":"Biscuit","zh":"饼干色"},"source":"Native gaga cfe8aeeef77b, sampled sRGB pixel (1306, 1590); artwork/logo-family/gaga/2026-09-07-01/palette.json"},{"color":"#ecd3a5","role":"accent","label":{"en":"Cream","zh":"奶油色"},"source":"Native gaga cfe8aeeef77b, sampled sRGB pixel (244, 1120); artwork/logo-family/gaga/2026-09-07-01/palette.json"},{"color":"#997040","role":"accent","label":{"en":"Warm brown","zh":"暖棕色"},"source":"Native gaga cfe8aeeef77b, sampled sRGB pixel (582, 1759); artwork/logo-family/gaga/2026-09-07-01/palette.json"},{"color":"#ed7520","role":"accent","label":{"en":"Carrot orange","zh":"胡萝卜橙"},"source":"Native gaga cfe8aeeef77b, sampled sRGB pixel (1867, 1632); artwork/logo-family/gaga/2026-09-07-01/palette.json"},{"color":"#418e8c","role":"accent","label":{"en":"Leaf teal","zh":"叶片青色"},"source":"Native gaga cfe8aeeef77b, sampled sRGB pixel (1727, 1215); artwork/logo-family/gaga/2026-09-07-01/palette.json"}],"sizeNote":{"en":"The complete animal and accessory have at least 183.5 px clearance from the actual rounded outline. Ten export sizes preserve one uniform placement. Small app/browser marks use the transparent foreground; fine facets and accessory details simplify at 16 px.","zh":"完整动物和兴趣点距离真实圆角轮廓至少 183.5 px。十种导出尺寸保持同一组等比位置，小型 UI 与浏览器使用透明主体；细小切面和装饰细节在 16 px 时会简化。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Watch and guide a virtual character through a browser playroom with animated toys, camera controls, and a daily discovery journal.","zh":"在浏览器玩耍空间中观察并引导虚拟角色探索玩具，调整视角并查看当天足迹。"},"techStack":[{"name":"TypeScript","role":{"en":"Character behavior and application logic","zh":"角色行为与应用逻辑"}},{"name":"Three.js","role":{"en":"Procedural playroom, character, and toys","zh":"程序化房间、角色与玩具"}},{"name":"WebGL","role":{"en":"Browser 3D rendering","zh":"浏览器三维渲染"}},{"name":"Web Audio","role":{"en":"Synthesized ambient music and toy sounds","zh":"合成环境音乐与玩具音效"}},{"name":"localStorage","role":{"en":"Daily discovery journal","zh":"当天探索足迹"}},{"name":"Vite","role":{"en":"Development and static builds","zh":"开发与静态构建"}},{"name":"Cloudflare Workers","role":{"en":"Static application hosting","zh":"应用静态托管"}}],"verified":{"date":"2026-09-08","revision":"76260f08329784eead9b30912c7692b8ea0d3d56","sources":["package.json","src/main.ts","src/ui/AppUI.ts","src/character/Explorer.ts","src/character/actions.ts","src/character/Taotao.ts","src/world/Playroom.ts","src/world/navigation.ts","src/world/toys/index.ts","src/audio/Soundscape.ts","scripts/smoke.mjs","vite.config.ts","wrangler.jsonc",".github/workflows/ci.yml"]}}},{"id":"pew-game","repo":"pew-game","title":"Pew Game","emoji":"🤠","description":{"en":"A pixel-art prairie shooter with twin-stick action and a high-score leaderboard.","zh":"像素风格的草原双摇杆射击游戏，闯关、闪避，再挑战排行榜。"},"category":"games","website":"https://pew.hexly.ai","websiteSource":"nocoo/nocoo README.md Games section","repository":"https://github.com/nocoo/pew-game","subject":"Walnut and brass prairie arcade joystick","reference":false,"logo":{"kind":"original","original":"/logos/originals/pew-game-family-2026-09-07-01-02.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/pew-game/blob/ee68b2dead3e5e698b2427d6a949e8e57c69d520/logo.png","modified":false,"width":2048,"height":2048,"bytes":3907401,"sha256":"18602c76eb1a445731b7baba7ec81175f6f81084977d1d7ad6168e6702238b90","thumbnail":"/logos/display/pew-game-160.webp","display":"/logos/display/pew-game-1024.webp"},"theme":{"background":{"value":"#111111","source":"src/app/globals.css --background"},"ink":{"value":"#eeeeee","source":"src/app/globals.css --foreground"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Games","description":"Pixel art twin-stick prairie shooter with leaderboard ([Play](https://pew.hexly.ai))","repositoryRevision":"ee68b2dead3e5e698b2427d6a949e8e57c69d520"},"colors":{"primary":"#583b2c","background":"#111111","ink":"#eeeeee","palette":[{"color":"#583b2c","role":"primary","source":"Native pew-game ab0299e6617c, sampled sRGB pixel (850, 1360); artwork/logo-family/pew-game/2026-09-07-01/palette.json"},{"color":"#111111","role":"background","source":"src/app/globals.css --background: #111111"},{"color":"#651b19","source":"Native pew-game ab0299e6617c, sampled sRGB pixel (818, 344); artwork/logo-family/pew-game/2026-09-07-01/palette.json","role":"accent"},{"color":"#836b42","source":"Native pew-game ab0299e6617c, sampled sRGB pixel (1328, 1038); artwork/logo-family/pew-game/2026-09-07-01/palette.json","role":"accent"},{"color":"#da9438","source":"Native pew-game ab0299e6617c, sampled sRGB pixel (1253, 928); artwork/logo-family/pew-game/2026-09-07-01/palette.json","role":"accent"},{"color":"#506866","source":"Native pew-game ab0299e6617c, sampled sRGB pixel (1640, 1020); artwork/logo-family/pew-game/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","series":"material","finishing":"02","root":"/logos/family/pew-game/2026-09-07-01/02","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/pew-game/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Walnut and brass prairie arcade joystick","zh":"胡桃木与黄铜的西部街机摇杆"},"original":"/logos/family/pew-game/2026-09-07-01/02/transparent.png","display":"/logos/family/pew-game/2026-09-07-01/02/transparent-1024.webp","width":2048,"height":2048,"sha256":"18602c76eb1a445731b7baba7ec81175f6f81084977d1d7ad6168e6702238b90"},"previous":{"original":"/logos/emoji/pew-game.png","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","width":1024,"height":1024,"sha256":"6ffd6aa8a203834dd8972fa0e8e2a520a2bdaf75f0519a585f6124212cfe4193"},"direction":[{"aspect":"composition","title":{"en":"A tactile move","zh":"触手可感的一次移动"},"description":{"en":"A short ball-top joystick leans from a compact walnut arcade box. Its two close buttons and thick housing form one complete, comfortably inset assembly.","zh":"短球头摇杆从紧凑的胡桃木街机盒伸出，两颗按钮与厚实机箱组成完整、留足余量的主体。"}},{"aspect":"drawing","title":{"en":"Walnut, brass and oxblood","zh":"胡桃木、黄铜与深红"},"description":{"en":"Real wood grain and engraved aged brass give the prairie shooter a handmade arcade identity. The deep-red joystick leads, supported by one close ochre-and-teal button group.","zh":"木纹与刻线旧黄铜为西部射击游戏建立手作街机形象。深红摇杆是视觉中心，赭黄与青色按钮紧邻成组。"}},{"aspect":"presentation","title":{"en":"Prairie suntracks","zh":"草原日轨"},"description":{"en":"A low rising sun with short prairie grass cuts and concentric joystick-like arcs in warm sand paper. The field, grain and contact shadow are independent of transparent app marks.","zh":"沙色纸面上的低日弧线、草叶切线与摇杆圆弧呼应西部草原。 底色、颗粒与接触阴影均独立于透明应用标记。"}}],"palette":[{"color":"#d6bb8a","role":"background","label":{"en":"Prairie suntracks","zh":"草原日轨"},"source":"Adopted Pew Game presentation, 2026-09-07-01/02; background.base in archived settings.json"},{"color":"#583b2c","role":"primary","label":{"en":"Walnut","zh":"胡桃木"},"source":"Native pew-game ab0299e6617c, sampled sRGB pixel (850, 1360); artwork/logo-family/pew-game/2026-09-07-01/palette.json"},{"color":"#651b19","role":"accent","label":{"en":"Oxblood lacquer","zh":"深红漆面"},"source":"Native pew-game ab0299e6617c, sampled sRGB pixel (818, 344); artwork/logo-family/pew-game/2026-09-07-01/palette.json"},{"color":"#836b42","role":"accent","label":{"en":"Aged brass","zh":"旧黄铜"},"source":"Native pew-game ab0299e6617c, sampled sRGB pixel (1328, 1038); artwork/logo-family/pew-game/2026-09-07-01/palette.json"},{"color":"#da9438","role":"accent","label":{"en":"Ochre button","zh":"赭黄按钮"},"source":"Native pew-game ab0299e6617c, sampled sRGB pixel (1253, 928); artwork/logo-family/pew-game/2026-09-07-01/palette.json"},{"color":"#506866","role":"accent","label":{"en":"Teal button","zh":"青色按钮"},"source":"Native pew-game ab0299e6617c, sampled sRGB pixel (1640, 1020); artwork/logo-family/pew-game/2026-09-07-01/palette.json"}],"sizeNote":{"en":"At 128/64 px, the red joystick, two buttons and wood block remain clear. At 32/24/16 px, the compact silhouette and dominant colors carry recognition; fine material detail, printed marks and background lines naturally merge.","zh":"128/64 px 能辨认红色摇杆、双按钮与木盒；32/24/16 px 以紧凑轮廓和主色维持识别，精细材质、印记与背景线条自然合并。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Play a keyboard-controlled pixel shooter in the browser, survive enemy waves with power-ups, and submit scores to a shared leaderboard.","zh":"在浏览器中用键盘游玩像素射击，收集道具、抵挡敌人波次，并将成绩提交到共享排行榜。"},"techStack":[{"name":"TypeScript","role":{"en":"Game engine and rules","zh":"游戏引擎与规则"}},{"name":"Canvas 2D","role":{"en":"Pixel rendering","zh":"像素画面绘制"}},{"name":"Next.js","role":{"en":"Game page and score APIs","zh":"游戏页面与成绩 API"}},{"name":"React","role":{"en":"Game HUD and leaderboard","zh":"游戏状态界面与排行榜"}},{"name":"SQLite","role":{"en":"Persistent scores","zh":"成绩持久化"}},{"name":"better-sqlite3","role":{"en":"Server database access","zh":"服务端数据库访问"}},{"name":"Tailwind CSS","role":{"en":"Page and overlay styles","zh":"页面与叠层样式"}}],"verified":{"date":"2026-09-08","revision":"71b4b8165874e1986f993706c6830cc60a8107bf","sources":["package.json","src/game/engine.ts","src/game/input.ts","src/game/player.ts","src/game/powerup.ts","src/lib/db.ts","src/lib/anticheat.ts","src/app/api/scores/route.ts"]}}},{"id":"rooster","repo":"rooster","title":"Rooster","emoji":"🐔","description":{"en":"A web control panel for Hermes Agent, from conversations to models and profiles.","zh":"Hermes Agent 的网页控制台，管理对话、会话、模型与配置。"},"category":"ai","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/rooster","subject":"Copper rooster lifting one foot beside a multicolored morning glory","reference":false,"logo":{"kind":"original","original":"/logos/originals/rooster-family-2026-09-07-01-02.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/rooster/blob/8907933c080ed86c6cbe15d9af5cdb0be86919d3/logo.png","modified":false,"width":2048,"height":2048,"bytes":2780156,"sha256":"26d77c01c7c8505d0b762f57782be514c9ce3986360a923e7e4655662085859f","thumbnail":"/logos/display/rooster-160.webp","display":"/logos/display/rooster-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Web management panel for Hermes Agent — chat, sessions, profile/model controls","repositoryRevision":"8907933c080ed86c6cbe15d9af5cdb0be86919d3"},"colors":{"primary":"#ba7522","background":"transparent","ink":"#274e3c","palette":[{"color":"#ba7522","role":"primary","source":"Native rooster eec0319d4326, sampled sRGB pixel (1102, 731); artwork/logo-family/rooster/2026-09-07-01/palette.json"},{"color":"transparent","role":"background","source":"Existing profile emoji glyph, transparent background"},{"color":"#f0cf8d","source":"Native rooster eec0319d4326, sampled sRGB pixel (862, 459); artwork/logo-family/rooster/2026-09-07-01/palette.json","role":"accent"},{"color":"#274e3c","source":"Native rooster eec0319d4326, sampled sRGB pixel (1325, 656); artwork/logo-family/rooster/2026-09-07-01/palette.json","role":"accent"},{"color":"#dc777d","source":"Native rooster eec0319d4326, sampled sRGB pixel (551, 521); artwork/logo-family/rooster/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"02","root":"/logos/family/rooster/2026-09-07-01/02","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/rooster/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Copper rooster lifting one foot beside a multicolored morning glory","zh":"铜金色公鸡抬起一只脚，靠近一朵多彩牵牛花"},"original":"/logos/family/rooster/2026-09-07-01/02/transparent.png","display":"/logos/family/rooster/2026-09-07-01/02/transparent-1024.webp","width":2048,"height":2048,"sha256":"26d77c01c7c8505d0b762f57782be514c9ce3986360a923e7e4655662085859f"},"previous":{"original":"/logos/emoji/rooster.png","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","width":1024,"height":1024,"sha256":"c622a972c61173d90608b6bdffd59b97ca69ceb82ccb4da59cabd8e58f0db918"},"direction":[{"aspect":"composition","title":{"en":"The first morning step","zh":"清晨的第一步"},"description":{"en":"A rooster pauses halfway through a step and turns toward a morning-glory flower. Its comb, full tail and toes form one complete, compact animal.","zh":"公鸡迈步途中停下，转向一朵牵牛花。鸡冠、完整尾羽与脚趾构成紧凑而完整的主体。"}},{"aspect":"drawing","title":{"en":"Copper at dawn","zh":"晨光里的铜金色"},"description":{"en":"Copper and ochre planes lead, with a natural red comb and deep green tail. One faceted flower carries the small multicolored interest point.","zh":"铜金与赭黄色面成为主调，配自然红色鸡冠和深绿尾羽。唯一的多彩兴趣点集中在一朵切面花上。"}},{"aspect":"presentation","title":{"en":"Dawn terraces","zh":"晨光台阶"},"description":{"en":"Low stepped paper terraces cross a warm ochre field. Their different heights give a quiet sunrise rhythm without creating a literal landscape.","zh":"低矮的阶梯纸面横穿温暖赭色底纹，不等高的层次带来日出般的节奏，保持图标界面的简洁。"}}],"palette":[{"color":"#9c8460","role":"background","label":{"en":"Dawn terraces","zh":"晨光台阶"},"source":"Selected Rooster presentation, 2026-09-07-01/02; background.base in archived settings.json"},{"color":"#ba7522","role":"primary","label":{"en":"Copper","zh":"铜金色"},"source":"Native rooster eec0319d4326, sampled sRGB pixel (1102, 731); artwork/logo-family/rooster/2026-09-07-01/palette.json"},{"color":"#f0cf8d","role":"accent","label":{"en":"Cream","zh":"奶油色"},"source":"Native rooster eec0319d4326, sampled sRGB pixel (862, 459); artwork/logo-family/rooster/2026-09-07-01/palette.json"},{"color":"#274e3c","role":"accent","label":{"en":"Forest green","zh":"森林绿"},"source":"Native rooster eec0319d4326, sampled sRGB pixel (1325, 656); artwork/logo-family/rooster/2026-09-07-01/palette.json"},{"color":"#dc777d","role":"accent","label":{"en":"Flower coral","zh":"花瓣珊瑚色"},"source":"Native rooster eec0319d4326, sampled sRGB pixel (551, 521); artwork/logo-family/rooster/2026-09-07-01/palette.json"},{"color":"#786a9f","role":"accent","label":{"en":"Flower violet","zh":"花瓣紫色"},"source":"Native rooster eec0319d4326, sampled sRGB pixel (403, 500); artwork/logo-family/rooster/2026-09-07-01/palette.json"}],"sizeNote":{"en":"The complete animal and accessory have at least 172.5 px clearance from the actual rounded outline. Ten export sizes preserve one uniform placement. Small app/browser marks use the transparent foreground; fine facets and accessory details simplify at 16 px.","zh":"完整动物和兴趣点距离真实圆角轮廓至少 172.5 px。十种导出尺寸保持同一组等比位置，小型 UI 与浏览器使用透明主体；细小切面和装饰细节在 16 px 时会简化。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Chat with a locally configured Hermes Agent in a browser, inspect streamed replies and tool activity, and keep searchable session history on your machine.","zh":"通过浏览器与本机配置的 Hermes Agent 对话，查看流式回复和工具执行过程，并在本地保存可搜索的会话记录。"},"techStack":[{"name":"TypeScript / Node.js","role":{"en":"Application server","zh":"应用服务端"}},{"name":"Preact / Signals","role":{"en":"Chat interface and state","zh":"对话界面与状态管理"}},{"name":"Vite / Primer CSS","role":{"en":"Frontend build and styling","zh":"前端构建与样式"}},{"name":"Hono","role":{"en":"HTTP API","zh":"HTTP 接口"}},{"name":"Socket.IO","role":{"en":"Streaming chat events","zh":"流式对话事件"}},{"name":"SQLite","role":{"en":"Local session and message storage","zh":"本地会话与消息存储"}}],"verified":{"date":"2026-09-08","revision":"8907933c080ed86c6cbe15d9af5cdb0be86919d3","sources":["package.json","packages/client/package.json","packages/server/package.json","packages/server/src/server.ts","packages/server/src/routes/sessions.ts","packages/server/src/routes/bridge.ts","packages/server/src/services/hermes/agent-bridge.ts","packages/client/src/state/chat.ts","packages/client/src/pages/admin/Profiles.tsx","packages/client/src/pages/admin/Settings.tsx","scripts/start-bridge.sh"]}}},{"id":"snaky","repo":"snaky","title":"Snaky","emoji":"🐍","description":{"en":"Know where your traffic goes. Inspect VPN routes, exit IPs, latency, and proxy rules.","zh":"弄清网络流量去了哪里，检查 VPN 路由、出口 IP、延迟与分流规则。"},"overview":{"goal":{"en":"Help VPN and proxy users check destination egress IPs, HTTP latency and DNS resolvers in one place to see whether routing matches their expectations.","zh":"让使用 VPN 或代理的用户能集中核对常用站点的出口 IP、HTTP 延迟和 DNS 解析器，判断分流是否符合预期。"},"techStack":[{"name":"TypeScript","role":{"en":"CLI logic","zh":"CLI 逻辑"}},{"name":"Node.js","role":{"en":"Probe runtime","zh":"探测运行时"}},{"name":"React","role":{"en":"Terminal UI","zh":"终端界面"}},{"name":"Ink","role":{"en":"Terminal rendering","zh":"终端渲染"}},{"name":"Swift","role":{"en":"macOS application","zh":"macOS 应用"}},{"name":"SwiftUI","role":{"en":"Menu bar UI","zh":"菜单栏界面"}},{"name":"AppKit","role":{"en":"System integration","zh":"系统集成"}}],"verified":{"date":"2026-09-08","revision":"5cd0790336d006f65555816fe29869d6e60ed376","sources":["package.json","packages/cli/package.json","packages/cli/src/cli.ts","packages/cli/src/proxy.ts","packages/cli/src/dns-leak/detect.ts","apps/macos/Package.swift","apps/macos/Sources/Snaky/SnakyApp.swift","apps/macos/Sources/SnakyCore/Services/CLIBridge.swift"]}},"category":"tools","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/snaky","subject":"Green snake in a natural coil with one multicolored forked tongue","reference":false,"logo":{"kind":"original","original":"/logos/originals/snaky-family-2026-09-07-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/snaky/blob/5cd0790336d006f65555816fe29869d6e60ed376/logo.png","modified":false,"width":2048,"height":2048,"bytes":2958177,"sha256":"4b2ea7f80bf081cad292c81c95e576b8ec66c6c2ece04c3d90374f971d299630","thumbnail":"/logos/display/snaky-160.webp","display":"/logos/display/snaky-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"CLI to probe VPN/proxy routing — exit IPs, latency, and split-tunnel rule validation","repositoryRevision":"5cd0790336d006f65555816fe29869d6e60ed376"},"colors":{"primary":"#8bbc3f","background":"transparent","ink":"#8bbc3f","palette":[{"color":"#8bbc3f","role":"primary","source":"Native snaky 2283c4fb8964, sampled sRGB pixel (342, 1252); artwork/logo-family/snaky/2026-09-07-01/palette.json"},{"color":"transparent","role":"background","source":"Preserved project artwork, transparent background"},{"color":"#c6dc5b","source":"Native snaky 2283c4fb8964, sampled sRGB pixel (1573, 407); artwork/logo-family/snaky/2026-09-07-01/palette.json","role":"accent"},{"color":"#e6c88f","source":"Native snaky 2283c4fb8964, sampled sRGB pixel (796, 562); artwork/logo-family/snaky/2026-09-07-01/palette.json","role":"accent"},{"color":"#d96e6b","source":"Native snaky 2283c4fb8964, sampled sRGB pixel (1483, 606); artwork/logo-family/snaky/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"01","root":"/logos/family/snaky/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/snaky/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Green snake in a natural coil with one multicolored forked tongue","zh":"自然盘坐的绿色小蛇与一条多彩分叉舌头"},"original":"/logos/family/snaky/2026-09-07-01/01/transparent.png","display":"/logos/family/snaky/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"4b2ea7f80bf081cad292c81c95e576b8ec66c6c2ece04c3d90374f971d299630"},"previous":{"original":"/logos/originals/snaky.png","sourceUrl":"https://github.com/nocoo/snaky/blob/a930a0e4883ee23e0eef0e7287d0efd06080533b/logo.png","width":2048,"height":2048,"sha256":"ab232e170e4c4d8da05a0b0851c5e6082adc679aede2481a3a99897956bb2e4b"},"direction":[{"aspect":"composition","title":{"en":"The coil becomes the frame","zh":"用盘坐形成构图"},"description":{"en":"The liked green face returns above a natural compact coil. The old circular ring is gone; the tapering tail and tongue remain complete.","zh":"保留喜爱的绿色脸部形象，以自然紧凑的盘坐承托。旧圆环被移除，尾尖和舌头保持完整。"}},{"aspect":"drawing","title":{"en":"Leaf green and cream","zh":"嫩绿与奶油色"},"description":{"en":"Connected chartreuse, leaf-green and teal facets describe the body. A cream belly clarifies the coil, while one rainbow tongue adds a single outward gesture.","zh":"相连的黄绿、嫩绿与青色色面描绘身体，奶油色腹部让盘绕关系更清晰，一条彩色舌头向外伸展。"}},{"aspect":"presentation","title":{"en":"Meadow bends","zh":"草地弯折"},"description":{"en":"Open S-shaped relief bends travel around a moss-green field. Broad, uneven paths support the coil without enclosing it in another ring.","zh":"开放的 S 形浮雕弯折穿过苔绿色底纹，宽阔而不等距的路径呼应盘绕动作，保留开放留白。"}}],"palette":[{"color":"#778e57","role":"background","label":{"en":"Meadow bends","zh":"草地弯折"},"source":"Selected Snaky presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#8bbc3f","role":"primary","label":{"en":"Leaf green","zh":"嫩叶绿"},"source":"Native snaky 2283c4fb8964, sampled sRGB pixel (342, 1252); artwork/logo-family/snaky/2026-09-07-01/palette.json"},{"color":"#c6dc5b","role":"accent","label":{"en":"Chartreuse","zh":"黄绿色"},"source":"Native snaky 2283c4fb8964, sampled sRGB pixel (1573, 407); artwork/logo-family/snaky/2026-09-07-01/palette.json"},{"color":"#e6c88f","role":"accent","label":{"en":"Cream","zh":"奶油色"},"source":"Native snaky 2283c4fb8964, sampled sRGB pixel (796, 562); artwork/logo-family/snaky/2026-09-07-01/palette.json"},{"color":"#d96e6b","role":"accent","label":{"en":"Tongue coral","zh":"舌头珊瑚色"},"source":"Native snaky 2283c4fb8964, sampled sRGB pixel (1483, 606); artwork/logo-family/snaky/2026-09-07-01/palette.json"},{"color":"#8779b3","role":"accent","label":{"en":"Tongue violet","zh":"舌头紫色"},"source":"Native snaky 2283c4fb8964, sampled sRGB pixel (1811, 784); artwork/logo-family/snaky/2026-09-07-01/palette.json"}],"sizeNote":{"en":"The complete animal and accessory have at least 198.5 px clearance from the actual rounded outline. Ten export sizes preserve one uniform placement. Small app/browser marks use the transparent foreground; fine facets and accessory details simplify at 16 px.","zh":"完整动物和兴趣点距离真实圆角轮廓至少 198.5 px。十种导出尺寸保持同一组等比位置，小型 UI 与浏览器使用透明主体；细小切面和装饰细节在 16 px 时会简化。"},"model":"gpt-image-2"}},{"id":"infospace","repo":"infospace","title":"Info Space","emoji":"🗂️","description":{"en":"Native SwiftUI workspace SDK with resizable grids and customizable information panels","zh":"原生 SwiftUI 工作区 SDK，支持可调整的网格和自定义信息面板"},"category":"tools","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/infospace","subject":"Indigo metal information tray with adjustable dividers and four colored paper stacks","reference":false,"logo":{"kind":"original","original":"/logos/originals/infospace-family-2026-09-09-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/infospace/blob/82f629ed42b6ec89dac0e0c79e2a63dec88ecacf/logo.png","modified":false,"width":2048,"height":2048,"bytes":4365206,"sha256":"3b2e9aaead0eddccf8bf2212fe96f5ed207a06dc6111f72a829dd2db0a656772","thumbnail":"/logos/display/infospace-160.webp","display":"/logos/display/infospace-1024.webp"},"theme":{"background":{"value":"#13161c","source":"Sources/InfoSpaceUI/InfoSpaceStyle.swift: InfoSpaceTheme.dark.background, sRGB (0.075, 0.085, 0.11)"},"ink":{"value":"#ffffff","source":"Sources/InfoSpaceUI/InfoSpaceStyle.swift: InfoSpaceTheme.dark.foreground"},"primary":{"value":"#ffffff","source":"Sources/InfoSpaceUI/InfoSpaceStyle.swift: InfoSpaceTheme.dark.accent; selected by App/WorkspaceView.swift"}},"source":{"profileRevision":"e3e92cf41ced9400940b18904f1c97453f3b5903","profileSection":"Recent Projects","description":"Native SwiftUI workspace SDK with resizable grids and customizable information panels","repositoryRevision":"82f629ed42b6ec89dac0e0c79e2a63dec88ecacf"},"colors":{"primary":"#ffffff","background":"#13161c","ink":"#ffffff","palette":[{"color":"#ffffff","role":"primary","source":"Sources/InfoSpaceUI/InfoSpaceStyle.swift: InfoSpaceTheme.dark.accent = .white"},{"color":"#13161c","role":"background","source":"Sources/InfoSpaceUI/InfoSpaceStyle.swift: InfoSpaceTheme.dark.background, sRGB (0.075, 0.085, 0.11), rounded to 8-bit channels"},{"color":"#373e55","role":"accent","source":"Native InfoSpace f35f20b193b2, sampled sRGB pixel (1040, 1540); artwork/logo-family/infospace/2026-09-09-01/palette.json"},{"color":"#c1b6b1","role":"accent","source":"Native InfoSpace f35f20b193b2, sampled sRGB pixel (1265, 810); artwork/logo-family/infospace/2026-09-09-01/palette.json"},{"color":"#5f6da3","role":"accent","source":"Native InfoSpace f35f20b193b2, sampled sRGB pixel (700, 700); artwork/logo-family/infospace/2026-09-09-01/palette.json"},{"color":"#689088","role":"accent","source":"Native InfoSpace f35f20b193b2, sampled sRGB pixel (1420, 650); artwork/logo-family/infospace/2026-09-09-01/palette.json"},{"color":"#d8815c","role":"accent","source":"Native InfoSpace f35f20b193b2, sampled sRGB pixel (760, 1050); artwork/logo-family/infospace/2026-09-09-01/palette.json"},{"color":"#9d7ca8","role":"accent","source":"Native InfoSpace f35f20b193b2, sampled sRGB pixel (1450, 1100); artwork/logo-family/infospace/2026-09-09-01/palette.json"}]},"archived":false,"overview":{"goal":{"en":"Give macOS app developers a reusable SwiftUI workspace for arranging their own content in resizable panels. The SDK handles grid geometry, snapping and panel identity; the included demo shows the interactions with sample content kept only for the current session.","zh":"为 macOS 应用开发者提供可复用的 SwiftUI 工作区，把自己的内容放进可调整大小的面板。SDK 处理网格几何、吸附与面板身份；附带演示应用展示这些交互，示例内容仅在本次运行中保留。"},"techStack":[{"name":"Swift","role":{"en":"SDK and demo implementation with strict concurrency","zh":"SDK 与演示应用，启用严格并发检查"}},{"name":"SwiftUI","role":{"en":"Reusable canvas, panels and workspace controls","zh":"可复用画布、面板与工作区控件"}},{"name":"AppKit","role":{"en":"Native macOS window integration","zh":"macOS 原生窗口集成"}},{"name":"Observation","role":{"en":"Observable layout and panel state","zh":"可观察的布局与面板状态"}},{"name":"Swift Package Manager","role":{"en":"Core/UI libraries and compiled SDK examples","zh":"Core/UI 库与 SDK 示例编译"}},{"name":"XcodeGen","role":{"en":"Generate the native demo app project","zh":"生成原生演示应用工程"}},{"name":"Swift Testing","role":{"en":"Layout, identity and geometry tests","zh":"布局、身份与几何测试"}}],"verified":{"date":"2026-09-09","revision":"0d25de0f63e20979fd81c1c295e5bc84132efb3a","sources":["Package.swift","project.yml","Sources/InfoSpaceCore/InfoSpaceModel.swift","Sources/InfoSpaceUI/InfoSpaceCanvas.swift","Sources/InfoSpaceUI/InfoSpaceWindow.swift","Sources/InfoSpaceUI/NativeWindowAttachment.swift","Sources/InfoSpaceUI/InfoSpaceWorkspace.swift","App/DemoPanelContent.swift","scripts/check.sh"]}},"family":{"id":"2026-09-09-01","series":"material","finishing":"01","root":"/logos/family/infospace/2026-09-09-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/infospace/2026-09-09-01","status":"adopted","updated":"2026-09-09","foreground":{"subject":{"en":"Indigo metal information tray with adjustable dividers and four colored paper stacks","zh":"带可调隔板与四色纸卡的靛蓝金属信息托盘"},"original":"/logos/family/infospace/2026-09-09-01/01/transparent.png","display":"/logos/family/infospace/2026-09-09-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"3b2e9aaead0eddccf8bf2212fe96f5ed207a06dc6111f72a829dd2db0a656772"},"previous":{"original":"/logos/originals/infospace.svg","sourceUrl":"https://github.com/nocoo/infospace/blob/0d25de0f63e20979fd81c1c295e5bc84132efb3a/logo.svg","width":128,"height":128,"sha256":"7540789c41a74c8553af6fe38b23aa3784753259038ff93dc8e7797f17582d03"},"direction":[{"aspect":"composition","title":{"en":"Adjustable compartments","zh":"可调整的分区"},"description":{"en":"One sliding divider separates four unequal bays. The larger terracotta paper stack shows how space can be allocated while the complete tray remains one compact object.","zh":"滑动隔板分出四个大小不同的区域，较大的陶土色纸卡区体现空间分配，完整托盘形成紧凑的整体。"}},{"aspect":"drawing","title":{"en":"Metal and paper","zh":"金属与纸卡"},"description":{"en":"An indigo anodized frame, brushed-metal fittings and matte paper stacks make the adjustable workspace tangible. Continuous material shading preserves the frame, reflections and paper edges.","zh":"靛蓝阳极氧化边框、拉丝金属配件与哑光纸卡，把可调整的工作区转化为实物。连续的材质明暗保留边框、反光和纸张边缘。"}},{"aspect":"presentation","title":{"en":"Adjustable spaces","zh":"可调分区"},"description":{"en":"Offset panel outlines and short alignment ticks sit on cool indigo-gray paper. The field, grain and projected shadows are separate layers, so the small application mark stays transparent.","zh":"冷靛灰纸面上排列错位的面板轮廓和短对齐刻线。底色、颗粒与投影独立保存，小尺寸应用标记使用透明图。"}}],"palette":[{"color":"#c6cddd","role":"background","label":{"en":"Adjustable spaces","zh":"可调分区"},"source":"Selected InfoSpace presentation, 2026-09-09-01/01; background.base in archived settings.json"},{"color":"#373e55","role":"primary","label":{"en":"Indigo metal","zh":"靛蓝金属"},"source":"Native InfoSpace f35f20b193b2, sampled sRGB pixel (1040, 1540); artwork/logo-family/infospace/2026-09-09-01/palette.json"},{"color":"#c1b6b1","role":"accent","label":{"en":"Brushed nickel","zh":"拉丝镍色"},"source":"Native InfoSpace f35f20b193b2, sampled sRGB pixel (1265, 810); artwork/logo-family/infospace/2026-09-09-01/palette.json"},{"color":"#5f6da3","role":"accent","label":{"en":"Indigo card","zh":"靛蓝纸卡"},"source":"Native InfoSpace f35f20b193b2, sampled sRGB pixel (700, 700); artwork/logo-family/infospace/2026-09-09-01/palette.json"},{"color":"#689088","role":"accent","label":{"en":"Sea-green card","zh":"海绿纸卡"},"source":"Native InfoSpace f35f20b193b2, sampled sRGB pixel (1420, 650); artwork/logo-family/infospace/2026-09-09-01/palette.json"},{"color":"#d8815c","role":"accent","label":{"en":"Terracotta card","zh":"陶土色纸卡"},"source":"Native InfoSpace f35f20b193b2, sampled sRGB pixel (760, 1050); artwork/logo-family/infospace/2026-09-09-01/palette.json"},{"color":"#9d7ca8","role":"accent","label":{"en":"Lilac card","zh":"浅紫纸卡"},"source":"Native InfoSpace f35f20b193b2, sampled sRGB pixel (1450, 1100); artwork/logo-family/infospace/2026-09-09-01/palette.json"}],"sizeNote":{"en":"At 128/64 px, the four compartments and central divider remain distinct. At 32/24/16 px, the divided silhouette and four colors carry recognition; paper grain, metal texture and the adjustment slot merge. The native toolbar uses a 22 pt transparent mark.","zh":"128/64 px 能分辨四个区域和中央隔板；32/24/16 px 由分区轮廓与四色保持识别，纸张颗粒、金属纹理与滑槽细节自然合并。原生工具栏使用 22 pt 透明标记。"},"model":"gpt-image-2"}},{"id":"signoff-now","repo":"signoff.now","title":"signoff.now","emoji":"✍️","description":{"en":"Developer and Git activity analytics","zh":"开发者与 Git 活动分析"},"category":"tools","website":"https://signoff.hexly.ai","websiteSource":"wrangler.toml routes","repository":"https://github.com/nocoo/signoff.now","subject":"Petrol enamel mechanical tally counter","reference":false,"logo":{"kind":"original","original":"/logos/originals/signoff-now-family-2026-09-07-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/signoff.now/blob/51b679fba85d1a0cc81641e41f377ad77f867dd0/logo.png","modified":false,"width":2048,"height":2048,"bytes":3963278,"sha256":"942a3ceb0bb6c1243bd2b7876262ef163797131700fb72fc0fca90811ef7e1c4","thumbnail":"/logos/display/signoff-now-160.webp","display":"/logos/display/signoff-now-1024.webp"},"theme":{"background":{"value":"210 16% 94%","source":"apps/web/src/index.css --background"},"ink":{"value":"0 0% 12%","source":"apps/web/src/index.css --foreground"},"primary":{"value":"199 100% 47%","source":"apps/web/src/index.css --primary"}},"source":{"profileRevision":"e102f9b5d9730d8ead4c55b718d0acab30600398","profileSection":"Recent Projects","description":"Developer and Git activity analytics","repositoryRevision":"51b679fba85d1a0cc81641e41f377ad77f867dd0"},"colors":{"primary":"#00a4f0","background":"#edf0f2","ink":"#1f1f1f","palette":[{"color":"#00a4f0","role":"primary","source":"apps/web/src/index.css --primary: 199 100% 47%"},{"color":"#edf0f2","role":"background","source":"apps/web/src/index.css --background: 210 16% 94%"},{"color":"#2d506f","source":"Native signoff-now 34cda46e7010, sampled sRGB pixel (1244, 644); artwork/logo-family/signoff-now/2026-09-07-01/palette.json","role":"accent"},{"color":"#9a825a","source":"Native signoff-now 34cda46e7010, sampled sRGB pixel (1015, 95); artwork/logo-family/signoff-now/2026-09-07-01/palette.json","role":"accent"},{"color":"#d8cdb1","source":"Native signoff-now 34cda46e7010, sampled sRGB pixel (664, 1002); artwork/logo-family/signoff-now/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","series":"material","finishing":"01","root":"/logos/family/signoff-now/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/signoff-now/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Petrol enamel mechanical tally counter","zh":"深蓝珐琅机械计数器"},"original":"/logos/family/signoff-now/2026-09-07-01/01/transparent.png","display":"/logos/family/signoff-now/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"942a3ceb0bb6c1243bd2b7876262ef163797131700fb72fc0fca90811ef7e1c4"},"previous":{"original":"/logos/emoji/signoff-now.png","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","width":1024,"height":1024,"sha256":"8337fbbe8569d7cc869b0e9e7c5dabae4f370963ccc2adc1621ef529f6639cb0"},"direction":[{"aspect":"composition","title":{"en":"A contribution counted","zh":"记录一次贡献"},"description":{"en":"The returning brass plunger and slightly turning number wheel capture a count in progress. The blue counter remains the main mass; its silver finger loop stays close.","zh":"黄铜按钮回弹，数字轮刚刚转动，定格一次活动记录。蓝色计数器是主体，银色指环紧靠机身。"}},{"aspect":"drawing","title":{"en":"Enamel and moving digits","zh":"珐琅与机械数字"},"description":{"en":"Petrol enamel, brushed brass and opaque ivory digit drums describe a physical counting instrument. This represents developer and Git activity analytics.","zh":"深蓝珐琅、拉丝黄铜与不透明象牙色数字轮构成真实计数工具，呼应开发者与 Git 活动分析。"}},{"aspect":"presentation","title":{"en":"Activity ledgers","zh":"活动刻度"},"description":{"en":"Stepped tally bars, grouped count strokes and sparse ledger baselines on blue-gray paper. The field, grain and contact shadow are independent of transparent app marks.","zh":"蓝灰纸面上的分组计数线、阶梯图和稀疏账本基线。 底色、颗粒与接触阴影均独立于透明应用标记。"}}],"palette":[{"color":"#c4d2da","role":"background","label":{"en":"Activity ledgers","zh":"活动刻度"},"source":"Adopted signoff.now presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#2d506f","role":"primary","label":{"en":"Petrol enamel","zh":"深蓝珐琅"},"source":"Native signoff-now 34cda46e7010, sampled sRGB pixel (1244, 644); artwork/logo-family/signoff-now/2026-09-07-01/palette.json"},{"color":"#9a825a","role":"accent","label":{"en":"Brass plunger","zh":"黄铜按钮"},"source":"Native signoff-now 34cda46e7010, sampled sRGB pixel (1015, 95); artwork/logo-family/signoff-now/2026-09-07-01/palette.json"},{"color":"#d8cdb1","role":"accent","label":{"en":"Ivory drums","zh":"象牙色数字轮"},"source":"Native signoff-now 34cda46e7010, sampled sRGB pixel (664, 1002); artwork/logo-family/signoff-now/2026-09-07-01/palette.json"}],"sizeNote":{"en":"At 128/64 px, the counter body, plunger and digit window remain clear. At 32/24/16 px, the compact silhouette and dominant colors carry recognition; fine material detail, printed marks and background lines naturally merge.","zh":"128/64 px 能辨认计数器机身、按钮与数字窗；32/24/16 px 以紧凑轮廓和主色维持识别，精细材质、印记与背景线条自然合并。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Help managers review registered developers’ Azure DevOps PR, review, and work item activity through daily scores, comparisons, and timelines, with data collected by a local CLI.","zh":"通过本地 CLI 采集已登记开发者的 Azure DevOps PR、评审和工作项活动，帮助管理者按日查看积分、人员对比与活动明细。"},"techStack":[{"name":"TypeScript","role":{"en":"Application, domain rules, and CLI logic","zh":"应用、领域规则与 CLI 逻辑"}},{"name":"Bun","role":{"en":"Local collection runtime and monorepo tooling","zh":"本地采集运行时与 monorepo 工具"}},{"name":"React","role":{"en":"Management pages, activity views, and dashboard","zh":"管理页面、活动视图与 Dashboard"}},{"name":"Tailwind CSS","role":{"en":"Interface styling and themes","zh":"界面样式与主题"}},{"name":"Hono","role":{"en":"HTTP routes and authentication middleware","zh":"HTTP 路由与认证中间件"}},{"name":"Cloudflare Workers","role":{"en":"Ingest API and SPA hosting","zh":"数据写入 API 与 SPA 托管"}},{"name":"Cloudflare D1","role":{"en":"Entities, settings, activities, and scores","zh":"实体、配置、活动与积分存储"}},{"name":"Cloudflare Access","role":{"en":"Web entry and management API identity","zh":"Web 入口与管理 API 身份认证"}},{"name":"Azure DevOps API","role":{"en":"Pull request, review, and work item collection","zh":"PR、评审与工作项数据采集"}}],"verified":{"date":"2026-09-08","revision":"51b679fba85d1a0cc81641e41f377ad77f867dd0","sources":["package.json","apps/web/package.json","apps/collect/package.json","packages/worker/package.json","wrangler.toml","apps/web/vite.config.ts","apps/web/src/App.tsx","apps/web/src/views/DashboardPage.tsx","apps/web/src/views/activity/ActivityPage.tsx","apps/web/src/viewmodels/useDashboardViewModel.ts","apps/web/src/models/stats.ts","apps/collect/src/main.ts","apps/collect/src/config/env.ts","apps/collect/src/ado/client.ts","apps/collect/src/commands/run-collect.ts","apps/collect/src/commands/collect-flags.ts","apps/collect/src/commands/ingest-normalized.ts","apps/collect/src/ado/collect.ts","packages/domain/src/identity.ts","packages/domain/src/day-key.ts","packages/domain/src/transform/pr.ts","packages/domain/src/transform/wi.ts","packages/domain/src/constants.ts","packages/domain/src/score.ts","packages/worker/src/index.ts","packages/worker/src/routes/stats.ts","packages/worker/src/routes/settings.ts","packages/worker/src/middleware/entry-control.ts","packages/worker/src/middleware/access-auth.ts","packages/worker/src/middleware/access-principal.ts","packages/worker/src/middleware/pipeline-auth.ts","scripts/e2e-06-local.sh"]}}},{"id":"unseal","repo":"unseal","title":"Unseal","emoji":"🔓","description":{"en":"Find quarantined macOS apps and interactively remove their quarantine flags.","zh":"扫描被 macOS 隔离的应用，交互式地批量解除隔离标记。"},"category":"tools","website":"https://www.npmjs.com/package/unseal","websiteSource":"GitHub repository homepage","repository":"https://github.com/nocoo/unseal","subject":"An opened green enamel and brass padlock","reference":false,"logo":{"kind":"original","original":"/logos/originals/unseal-family-2026-09-07-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/unseal/blob/61a55cdb4380bc9e5dbaada3390ef29c7be6b84a/logo.png","modified":false,"width":2048,"height":2048,"bytes":2323865,"sha256":"8868c38b03154d60f932fd26a67c198d4986476bbd81c4497bcc6f4c9e484c2b","thumbnail":"/logos/display/unseal-160.webp","display":"/logos/display/unseal-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Scan macOS quarantined apps and batch-unseal them interactively","repositoryRevision":"61a55cdb4380bc9e5dbaada3390ef29c7be6b84a"},"colors":{"primary":"#4e5b4b","background":"#bdcebd","ink":"#51451f","palette":[{"color":"#4e5b4b","role":"primary","source":"Native unseal a793439f905e, sampled sRGB pixel (748, 1558); artwork/logo-family/unseal/2026-09-07-01/palette.json"},{"color":"#bdcebd","role":"background","source":"Adopted Unseal presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#97793d","source":"Native unseal a793439f905e, sampled sRGB pixel (497, 558); artwork/logo-family/unseal/2026-09-07-01/palette.json","role":"accent"},{"color":"#d85238","source":"Native unseal a793439f905e, sampled sRGB pixel (1573, 1264); artwork/logo-family/unseal/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","series":"material","finishing":"01","root":"/logos/family/unseal/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/unseal/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"An opened green enamel and brass padlock","zh":"刚刚开启的绿珐琅黄铜挂锁"},"original":"/logos/family/unseal/2026-09-07-01/01/transparent.png","display":"/logos/family/unseal/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"8868c38b03154d60f932fd26a67c198d4986476bbd81c4497bcc6f4c9e484c2b"},"previous":{"original":"/logos/emoji/unseal.png","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","width":1024,"height":1024,"sha256":"67157ad6394cd71c60b4b19632cfa0883c2159aeeb8ea6146f51330f42eb19f9"},"direction":[{"aspect":"composition","title":{"en":"The latch lifts","zh":"锁梁开启的一刻"},"description":{"en":"A complete brass shackle lifts and turns above a substantial green padlock. The torn red paper seal stays attached as one restrained accent.","zh":"完整黄铜锁梁从厚实绿色锁身上抬起并转开。撕开的红色纸封仍贴着侧面，形成克制的单一兴趣点。"}},{"aspect":"drawing","title":{"en":"Worn brass and sage enamel","zh":"旧黄铜与鼠尾草绿珐琅"},"description":{"en":"Soft metal wear, curved enamel and the physical keyhole make the object tangible. The open shackle is unmistakable even without a separate key or symbol.","zh":"柔和金属磨损、弧面珐琅和真实锁眼带来触感；无需钥匙或附加符号，也能清楚识别解锁状态。"}},{"aspect":"presentation","title":{"en":"Released seams","zh":"解封折线"},"description":{"en":"Separated perforated seams and folded-tab outlines embossed in calm sage paper. The field, grain and contact shadow are independent of transparent app marks.","zh":"鼠尾草色纸面的分离虚线与折页轮廓，呼应解除封印。 底色、颗粒与接触阴影均独立于透明应用标记。"}}],"palette":[{"color":"#bdcebd","role":"background","label":{"en":"Released seams","zh":"解封折线"},"source":"Adopted Unseal presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#4e5b4b","role":"primary","label":{"en":"Sage enamel","zh":"鼠尾草绿珐琅"},"source":"Native unseal a793439f905e, sampled sRGB pixel (748, 1558); artwork/logo-family/unseal/2026-09-07-01/palette.json"},{"color":"#97793d","role":"accent","label":{"en":"Brass shackle","zh":"黄铜锁梁"},"source":"Native unseal a793439f905e, sampled sRGB pixel (497, 558); artwork/logo-family/unseal/2026-09-07-01/palette.json"},{"color":"#d85238","role":"accent","label":{"en":"Vermilion seal","zh":"朱红纸封"},"source":"Native unseal a793439f905e, sampled sRGB pixel (1573, 1264); artwork/logo-family/unseal/2026-09-07-01/palette.json"}],"sizeNote":{"en":"At 128/64 px, the open shackle, green body and red seal remain clear. At 32/24/16 px, the compact silhouette and dominant colors carry recognition; fine material detail, printed marks and background lines naturally merge.","zh":"128/64 px 能辨认打开的锁梁、绿色锁身和红纸封；32/24/16 px 以紧凑轮廓和主色维持识别，精细材质、印记与背景线条自然合并。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Review quarantine results for apps in /Applications and select trusted apps for batch removal of the quarantine attribute.","zh":"查看 /Applications 内应用的隔离检测结果，选择可信应用后批量移除隔离属性。"},"techStack":[{"name":"TypeScript / Node.js","role":{"en":"CLI logic and published-package runtime","zh":"CLI 逻辑与发布包运行环境"}},{"name":"Bun","role":{"en":"Development and ESM bundling","zh":"开发运行与 ESM 打包"}},{"name":"Inquirer / chalk","role":{"en":"Terminal selection and colors","zh":"终端选择与着色"}},{"name":"xattr / spctl / sudo","role":{"en":"macOS attributes, assessment and permissions","zh":"macOS 属性、评估与权限操作"}},{"name":"Vitest","role":{"en":"Module, flow and subprocess tests","zh":"模块、流程与子进程测试"}}],"verified":{"date":"2026-09-08","revision":"2f31f698e1de11409d48dcf9e543bbb8c0706a7b","sources":["package.json","src/index.ts","src/scanner.ts","src/prompt.ts","src/sudo.ts","src/unseal.ts","src/exec.ts","src/debug.ts","vitest.config.ts","tests/exec.test.ts"]}}},{"id":"flow","repo":"flow","title":"Flow","emoji":"🌊","description":{"en":"A Chinese pinyin input engine that brings language models into everyday typing.","zh":"把大语言模型带进日常输入的中文拼音引擎，支持智能分词与预测。"},"category":"everyday","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/flow","subject":"Celadon mechanical keycap with a Chinese character","reference":false,"logo":{"kind":"original","original":"/logos/originals/flow-family-2026-09-07-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/flow/blob/f4a9e9464d64184b793240adff182e08c04997e1/logo.png","modified":false,"width":2048,"height":2048,"bytes":3201869,"sha256":"d08f2ee2cb2c322b54dbd9677180e210756c2cc8094784c6fb86e435d43afe23","thumbnail":"/logos/display/flow-160.webp","display":"/logos/display/flow-1024.webp"},"theme":{"background":{"value":"oklch(1 0 0)","source":"apps/web/src/index.css --background"},"ink":{"value":"oklch(0.145 0 0)","source":"apps/web/src/index.css --foreground"},"primary":{"value":"oklch(0.205 0 0)","source":"apps/web/src/index.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"LLM-powered Chinese pinyin input method engine with DP segmentation","repositoryRevision":"f4a9e9464d64184b793240adff182e08c04997e1"},"colors":{"primary":"#171717","background":"#ffffff","ink":"#0a0a0a","palette":[{"color":"#171717","role":"primary","source":"apps/web/src/index.css --primary: oklch(0.205 0 0)"},{"color":"#ffffff","role":"background","source":"apps/web/src/index.css --background: oklch(1 0 0)"},{"color":"#8ba48c","source":"Native flow 386f4e61218e, sampled sRGB pixel (1045, 500); artwork/logo-family/flow/2026-09-07-01/palette.json","role":"accent"},{"color":"#e2d7b7","source":"Native flow 386f4e61218e, sampled sRGB pixel (1188, 731); artwork/logo-family/flow/2026-09-07-01/palette.json","role":"accent"},{"color":"#2c2d27","source":"Native flow 386f4e61218e, sampled sRGB pixel (1187, 1560); artwork/logo-family/flow/2026-09-07-01/palette.json","role":"accent"},{"color":"#866540","source":"Native flow 386f4e61218e, sampled sRGB pixel (954, 1482); artwork/logo-family/flow/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","series":"material","finishing":"01","root":"/logos/family/flow/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/flow/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Celadon mechanical keycap with a Chinese character","zh":"带汉字的青瓷机械键帽"},"original":"/logos/family/flow/2026-09-07-01/01/transparent.png","display":"/logos/family/flow/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"d08f2ee2cb2c322b54dbd9677180e210756c2cc8094784c6fb86e435d43afe23"},"previous":{"original":"/logos/originals/flow.svg","sourceUrl":"https://github.com/nocoo/flow/blob/9c225d805a09ab5fdbe4fa65486821057231fdcd/apps/web/public/favicon.svg","width":48,"height":48,"sha256":"a03a03e3e685fdf4d87541f9e7e83ffdc910018d3782d67847d740fadeea7d6f"},"direction":[{"aspect":"composition","title":{"en":"The key rebounds","zh":"按键回弹的一刻"},"description":{"en":"A single substantial keycap sits just above its compact mechanical switch. The elevated product view keeps 中 readable while revealing the switch foot and copper spring.","zh":"一颗厚实键帽位于紧凑机械轴体上方。斜上方镜头同时保留中字符号、轴体底座和铜色弹簧。"}},{"aspect":"drawing","title":{"en":"Celadon ceramic","zh":"青瓷键帽"},"description":{"en":"Restrained glaze reflections and softly mottled celadon establish the physical ceramic. The ivory glyph remains opaque and the switch contributes a quiet dark base.","zh":"克制釉面反光与细腻青瓷色差表现真实陶瓷；象牙色汉字保持不透明，深色轴体形成稳定底座。"}},{"aspect":"presentation","title":{"en":"Pinyin key rhythm","zh":"拼音键序"},"description":{"en":"Staggered rounded key outlines with a small sequence of rising and falling tone strokes in celadon paper. The field, grain and contact shadow are independent of transparent app marks.","zh":"青瓷色纸面上的错位圆角键位与起伏声调短线。 底色、颗粒与接触阴影均独立于透明应用标记。"}}],"palette":[{"color":"#c4d8cf","role":"background","label":{"en":"Pinyin key rhythm","zh":"拼音键序"},"source":"Adopted Flow presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#8ba48c","role":"primary","label":{"en":"Celadon glaze","zh":"青瓷釉面"},"source":"Native flow 386f4e61218e, sampled sRGB pixel (1045, 500); artwork/logo-family/flow/2026-09-07-01/palette.json"},{"color":"#e2d7b7","role":"accent","label":{"en":"Ivory character","zh":"象牙色汉字"},"source":"Native flow 386f4e61218e, sampled sRGB pixel (1188, 731); artwork/logo-family/flow/2026-09-07-01/palette.json"},{"color":"#2c2d27","role":"accent","label":{"en":"Switch charcoal","zh":"深灰轴体"},"source":"Native flow 386f4e61218e, sampled sRGB pixel (1187, 1560); artwork/logo-family/flow/2026-09-07-01/palette.json"},{"color":"#866540","role":"accent","label":{"en":"Copper spring","zh":"铜色弹簧"},"source":"Native flow 386f4e61218e, sampled sRGB pixel (954, 1482); artwork/logo-family/flow/2026-09-07-01/palette.json"}],"sizeNote":{"en":"At 128/64 px, the celadon key and ivory 中 remain clear. At 32/24/16 px, the compact silhouette and dominant colors carry recognition; fine material detail, printed marks and background lines naturally merge.","zh":"128/64 px 能辨认青瓷键帽与象牙色中字符号；32/24/16 px 以紧凑轮廓和主色维持识别，精细材质、印记与背景线条自然合并。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Explore language-model Chinese pinyin conversion, text polishing, and chat in a browser using configurable OpenAI-compatible model services.","zh":"在浏览器中使用可配置的 OpenAI 兼容模型服务，试验中文拼音转换、文本润色和对话。"},"techStack":[{"name":"TypeScript / Bun","role":{"en":"API runtime and workspaces","zh":"API 运行时与工作区"}},{"name":"Hono","role":{"en":"Chat, pinyin, polishing and settings endpoints","zh":"对话、拼音、润色与设置接口"}},{"name":"AI SDK / OpenAI Compatible","role":{"en":"Streaming model calls","zh":"模型流式调用"}},{"name":"React / Vite","role":{"en":"Browser interface and frontend builds","zh":"浏览器界面与前端构建"}},{"name":"Tailwind CSS / Radix UI","role":{"en":"UI styles and components","zh":"界面样式与组件"}},{"name":"bun:sqlite","role":{"en":"Local provider configuration","zh":"本地模型服务配置"}},{"name":"Vitest","role":{"en":"Segmenter and utility tests","zh":"分词器与工具函数测试"}}],"verified":{"date":"2026-09-08","revision":"f4a9e9464d64184b793240adff182e08c04997e1","sources":["package.json","apps/api/package.json","apps/api/src/index.ts","apps/api/src/pinyin-segmenter.ts","apps/api/src/provider.ts","apps/api/src/db.ts","apps/api/src/routes/settings.ts","apps/web/package.json","apps/web/src/lib/api.ts","apps/web/src/App.tsx","apps/web/src/components/streaming-card.tsx","apps/web/src/hooks/use-streaming-predict.ts"]}}},{"id":"codo","repo":"codo","title":"Codo","emoji":"🔔","description":{"en":"A quiet macOS notification bridge between your AI agents and your desktop.","zh":"连接 AI 智能体与桌面的 macOS 通知桥梁，支持菜单栏服务和命令行。"},"category":"tools","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/codo","subject":"Vivid faceted hummingbird hovering at one coral bell flower","reference":false,"logo":{"kind":"original","original":"/logos/originals/codo-family-2026-09-07-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/codo/blob/c4d8982d8c91c44ccd85d3a13e824c0cc9ccc80a/logo.png","modified":false,"width":2048,"height":2048,"bytes":1902979,"sha256":"67456a5040ec217dd179bdc54f81f9c71ea44908ea7b25a2e9064e386b2607cf","thumbnail":"/logos/display/codo-160.webp","display":"/logos/display/codo-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"macOS menubar notification daemon and CLI — bridge for Claude Code and AI agents","repositoryRevision":"c4d8982d8c91c44ccd85d3a13e824c0cc9ccc80a"},"colors":{"primary":"#349078","background":"transparent","ink":"#247185","palette":[{"color":"#349078","role":"primary","source":"Native codo 76ffd623644d, sampled sRGB pixel (828, 1414); artwork/logo-family/codo/2026-09-07-01/palette.json"},{"color":"transparent","role":"background","source":"Preserved project artwork, transparent background"},{"color":"#247185","source":"Native codo 76ffd623644d, sampled sRGB pixel (663, 1350); artwork/logo-family/codo/2026-09-07-01/palette.json","role":"accent"},{"color":"#764395","source":"Native codo 76ffd623644d, sampled sRGB pixel (645, 1616); artwork/logo-family/codo/2026-09-07-01/palette.json","role":"accent"},{"color":"#e8675e","source":"Native codo 76ffd623644d, sampled sRGB pixel (1773, 846); artwork/logo-family/codo/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"01","root":"/logos/family/codo/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/codo/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Vivid faceted hummingbird hovering at one coral bell flower","zh":"色彩鲜明的切面蜂鸟悬停在一朵珊瑚色钟形花旁"},"original":"/logos/family/codo/2026-09-07-01/01/transparent.png","display":"/logos/family/codo/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"67456a5040ec217dd179bdc54f81f9c71ea44908ea7b25a2e9064e386b2607cf"},"previous":{"original":"/logos/originals/codo.png","sourceUrl":"https://github.com/nocoo/codo/blob/66df73c4141f3e01a89fd6693f574d1d75fc5e4a/logo.png","width":2048,"height":2048,"sha256":"d078deff35f8dfc10b8b7192ab3ec8f6603de460ae1a3d3d632731281e62bc74"},"direction":[{"aspect":"composition","title":{"en":"A hover caught in time","zh":"捕捉悬停瞬间"},"description":{"en":"A complete hummingbird pauses with its beak at one bell flower. Both wings, the tail and small feet remain visible with generous corner clearance.","zh":"完整的小蜂鸟将鸟喙停在一朵钟形花旁，双翼、尾羽和小脚都清晰可见，并为圆角留足空间。"}},{"aspect":"drawing","title":{"en":"Emerald, then a flash of color","zh":"翡翠绿与鲜明色彩"},"description":{"en":"The owner requested vivid colors: emerald and teal lead, with violet wings, coral and gold on the breast, and one flower beside the beak. Connected facets keep the bird readable.","zh":"依照本轮鲜明色彩的要求，以翡翠绿和青色为主，配紫色翼面、珊瑚与金色胸羽及一朵小花。相连切面维持蜂鸟的清晰轮廓。"}},{"aspect":"presentation","title":{"en":"Petal pockets","zh":"花瓣凹面"},"description":{"en":"Large unequal petal impressions curl through a muted teal field. Soft grain and a shallow shadow keep the richly colored wings distinct.","zh":"大小不一的花瓣压纹弯过柔和青色底纹，细颗粒与浅阴影让丰富翼色保持分明。"}}],"palette":[{"color":"#5f8988","role":"background","label":{"en":"Petal pockets","zh":"花瓣凹面"},"source":"Selected Codo presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#349078","role":"primary","label":{"en":"Emerald","zh":"翡翠绿"},"source":"Native codo 76ffd623644d, sampled sRGB pixel (828, 1414); artwork/logo-family/codo/2026-09-07-01/palette.json"},{"color":"#247185","role":"accent","label":{"en":"Teal","zh":"青色"},"source":"Native codo 76ffd623644d, sampled sRGB pixel (663, 1350); artwork/logo-family/codo/2026-09-07-01/palette.json"},{"color":"#764395","role":"accent","label":{"en":"Violet","zh":"紫色"},"source":"Native codo 76ffd623644d, sampled sRGB pixel (645, 1616); artwork/logo-family/codo/2026-09-07-01/palette.json"},{"color":"#e8675e","role":"accent","label":{"en":"Coral","zh":"珊瑚色"},"source":"Native codo 76ffd623644d, sampled sRGB pixel (1773, 846); artwork/logo-family/codo/2026-09-07-01/palette.json"},{"color":"#ddb048","role":"accent","label":{"en":"Gold","zh":"金色"},"source":"Native codo 76ffd623644d, sampled sRGB pixel (1121, 1132); artwork/logo-family/codo/2026-09-07-01/palette.json"}],"sizeNote":{"en":"The complete animal and accessory have at least 149.94 px clearance from the actual rounded outline. Ten export sizes preserve one uniform placement. Small app/browser marks use the transparent foreground; fine facets and accessory details simplify at 16 px.","zh":"完整动物和兴趣点距离真实圆角轮廓至少 149.94 px。十种导出尺寸保持同一组等比位置，小型 UI 与浏览器使用透明主体；细小切面和装饰细节在 16 px 时会简化。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Deliver local script and Claude Code events as Mac desktop banners, keep project and session history, and optionally summarize notifications with an AI Guardian.","zh":"将本地脚本和 Claude Code 事件显示为 Mac 桌面横幅，保存项目与会话记录，并按需使用 AI Guardian 整理通知。"},"techStack":[{"name":"Swift / SwiftUI","role":{"en":"Menu bar app and Dashboard","zh":"菜单栏应用与控制台"}},{"name":"AppKit","role":{"en":"Custom desktop banners","zh":"桌面自绘横幅"}},{"name":"TypeScript / Bun","role":{"en":"CLI and Guardian process","zh":"命令行与 Guardian 进程"}},{"name":"Unix sockets","role":{"en":"Local event delivery","zh":"本地事件传输"}},{"name":"SQLite / Keychain","role":{"en":"Event storage and API keys","zh":"事件存储与 API key"}},{"name":"Anthropic / OpenAI SDKs","role":{"en":"Optional notification summaries","zh":"可选的通知摘要"}}],"verified":{"date":"2026-09-08","revision":"c4d8982d8c91c44ccd85d3a13e824c0cc9ccc80a","sources":["Package.swift","cli/codo.ts","guardian/package.json","guardian/classifier.ts","guardian/llm.ts","Sources/Codo/AppDelegate.swift","Sources/Codo/BannerProvider.swift","Sources/Codo/GuardianPathResolver.swift","Sources/CodoCore/EventStore.swift","Sources/CodoCore/GuardianSettings.swift","hooks/claude-hook.sh","scripts/build.sh","scripts/install.sh"]}}},{"id":"arena","repo":"arena","title":"Arena","emoji":"🏟️","description":{"en":"Let coding agents debate solutions while you review, compare, and decide.","zh":"让多个编程智能体提出方案、展开讨论，由你比较、审阅并做决定。"},"category":"ai","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/arena","subject":"Walnut dual-dial chess clock","reference":false,"logo":{"kind":"original","original":"/logos/originals/arena-family-2026-09-07-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/arena/blob/4a9efd6690942dd1384fd807ba83c73e7c29c202/logo.png","modified":false,"width":2048,"height":2048,"bytes":3658121,"sha256":"84ab91476407de4ab4094adace81a6ff7958512c5f0066c3fc62a63421728e59","thumbnail":"/logos/display/arena-160.webp","display":"/logos/display/arena-1024.webp"},"theme":{"background":{"value":"220 14% 94%","source":"packages/web/src/app/globals.css --background"},"ink":{"value":"0 0% 12%","source":"packages/web/src/app/globals.css --foreground"},"primary":{"value":"262 80% 55%","source":"packages/web/src/app/globals.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Local AI coding agent debate platform — agents push solutions, humans review","repositoryRevision":"4a9efd6690942dd1384fd807ba83c73e7c29c202"},"colors":{"primary":"#7430e8","background":"#eeeff2","ink":"#1f1f1f","palette":[{"color":"#7430e8","role":"primary","source":"packages/web/src/app/globals.css --primary: 262 80% 55%"},{"color":"#eeeff2","role":"background","source":"packages/web/src/app/globals.css --background: 220 14% 94%"},{"color":"#67442b","source":"Native arena 5f6923caeb83, sampled sRGB pixel (1307, 528); artwork/logo-family/arena/2026-09-07-01/palette.json","role":"accent"},{"color":"#dcccaa","source":"Native arena 5f6923caeb83, sampled sRGB pixel (580, 909); artwork/logo-family/arena/2026-09-07-01/palette.json","role":"accent"},{"color":"#947544","source":"Native arena 5f6923caeb83, sampled sRGB pixel (1498, 257); artwork/logo-family/arena/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","series":"material","finishing":"01","root":"/logos/family/arena/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/arena/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Walnut dual-dial chess clock","zh":"胡桃木双盘棋钟"},"original":"/logos/family/arena/2026-09-07-01/01/transparent.png","display":"/logos/family/arena/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"84ab91476407de4ab4094adace81a6ff7958512c5f0066c3fc62a63421728e59"},"previous":{"original":"/logos/emoji/arena.png","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","width":1024,"height":1024,"sha256":"5654aa8fec9d7aa368c120d1ed58c5ae02d4ca6ef8cdd12b136324256acd3b57"},"direction":[{"aspect":"composition","title":{"en":"A measured exchange","zh":"有节奏的交锋"},"description":{"en":"Two ivory faces share one broad walnut chess clock, with a brass plunger above each side. The paired mechanism gives agent debate and human checkpoints a tangible metaphor.","zh":"两面象牙色钟盘共用一座宽阔胡桃木棋钟，各配黄铜按钮，以双侧计时比喻 Agent 讨论与人工检查点。"}},{"aspect":"drawing","title":{"en":"Walnut and ivory dials","zh":"胡桃木与象牙色钟盘"},"description":{"en":"Natural wood grain, opaque dial faces and crisp metal rims carry the detail. One complete compact object remains legible as the camera pulls back.","zh":"天然木纹、不透明钟盘和清晰金属包边构成细节；镜头拉远时仍是一件完整、紧凑、易识别的实物。"}},{"aspect":"presentation","title":{"en":"Paired debate arcs","zh":"对话双弧"},"description":{"en":"Two offset dial arcs with alternating short speaking-turn marks on warm oak-toned paper. The field, grain and contact shadow are independent of transparent app marks.","zh":"暖色纸面上的双侧计时弧线与交错回合短刻度。 底色、颗粒与接触阴影均独立于透明应用标记。"}}],"palette":[{"color":"#d4c1a7","role":"background","label":{"en":"Paired debate arcs","zh":"对话双弧"},"source":"Adopted Arena presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#67442b","role":"primary","label":{"en":"Walnut case","zh":"胡桃木机身"},"source":"Native arena 5f6923caeb83, sampled sRGB pixel (1307, 528); artwork/logo-family/arena/2026-09-07-01/palette.json"},{"color":"#dcccaa","role":"accent","label":{"en":"Ivory dials","zh":"象牙色钟盘"},"source":"Native arena 5f6923caeb83, sampled sRGB pixel (580, 909); artwork/logo-family/arena/2026-09-07-01/palette.json"},{"color":"#947544","role":"accent","label":{"en":"Brass controls","zh":"黄铜按钮"},"source":"Native arena 5f6923caeb83, sampled sRGB pixel (1498, 257); artwork/logo-family/arena/2026-09-07-01/palette.json"}],"sizeNote":{"en":"At 128/64 px, the twin ivory dials and walnut frame remain clear. At 32/24/16 px, the compact silhouette and dominant colors carry recognition; fine material detail, printed marks and background lines naturally merge.","zh":"128/64 px 能辨认双象牙色钟盘与胡桃木边框；32/24/16 px 以紧凑轮廓和主色维持识别，精细材质、印记与背景线条自然合并。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Collect coding assistants’ proposals on a local discussion board, let a person record decisions, and return those checkpoints to assistants through a CLI.","zh":"在本机讨论看板汇集编码助手的方案，由人记录决策，再通过 CLI 将 checkpoint 提供给助手读取。"},"techStack":[{"name":"Bun / TypeScript","role":{"en":"CLI and shared logic","zh":"CLI 与共享逻辑"}},{"name":"commander","role":{"en":"CLI argument parsing","zh":"CLI 参数解析"}},{"name":"SQLite / Drizzle ORM","role":{"en":"Local discussion data","zh":"本地讨论数据"}},{"name":"Next.js / React","role":{"en":"Dashboard and server routes","zh":"看板与服务端路由"}},{"name":"NextAuth / Google OAuth","role":{"en":"Dashboard login","zh":"看板登录"}},{"name":"Tailwind CSS / Radix UI","role":{"en":"Styling and UI components","zh":"样式与界面组件"}}],"verified":{"date":"2026-09-08","revision":"4356c962fbd24903265d9f4dc680dcb9d6fcbb93","sources":["package.json","packages/core/src/db/connection.ts","packages/core/src/services/arena.ts","packages/core/src/services/project-id.ts","packages/cli/src/index.ts","packages/cli/src/commands/pop.ts","packages/web/package.json","packages/web/src/auth.ts","packages/web/src/app/api/checkpoint/route.ts","packages/web/src/app/topic/[id]/topic-view.tsx"]}}},{"id":"owl","repo":"owl","title":"Owl","emoji":"🦉","description":{"en":"A macOS menu bar lookout that spots unusual patterns in your system logs.","zh":"守在 macOS 菜单栏里的观察员，从系统日志中发现异常信号。"},"category":"tools","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/owl","subject":"Compact tawny owl holding one multicolored feather","reference":false,"logo":{"kind":"original","original":"/logos/originals/owl-family-2026-09-07-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/owl/blob/e1c69addb656e8907a8828001e1f5c103f3b9fbf/logo.png","modified":false,"width":2048,"height":2048,"bytes":2973160,"sha256":"c0a00da0eaadabc6ca5d88210ccbcbbbcedc6cb6465f0976980c30f9e6e7e0a8","thumbnail":"/logos/display/owl-160.webp","display":"/logos/display/owl-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"macOS menu bar system health monitor via unified log stream anomaly detection","repositoryRevision":"e1c69addb656e8907a8828001e1f5c103f3b9fbf"},"colors":{"primary":"#93816a","background":"transparent","ink":"#844c6e","palette":[{"color":"#93816a","role":"primary","source":"Native owl 6638f897f718, sampled sRGB pixel (1030, 752); artwork/logo-family/owl/2026-09-07-01/palette.json"},{"color":"transparent","role":"background","source":"Preserved project artwork, transparent background"},{"color":"#e5cfab","source":"Native owl 6638f897f718, sampled sRGB pixel (1214, 844); artwork/logo-family/owl/2026-09-07-01/palette.json","role":"accent"},{"color":"#cd8523","source":"Native owl 6638f897f718, sampled sRGB pixel (1005, 598); artwork/logo-family/owl/2026-09-07-01/palette.json","role":"accent"},{"color":"#dc8470","source":"Native owl 6638f897f718, sampled sRGB pixel (1329, 979); artwork/logo-family/owl/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"01","root":"/logos/family/owl/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/owl/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Compact tawny owl holding one multicolored feather","zh":"衔着一根多彩羽毛的灰褐色猫头鹰"},"original":"/logos/family/owl/2026-09-07-01/01/transparent.png","display":"/logos/family/owl/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"c0a00da0eaadabc6ca5d88210ccbcbbbcedc6cb6465f0976980c30f9e6e7e0a8"},"previous":{"original":"/logos/originals/owl.png","sourceUrl":"https://github.com/nocoo/owl/blob/73c292ea59ed8ccaf8dfd1e6d1d57f80e8be7ed3/owl.png","width":2048,"height":2048,"sha256":"f579214edd8876dacaa55d27c35c3598d3f809e651e4d3537d6d228823b5f413"},"direction":[{"aspect":"composition","title":{"en":"A feather caught mid-turn","zh":"转头间衔住羽毛"},"description":{"en":"A compact whole owl tilts its head, with both eyes, folded wings and every talon visible. One feather extends from the beak into the surrounding space.","zh":"完整的小猫头鹰微微侧头，双眼、折叠双翼和脚爪清晰可见。一根羽毛从喙边伸向留白。"}},{"aspect":"drawing","title":{"en":"Tawny, cream, amber","zh":"灰褐、奶油与琥珀"},"description":{"en":"Broad neutral facets organize the plumage. Cream facial discs and amber eyes preserve recognition; the feather is the only multicolored accessory.","zh":"大块中性色切面组织羽毛，奶油色面盘与琥珀眼睛保持辨识度，羽毛是唯一的多彩配件。"}},{"aspect":"presentation","title":{"en":"A quiet night aperture","zh":"安静的夜色窗口"},"description":{"en":"Interrupted crescent steps and offset notches form a smoky-blue observatory field. The pattern stays distinct from feather stripes and light orbits.","zh":"中断的弧形台阶与错位缺口构成烟蓝色夜间窗口，几何形态与羽毛条纹和光线轨道不同。"}}],"palette":[{"color":"#5f6684","role":"background","label":{"en":"Night aperture relief","zh":"安静的夜色窗口"},"source":"Selected Owl presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#93816a","role":"primary","label":{"en":"Tawny feathers","zh":"灰褐羽毛"},"source":"Native owl 6638f897f718, sampled sRGB pixel (1030, 752); artwork/logo-family/owl/2026-09-07-01/palette.json"},{"color":"#e5cfab","role":"accent","label":{"en":"Cream face","zh":"奶油面盘"},"source":"Native owl 6638f897f718, sampled sRGB pixel (1214, 844); artwork/logo-family/owl/2026-09-07-01/palette.json"},{"color":"#cd8523","role":"accent","label":{"en":"Amber iris","zh":"琥珀眼睛"},"source":"Native owl 6638f897f718, sampled sRGB pixel (1005, 598); artwork/logo-family/owl/2026-09-07-01/palette.json"},{"color":"#dc8470","role":"accent","label":{"en":"Feather coral","zh":"羽毛珊瑚色"},"source":"Native owl 6638f897f718, sampled sRGB pixel (1329, 979); artwork/logo-family/owl/2026-09-07-01/palette.json"},{"color":"#844c6e","role":"accent","label":{"en":"Feather plum","zh":"羽毛梅紫色"},"source":"Native owl 6638f897f718, sampled sRGB pixel (1691, 931); artwork/logo-family/owl/2026-09-07-01/palette.json"}],"sizeNote":{"en":"The complete bird and feather have at least 193.5 px of rounded-edge clearance. The native popover uses a transparent 22 pt mark; macOS app icons use a separate rounded tile with a platform inset. Browser specimens demonstrate the identity at small sizes.","zh":"完整鸟身和羽毛距圆角边界至少 193.5 px。原生弹窗使用透明的 22 pt 小标，macOS 应用图标使用带平台留白的独立圆角底图。浏览器样例用于检视缩小效果。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Inspect Mac system metrics and processes from the menu bar, and detect recurring crashes, resource pressure, sleep problems, and device anomalies locally.","zh":"在菜单栏查看 Mac 系统指标与进程，在本机发现反复崩溃、资源压力、睡眠和设备异常。"},"techStack":[{"name":"Swift / Swift Concurrency","role":{"en":"Local collection and detection logic","zh":"本地采集与检测逻辑"}},{"name":"SwiftUI / AppKit","role":{"en":"Menu bar, metrics and settings UI","zh":"菜单栏、指标与设置界面"}},{"name":"macOS Unified Logging","role":{"en":"System event stream","zh":"系统事件日志流"}},{"name":"IOKit / Mach / libproc","role":{"en":"Hardware and process metrics","zh":"硬件与进程指标"}},{"name":"Objective-C / IOHID","role":{"en":"Apple Silicon thermal sensors","zh":"Apple Silicon 温度传感器"}},{"name":"UserDefaults","role":{"en":"Local preferences","zh":"本地偏好设置"}},{"name":"Swift Testing","role":{"en":"Unit and pipeline integration tests","zh":"单元与检测管道集成测试"}}],"verified":{"date":"2026-09-08","revision":"e1c69addb656e8907a8828001e1f5c103f3b9fbf","sources":["Package.swift","Sources/Owl/OwlApp.swift","Sources/Owl/OwlEngine.swift","Sources/Owl/OwlNotifications.swift","Sources/OwlCore/Patterns/PatternCatalog.swift","Sources/OwlCore/Patterns/MetricsCatalog.swift","Sources/OwlCore/Services/SystemMetricsPoller.swift","Sources/OwlCore/Services/HIDTemperatureProvider.swift","Sources/OwlCore/Pipeline/AlertStateManager.swift","Sources/OwlCore/Settings/AppSettings.swift","scripts/build.sh"]}}},{"id":"xray","repo":"xray","title":"Xray","emoji":"🦋","description":{"en":"A closer look at your Twitter / X activity, with analytics and AI-powered reports.","zh":"深入查看 Twitter / X 动态，用数据分析与 AI 报告理解自己的内容。"},"category":"everyday","website":"https://xray.hexly.ai","websiteSource":"GitHub repository homepage","repository":"https://github.com/nocoo/xray","subject":"Original multicolored butterfly with complete spread wings","reference":false,"logo":{"kind":"original","original":"/logos/originals/xray.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/xray/blob/16175dc87ef406e8cf3343ab8808b60e8f53cc8a/logo.png","modified":false,"width":2048,"height":2048,"bytes":3318716,"sha256":"912d89234012d2bd1ef3623aeff8824efc274fdb77d8317200784bb1f02cd023","thumbnail":"/logos/display/xray-160.webp","display":"/logos/display/xray-1024.webp"},"theme":{"background":{"value":"220 14% 94%","source":"packages/ui/src/index.css --background"},"ink":{"value":"0 0% 12%","source":"packages/ui/src/index.css --foreground"},"primary":{"value":"230 75% 55%","source":"packages/ui/src/index.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Personal Twitter/X analytics dashboard with AI-powered reporting","repositoryRevision":"16175dc87ef406e8cf3343ab8808b60e8f53cc8a"},"colors":{"primary":"#3653e2","background":"#eeeff2","ink":"#1f1f1f","palette":[{"color":"#3653e2","role":"primary","source":"packages/ui/src/index.css --primary: 230 75% 55%"},{"color":"#eeeff2","role":"background","source":"packages/ui/src/index.css --background: 220 14% 94%"},{"color":"#f6bc36","source":"Native xray 912d89234012, sampled sRGB pixel (1371, 523); artwork/logo-family/xray/2026-09-07-01/palette.json","role":"accent"},{"color":"#961b54","source":"Native xray 912d89234012, sampled sRGB pixel (176, 366); artwork/logo-family/xray/2026-09-07-01/palette.json","role":"accent"},{"color":"#991c56","source":"Native xray 912d89234012, sampled sRGB pixel (178, 364); artwork/logo-family/xray/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"01","root":"/logos/family/xray/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/xray/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Original multicolored butterfly with complete spread wings","zh":"保留原样的多彩展翅蝴蝶"},"original":"/logos/family/xray/2026-09-07-01/01/transparent.png","display":"/logos/family/xray/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"912d89234012d2bd1ef3623aeff8824efc274fdb77d8317200784bb1f02cd023"},"previous":{"original":"/logos/originals/xray.png","sourceUrl":"https://github.com/nocoo/xray/blob/c6653da2d564576c9fe85346477d2830ebeabdc0/packages/worker/static/logo.png","width":2048,"height":2048,"sha256":"912d89234012d2bd1ef3623aeff8824efc274fdb77d8317200784bb1f02cd023"},"direction":[{"aspect":"composition","title":{"en":"Wings kept whole","zh":"完整保留双翼"},"description":{"en":"The owner-selected butterfly keeps its exact native position, silhouette and colorful wing pattern. Both sides of the comparison use the same foreground.","zh":"保留原来蝴蝶的位置、轮廓与多彩翼纹。前后对比使用完全相同的透明主体。"}},{"aspect":"drawing","title":{"en":"The original carries the color","zh":"色彩来自原图"},"description":{"en":"Coral, gold, turquoise and violet facets remain untouched. This is a presentation pass with zero image-generation requests.","zh":"珊瑚、金黄、松石与紫色色面全部保留。本轮只完善展示，没有调用生图模型。"}},{"aspect":"presentation","title":{"en":"Wing-vein panels","zh":"蝶翼脉络底纹"},"description":{"en":"Unequal, open wing-vein panels meet on a muted plum field. The broad seams and soft contact shadow let the vivid butterfly stay in front.","zh":"不等宽的开放翼脉面板铺在柔和梅紫底色上，宽阔接缝与浅接触阴影托起鲜艳的蝴蝶。"}}],"palette":[{"color":"#756584","role":"background","label":{"en":"Wing-vein panels","zh":"蝶翼脉络底纹"},"source":"Selected Xray presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#f24d31","role":"primary","label":{"en":"Coral","zh":"珊瑚色"},"source":"Native xray 912d89234012, sampled sRGB pixel (424, 344); artwork/logo-family/xray/2026-09-07-01/palette.json"},{"color":"#f6bc36","role":"accent","label":{"en":"Golden yellow","zh":"金黄色"},"source":"Native xray 912d89234012, sampled sRGB pixel (1371, 523); artwork/logo-family/xray/2026-09-07-01/palette.json"},{"color":"#961b54","role":"accent","label":{"en":"Teal","zh":"青色"},"source":"Native xray 912d89234012, sampled sRGB pixel (176, 366); artwork/logo-family/xray/2026-09-07-01/palette.json"},{"color":"#991c56","role":"accent","label":{"en":"Violet","zh":"紫色"},"source":"Native xray 912d89234012, sampled sRGB pixel (178, 364); artwork/logo-family/xray/2026-09-07-01/palette.json"}],"sizeNote":{"en":"The original 2048 px foreground and placement are retained exactly. Existing nearest rounded-outline clearance is 124.61 px with no clipped pixels. Fine facets and small sparks simplify at 16 px; app and browser marks use the transparent source.","zh":"原有 2048 px 透明主体与位置保持完全一致，距圆角轮廓最近处为 124.61 px，没有像素被裁掉。细小切面与电光在 16 px 时会简化，小型 UI 与浏览器使用透明主体。"},"method":"retained-original"},"overview":{"goal":{"en":"Collect X / Twitter and custom-source content into watchlists, then read, translate, and save links from one timeline.","zh":"将 X / Twitter 与自定义来源的内容按关注列表收集，在同一时间线中阅读、翻译和保存链接。"},"techStack":[{"name":"TypeScript","role":{"en":"UI, API, and collection scripts","zh":"界面、API 与采集脚本"}},{"name":"React","role":{"en":"Reading interface","zh":"阅读界面"}},{"name":"Vite","role":{"en":"Web development and bundling","zh":"Web 开发与构建"}},{"name":"Hono","role":{"en":"HTTP API","zh":"HTTP API"}},{"name":"Cloudflare Workers","role":{"en":"Application and ingest hosting","zh":"应用与内容接入托管"}},{"name":"Cloudflare D1","role":{"en":"Watchlists, content, and settings","zh":"关注列表、内容与设置存储"}},{"name":"Cloudflare Access","role":{"en":"Browser authentication","zh":"浏览器登录"}}],"verified":{"date":"2026-09-08","revision":"f0864583697a734b7279087b9a1de8d3a1a18bff","sources":["package.json","packages/ui/package.json","packages/worker/package.json","packages/worker/wrangler.toml","packages/worker/src/index.ts","packages/worker/src/routes/ingest-push.ts","packages/worker/src/lib/ai-client.ts","scripts/refresh-watchlists.ts"]}}},{"id":"r2shot","repo":"r2shot","title":"R2Shot","emoji":"🐬","description":{"en":"Capture a screenshot, upload it to R2, and have a shareable link on your clipboard.","zh":"截图、上传到 R2，再把可分享的链接放进剪贴板，一次完成。"},"category":"tools","website":"https://chromewebstore.google.com/detail/r2shot/chhcpjnlcbomogddjockcpjjpiijogha","websiteSource":"Chrome Web Store link in repository README.md at d69714a2332066c9c7b1792f919607a4b776eade","repository":"https://github.com/nocoo/r2shot","subject":"Blue dolphin","reference":false,"logo":{"kind":"original","original":"/logos/originals/r2shot.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/r2shot/blob/d69714a2332066c9c7b1792f919607a4b776eade/logo.png","modified":false,"width":920,"height":920,"bytes":668704,"sha256":"17e2f07d03a8de29731fbb9fc0e91ea3182de24a46b2b3af79a8b73e4ac94ec1","thumbnail":"/logos/display/r2shot-160.webp","display":"/logos/display/r2shot-1024.webp"},"theme":{"primary":{"value":"#24c4bd","source":"src/shared/index.css --color-primary"},"background":{"value":"#ffffff","source":"src/shared/index.css --color-background"},"ink":{"value":"#0f172a","source":"src/shared/index.css --color-foreground"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"One-click screenshot capture, upload to Cloudflare R2, CDN URL to clipboard","repositoryRevision":"d69714a2332066c9c7b1792f919607a4b776eade"},"colors":{"primary":"#24c4bd","background":"#ffffff","ink":"#0f172a","palette":[{"color":"#24c4bd","role":"primary","source":"src/shared/index.css --color-primary: #24c4bd"},{"color":"#ffffff","role":"background","source":"src/shared/index.css --color-background: #ffffff"},{"color":"#dbffff","role":"accent","source":"Preserved project artwork, sampled pixel"},{"color":"#3fc2cf","role":"accent","source":"Preserved project artwork, sampled pixel"},{"color":"#198cba","role":"accent","source":"Preserved project artwork, sampled pixel"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"01","root":"/logos/family/r2shot/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/r2shot/2026-09-07-01","method":"retained-original","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Original blue faceted dolphin with a curled tail","zh":"保留原图的蓝色碎片化海豚与卷曲尾鳍"},"original":"/logos/family/r2shot/2026-09-07-01/01/transparent.png","display":"/logos/family/r2shot/2026-09-07-01/01/transparent-1024.webp","width":920,"height":920,"sha256":"17e2f07d03a8de29731fbb9fc0e91ea3182de24a46b2b3af79a8b73e4ac94ec1"},"previous":{"original":"/logos/originals/r2shot.png","sourceUrl":"https://github.com/nocoo/r2shot/blob/761799416deb2a977eee92b2392746e16f6bc644/logo.png","width":920,"height":920,"sha256":"17e2f07d03a8de29731fbb9fc0e91ea3182de24a46b2b3af79a8b73e4ac94ec1"},"direction":[{"aspect":"composition","title":{"en":"The same playful turn","zh":"保留这一刻的回身"},"description":{"en":"The dolphin, curled tail, and original margins are retained exactly. Its complete silhouette stays inside the rounded tile; no crop or artificial extension was added.","zh":"海豚、卷曲尾鳍、视角和原有边距全部保留。完整轮廓位于圆角之内，没有裁切或补画。"}},{"aspect":"drawing","title":{"en":"Every original facet","zh":"每一块原有的色面"},"description":{"en":"Cyan, turquoise, blue, and pale belly planes remain the original transparent artwork. The bright eyes and sweeping tail keep their existing gesture; no new decoration or model generation was needed.","zh":"青色、蓝色和浅色腹部均沿用原来的透明图像。明亮眼神与回卷尾鳍保留原有动作，没有新增装饰，也没有重新生图。"}},{"aspect":"presentation","title":{"en":"A quiet teal wake","zh":"青色水流的浮纹"},"description":{"en":"Oblique wave crests follow the empty upper-right field. A deep teal gradient, fine grain, and shallow contact shadows give the retained flat artwork a tactile setting.","zh":"斜向水波穿过右上方的留白，搭配深青渐变、细微颗粒和轻浅接触阴影，为原来的平面主体加上纸面质感。"}}],"palette":[{"color":"#4d818c","role":"background","label":{"en":"Dolphin wake","zh":"展示底色"},"source":"Selected R2Shot presentation, finishing 01; background.base in archived settings.json"},{"color":"#3fc2d0","label":{"en":"Lagoon cyan","zh":"泻湖青"},"source":"Original r2shot 17e2f07d03a8, sampled sRGB pixel (568, 298); palette.json","role":"primary"},{"color":"#198eba","label":{"en":"Ocean blue","zh":"海蓝"},"source":"Original r2shot 17e2f07d03a8, sampled sRGB pixel (217, 676); palette.json","role":"accent"},{"color":"#dbffff","label":{"en":"Ice mint","zh":"冰薄荷"},"source":"Original r2shot 17e2f07d03a8, sampled sRGB pixel (494, 280); palette.json","role":"accent"},{"color":"#143361","label":{"en":"Deep water","zh":"深海蓝"},"source":"Original r2shot 17e2f07d03a8, sampled sRGB pixel (653, 181); palette.json","role":"accent"},{"color":"#2ebad5","label":{"en":"Tail turquoise","zh":"尾鳍青"},"source":"Original r2shot 17e2f07d03a8, sampled sRGB pixel (854, 632); palette.json","role":"accent"}],"sizeNote":{"en":"The curled blue silhouette and pale face stay recognizable at toolbar size. At 16 px, individual facets and eye highlights simplify; use the transparent foreground there. Native source: 920 px; 1024/2048 px exports are upscales.","zh":"卷曲的蓝色轮廓与浅色面部在工具栏尺寸仍可辨识。16 像素时碎片与眼部高光会合并，应使用透明前景。原图为 920 像素，1024、2048 为放大导出。"}},"overview":{"goal":{"en":"Capture visible or vertically stitched web pages, upload them to your own R2 bucket, and copy a public image link for sharing.","zh":"截取网页可见区域或纵向拼接长图，上传到自己的 R2 bucket，再复制公开图片链接用于分享。"},"techStack":[{"name":"TypeScript","role":{"en":"Extension logic","zh":"扩展逻辑"}},{"name":"React","role":{"en":"Capture and settings interface","zh":"截图与设置界面"}},{"name":"Tailwind CSS","role":{"en":"Interface styles","zh":"界面样式"}},{"name":"Vite","role":{"en":"Extension bundling","zh":"扩展构建"}},{"name":"Chrome Manifest V3","role":{"en":"Browser extension APIs and background worker","zh":"浏览器扩展 API 与后台服务"}},{"name":"AWS SDK","role":{"en":"S3 uploads and connection checks","zh":"S3 上传与连接检查"}},{"name":"Cloudflare R2","role":{"en":"Screenshot storage","zh":"截图存储"}}],"verified":{"date":"2026-09-08","revision":"7df57635f6efa955cd35ca9ee8de7c438c6450d6","sources":["package.json","public/manifest.json","src/popup/Popup.tsx","src/core/full-page-screenshot.ts","src/core/uploader.ts","src/core/storage.ts","vite.config.ts","vitest.e2e.config.ts"]}}},{"id":"shrike","repo":"shrike","title":"Shrike","emoji":"🪶","description":{"en":"A small macOS menu bar app that keeps your files in sync with Google Drive.","zh":"轻巧的 macOS 菜单栏工具，把文件和文件夹同步到 Google Drive。"},"category":"tools","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/shrike","subject":"Shrike portrait","reference":false,"logo":{"kind":"original","original":"/logos/originals/shrike.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/shrike/blob/0fec187fc22742664925897400d0c1a62b2478bb/logo.png","modified":false,"width":2048,"height":2048,"bytes":3750012,"sha256":"97692ebf5b7811eb48005f814a5688bc05d582533adab440636295370a60befa","thumbnail":"/logos/display/shrike-160.webp","display":"/logos/display/shrike-1024.webp"},"theme":{"background":{"value":"oklch(0.99 0.005 53)","source":"src/app/globals.css --background"},"ink":{"value":"oklch(0.25 0.04 53)","source":"src/app/globals.css --foreground"},"primary":{"value":"oklch(0.486 0.088 52.8)","source":"src/app/globals.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"macOS menu bar utility that syncs files and folders to Google Drive via rsync","repositoryRevision":"0fec187fc22742664925897400d0c1a62b2478bb"},"colors":{"primary":"#86502c","background":"#fffbf9","ink":"#311c0e","palette":[{"color":"#86502c","role":"primary","source":"src/app/globals.css --primary: oklch(0.486 0.088 52.8)"},{"color":"#fffbf9","role":"background","source":"src/app/globals.css --background: oklch(0.99 0.005 53)"},{"color":"#a0a2a6","role":"accent","source":"Preserved project artwork, sampled pixel"},{"color":"#1a1918","role":"accent","source":"Preserved project artwork, sampled pixel"},{"color":"#c5c7ce","role":"accent","source":"Preserved project artwork, sampled pixel"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"01","root":"/logos/family/shrike/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/shrike/2026-09-07-01","method":"retained-original","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Original grey faceted shrike with a dark eye mask","zh":"保留原图的灰色碎片化伯劳与深色眼罩"},"original":"/logos/family/shrike/2026-09-07-01/01/transparent.png","display":"/logos/family/shrike/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"97692ebf5b7811eb48005f814a5688bc05d582533adab440636295370a60befa"},"previous":{"original":"/logos/originals/shrike.png","sourceUrl":"https://github.com/nocoo/shrike/blob/9ca43106ca79f35f7b0ad77198b82150a2307b44/logo.png","width":2048,"height":2048,"sha256":"97692ebf5b7811eb48005f814a5688bc05d582533adab440636295370a60befa"},"direction":[{"aspect":"composition","title":{"en":"Keep the watchful profile","zh":"保留警觉的侧影"},"description":{"en":"The original head, hooked beak, eye mask, shoulders, and canvas are preserved exactly. The existing compact silhouette stays the source of every foreground size.","zh":"头部、钩状鸟喙、眼罩、肩羽和画布全部原样保留，现有紧凑轮廓是所有透明尺寸的唯一来源。"}},{"aspect":"drawing","title":{"en":"Silver facets, dark mask","zh":"银灰碎片与深色眼罩"},"description":{"en":"The silver crown, charcoal eye band, blue-grey beak, and warm shoulder facets are untouched. No new ornament or image-generation call is needed for this retained identity.","zh":"银灰头顶、炭黑眼带、蓝灰鸟喙与暖色肩羽均未修改。这次沿用既有形象，不增加装饰或调用生图。"}},{"aspect":"presentation","title":{"en":"Angular paper folds","zh":"棱角分明的纸面折翼"},"description":{"en":"Oversized angular pleats enter a slate field from opposite corners. Narrow edge highlights and a low shadow give the grey bird separation without adding a scene.","zh":"大幅折翼纹从对角进入石板色底面，细边高光和轻浅阴影让灰色主体清晰浮现，保持图标简洁。"}}],"palette":[{"color":"#718591","role":"background","label":{"en":"Folded wings","zh":"展示底色"},"source":"Selected Shrike presentation, finishing 01; background.base in archived settings.json"},{"color":"#a0a1a6","label":{"en":"Slate grey","zh":"石板灰"},"source":"Original shrike 97692ebf5b78, sampled sRGB pixel (1363, 324); palette.json","role":"primary"},{"color":"#c4c7ce","label":{"en":"Silver feather","zh":"银灰羽毛"},"source":"Original shrike 97692ebf5b78, sampled sRGB pixel (1081, 284); palette.json","role":"accent"},{"color":"#1a1a18","label":{"en":"Eye mask","zh":"深色眼罩"},"source":"Original shrike 97692ebf5b78, sampled sRGB pixel (1091, 636); palette.json","role":"accent"},{"color":"#b7936f","label":{"en":"Buff shoulder","zh":"浅褐肩羽"},"source":"Original shrike 97692ebf5b78, sampled sRGB pixel (1197, 1367); palette.json","role":"accent"},{"color":"#576475","label":{"en":"Beak blue","zh":"鸟喙蓝灰"},"source":"Original shrike 97692ebf5b78, sampled sRGB pixel (322, 801); palette.json","role":"accent"}],"sizeNote":{"en":"The beak and dark eye band carry the mark at small sizes. Menu bar template icons keep their existing monochrome silhouette; app, toolbar, and browser derivatives retain their distinct roles.","zh":"小尺寸由鸟喙与深色眼带承担识别。菜单栏模板图保留现有单色轮廓；应用、工具栏与浏览器图标分别按各自用途处理。"}},"overview":{"goal":{"en":"Back up selected files and development configurations on a Mac to Google Drive's local directory, with sync triggered from the app or a local HTTP request.","zh":"在 Mac 上将选定文件和开发配置备份到 Google Drive 的本地目录，通过应用或本机 HTTP 请求触发同步。"},"techStack":[{"name":"Tauri / Rust","role":{"en":"Desktop app and file operations","zh":"桌面应用与文件操作"}},{"name":"Next.js / React","role":{"en":"Statically exported desktop interface","zh":"静态导出的桌面界面"}},{"name":"TypeScript","role":{"en":"Frontend logic","zh":"前端逻辑"}},{"name":"Tailwind CSS / Radix UI","role":{"en":"Styling and UI components","zh":"样式与界面组件"}},{"name":"Tokio / Axum","role":{"en":"Local HTTP API","zh":"本机 HTTP 接口"}},{"name":"rsync","role":{"en":"Incremental file copying","zh":"增量文件复制"}},{"name":"Tauri Store","role":{"en":"Local settings and backup list","zh":"本地设置与备份列表"}}],"verified":{"date":"2026-09-08","revision":"0fec187fc22742664925897400d0c1a62b2478bb","sources":["package.json","next.config.mjs","src-tauri/Cargo.toml","src-tauri/tauri.conf.json","src-tauri/src/lib.rs","src-tauri/src/types.rs","src-tauri/src/commands.rs","src-tauri/src/webhook.rs","src-tauri/src/sync/executor.rs","src/hooks/use-file-list.ts","src/components/settings-page.tsx"]}}},{"id":"hooky","repo":"hooky","title":"Hooky","emoji":"🐙","description":{"en":"Send webhooks from your browser toolbar, context menu, or a quick message.","zh":"从浏览器工具栏、右键菜单或快捷消息中，随手触发 Webhook。"},"category":"tools","website":"https://chromewebstore.google.com/detail/hooky/almccnkbhfhckimediabjimflnbfbeeo","websiteSource":"Chrome Web Store link in repository README.md at 8ebc6aa82c51ad0bed4b6684c1c12d9e7b2a3f5a","repository":"https://github.com/nocoo/hooky","subject":"Pink octopus","reference":false,"logo":{"kind":"original","original":"/logos/originals/hooky.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/hooky/blob/8ebc6aa82c51ad0bed4b6684c1c12d9e7b2a3f5a/logo.png","modified":false,"width":900,"height":900,"bytes":667627,"sha256":"7e98ee9d581e9f5f70fadc239a60b6d0204f62f8586d9e1e8ee7b0ef7106fe62","thumbnail":"/logos/display/hooky-160.webp","display":"/logos/display/hooky-1024.webp"},"theme":{"primary":{"value":"#9666b7","source":"src/popup/popup.css .btn-primary background-color"},"background":{"value":"#ffffff","source":"src/popup/popup.css body background-color"},"ink":{"value":"#333333","source":"src/popup/popup.css body color"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Chrome extension to trigger webhooks from toolbar, context menu, or Quick Send","repositoryRevision":"8ebc6aa82c51ad0bed4b6684c1c12d9e7b2a3f5a"},"colors":{"primary":"#9666b7","background":"#ffffff","ink":"#333333","palette":[{"color":"#9666b7","role":"primary","source":"src/popup/popup.css .btn-primary background-color: #9666b7"},{"color":"#ffffff","role":"background","source":"src/popup/popup.css body background-color: #ffffff"},{"color":"#b771af","role":"accent","source":"Preserved project artwork, sampled pixel"},{"color":"#ffdbee","role":"accent","source":"Preserved project artwork, sampled pixel"},{"color":"#42274d","role":"accent","source":"Preserved project artwork, sampled pixel"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"01","root":"/logos/family/hooky/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/hooky/2026-09-07-01","method":"retained-original","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Original pink faceted octopus with curled arms","zh":"保留原图的粉色碎片化章鱼与卷曲腕足"},"original":"/logos/family/hooky/2026-09-07-01/01/transparent.png","display":"/logos/family/hooky/2026-09-07-01/01/transparent-1024.webp","width":900,"height":900,"sha256":"7e98ee9d581e9f5f70fadc239a60b6d0204f62f8586d9e1e8ee7b0ef7106fe62"},"previous":{"original":"/logos/originals/hooky.png","sourceUrl":"https://github.com/nocoo/hooky/blob/fadcde05a823356775a9c27005a701d6d107e955/assets/hooky-max.png","width":900,"height":900,"sha256":"7e98ee9d581e9f5f70fadc239a60b6d0204f62f8586d9e1e8ee7b0ef7106fe62"},"direction":[{"aspect":"composition","title":{"en":"A complete little octopus","zh":"完整的小章鱼"},"description":{"en":"The head, expression, curled arms, and native spacing are unchanged. Every visible arm remains clear of the rounded boundary. The original foreground is preserved byte-for-byte.","zh":"头部、表情、腕足与原有留白保持不变。所有可见腕足都位于圆角边界之内，透明原图逐字节保留。"}},{"aspect":"drawing","title":{"en":"Keep the gentle facets","zh":"保留温和的碎片"},"description":{"en":"The pink-to-lilac planes and violet curls already belong to the family. Their existing motion supplies the character; this pass adds no accessory and makes no image-generation call.","zh":"粉色到丁香紫的色面与紫色卷曲腕足已经具备家族风格。原来的动态继续承担表情，这次没有新增配饰或调用生图。"}},{"aspect":"presentation","title":{"en":"Softly curled relief","zh":"卷曲的浅浮纹"},"description":{"en":"Open hook-shaped channels enter a muted plum field from different edges. Fine grain, offset highlights, and low contact shadows keep the background tactile and the octopus prominent.","zh":"开口的卷曲沟纹从不同边缘进入柔和梅紫底色，细颗粒、偏移高光和轻浅阴影带来触感，同时突出章鱼主体。"}}],"palette":[{"color":"#9d7097","role":"background","label":{"en":"Tidal hooks","zh":"展示底色"},"source":"Selected Hooky presentation, finishing 01; background.base in archived settings.json"},{"color":"#e9a5bf","label":{"en":"Rose pink","zh":"玫瑰粉"},"source":"Original hooky 7e98ee9d581e, sampled sRGB pixel (313, 260); palette.json","role":"primary"},{"color":"#b771af","label":{"en":"Lilac","zh":"丁香紫"},"source":"Original hooky 7e98ee9d581e, sampled sRGB pixel (262, 528); palette.json","role":"accent"},{"color":"#fedced","label":{"en":"Petal light","zh":"浅花瓣"},"source":"Original hooky 7e98ee9d581e, sampled sRGB pixel (376, 129); palette.json","role":"accent"},{"color":"#8b4e93","label":{"en":"Berry violet","zh":"莓紫"},"source":"Original hooky 7e98ee9d581e, sampled sRGB pixel (573, 606); palette.json","role":"accent"},{"color":"#42274d","label":{"en":"Ink plum","zh":"墨梅紫"},"source":"Original hooky 7e98ee9d581e, sampled sRGB pixel (556, 340); palette.json","role":"accent"}],"sizeNote":{"en":"At 32 px the pink head and violet curls carry the mark. At 16 px the small arm gaps and facets merge; toolbar and tab marks use the transparent source. Native source: 900 px; 1024/2048 px exports are upscales.","zh":"32 像素时粉色头部与紫色腕足形成清晰标识；16 像素时细小缝隙和碎片会合并。工具栏与标签页使用透明原图。原图为 900 像素，1024、2048 为放大导出。"}},"overview":{"goal":{"en":"Send page URLs, titles, selections, and metadata to configured webhooks from Chrome, using a popup, context menu, or click-triggered rules.","zh":"通过 Chrome 弹窗、右键菜单或点击触发的规则，将页面 URL、标题、选区和元数据发送到指定 Webhook。"},"techStack":[{"name":"JavaScript / HTML / CSS","role":{"en":"Extension logic and UI","zh":"扩展逻辑与界面"}},{"name":"Chrome Extensions Manifest V3","role":{"en":"Service worker and browser integration","zh":"Service worker 与浏览器集成"}},{"name":"chrome.storage.local","role":{"en":"Local templates and rules","zh":"本地模板与规则"}},{"name":"Fetch API","role":{"en":"Webhook requests","zh":"Webhook 请求"}},{"name":"Vitest / jsdom","role":{"en":"Unit and DOM tests","zh":"单元与 DOM 测试"}},{"name":"Puppeteer","role":{"en":"Browser end-to-end tests","zh":"浏览器端到端测试"}}],"verified":{"date":"2026-09-08","revision":"8ebc6aa82c51ad0bed4b6684c1c12d9e7b2a3f5a","sources":["manifest.json","package.json","src/background.js","src/quicksend.js","src/rules.js","src/store.js","src/pagecontext.js","src/webhook.js","src/params.js","tests/e2e/extension.e2e.js"]}}},{"id":"dotty","repo":"dotty","title":"Dotty","emoji":"🔲","description":{"en":"A pixel-brutalist dashboard kit with monochrome geometry and stacked charts.","zh":"像素与粗野主义风格的仪表盘模板，使用单色几何元素和堆叠图表。"},"category":"design","website":"https://dotty.hexly.ai","websiteSource":"GitHub repository homepage","repository":"https://github.com/nocoo/dotty","subject":"Floating black-and-white checker ceramic block","reference":false,"logo":{"kind":"original","original":"/logos/originals/dotty-family-2026-09-07-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/dotty/blob/1becb8026f44a20d9827cd5b4f100b6fb09836fe/logo.png","modified":false,"width":2048,"height":2048,"bytes":2227338,"sha256":"ac943ec8efec9c3c3436ad4a062d60b351bf536b62fd3a4753dbecb4d5bf6e4e","thumbnail":"/logos/display/dotty-160.webp","display":"/logos/display/dotty-1024.webp"},"theme":{"background":{"value":"220 14% 96%","source":"src/index.css --background"},"ink":{"value":"220 14% 10%","source":"src/index.css --foreground"},"primary":{"value":"220 14% 10%","source":"src/index.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Pixel-brutalist dashboard template with monochrome geometry and stacked charts","repositoryRevision":"1becb8026f44a20d9827cd5b4f100b6fb09836fe"},"colors":{"primary":"#16181d","background":"#f3f4f6","ink":"#16181d","palette":[{"color":"#16181d","role":"primary","source":"src/index.css --primary: 220 14% 10%"},{"color":"#f3f4f6","role":"background","source":"src/index.css --background: 220 14% 96%"},{"color":"#1a1c1d","source":"Native dotty 6bb29358898d, sampled sRGB pixel (1057, 943); artwork/logo-family/dotty/2026-09-07-01/palette.json","role":"accent"},{"color":"#fbfbfb","source":"Native dotty 6bb29358898d, sampled sRGB pixel (1059, 371); artwork/logo-family/dotty/2026-09-07-01/palette.json","role":"accent"},{"color":"#919699","source":"Native dotty 6bb29358898d, sampled sRGB pixel (1511, 1152); artwork/logo-family/dotty/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","series":"material","finishing":"01","model":"gpt-image-2","root":"/logos/family/dotty/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/dotty/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Floating black-and-white checker ceramic block","zh":"悬浮的黑白棋盘陶瓷方砖"},"original":"/logos/family/dotty/2026-09-07-01/01/transparent.png","display":"/logos/family/dotty/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"ac943ec8efec9c3c3436ad4a062d60b351bf536b62fd3a4753dbecb4d5bf6e4e"},"previous":{"original":"/logos/originals/dotty.svg","sourceUrl":"https://github.com/nocoo/dotty/blob/33c0ffa370a7582d2655cac142e1e6bbff71e412/public/logo.svg","width":24,"height":24,"sha256":"33c046a7f6647bd2af6d6e47c1e3d9b439e9a0d78773c94c3e2fa3a0ba842d49"},"direction":[{"aspect":"composition","title":{"en":"A suspended building block","zh":"悬浮的构建方砖"},"description":{"en":"A complete rounded square brick seen from an elevated three-quarter view, uniformly inset from every corner. The independent projected shadow makes its weight and hover gap legible.","zh":"完整的圆角厚方砖从斜上方呈现，整体统一缩放，为四角保留安全距离。独立投影表现重量与悬浮间隙。"}},{"aspect":"drawing","title":{"en":"Opaque checker ceramic","zh":"不透明棋盘陶瓷"},"description":{"en":"Pure black and white inlays carry the identity. Physical ceramic shading, controlled reflections and soft bevels provide detail without a pixel-art treatment; white cells remain solid after extraction.","zh":"黑白镶嵌构成标识。陶瓷明暗、克制反光与柔和倒角提供精致细节，不使用像素画处理；白色格块在抠图后依然保持不透明。"}},{"aspect":"presentation","title":{"en":"Precision drafting grid","zh":"精密制图格线"},"description":{"en":"Cool pale drafting paper uses fine Cartesian cells, larger construction divisions, registration crosses and a short ruler. Its separate soft floor shadow never enters transparent UI marks.","zh":"浅冷色制图纸配细笛卡尔网格、较大的工程分区、定位十字与短标尺。背景和柔和地面投影独立保存，小型透明标记不带底纹或阴影。"}}],"palette":[{"color":"#e5eaf1","role":"background","label":{"en":"Precision drafting grid","zh":"精密制图格线"},"source":"Selected Dotty presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#1a1c1d","role":"primary","label":{"en":"Black ceramic","zh":"黑色陶瓷"},"source":"Native dotty 6bb29358898d, sampled sRGB pixel (1057, 943); artwork/logo-family/dotty/2026-09-07-01/palette.json"},{"color":"#fbfbfb","role":"accent","label":{"en":"White ceramic","zh":"白色陶瓷"},"source":"Native dotty 6bb29358898d, sampled sRGB pixel (1059, 371); artwork/logo-family/dotty/2026-09-07-01/palette.json"},{"color":"#919699","role":"accent","label":{"en":"Bevel reflection","zh":"倒角反光"},"source":"Native dotty 6bb29358898d, sampled sRGB pixel (1511, 1152); artwork/logo-family/dotty/2026-09-07-01/palette.json"}],"sizeNote":{"en":"At 128/64 px the checker rhythm, rounded thickness and hover shadow remain clear. At 32/24/16 px the transparent mark retains the alternating block silhouette; fine bevel reflections and drafting lines are deliberately left to the large presentation.","zh":"128/64 px 保留棋盘节奏、圆润厚度与悬浮阴影；32/24/16 px 透明图标以黑白交错轮廓为主，精细倒角反光与工程格线留给大尺寸展示。"}},"overview":{"goal":{"en":"Reuse dashboard layouts, controls, and charts to build data interfaces with a cool monochrome visual style.","zh":"复用看板布局、控件和图表，搭建采用冷色灰阶风格的数据界面。"},"techStack":[{"name":"TypeScript","role":{"en":"Interface and viewmodel logic","zh":"界面与 viewmodel 逻辑"}},{"name":"React","role":{"en":"Dashboard examples","zh":"看板示例"}},{"name":"Vite","role":{"en":"SPA development and build","zh":"SPA 开发与构建"}},{"name":"React Router","role":{"en":"Client-side routes","zh":"客户端路由"}},{"name":"Tailwind CSS","role":{"en":"Themes and styling","zh":"主题与样式"}},{"name":"Radix UI","role":{"en":"Interactive controls","zh":"交互控件"}},{"name":"Recharts","role":{"en":"Data visualization","zh":"数据可视化"}},{"name":"i18next","role":{"en":"Chinese and English interface","zh":"中英文界面"}},{"name":"Cloudflare Workers","role":{"en":"Static asset hosting","zh":"静态资源托管"}}],"verified":{"date":"2026-09-08","revision":"1becb8026f44a20d9827cd5b4f100b6fb09836fe","sources":["package.json","src/App.tsx","src/index.css","src/data/mock.ts","src/components/PixelBarChart.tsx","src/pages/NetworkOpsDashboardPage.tsx","src/pages/LoginPage.tsx","src/viewmodels/usePortfolioViewModel.ts","src/i18n/index.ts","vite.config.ts","wrangler.toml"]}}},{"id":"wooly","repo":"wooly","title":"Wooly","emoji":"🐑","description":{"en":"Keep family perks in sight: card rewards, memberships, insurance, and expiry dates.","zh":"把家庭的信用卡权益、会员、保险福利和到期时间放在眼前。"},"category":"everyday","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/wooly","subject":"Sheep portrait","reference":false,"logo":{"kind":"original","original":"/logos/originals/wooly-family-2026-09-07-02-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/wooly/blob/e516e1fbcbd146fcda6b80cf071bd5367e611afd/logo.png","modified":false,"width":2048,"height":2048,"bytes":3895425,"sha256":"fc1f33d2e0f84f9498291f727a8ac0e6e3b822ffe947415ae1712ed1c987d12a","thumbnail":"/logos/display/wooly-160.webp","display":"/logos/display/wooly-1024.webp"},"theme":{"background":{"value":"220 14% 94%","source":"src/app/globals.css --background"},"ink":{"value":"0 0% 12%","source":"src/app/globals.css --foreground"},"primary":{"value":"320 70% 55%","source":"src/app/globals.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Family perks dashboard — credit card rewards, insurance benefits, expiry alerts","repositoryRevision":"e516e1fbcbd146fcda6b80cf071bd5367e611afd"},"colors":{"primary":"#dd3ca7","background":"#eeeff2","ink":"#1f1f1f","palette":[{"color":"#dd3ca7","role":"primary","source":"src/app/globals.css --primary: 320 70% 55%"},{"color":"#eeeff2","role":"background","source":"src/app/globals.css --background: 220 14% 94%"},{"color":"#f3e6c4","role":"accent","source":"Native wooly 02c5ec40e8c1, sampled sRGB pixel (1254, 770); artwork/logo-family/wooly/2026-09-07-02/palette.json"},{"color":"#d4bc98","role":"accent","source":"Native wooly 02c5ec40e8c1, sampled sRGB pixel (538, 1304); artwork/logo-family/wooly/2026-09-07-02/palette.json"},{"color":"#ac806c","role":"accent","source":"Native wooly 02c5ec40e8c1, sampled sRGB pixel (1618, 562); artwork/logo-family/wooly/2026-09-07-02/palette.json"}]},"archived":false,"family":{"id":"2026-09-07-02","finishing":"01","root":"/logos/family/wooly/2026-09-07-02/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/wooly/2026-09-07-02","model":"gpt-image-2","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Cream faceted sheep with three curls, a wink, and a pink tongue","zh":"奶油色碎片绵羊，保留三缕卷毛、眨眼和粉色舌头"},"original":"/logos/family/wooly/2026-09-07-02/01/transparent.png","display":"/logos/family/wooly/2026-09-07-02/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"fc1f33d2e0f84f9498291f727a8ac0e6e3b822ffe947415ae1712ed1c987d12a"},"previous":{"original":"/logos/originals/wooly.png","sourceUrl":"https://github.com/nocoo/wooly/blob/1eea8ada0a31fdd55b98062333ec4517f65609f4/logo.png","width":2048,"height":2048,"sha256":"95798966dd1ac22371700d4845ab4537745484cfdf3ab323fbd61fbf0732ed36"},"direction":[{"aspect":"composition","title":{"en":"A mischievous pause","zh":"俏皮的一瞬"},"description":{"en":"A portrait viewfinder catches the same wink and tongue as broad, natural fleece enters from below. The curls and ears have room inside the rounded frame.","zh":"取景框捕捉熟悉的眨眼和吐舌，宽厚而自然的羊毛从下方进入画面。卷毛和耳朵在圆角内保留充分余量。"}},{"aspect":"drawing","title":{"en":"Cream planes, one pink gesture","zh":"奶油色面与粉色动作"},"description":{"en":"Connected ivory and oat facets preserve the bright sheep identity. The tongue remains its single playful gesture; the pale anatomy stays opaque after extraction.","zh":"连续的象牙白与燕麦色面保持绵羊的明亮形象，舌头仍是单一俏皮动作，抠图后浅色身体保持不透明。"}},{"aspect":"presentation","title":{"en":"Wool cloud folds","zh":"羊毛云纹"},"description":{"en":"The selected deeper rose field keeps its uneven scalloped folds, fine grain, and shallow shadows. The background stays separate from the transparent animal.","zh":"沿用较深玫瑰底色、不均匀的云状褶皱、细颗粒与浅阴影，背景和透明动物独立保存。"}}],"palette":[{"color":"#ad8093","role":"background","label":{"en":"Wool cloud folds","zh":"展示底色"},"source":"Selected Wooly presentation, 2026-09-07-02/01; background.base in archived settings.json"},{"color":"#f3e6c4","role":"primary","label":{"en":"Cream wool","zh":"奶油羊毛"},"source":"Native wooly 02c5ec40e8c1, sampled sRGB pixel (1254, 770); artwork/logo-family/wooly/2026-09-07-02/palette.json"},{"color":"#d4bc98","role":"accent","label":{"en":"Oat fleece","zh":"燕麦羊毛"},"source":"Native wooly 02c5ec40e8c1, sampled sRGB pixel (538, 1304); artwork/logo-family/wooly/2026-09-07-02/palette.json"},{"color":"#ac806c","role":"accent","label":{"en":"Ear rose","zh":"耳朵玫瑰棕"},"source":"Native wooly 02c5ec40e8c1, sampled sRGB pixel (1618, 562); artwork/logo-family/wooly/2026-09-07-02/palette.json"},{"color":"#ef9790","role":"accent","label":{"en":"Tongue pink","zh":"舌头粉"},"source":"Native wooly 02c5ec40e8c1, sampled sRGB pixel (934, 1576); artwork/logo-family/wooly/2026-09-07-02/palette.json"},{"color":"#2c3441","role":"accent","label":{"en":"Deep eye","zh":"深色眼睛"},"source":"Native wooly 02c5ec40e8c1, sampled sRGB pixel (733, 846); artwork/logo-family/wooly/2026-09-07-02/palette.json"}],"sizeNote":{"en":"At 32 px, the cream ears, dark eye, and pink tongue carry the identity. The wink and tiny fleece facets simplify at 16 px; sidebar and browser marks use the transparent foreground.","zh":"32 像素时，奶油色耳朵、深色眼睛和粉色舌头构成识别重点；16 像素时眨眼与细小羊毛切面会简化，侧栏和浏览器使用透明前景。"}},"overview":{"goal":{"en":"Keep household benefit accounts, usage cycles and redemption records together so family members can check remaining allowances, expiry and points.","zh":"集中记录家庭权益账户、使用周期与核销记录，方便核对剩余额度、到期时间和积分。"},"techStack":[{"name":"TypeScript","role":{"en":"Benefit models and application logic","zh":"权益模型与应用逻辑"}},{"name":"Next.js","role":{"en":"Web pages and server-side data proxy","zh":"Web 页面与服务端数据代理"}},{"name":"React","role":{"en":"Household dashboard and forms","zh":"家庭权益看板与表单"}},{"name":"Tailwind CSS","role":{"en":"Interface styles","zh":"界面样式"}},{"name":"Auth.js","role":{"en":"Google sign-in and sessions","zh":"Google 登录与会话"}},{"name":"Cloudflare Workers","role":{"en":"Dataset API and validation","zh":"数据集 API 与校验"}},{"name":"Cloudflare D1","role":{"en":"Shared household data storage","zh":"共享家庭数据存储"}},{"name":"Vitest","role":{"en":"Models, ViewModels, routes and Worker tests","zh":"模型、视图模型、路由和 Worker 测试"}}],"verified":{"date":"2026-09-08","revision":"611b99cc868dc3e90ff5b20f54785d0d858d10ed","sources":["package.json","worker/package.json","src/models/types.ts","src/models/cycle.ts","src/models/points.ts","src/viewmodels/usePointsDetailViewModel.ts","src/auth.ts","src/hooks/use-dataset-context.tsx","src/services/worker-client.ts","worker/src/routes/dataset.ts","worker/src/db/operations.ts","worker/wrangler.toml.example","scripts/dev.sh","e2e/bdd/app.spec.ts",".github/workflows/release.yml","LICENSE"]}}},{"id":"matrix","repo":"matrix","title":"Matrix","emoji":"🧩","description":{"en":"A sci-fi dashboard kit for interfaces that feel like a glimpse into the digital world.","zh":"带有科幻气息的仪表盘组件，让界面像是数字世界的一扇窗口。"},"category":"design","website":"https://matrix.hexly.ai","websiteSource":"GitHub repository homepage","repository":"https://github.com/nocoo/matrix","subject":"Floating black-and-green layered circuit deck","reference":false,"logo":{"kind":"original","original":"/logos/originals/matrix-family-2026-09-07-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/matrix/blob/8e6f9add035b35505576f161d95393c0b8b31e07/logo.png","modified":false,"width":2048,"height":2048,"bytes":3271736,"sha256":"f9490707d630bdaed3f8891082e46e3315fa1e2c7be89e63f6994b633de3aaf8","thumbnail":"/logos/display/matrix-160.webp","display":"/logos/display/matrix-1024.webp"},"theme":{"primary":{"value":"#00ff41","source":"src/index.css --matrix-ink"},"background":{"value":"#050505","source":"src/index.css --matrix-bg"},"ink":{"value":"#e8ffe9","source":"src/index.css --matrix-ink-bright"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Sci-fi dashboard UI kit with React and Tailwind for digital reality interfaces","repositoryRevision":"8e6f9add035b35505576f161d95393c0b8b31e07"},"colors":{"primary":"#00ff41","background":"#050505","ink":"#e8ffe9","palette":[{"color":"#00ff41","role":"primary","source":"src/index.css --matrix-ink: #00ff41"},{"color":"#050505","role":"background","source":"src/index.css --matrix-bg: #050505"},{"color":"#1d2222","source":"Native matrix d6d796220a39, sampled sRGB pixel (1340, 376); artwork/logo-family/matrix/2026-09-07-01/palette.json","role":"accent"},{"color":"#29bf5a","source":"Native matrix d6d796220a39, sampled sRGB pixel (1258, 1177); artwork/logo-family/matrix/2026-09-07-01/palette.json","role":"accent"},{"color":"#a79667","source":"Native matrix d6d796220a39, sampled sRGB pixel (405, 666); artwork/logo-family/matrix/2026-09-07-01/palette.json","role":"accent"},{"color":"#b2f6cb","source":"Native matrix d6d796220a39, sampled sRGB pixel (973, 864); artwork/logo-family/matrix/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","series":"material","finishing":"01","model":"gpt-image-2","root":"/logos/family/matrix/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/matrix/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Floating black-and-green layered circuit deck","zh":"悬浮的黑绿多层电路甲板"},"original":"/logos/family/matrix/2026-09-07-01/01/transparent.png","display":"/logos/family/matrix/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"f9490707d630bdaed3f8891082e46e3315fa1e2c7be89e63f6994b633de3aaf8"},"previous":{"original":"/logos/emoji/matrix.png","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","width":1024,"height":1024,"sha256":"21d9c4ed49bedc6010a787ae1a16c2b7e982be264dc5c3e446a2fe9ad122e8b3"},"direction":[{"aspect":"composition","title":{"en":"A fragment of the mothership","zh":"母星甲板的一角"},"description":{"en":"A floating thick square deck shares Dotty’s elevated camera and whole-object safety inset. Dense circuitry fills the top and stacked sidewalls while preserving one clear solid block.","zh":"悬浮的厚方形甲板延续 Dotty 的斜上方镜头与整体安全留白。密集电路铺满表面及层叠侧壁，仍保持一个清楚、完整的材质主体。"}},{"aspect":"drawing","title":{"en":"Black structure, live green traces","zh":"黑色结构与绿色带电走线"},"description":{"en":"Near-black panels, metallic contacts and many thin circuit layers read as a physical engineered material. One small arc bridges deck contacts; the separate subtle lower spill adds light only to large presentations.","zh":"近黑面板、金属触点与多层细电路组成拟物工程材质。小电弧连接表面触点，下缘微弱外发光单独处理，仅用于大尺寸展示。"}},{"aspect":"presentation","title":{"en":"Circuit routing grid","zh":"电路布线格线"},"description":{"en":"Pale mint engineering paper combines fine cells with larger backplane divisions, stepped routes and terminal vias. The geometry differs from Dotty’s drafting marks and Basalt’s architectural elevations.","zh":"浅薄荷色工程纸结合细格、较大的背板分区、折线走线和端点过孔，纹理几何与 Dotty 的制图标记、Basalt 的建筑立面各不相同。"}}],"palette":[{"color":"#e2eee7","role":"background","label":{"en":"Circuit routing grid","zh":"电路布线格线"},"source":"Selected Matrix presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#1d2222","role":"primary","label":{"en":"Black deck","zh":"黑色甲板"},"source":"Native matrix d6d796220a39, sampled sRGB pixel (1340, 376); artwork/logo-family/matrix/2026-09-07-01/palette.json"},{"color":"#29bf5a","role":"accent","label":{"en":"Live green","zh":"带电绿色"},"source":"Native matrix d6d796220a39, sampled sRGB pixel (1258, 1177); artwork/logo-family/matrix/2026-09-07-01/palette.json"},{"color":"#a79667","role":"accent","label":{"en":"Contact metal","zh":"触点金属"},"source":"Native matrix d6d796220a39, sampled sRGB pixel (405, 666); artwork/logo-family/matrix/2026-09-07-01/palette.json"},{"color":"#b2f6cb","role":"accent","label":{"en":"Arc highlight","zh":"电弧高光"},"source":"Native matrix d6d796220a39, sampled sRGB pixel (973, 864); artwork/logo-family/matrix/2026-09-07-01/palette.json"}],"sizeNote":{"en":"At 128/64 px the deck shape, green routing and layered rim remain readable. At 32/24/16 px the transparent mark resolves to a dark diamond-like block with a green circuit signature; individual vias and the small arc merge into that accent.","zh":"128/64 px 能读出甲板形状、绿色走线和层叠侧缘；32/24/16 px 透明标记凝练为带绿色电路特征的深色菱形方块，独立过孔与小电弧合并为色彩点缀。"}},"overview":{"goal":{"en":"Reuse terminal-inspired controls, charts, and page templates to build green-on-black data dashboards.","zh":"复用终端风格的控件、图表和页面模板，搭建绿黑配色的数据看板。"},"techStack":[{"name":"TypeScript","role":{"en":"Interface and viewmodel logic","zh":"界面与 viewmodel 逻辑"}},{"name":"React","role":{"en":"Dashboard pages and reusable controls","zh":"看板页面与可复用控件"}},{"name":"Vite","role":{"en":"SPA development and build","zh":"SPA 开发与构建"}},{"name":"React Router","role":{"en":"Client-side routes","zh":"客户端路由"}},{"name":"Tailwind CSS","role":{"en":"Theme variables and styling","zh":"主题变量与样式"}},{"name":"SVG","role":{"en":"Charts and data visualization","zh":"图表与数据可视化"}},{"name":"Canvas","role":{"en":"Animated character rain","zh":"动态字符雨"}},{"name":"i18next","role":{"en":"Chinese and English interface","zh":"中英文界面"}},{"name":"Cloudflare Workers","role":{"en":"Static asset hosting","zh":"静态资源托管"}}],"verified":{"date":"2026-09-08","revision":"f349c07e0a7ac73e337b54014a4c45790a20da94","sources":["package.json","src/App.tsx","src/index.css","src/components/ui/DataVizComponents.tsx","src/components/ui/MatrixExtras.tsx","src/components/ui/RunnerComponents.tsx","src/data/mock.ts","src/viewmodels/useAccountsViewModel.ts","src/viewmodels/useLifeAiViewModel.ts","src/pages/LoginPage.tsx","src/i18n/index.ts","vite.config.ts","wrangler.toml"]}}},{"id":"basalt","repo":"basalt","title":"Basalt","emoji":"🎨","description":{"en":"Dense, dark, durable. A matte design system for information-rich software.","zh":"沉稳、紧凑的哑光设计系统，为信息密集的软件界面而做。"},"category":"design","website":"https://basaltui.com","websiteSource":"GitHub repository homepage and README at 9e226aa5c1376351ec76a659b1a33a8139892b4b","repository":"https://github.com/nocoo/basalt","subject":"Obsidian and gemstone Forbidden City corner tower","reference":false,"logo":{"kind":"original","original":"/logos/originals/basalt-family-2026-09-07-02-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/basalt/blob/9e226aa5c1376351ec76a659b1a33a8139892b4b/logo.png","modified":false,"width":2048,"height":2048,"bytes":3445051,"sha256":"d093add49fd51eaa926db0fe260f6afa6d10c2619d141cbc35e518ad5a1cef94","thumbnail":"/logos/display/basalt-160.webp","display":"/logos/display/basalt-1024.webp"},"theme":{"primary":{"value":"204 88% 32%","source":"packages/basalt/src/styles/tokens.css --basalt-primary"},"background":{"value":"220 14% 94%","source":"packages/basalt/src/styles/tokens.css --basalt-background"},"ink":{"value":"0 0% 12%","source":"packages/basalt/src/styles/tokens.css --basalt-foreground"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Matte-dark design system engineered for high-density SaaS interfaces","repositoryRevision":"9e226aa5c1376351ec76a659b1a33a8139892b4b"},"colors":{"primary":"#0a6099","background":"#eeeff2","ink":"#1f1f1f","palette":[{"color":"#0a6099","role":"primary","source":"packages/basalt/src/styles/tokens.css --basalt-primary: 204 88% 32%"},{"color":"#eeeff2","role":"background","source":"packages/basalt/src/styles/tokens.css --basalt-background: 220 14% 94%"},{"color":"#17191c","source":"Native basalt 3b270748ea02, sampled sRGB pixel (601, 1192); artwork/logo-family/basalt/2026-09-07-02/palette.json","role":"accent"},{"color":"#0a6648","source":"Native basalt 3b270748ea02, sampled sRGB pixel (616, 1095); artwork/logo-family/basalt/2026-09-07-02/palette.json","role":"accent"},{"color":"#9e1c2b","source":"Native basalt 3b270748ea02, sampled sRGB pixel (849, 483); artwork/logo-family/basalt/2026-09-07-02/palette.json","role":"accent"},{"color":"#e4a228","source":"Native basalt 3b270748ea02, sampled sRGB pixel (1007, 257); artwork/logo-family/basalt/2026-09-07-02/palette.json","role":"accent"},{"color":"#b58e4d","source":"Native basalt 3b270748ea02, sampled sRGB pixel (1402, 797); artwork/logo-family/basalt/2026-09-07-02/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-08-01","series":"material","finishing":"01","model":"gpt-image-2","root":"/logos/family/basalt/2026-09-08-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/basalt/2026-09-08-01","status":"review","updated":"2026-09-08","foreground":{"subject":{"en":"A candy-colored Forbidden City corner tower on white Hanbaiyu marble","zh":"汉白玉基座上的糖果色故宫角楼"},"original":"/logos/family/basalt/2026-09-08-01/01/transparent.png","display":"/logos/family/basalt/2026-09-08-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"97144a6615113b5981454492776755d486183c219e5f1d8155f17572d21564e7"},"previous":{"original":"/logos/originals/basalt-family-2026-09-07-02-01.png","sourceUrl":"https://github.com/nocoo/basalt/blob/9e226aa5c1376351ec76a659b1a33a8139892b4b/logo.png","width":2048,"height":2048,"sha256":"d093add49fd51eaa926db0fe260f6afa6d10c2619d141cbc35e518ad5a1cef94"},"direction":[{"aspect":"composition","title":{"en":"The familiar stepped roofline","zh":"保留熟悉的重檐轮廓"},"description":{"en":"The three-quarter view, tiered roofs, upturned eaves, finial and low square foundation preserve the earlier tower. One uniform 80% placement gives every architectural tip room inside the rounded tile; the nearest visible feature sits about 220 native pixels from its boundary.","zh":"保留原有斜向镜头、层叠屋顶、飞檐、宝顶和低方基座。整座角楼统一按 80% 放入圆角取景框，最近的可见边缘也留有约 220 个原生像素的空间。"}},{"aspect":"drawing","title":{"en":"Hanbaiyu and candy color","zh":"汉白玉与糖果色"},"description":{"en":"Opaque white marble replaces the black plinth and balustrade. Blue and green roof surfaces, pink columns, pearl structure and yellow-gold details translate Basalt’s existing candy palette into a crafted miniature. Veining, latticework and small bevels retain physical depth under broad studio light.","zh":"白色汉白玉替换黑色基座与栏杆；蓝绿屋面、粉色立柱、珍珠色构件与金黄细节，把 Basalt 现有糖果色板转化为精工微缩建筑。石材纹理、窗棂和小倒角在宽柔光下保留真实层次。"}},{"aspect":"presentation","title":{"en":"Champagne construction paper","zh":"香槟色工程制图纸"},"description":{"en":"The existing Basalt field keeps fine engineering cells, larger datum lines, spare roof elevations and dimensional ticks. Independent projected shadows lift the marble base gently from the paper. The transparent master contains the complete tower without the field, grain or cast shadow.","zh":"沿用 Basalt 的细工程格线、较大基准线、疏朗屋顶立面与尺寸刻度。独立投影让汉白玉基座轻轻悬于纸面；透明母版只保留完整角楼，不含底色、颗粒或外部投影。"}}],"palette":[{"color":"#ede6d8","role":"background","label":{"en":"Corner tower construction grid","zh":"角楼建筑工程格线"},"source":"Selected local Basalt presentation, 2026-09-08-01/01; background.base in archived settings.json"},{"color":"#5ac2f6","role":"primary","label":{"en":"Candy blue","zh":"糖果蓝"},"source":"Native basalt 0acb99561768, sampled sRGB pixel (638, 850); artwork/logo-family/basalt/2026-09-08-01/palette.json"},{"color":"#8dd35a","role":"accent","label":{"en":"Fresh green","zh":"鲜绿"},"source":"Native basalt 0acb99561768, sampled sRGB pixel (935, 575); artwork/logo-family/basalt/2026-09-08-01/palette.json"},{"color":"#f694b2","role":"accent","label":{"en":"Soft pink","zh":"柔粉"},"source":"Native basalt 0acb99561768, sampled sRGB pixel (780, 1350); artwork/logo-family/basalt/2026-09-08-01/palette.json"},{"color":"#eec14b","role":"accent","label":{"en":"Finial gold","zh":"宝顶金"},"source":"Native basalt 0acb99561768, sampled sRGB pixel (1026, 209); artwork/logo-family/basalt/2026-09-08-01/palette.json"},{"color":"#edeeeb","role":"accent","label":{"en":"Hanbaiyu white","zh":"汉白玉白"},"source":"Native basalt 0acb99561768, sampled sRGB pixel (842, 1763); artwork/logo-family/basalt/2026-09-08-01/palette.json"},{"color":"#d3d7d8","role":"accent","label":{"en":"Pearl structure","zh":"珍珠色构件"},"source":"Native basalt 0acb99561768, sampled sRGB pixel (960, 717); artwork/logo-family/basalt/2026-09-08-01/palette.json"}],"sizeNote":{"en":"At 128/64 px the colored roof tiers and white marble foundation remain distinct. At 32/24/16 px the mark relies on its blue-and-green stepped silhouette; latticework, veining and gold beads merge. The pale foundation softens on light interfaces, while sidebar and favicon specimens retain the transparent foreground.","zh":"128/64 px 下可分辨彩色重檐与白色石台；32/24/16 px 主要依靠蓝绿层叠轮廓，窗棂、石纹与金珠会合并。浅色界面上的白色基座会柔化，侧栏与 favicon 样例仍使用透明前景。"}},"overview":{"goal":{"en":"Give React applications a consistent set of controls, layered surfaces, charts, and page layouts.","zh":"为 React 应用提供统一的控件、分层表面、图表和页面布局。"},"techStack":[{"name":"TypeScript","role":{"en":"Typed component APIs","zh":"组件类型与 API"}},{"name":"React","role":{"en":"Reusable UI components","zh":"可复用 UI 组件"}},{"name":"Radix UI","role":{"en":"Accessible interaction primitives","zh":"交互基础控件"}},{"name":"Tailwind CSS","role":{"en":"Optional utility-based styling","zh":"可选的工具类样式"}},{"name":"CSS","role":{"en":"Tokens and standalone styles","zh":"设计 tokens 与独立样式"}},{"name":"Recharts","role":{"en":"Chart components","zh":"图表组件"}},{"name":"Vite","role":{"en":"Library and showcase builds","zh":"组件库与示例站构建"}},{"name":"Cloudflare Workers","role":{"en":"Static showcase hosting","zh":"示例站静态托管"}}],"verified":{"date":"2026-09-08","revision":"9b498d3feb8faaeee668229820801d527e07ccb3","sources":["package.json","packages/basalt/package.json","packages/basalt/src/index.ts","packages/basalt/src/components/date-picker.tsx","packages/basalt/src/components/data-table.tsx","src/App.tsx","vite.config.ts","wrangler.toml","scripts/docs-gate.ts","scripts/consumer-gate.ts","INTEGRATION.md","fixtures/README.md"]}}},{"id":"surety","repo":"surety","title":"Surety","emoji":"🛡️","description":{"en":"A private, local-first home for your family insurance policies.","zh":"以隐私和本地数据为先，为家庭保险保单建立一个清晰的档案。"},"category":"everyday","website":"https://surety.hexly.ai","websiteSource":"README.md browser access","repository":"https://github.com/nocoo/surety","subject":"Amber lion portrait with one multicolored butterfly","reference":false,"logo":{"kind":"original","original":"/logos/originals/surety-family-2026-09-07-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/surety/blob/f257e0977e85358f9d02ed3f79a9fad8862e5117/logo.png","modified":false,"width":2048,"height":2048,"bytes":3212224,"sha256":"cb590912df7eb4ad0cf505b195870d448cde7ee3c8038ed7ea8a7ca5a8462314","thumbnail":"/logos/display/surety-160.webp","display":"/logos/display/surety-1024.webp"},"theme":{"background":{"value":"220 14% 94%","source":"apps/web/src/globals.css --background"},"ink":{"value":"0 0% 12%","source":"apps/web/src/globals.css --foreground"},"primary":{"value":"15 85% 52%","source":"apps/web/src/globals.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Privacy-first, local-first family insurance policy management with Next.js","repositoryRevision":"f257e0977e85358f9d02ed3f79a9fad8862e5117"},"colors":{"primary":"#ed511d","background":"#eeeff2","ink":"#1f1f1f","palette":[{"color":"#ed511d","role":"primary","source":"apps/web/src/globals.css --primary: 15 85% 52%"},{"color":"#eeeff2","role":"background","source":"apps/web/src/globals.css --background: 220 14% 94%"},{"color":"#754321","source":"Native surety ae84f2009fb7, sampled sRGB pixel (466, 1388); artwork/logo-family/surety/2026-09-07-01/palette.json","role":"accent"},{"color":"#edcfa7","source":"Native surety ae84f2009fb7, sampled sRGB pixel (1466, 1263); artwork/logo-family/surety/2026-09-07-01/palette.json","role":"accent"},{"color":"#19989b","source":"Native surety ae84f2009fb7, sampled sRGB pixel (1778, 915); artwork/logo-family/surety/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"01","root":"/logos/family/surety/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/surety/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Amber lion portrait with one multicolored butterfly","zh":"琥珀色狮子头像与一只多彩蝴蝶"},"original":"/logos/family/surety/2026-09-07-01/01/transparent.png","display":"/logos/family/surety/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"cb590912df7eb4ad0cf505b195870d448cde7ee3c8038ed7ea8a7ca5a8462314"},"previous":{"original":"/logos/originals/surety.png","sourceUrl":"https://github.com/nocoo/surety/blob/aad7b0298935b71642e8d25abb125c0cb9cc0d22/logo.png","width":2048,"height":2048,"sha256":"13b22815f3d07d56ee294f005db9638809e0329fedce51887dd55cba75b01dc6"},"direction":[{"aspect":"composition","title":{"en":"The guardian pauses","zh":"守护者的片刻"},"description":{"en":"The complete irregular mane frames a quiet head turn. A butterfly beside the nose adds a single secondary focus; the whole group sits safely inside the rounded tile.","zh":"完整而自然的鬃毛围住安静转动的脸，鼻尖旁的蝴蝶成为唯一的兴趣点。整组主体在圆角内保留留白。"}},{"aspect":"drawing","title":{"en":"Amber takes the lead","zh":"让琥珀色成为主角"},"description":{"en":"Broad honey and umber planes describe the face and mane. The former tiger identity is replaced by a recognizable lion, with color concentrated in one small butterfly.","zh":"大块蜜金与深棕色面描绘脸部和鬃毛。旧虎形标识替换为清晰的狮子，多彩点缀集中在一只小蝴蝶上。"}},{"aspect":"presentation","title":{"en":"Folded amber fan","zh":"琥珀折扇底纹"},"description":{"en":"Unequal fan folds spread from a low off-center pivot. Deeper ochre, fine grain and shallow shadows give the mane separation without competing with its expression.","zh":"不等宽的扇形折面从偏下方展开，较深赭色、细颗粒和浅阴影托起鬃毛，同时保留表情的主导地位。"}}],"palette":[{"color":"#9b865c","role":"background","label":{"en":"Amber fan relief","zh":"琥珀折扇底纹"},"source":"Selected Surety presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#cc8330","role":"primary","label":{"en":"Honey face","zh":"蜂蜜色面"},"source":"Native surety ae84f2009fb7, sampled sRGB pixel (1280, 708); artwork/logo-family/surety/2026-09-07-01/palette.json"},{"color":"#754321","role":"accent","label":{"en":"Umber mane","zh":"深棕鬃毛"},"source":"Native surety ae84f2009fb7, sampled sRGB pixel (466, 1388); artwork/logo-family/surety/2026-09-07-01/palette.json"},{"color":"#edcfa7","role":"accent","label":{"en":"Cream muzzle","zh":"奶油鼻口"},"source":"Native surety ae84f2009fb7, sampled sRGB pixel (1466, 1263); artwork/logo-family/surety/2026-09-07-01/palette.json"},{"color":"#19989b","role":"accent","label":{"en":"Butterfly teal","zh":"蝶翼青色"},"source":"Native surety ae84f2009fb7, sampled sRGB pixel (1778, 915); artwork/logo-family/surety/2026-09-07-01/palette.json"},{"color":"#6f4584","role":"accent","label":{"en":"Butterfly violet","zh":"蝶翼紫色"},"source":"Native surety ae84f2009fb7, sampled sRGB pixel (1770, 1105); artwork/logo-family/surety/2026-09-07-01/palette.json"}],"sizeNote":{"en":"The whole mane and butterfly stay inside the rounded outline with at least 145.5 px of native clearance. Small marks use the transparent lion; butterfly details simplify at 16 px.","zh":"完整鬃毛和蝴蝶距圆角边界至少保留 145.5 原生像素。小标使用透明狮子，16 px 时蝴蝶细节会简化。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Organize household policies, coverage, payment schedules and medical visits.","zh":"集中整理家庭保单、保障范围、缴费计划和就诊记录。"},"techStack":[{"name":"TypeScript","role":{"en":"Application, CLI and shared logic","zh":"应用、CLI 与共享逻辑"}},{"name":"Bun workspaces","role":{"en":"Dependencies, CLI runtime and scripts","zh":"依赖管理、CLI 运行时与脚本"}},{"name":"Vite","role":{"en":"SPA development and builds","zh":"SPA 开发与构建"}},{"name":"React","role":{"en":"Household policy and medical-visit interface","zh":"家庭保单与就诊界面"}},{"name":"Hono","role":{"en":"HTTP API and authentication middleware","zh":"HTTP API 与认证中间件"}},{"name":"Cloudflare Workers","role":{"en":"API and static assets","zh":"API 与静态资源"}},{"name":"Drizzle ORM","role":{"en":"Schema and data access","zh":"Schema 与数据访问"}},{"name":"Cloudflare D1","role":{"en":"Household, policy and medical records","zh":"家庭、保单与就诊数据"}},{"name":"Cloudflare R2","role":{"en":"Policy attachments","zh":"保单附件"}},{"name":"Cloudflare Access","role":{"en":"Browser authentication","zh":"浏览器身份认证"}}],"verified":{"date":"2026-09-08","revision":"4deaf7e83ffb79a90eb1032a3a9cf91c35cdc767","sources":["package.json","apps/web/package.json","apps/web/vite.config.ts","apps/web/src/App.tsx","apps/web/src/app/policies/[id]/page.tsx","apps/web/src/app/settings/page.tsx","apps/worker/package.json","apps/worker/wrangler.toml","apps/worker/src/index.ts","apps/worker/src/middleware/access-auth.ts","apps/worker/src/middleware/api-key-auth.ts","apps/worker/src/middleware/is-localhost.ts","apps/worker/src/routes/auth-cli.ts","apps/worker/src/routes/policies.ts","apps/worker/src/routes/backup.ts","apps/worker/src/routes/settings.ts","apps/cli/package.json","apps/cli/src/config.ts","apps/cli/src/commands/auth.ts","apps/cli/src/commands/policies.ts","packages/db/src/index.ts","packages/db/src/schema.ts","packages/db/src/backup.ts","packages/db/src/types.ts","packages/api/src/lib/attachment-validation.ts","packages/api/src/renewal-calendar.ts","scripts/run-l2-http.ts","scripts/run-l3-server.ts","scripts/seed-remote.ts","apps/web/playwright.config.ts","drizzle.config.ts",".github/workflows/release.yml","LICENSE"]}}},{"id":"life-ai","repo":"life.ai","title":"Life.ai","emoji":"🧬","description":{"en":"Bring health, places, and spending into one personal picture.","zh":"把健康指标、位置足迹和消费记录，汇成一幅个人生活图景。"},"category":"everyday","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/life.ai","subject":"Capybara portrait with an apple","reference":false,"logo":{"kind":"original","original":"/logos/originals/life-ai-family-2026-09-07-01-02.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/life.ai/blob/b6f3e7f426315062e0492e00c4d9448bfa3b8031/logo.png","modified":false,"width":2048,"height":2048,"bytes":2268740,"sha256":"dc9f9d0a07acd163c5837d831f38beab0bdbe206a693221f40892801b9a493ca","thumbnail":"/logos/display/life-ai-160.webp","display":"/logos/display/life-ai-1024.webp"},"theme":{"background":{"value":"220 14% 94%","source":"dashboard/src/app/globals.css --background"},"ink":{"value":"0 0% 12%","source":"dashboard/src/app/globals.css --foreground"},"primary":{"value":"217 91% 60%","source":"dashboard/src/app/globals.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Unified personal data hub for health metrics, location, and expense tracking","repositoryRevision":"b6f3e7f426315062e0492e00c4d9448bfa3b8031"},"colors":{"primary":"#3c83f6","background":"#eeeff2","ink":"#1f1f1f","palette":[{"color":"#3c83f6","role":"primary","source":"dashboard/src/app/globals.css --primary: 217 91% 60%"},{"color":"#eeeff2","role":"background","source":"dashboard/src/app/globals.css --background: 220 14% 94%"},{"color":"#c18d57","role":"accent","source":"Native life-ai 705264fc5b59, sampled sRGB pixel (1101, 935); artwork/logo-family/life-ai/2026-09-07-01/palette.json"},{"color":"#694936","role":"accent","source":"Native life-ai 705264fc5b59, sampled sRGB pixel (1086, 1860); artwork/logo-family/life-ai/2026-09-07-01/palette.json"},{"color":"#e1412e","role":"accent","source":"Native life-ai 705264fc5b59, sampled sRGB pixel (1079, 312); artwork/logo-family/life-ai/2026-09-07-01/palette.json"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"02","root":"/logos/family/life-ai/2026-09-07-01/02","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/life-ai/2026-09-07-01","model":"gpt-image-2","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Caramel capybara with closed eyes, blue-purple glasses, and an apple with leaves","zh":"闭眼的焦糖色水豚，保留蓝紫镜框、苹果和叶片"},"original":"/logos/family/life-ai/2026-09-07-01/02/transparent.png","display":"/logos/family/life-ai/2026-09-07-01/02/transparent-1024.webp","width":2048,"height":2048,"sha256":"dc9f9d0a07acd163c5837d831f38beab0bdbe206a693221f40892801b9a493ca"},"previous":{"original":"/logos/originals/life-ai.png","sourceUrl":"https://github.com/nocoo/life.ai/blob/4e23d62f401ba4aa2fab39956b49312e5818d50d/logo.png","width":2048,"height":2048,"sha256":"306b58b664359d913e95828db42a754cfc1dfa1b6b007db5b6ed33f3d63d726d"},"direction":[{"aspect":"composition","title":{"en":"A calm, balanced moment","zh":"平静而平衡的一瞬"},"description":{"en":"The broad muzzle and relaxed closed eyes stay dominant. A natural short neck and shoulder enter from the lower left, leaving the whole apple, ear, and outer glasses arm inside the safe frame.","zh":"宽鼻口与放松闭眼仍是主体，短颈和肩部从左下自然进入画面，完整苹果、耳朵和外侧镜框都留在安全范围内。"}},{"aspect":"drawing","title":{"en":"Caramel facets, familiar accents","zh":"焦糖切面与熟悉点缀"},"description":{"en":"Warm connected polygons retain the capybara’s coat and expression. The original apple and blue-purple glasses keep their color relationship, with clean transparent gaps around the frame.","zh":"暖色连续多边形保留水豚毛色与表情，原有苹果和蓝紫眼镜保持配色关系，镜框空隙干净透明。"}},{"aspect":"presentation","title":{"en":"Riverbank ripples","zh":"水岸涟漪"},"description":{"en":"Broken elliptical water rings and one quiet leaf-vein impression fill a warm sand field. The broad tonal texture gives the portrait a calm setting without becoming a scene.","zh":"断续椭圆水纹与一处安静叶脉落在暖沙色底面上，以宽阔同色纹理衬托平静头像。"}}],"palette":[{"color":"#b7aa8e","role":"background","label":{"en":"Riverbank ripples","zh":"展示底色"},"source":"Selected Life.ai presentation, 2026-09-07-01/02; background.base in archived settings.json"},{"color":"#c18d57","role":"primary","label":{"en":"Caramel coat","zh":"焦糖毛色"},"source":"Native life-ai 705264fc5b59, sampled sRGB pixel (1101, 935); artwork/logo-family/life-ai/2026-09-07-01/palette.json"},{"color":"#694936","role":"accent","label":{"en":"Cocoa facets","zh":"可可色块"},"source":"Native life-ai 705264fc5b59, sampled sRGB pixel (1086, 1860); artwork/logo-family/life-ai/2026-09-07-01/palette.json"},{"color":"#e1412e","role":"accent","label":{"en":"Apple red","zh":"苹果红"},"source":"Native life-ai 705264fc5b59, sampled sRGB pixel (1079, 312); artwork/logo-family/life-ai/2026-09-07-01/palette.json"},{"color":"#77a848","role":"accent","label":{"en":"Leaf green","zh":"叶绿"},"source":"Native life-ai 705264fc5b59, sampled sRGB pixel (1205, 111); artwork/logo-family/life-ai/2026-09-07-01/palette.json"},{"color":"#276da5","role":"accent","label":{"en":"Blue glasses","zh":"蓝色镜框"},"source":"Native life-ai 705264fc5b59, sampled sRGB pixel (999, 918); artwork/logo-family/life-ai/2026-09-07-01/palette.json"},{"color":"#793ca6","role":"accent","label":{"en":"Purple glasses","zh":"紫色镜框"},"source":"Native life-ai 705264fc5b59, sampled sRGB pixel (1732, 721); artwork/logo-family/life-ai/2026-09-07-01/palette.json"}],"sizeNote":{"en":"The broad caramel muzzle, red apple, and blue-purple glasses remain visible at 32 px. Closed eyes and small leaf facets simplify at 16 px; the 192 px login asset is also transparent.","zh":"32 像素时，焦糖宽鼻口、红苹果和蓝紫眼镜仍可辨认；16 像素时闭眼与细叶切面会简化，登录页的 192 像素资源也使用透明前景。"}},"overview":{"goal":{"en":"Import personal health, location, and bookkeeping exports, then compare them through daily, monthly, and yearly views.","zh":"导入个人健康、位置足迹和记账导出文件，通过日、月、年视图对照查看。"},"techStack":[{"name":"TypeScript","role":{"en":"Import scripts and application logic","zh":"导入脚本与应用逻辑"}},{"name":"Bun","role":{"en":"Data processing and SQLite runtime","zh":"数据处理与 SQLite 运行环境"}},{"name":"Next.js","role":{"en":"Web dashboard and APIs","zh":"Web Dashboard 与 API"}},{"name":"React","role":{"en":"Data views","zh":"数据视图"}},{"name":"SQLite","role":{"en":"Local health, route, and finance databases","zh":"本地健康、轨迹与记账数据库"}},{"name":"Leaflet","role":{"en":"Route maps","zh":"轨迹地图"}},{"name":"Recharts","role":{"en":"Charts and trends","zh":"图表与趋势"}},{"name":"Zustand","role":{"en":"Dashboard state","zh":"Dashboard 状态"}}],"verified":{"date":"2026-09-08","revision":"56df330ee15eada49dd0f926e4e9e73775fdcfea","sources":["package.json","dashboard/package.json","dashboard/src/lib/db.ts","dashboard/src/lib/auth.ts","scripts/import/applehealth/cli.ts","scripts/import/footprint/cli.ts","scripts/import/pixiu/cli.ts","dashboard/src/views/day/day-page.tsx"]}}},{"id":"echo","repo":"echo","title":"Echo","emoji":"🚀","description":{"en":"A small, fast IP lookup service, built with Bun and TypeScript.","zh":"用 Bun 与 TypeScript 构建的轻量 IP 查询服务。"},"category":"tools","website":"https://echo.nocoo.cloud","websiteSource":"GitHub repository homepage","repository":"https://github.com/nocoo/echo","subject":"A brass and navy pocket compass","reference":false,"logo":{"kind":"original","original":"/logos/originals/echo-family-2026-09-07-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/echo/blob/59730aa033b97d0a9ff917b34a90bedef2a06c39/logo.png","modified":false,"width":2048,"height":2048,"bytes":5170077,"sha256":"ba7421a11db8e5a5e16e3199b8d6612edd65b6ba3e98855328b2cb027644c58d","thumbnail":"/logos/display/echo-160.webp","display":"/logos/display/echo-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"API-only IP lookup service built with Bun and TypeScript","repositoryRevision":"59730aa033b97d0a9ff917b34a90bedef2a06c39"},"colors":{"primary":"#192d3e","background":"#bfd4d7","ink":"#0b0e10","palette":[{"color":"#192d3e","role":"primary","source":"Native echo bce159d3b8a5, sampled sRGB pixel (1080, 1178); artwork/logo-family/echo/2026-09-07-01/palette.json"},{"color":"#bfd4d7","role":"background","source":"Adopted Echo presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#b19254","source":"Native echo bce159d3b8a5, sampled sRGB pixel (272, 960); artwork/logo-family/echo/2026-09-07-01/palette.json","role":"accent"},{"color":"#a42f1e","source":"Native echo bce159d3b8a5, sampled sRGB pixel (1294, 585); artwork/logo-family/echo/2026-09-07-01/palette.json","role":"accent"},{"color":"#e2cfa2","source":"Native echo bce159d3b8a5, sampled sRGB pixel (952, 978); artwork/logo-family/echo/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","series":"material","finishing":"01","root":"/logos/family/echo/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/echo/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"A brass and navy pocket compass","zh":"黄铜与深蓝的袖珍罗盘"},"original":"/logos/family/echo/2026-09-07-01/01/transparent.png","display":"/logos/family/echo/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"ba7421a11db8e5a5e16e3199b8d6612edd65b6ba3e98855328b2cb027644c58d"},"previous":{"original":"/logos/emoji/echo.png","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","width":1024,"height":1024,"sha256":"b7a3eb2ada128f64271d7a91ceab4d58ff4589bdca20c07fb056270454dc68ca"},"direction":[{"aspect":"composition","title":{"en":"A direction found","zh":"找到方向的一刻"},"description":{"en":"A red-and-ivory needle crosses a deep navy compass face. The close brass hanging ring and complete circular instrument share one gentle diagonal.","zh":"红白指针划过深蓝罗盘，紧靠的黄铜提环与完整仪器沿同一条温和斜线组织。"}},{"aspect":"drawing","title":{"en":"Brass and navy glass","zh":"黄铜与深蓝表盘"},"description":{"en":"Softly brushed brass, a controlled glass reflection and engraved direction marks retain physical depth. The hanging-ring opening is truly transparent.","zh":"柔和拉丝黄铜、克制玻璃反光和方向刻痕保留拟物深度，提环镂空保持真实透明。"}},{"aspect":"presentation","title":{"en":"Survey bearings","zh":"测绘方位"},"description":{"en":"Latitude arcs, a sparse meridian fan and short bearing marks in pale harbor-blue paper. The field, grain and contact shadow are independent of transparent app marks.","zh":"浅蓝纸面上的经纬弧线与偏移导航刻度，呼应 IP 位置查询。 底色、颗粒与接触阴影均独立于透明应用标记。"}}],"palette":[{"color":"#bfd4d7","role":"background","label":{"en":"Survey bearings","zh":"测绘方位"},"source":"Adopted Echo presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#192d3e","role":"primary","label":{"en":"Navy dial","zh":"深蓝表盘"},"source":"Native echo bce159d3b8a5, sampled sRGB pixel (1080, 1178); artwork/logo-family/echo/2026-09-07-01/palette.json"},{"color":"#b19254","role":"accent","label":{"en":"Brass rim","zh":"黄铜外缘"},"source":"Native echo bce159d3b8a5, sampled sRGB pixel (272, 960); artwork/logo-family/echo/2026-09-07-01/palette.json"},{"color":"#a42f1e","role":"accent","label":{"en":"Red needle","zh":"红色指针"},"source":"Native echo bce159d3b8a5, sampled sRGB pixel (1294, 585); artwork/logo-family/echo/2026-09-07-01/palette.json"},{"color":"#e2cfa2","role":"accent","label":{"en":"Ivory needle","zh":"象牙色指针"},"source":"Native echo bce159d3b8a5, sampled sRGB pixel (952, 978); artwork/logo-family/echo/2026-09-07-01/palette.json"}],"sizeNote":{"en":"At 128/64 px, the gold compass rim and red needle remain clear. At 32/24/16 px, the compact silhouette and dominant colors carry recognition; fine material detail, printed marks and background lines naturally merge.","zh":"128/64 px 能辨认金色罗盘外缘与红色指针；32/24/16 px 以紧凑轮廓和主色维持识别，精细材质、印记与背景线条自然合并。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Give network diagnostic tools IP location and network data, plus observations of DNS resolver exit addresses.","zh":"为网络诊断工具提供 IP 位置与运营商信息，并观察 DNS 解析器的出口地址。"},"techStack":[{"name":"TypeScript","role":{"en":"IP API and result collector","zh":"IP API 与结果收集服务"}},{"name":"Bun","role":{"en":"Local API runtime and workspaces","zh":"本地 API 运行时与工作区管理"}},{"name":"Hono","role":{"en":"IP lookup HTTP routes","zh":"IP 查询 HTTP 路由"}},{"name":"Vercel","role":{"en":"IP service hosting","zh":"IP 服务托管"}},{"name":"Go","role":{"en":"Authoritative DNS probe","zh":"权威 DNS 探针"}},{"name":"Cloudflare Workers","role":{"en":"DNS result collection API","zh":"DNS 结果收集 API"}},{"name":"Cloudflare KV","role":{"en":"Short-lived resolver observations","zh":"短期保存解析器观察记录"}},{"name":"Vitest","role":{"en":"IP service unit and HTTP tests","zh":"IP 服务单元与 HTTP 测试"}}],"verified":{"date":"2026-09-08","revision":"b7373ec8e5d09a59847b3b9aa04f73526a019a41","sources":["package.json","packages/ip-service/package.json","packages/ip-service/src/server.ts","packages/ip-service/src/services/ipLookup.ts","packages/ip-service/src/services/selectBest.ts","packages/ip-service/vercel.json","packages/collector/package.json","packages/collector/src/index.ts","packages/collector/wrangler.toml","packages/dns-probe/main.go","packages/dns-probe/go.mod",".github/workflows/release.yml","LICENSE"]}}},{"id":"deca","repo":"deca","title":"Deca","emoji":"🧭","description":{"en":"A local-first Mac gateway that brings AI agents to Discord, the terminal, and HTTP.","zh":"优先在本地运行的 Mac AI 智能体网关，连接 Discord、终端与 HTTP。"},"category":"ai","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/deca","subject":"A midnight teal rotary desk telephone","reference":false,"logo":{"kind":"original","original":"/logos/originals/deca-family-2026-09-07-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/deca/blob/1f41b41255b7184c307cb13693e94a6f45bbb9e1/logo.png","modified":false,"width":2048,"height":2048,"bytes":3665035,"sha256":"329bb7b41d8eac9909d35cba76f04a0e2786a702f328f2e7ccf7e8dbde478262","thumbnail":"/logos/display/deca-160.webp","display":"/logos/display/deca-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Local-first macOS AI agent gateway with multi-channel support","repositoryRevision":"1f41b41255b7184c307cb13693e94a6f45bbb9e1"},"colors":{"primary":"#1c323c","background":"#c2ced6","ink":"#d60508","palette":[{"color":"#1c323c","role":"primary","source":"Native deca 5be6d36eea83, sampled sRGB pixel (1240, 1212); artwork/logo-family/deca/2026-09-07-01/palette.json"},{"color":"#c2ced6","role":"background","source":"Adopted Deca presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#decca0","source":"Native deca 5be6d36eea83, sampled sRGB pixel (1097, 1096); artwork/logo-family/deca/2026-09-07-01/palette.json","role":"accent"},{"color":"#827159","source":"Native deca 5be6d36eea83, sampled sRGB pixel (1579, 763); artwork/logo-family/deca/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","series":"material","finishing":"01","root":"/logos/family/deca/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/deca/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"A midnight teal rotary desk telephone","zh":"午夜青色旋转拨号电话"},"original":"/logos/family/deca/2026-09-07-01/01/transparent.png","display":"/logos/family/deca/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"329bb7b41d8eac9909d35cba76f04a0e2786a702f328f2e7ccf7e8dbde478262"},"previous":{"original":"/logos/emoji/deca.png","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","width":1024,"height":1024,"sha256":"ef59f1bbd11d6a19cc223a6857ca5b4cb56567de1b225677f45331fb3895eb69"},"direction":[{"aspect":"composition","title":{"en":"The receiver settles","zh":"听筒归位的一刻"},"description":{"en":"A complete receiver rests on a broad rotary telephone, with a short coil gathered closely to the body. The familiar physical device represents a local agent gateway and its channels.","zh":"完整听筒落在宽阔转盘电话上，短卷线紧靠机身；熟悉的实体设备呼应本地 Agent 网关及多种通信通道。"}},{"aspect":"drawing","title":{"en":"Midnight Bakelite","zh":"午夜蓝胶木"},"description":{"en":"Deep teal Bakelite, an ivory rotary dial and fine brass seams make a calm premium object. The cable-loop background is removed while real dark dial recesses stay intact.","zh":"深青蓝胶木、象牙色转盘与黄铜细接缝构成沉稳实物。线圈环内去除背景，转盘真实暗部凹孔保留。"}},{"aspect":"presentation","title":{"en":"Switchboard paths","zh":"总机接线"},"description":{"en":"Three rounded switchboard routing paths with discrete paired terminals in cool blue-gray paper. The field, grain and contact shadow are independent of transparent app marks.","zh":"蓝灰纸面上的三条圆润总机接线与成对终端。 底色、颗粒与接触阴影均独立于透明应用标记。"}}],"palette":[{"color":"#c2ced6","role":"background","label":{"en":"Switchboard paths","zh":"总机接线"},"source":"Adopted Deca presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#1c323c","role":"primary","label":{"en":"Midnight teal","zh":"午夜青蓝"},"source":"Native deca 5be6d36eea83, sampled sRGB pixel (1240, 1212); artwork/logo-family/deca/2026-09-07-01/palette.json"},{"color":"#decca0","role":"accent","label":{"en":"Ivory dial","zh":"象牙色转盘"},"source":"Native deca 5be6d36eea83, sampled sRGB pixel (1097, 1096); artwork/logo-family/deca/2026-09-07-01/palette.json"},{"color":"#827159","role":"accent","label":{"en":"Brass seam","zh":"黄铜接缝"},"source":"Native deca 5be6d36eea83, sampled sRGB pixel (1579, 763); artwork/logo-family/deca/2026-09-07-01/palette.json"}],"sizeNote":{"en":"At 128/64 px, the receiver silhouette and ivory rotary dial remain clear. At 32/24/16 px, the compact silhouette and dominant colors carry recognition; fine material detail, printed marks and background lines naturally merge.","zh":"128/64 px 能辨认听筒剪影与象牙色转盘；32/24/16 px 以紧凑轮廓和主色维持识别，精细材质、印记与背景线条自然合并。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Use a locally hosted personal agent through Discord, a terminal, or HTTP to work with files, commands, remembered context, and scheduled tasks.","zh":"通过 Discord、终端或 HTTP 使用本机运行的个人 Agent，处理文件、命令、已有记忆和定时任务。"},"techStack":[{"name":"Bun / TypeScript","role":{"en":"Local agent and workspaces","zh":"本地 Agent 与工作区"}},{"name":"Anthropic SDK","role":{"en":"Model calls and tool protocol","zh":"模型调用与工具协议"}},{"name":"Hono","role":{"en":"HTTP channel","zh":"HTTP 通道"}},{"name":"discord.js","role":{"en":"Discord bot channel","zh":"Discord 机器人通道"}},{"name":"p-queue","role":{"en":"Gateway request dispatch","zh":"Gateway 请求调度"}},{"name":"JSONL / JSON / Markdown","role":{"en":"Sessions, configuration and context files","zh":"会话、配置与上下文文件"}}],"verified":{"date":"2026-09-08","revision":"37911d4cdf1c242c50c5d48d890a0e041c486d8b","sources":["package.json","packages/gateway/cli.ts","packages/gateway/serve.ts","packages/gateway/src/gateway.ts","packages/gateway/src/adapter.ts","packages/agent/src/core/agent.ts","packages/agent/src/core/session.ts","packages/agent/src/core/memory.ts","packages/agent/src/tools/builtin.ts","packages/storage/src/provider.ts","packages/storage/src/types.ts","packages/http/src/server.ts"]}}},{"id":"runner","repo":"runner","title":"Runner","emoji":"⏰","description":{"en":"Declare a schedule and let your Mac run your AI jobs through launchd.","zh":"声明任务日程，交给 Mac 的 launchd 定时运行 AI 工作。"},"category":"tools","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/runner","subject":"Emerald enamel mechanical stopwatch","reference":false,"logo":{"kind":"original","original":"/logos/originals/runner-family-2026-09-07-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/runner/blob/a5d786175358dee245773bd98af83eef4bbf5689/logo.png","modified":false,"width":2048,"height":2048,"bytes":4230760,"sha256":"8a388497c330de53d8848238cad6d2e5e3c5647c6da6658e4b7a7c9468213347","thumbnail":"/logos/display/runner-160.webp","display":"/logos/display/runner-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Declarative task scheduler for macOS that runs AI jobs via launchd","repositoryRevision":"a5d786175358dee245773bd98af83eef4bbf5689"},"colors":{"primary":"#0e442f","background":"#c2ceb4","ink":"#020202","palette":[{"color":"#0e442f","role":"primary","source":"Native runner d52f1b25e37d, sampled sRGB pixel (810, 1113); artwork/logo-family/runner/2026-09-07-01/palette.json"},{"color":"#c2ceb4","role":"background","source":"Adopted Runner presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#8b8d83","source":"Native runner d52f1b25e37d, sampled sRGB pixel (368, 1388); artwork/logo-family/runner/2026-09-07-01/palette.json","role":"accent"},{"color":"#ad874a","source":"Native runner d52f1b25e37d, sampled sRGB pixel (1550, 192); artwork/logo-family/runner/2026-09-07-01/palette.json","role":"accent"},{"color":"#dfd1ab","source":"Native runner d52f1b25e37d, sampled sRGB pixel (1174, 873); artwork/logo-family/runner/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","series":"material","finishing":"01","root":"/logos/family/runner/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/runner/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Emerald enamel mechanical stopwatch","zh":"祖母绿珐琅机械秒表"},"original":"/logos/family/runner/2026-09-07-01/01/transparent.png","display":"/logos/family/runner/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"8a388497c330de53d8848238cad6d2e5e3c5647c6da6658e4b7a7c9468213347"},"previous":{"original":"/logos/originals/runner.png","sourceUrl":"https://github.com/nocoo/runner/blob/3bd26f260c1dedf63faf4a616421b8592b975be0/logo.png","width":2048,"height":2048,"sha256":"2f87f9f05f3f2fe6ca573cf0504a9414396b83f6bb675f4b547e8462cc50aa3b"},"direction":[{"aspect":"composition","title":{"en":"The timing hand starts","zh":"秒针启动的一刻"},"description":{"en":"A single mechanical stopwatch catches the beginning of a timed run. The complete ring, crown and short button remain comfortably inset around the broad face.","zh":"一只机械秒表定格任务开始计时的一刻。提环、表冠和短按钮完整保留，围绕宽阔表面留足余量。"}},{"aspect":"drawing","title":{"en":"Emerald enamel and steel","zh":"祖母绿珐琅与钢"},"description":{"en":"Rich green enamel, satin steel and a brass crown carry the identity. Ivory hands and glass highlights are solid material, while both ring openings are transparent.","zh":"浓郁绿珐琅、缎面钢和黄铜表冠构成标识；象牙色指针及玻璃高光属于实体，提环两侧镂空透明。"}},{"aspect":"presentation","title":{"en":"Scheduled minutes","zh":"定时分刻"},"description":{"en":"An interrupted outer minute track, a shorter offset timing arc and grouped launch ticks on pistachio paper. The field, grain and contact shadow are independent of transparent app marks.","zh":"浅开心果色纸面上的间断分钟轨道与分组启动刻度。 底色、颗粒与接触阴影均独立于透明应用标记。"}}],"palette":[{"color":"#c2ceb4","role":"background","label":{"en":"Scheduled minutes","zh":"定时分刻"},"source":"Adopted Runner presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#0e442f","role":"primary","label":{"en":"Emerald dial","zh":"祖母绿表盘"},"source":"Native runner d52f1b25e37d, sampled sRGB pixel (810, 1113); artwork/logo-family/runner/2026-09-07-01/palette.json"},{"color":"#8b8d83","role":"accent","label":{"en":"Satin steel","zh":"缎面钢"},"source":"Native runner d52f1b25e37d, sampled sRGB pixel (368, 1388); artwork/logo-family/runner/2026-09-07-01/palette.json"},{"color":"#ad874a","role":"accent","label":{"en":"Brass crown","zh":"黄铜表冠"},"source":"Native runner d52f1b25e37d, sampled sRGB pixel (1550, 192); artwork/logo-family/runner/2026-09-07-01/palette.json"},{"color":"#dfd1ab","role":"accent","label":{"en":"Ivory hand","zh":"象牙色指针"},"source":"Native runner d52f1b25e37d, sampled sRGB pixel (1174, 873); artwork/logo-family/runner/2026-09-07-01/palette.json"}],"sizeNote":{"en":"At 128/64 px, the emerald face and steel case remain clear. At 32/24/16 px, the compact silhouette and dominant colors carry recognition; fine material detail, printed marks and background lines naturally merge.","zh":"128/64 px 能辨认祖母绿表盘与钢制表壳；32/24/16 px 以紧凑轮廓和主色维持识别，精细材质、印记与背景线条自然合并。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Schedule shell commands, OpenCode prompts, and HTTP tasks on a Mac, then inspect their local run history and output through a CLI and Dashboard.","zh":"在 Mac 上定时执行 shell、OpenCode 和 HTTP 任务，通过 CLI 与本地 Dashboard 查看运行历史和输出。"},"techStack":[{"name":"Swift","role":{"en":"CLI and task execution","zh":"命令行与任务执行"}},{"name":"launchd","role":{"en":"macOS timer integration","zh":"macOS 定时触发"}},{"name":"SQLite / GRDB","role":{"en":"Local run and task storage","zh":"本地运行与任务存储"}},{"name":"React / TypeScript","role":{"en":"Local Dashboard","zh":"本地控制台"}},{"name":"Vite","role":{"en":"Development server and CLI API bridge","zh":"开发服务与 CLI API 桥接"}},{"name":"Tailwind CSS","role":{"en":"Dashboard styling","zh":"控制台样式"}}],"verified":{"date":"2026-09-08","revision":"d9d2a14828d20c6f27f4e44b3221d9d9a89190e1","sources":["runner-swift/Package.swift","runner-swift/Sources/Runner/Runner.swift","runner-swift/Sources/RunnerLib/CLICommands.swift","runner-swift/Sources/RunnerLib/SQLiteStorage.swift","runner-swift/Sources/RunnerLib/Executor.swift","dashboard/package.json","dashboard/src/api/vite-plugin-api.ts","launchd/com.runner.scheduler.plist"]}}},{"id":"zhe","repo":"zhe","title":"Zhe","emoji":"🔗","description":{"en":"Short links, clean URLs, and a little less friction when sharing things.","zh":"把长网址变成简洁的短链接，让分享少一点麻烦。"},"category":"tools","website":"https://zhe.to","websiteSource":"GitHub repository homepage","repository":"https://github.com/nocoo/zhe","subject":"Bee with colorful wings","reference":false,"logo":{"kind":"original","original":"/logos/originals/zhe.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/zhe/blob/075c875936e9a244c147ff9d58452398bb1ef3cf/logo.png","modified":false,"width":2048,"height":2048,"bytes":3100798,"sha256":"a0c8b924026189661b2e5eb11d876775f5a3fd506c91b32e61992f53a811a046","thumbnail":"/logos/display/zhe-160.webp","display":"/logos/display/zhe-1024.webp"},"theme":{"background":{"value":"220 14% 94%","source":"app/globals.css --background"},"ink":{"value":"0 0% 12%","source":"app/globals.css --foreground"},"primary":{"value":"262 83% 58%","source":"app/globals.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"TypeScript URL shortener with clean links and analytics-ready storage","repositoryRevision":"075c875936e9a244c147ff9d58452398bb1ef3cf"},"colors":{"primary":"#7c3bed","background":"#eeeff2","ink":"#1f1f1f","palette":[{"color":"#7c3bed","role":"primary","source":"app/globals.css --primary: 262 83% 58%"},{"color":"#eeeff2","role":"background","source":"app/globals.css --background: 220 14% 94%"},{"color":"#e48f2b","role":"accent","source":"Preserved project artwork, sampled pixel"},{"color":"#48260d","role":"accent","source":"Preserved project artwork, sampled pixel"},{"color":"#fac7e2","role":"accent","source":"Preserved project artwork, sampled pixel"}]},"archived":false,"family":{"id":"2026-09-07-01","finishing":"01","root":"/logos/family/zhe/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/zhe/2026-09-07-01","method":"retained-original","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Original golden faceted bee with multicolored wings","zh":"保留原图的金色碎片化蜜蜂与多彩翅膀"},"original":"/logos/family/zhe/2026-09-07-01/01/transparent.png","display":"/logos/family/zhe/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"a0c8b924026189661b2e5eb11d876775f5a3fd506c91b32e61992f53a811a046"},"previous":{"original":"/logos/originals/zhe.png","sourceUrl":"https://github.com/nocoo/zhe/blob/120a01207c1b978a081413e785099d3580890d80/logo.png","width":2048,"height":2048,"sha256":"a0c8b924026189661b2e5eb11d876775f5a3fd506c91b32e61992f53a811a046"},"direction":[{"aspect":"composition","title":{"en":"Keep the hovering gesture","zh":"保留悬停的动作"},"description":{"en":"The bee, antenna curls, wing spread, and original off-center balance remain unchanged. The native 2048 px canvas already gives the complete mark ample rounded-corner clearance.","zh":"蜜蜂、卷曲触角、展开的翅膀和原来的偏心平衡全部保留。2048 像素原图已经为完整主体留出了充分的圆角安全空间。"}},{"aspect":"drawing","title":{"en":"Gold with one wing flourish","zh":"金色主体与多彩翅膀"},"description":{"en":"Broad honey and amber facets lead the body; the existing cyan-and-rose wing group supplies the colorful interest point. All source pixels and the transparent silhouette remain untouched.","zh":"蜂蜜金与琥珀色面构成主体，现有青粉色翅膀形成集中多彩的兴趣点。源图像素和透明轮廓均未修改。"}},{"aspect":"presentation","title":{"en":"Pressed beeswax","zh":"蜂蜡上的浅浮纹"},"description":{"en":"Sparse oversized honeycomb cells sit around a warm beeswax field. Their uneven rhythm, light edges, fine grain, and shallow contact shadow support the bee without turning the logo into a scene.","zh":"稀疏的大蜂巢格分布在暖蜂蜡底色周围，不均匀的节奏、细亮边、颗粒和浅接触阴影衬托蜜蜂，保持标识的简洁。"}}],"palette":[{"color":"#bb914f","role":"background","label":{"en":"Beeswax cells","zh":"展示底色"},"source":"Selected Zhe presentation, finishing 01; background.base in archived settings.json"},{"color":"#f0b724","label":{"en":"Honey gold","zh":"蜂蜜金"},"source":"Original zhe a0c8b9240261, sampled sRGB pixel (1478, 1111); palette.json","role":"primary"},{"color":"#e48f2a","label":{"en":"Amber","zh":"琥珀"},"source":"Original zhe a0c8b9240261, sampled sRGB pixel (1150, 1048); palette.json","role":"accent"},{"color":"#47260c","label":{"en":"Cocoa","zh":"可可棕"},"source":"Original zhe a0c8b9240261, sampled sRGB pixel (1159, 747); palette.json","role":"accent"},{"color":"#86cddf","label":{"en":"Wing cyan","zh":"翼青"},"source":"Original zhe a0c8b9240261, sampled sRGB pixel (616, 797); palette.json","role":"accent"},{"color":"#fac7e2","label":{"en":"Wing rose","zh":"翼粉"},"source":"Original zhe a0c8b9240261, sampled sRGB pixel (860, 398); palette.json","role":"accent"},{"color":"#e57863","label":{"en":"Antenna coral","zh":"触角珊瑚"},"source":"Original zhe a0c8b9240261, sampled sRGB pixel (1224, 300); palette.json","role":"accent"}],"sizeNote":{"en":"The golden body and cyan-pink wing group remain distinct at 32 px. At 16 px the antenna curls and smaller facets simplify into the overall silhouette; sidebar and browser marks use the transparent foreground.","zh":"32 像素时金色身体和青粉翅膀仍能区分；16 像素时触角卷曲与小碎片会融入整体轮廓。侧栏和浏览器标记继续使用透明前景。"}},"overview":{"goal":{"en":"Keep personal links, Markdown ideas, and nested todos together, with short-link sharing and unified search.","zh":"集中整理个人链接、Markdown 想法和层级待办，通过短链接分享并统一搜索内容。"},"techStack":[{"name":"TypeScript","role":{"en":"Application and CLI logic","zh":"应用与 CLI 逻辑"}},{"name":"Next.js","role":{"en":"Web dashboard and APIs","zh":"Web 管理台与 API"}},{"name":"React","role":{"en":"Interactive views","zh":"交互视图"}},{"name":"Cloudflare Workers","role":{"en":"Redirects and D1 proxy","zh":"短链接跳转与 D1 代理"}},{"name":"Cloudflare D1","role":{"en":"User data","zh":"用户数据"}},{"name":"Cloudflare KV","role":{"en":"Redirect cache","zh":"跳转缓存"}},{"name":"Cloudflare R2","role":{"en":"Uploaded files","zh":"上传文件"}},{"name":"Auth.js","role":{"en":"Google sign-in","zh":"Google 登录"}},{"name":"Bun","role":{"en":"Dependency management and development tools","zh":"依赖管理与开发工具"}},{"name":"Node.js","role":{"en":"CLI runtime","zh":"CLI 运行环境"}},{"name":"Vercel AI SDK","role":{"en":"Optional link organization suggestions","zh":"可选的链接整理建议"}}],"verified":{"date":"2026-09-08","revision":"967f6e738440ab0739697659c242652408d7155c","sources":["package.json","worker/src/index.ts","worker/wrangler.toml.example","lib/db/d1-client.ts","lib/db/scoped/links.ts","actions/ideas.ts","actions/todos.ts","components/search-command-dialog.tsx","app/api/ai/suggest-link-org/route.ts","cli/src/index.ts","cli/src/api/client.ts","auth.ts","lib/auth-allowlist.ts","scripts/test-stack.ts"]}}},{"id":"geekhub","repo":"geekhub","title":"GeekHub","emoji":"📰","description":{"en":"A self-hosted RSS reader with AI summaries and translation.","zh":"可以自行托管的 RSS 阅读器，带有 AI 摘要与翻译。"},"category":"everyday","website":"https://geekhub.vercel.app","websiteSource":"GitHub repository homepage","repository":"https://github.com/nocoo/geekhub","subject":"A folded newspaper in a forest-green reading folio","reference":false,"logo":{"kind":"original","original":"/logos/originals/geekhub-family-2026-09-07-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/geekhub/blob/d45713b5d3a0cfd1530e31a7961e1b5748f1bb6c/logo.png","modified":false,"width":2048,"height":2048,"bytes":4053576,"sha256":"7de6b36e18165d87f1a840b9f762f2dce1739f70a28b8a50a9964c1a6fa4e545","thumbnail":"/logos/display/geekhub-160.webp","display":"/logos/display/geekhub-1024.webp"},"theme":{"background":{"value":"0 0% 100%","source":"src/app/globals.css --background"},"ink":{"value":"222 47% 11%","source":"src/app/globals.css --foreground"},"primary":{"value":"152 76% 46%","source":"src/app/globals.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Self-hosted RSS reader with AI summarization and translation","repositoryRevision":"d45713b5d3a0cfd1530e31a7961e1b5748f1bb6c"},"colors":{"primary":"#1cce7b","background":"#ffffff","ink":"#0f1729","palette":[{"color":"#1cce7b","role":"primary","source":"src/app/globals.css --primary: 152 76% 46%"},{"color":"#ffffff","role":"background","source":"src/app/globals.css --background: 0 0% 100%"},{"color":"#1e3a2c","source":"Native geekhub 6535caedb328, sampled sRGB pixel (831, 332); artwork/logo-family/geekhub/2026-09-07-01/palette.json","role":"accent"},{"color":"#dacdb1","source":"Native geekhub 6535caedb328, sampled sRGB pixel (1613, 1224); artwork/logo-family/geekhub/2026-09-07-01/palette.json","role":"accent"},{"color":"#b37d58","source":"Native geekhub 6535caedb328, sampled sRGB pixel (1668, 374); artwork/logo-family/geekhub/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","series":"material","finishing":"01","root":"/logos/family/geekhub/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/geekhub/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"A folded newspaper in a forest-green reading folio","zh":"森林绿阅读夹中的折叠报纸"},"original":"/logos/family/geekhub/2026-09-07-01/01/transparent.png","display":"/logos/family/geekhub/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"7de6b36e18165d87f1a840b9f762f2dce1739f70a28b8a50a9964c1a6fa4e545"},"previous":{"original":"/logos/originals/geekhub.png","sourceUrl":"https://github.com/nocoo/geekhub/blob/4d3d7fa0676a0adda9e1af3f7f99b2cfd5855863/logo.png","width":2048,"height":2048,"sha256":"a1cec3b549d3c812f52f7d47748584bf07cbfd636d4d15b8a6415cba9cb4f47b"},"direction":[{"aspect":"composition","title":{"en":"A page ready to open","zh":"即将翻开的一页"},"description":{"en":"A forest-green folio holds a folded newspaper and one copper clip. The complete page corners and quiet layered silhouette make an RSS reading object, without a busy desk scene.","zh":"森林绿阅读夹收纳折叠报纸与一枚铜夹，完整纸角和安静层次表现 RSS 阅读，无需繁杂桌面场景。"}},{"aspect":"drawing","title":{"en":"Leather, paper and copper","zh":"皮革、纸张与铜"},"description":{"en":"Fine leather grain and dense ivory paper create tactile contrast. Abstract headline and column rules suggest articles without generating illegible text.","zh":"精细皮纹与厚实象牙色纸张形成触感对比；抽象标题线与分栏暗示文章，不使用乱码文字。"}},{"aspect":"presentation","title":{"en":"Collected columns","zh":"聚合报栏"},"description":{"en":"Staggered editorial columns, fine baseline rules and an offset paper-fold seam in warm olive paper. The field, grain and contact shadow are independent of transparent app marks.","zh":"暖橄榄纸面上的错位报栏、细基线和偏移折页线。 底色、颗粒与接触阴影均独立于透明应用标记。"}}],"palette":[{"color":"#d0d3bb","role":"background","label":{"en":"Collected columns","zh":"聚合报栏"},"source":"Adopted GeekHub presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#1e3a2c","role":"primary","label":{"en":"Forest leather","zh":"森林绿皮革"},"source":"Native geekhub 6535caedb328, sampled sRGB pixel (831, 332); artwork/logo-family/geekhub/2026-09-07-01/palette.json"},{"color":"#dacdb1","role":"accent","label":{"en":"Ivory newsprint","zh":"象牙色报纸"},"source":"Native geekhub 6535caedb328, sampled sRGB pixel (1613, 1224); artwork/logo-family/geekhub/2026-09-07-01/palette.json"},{"color":"#b37d58","role":"accent","label":{"en":"Copper clip","zh":"铜夹"},"source":"Native geekhub 6535caedb328, sampled sRGB pixel (1668, 374); artwork/logo-family/geekhub/2026-09-07-01/palette.json"}],"sizeNote":{"en":"At 128/64 px, the green folio and layered ivory pages remain clear. At 32/24/16 px, the compact silhouette and dominant colors carry recognition; fine material detail, printed marks and background lines naturally merge.","zh":"128/64 px 能辨认绿色阅读夹与层叠象牙色纸页；32/24/16 px 以紧凑轮廓和主色维持识别，精细材质、印记与背景线条自然合并。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Read and organize RSS subscriptions in one place, with optional Chinese summaries and translations.","zh":"集中阅读和整理 RSS 订阅，按需生成中文摘要与翻译。"},"techStack":[{"name":"TypeScript","role":{"en":"Application logic","zh":"应用逻辑"}},{"name":"Next.js","role":{"en":"Web application and APIs","zh":"Web 应用与 API"}},{"name":"React","role":{"en":"Reading interface","zh":"阅读界面"}},{"name":"Supabase","role":{"en":"Authentication and database access","zh":"认证与数据库访问"}},{"name":"PostgreSQL","role":{"en":"Feeds, articles, and reading state","zh":"订阅、文章与阅读状态"}},{"name":"Tailwind CSS","role":{"en":"Interface styling","zh":"界面样式"}},{"name":"OpenAI SDK","role":{"en":"Optional summaries and translations","zh":"可选的摘要与翻译"}},{"name":"rss-parser","role":{"en":"RSS and Atom parsing","zh":"RSS 与 Atom 解析"}}],"verified":{"date":"2026-09-08","revision":"ca7042dc77e4c64e317793b97a1c080c6fa8e567","sources":["package.json","src/lib/feed-fetcher.ts","src/lib/settings.ts","src/lib/supabase-server.ts","src/lib/article-repository.ts","src/lib/rsshub.ts","src/contexts/AuthContext.tsx","src/app/api/ai/summarize/route.ts","src/app/api/ai/translate/route.ts","src/components/ReaderView.tsx","supabase/migrations/20260113000000_schema.sql","scripts/run-api-e2e.sh","tests/e2e/db-available.ts"]}}},{"id":"ccbackup","repo":"ccbackup","title":"CCBackup","emoji":"💾","description":{"en":"Back up and restore your Claude Code configuration without the busywork.","zh":"备份与恢复 Claude Code 配置，省去重复整理的琐事。"},"category":"tools","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/ccbackup","subject":"Existing profile emoji","reference":false,"logo":{"kind":"emoji","original":"/logos/emoji/ccbackup.png","sourcePath":"nocoo/nocoo README.md — existing project emoji","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","modified":false,"width":1024,"height":1024,"bytes":200904,"sha256":"1bb8d48c887782be257b7221e84f16579cd775a9922b5c98a2b0bd32d598f2fa","thumbnail":"/logos/display/ccbackup-160.webp","display":"/logos/display/ccbackup-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Backup and restore Claude Code configuration files","repositoryRevision":"1fcc5e7abd926f2f34069299a40cae22191d7c8e"},"colors":{"primary":"#609acf","background":"transparent","ink":"#3f3f3f","palette":[{"color":"#609acf","role":"primary","source":"Existing profile emoji glyph, dominant colored pixels"},{"color":"transparent","role":"background","source":"Existing profile emoji glyph, transparent background"},{"color":"#4f4f4f","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#fbfaf8","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#adafaf","role":"accent","source":"Existing profile emoji glyph, sampled pixel"}]},"archived":true},{"id":"noheir","repo":"noheir","title":"Noheir","emoji":"💰","description":{"en":"A clear view of your money: income, spending, assets, and the bigger picture.","zh":"从收入、支出到资产，用一个清晰的视角理解自己的财务。"},"category":"everyday","website":"https://noheir.hexly.ai","websiteSource":"GitHub repository homepage","repository":"https://github.com/nocoo/noheir","subject":"Cow portrait","reference":false,"logo":{"kind":"original","original":"/logos/originals/noheir-family-2026-09-07-02-02.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/noheir/blob/5e32426a6044436eee5c6b2894910666896a8b49/logo.png","modified":false,"width":2048,"height":2048,"bytes":3801133,"sha256":"26d9720f81d6233909a9cffd5a791c62d7d3b46cb37da4875009d7ca875eaeff","thumbnail":"/logos/display/noheir-160.webp","display":"/logos/display/noheir-1024.webp"},"theme":{"background":{"value":"220 14% 94%","source":"src/app/globals.css --background"},"ink":{"value":"0 0% 12%","source":"src/app/globals.css --foreground"},"primary":{"value":"200 90% 55%","source":"src/app/globals.css --primary"}},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Recent Projects","description":"Personal finance tracker for income, expenses, and assets with dashboards","repositoryRevision":"5e32426a6044436eee5c6b2894910666896a8b49"},"colors":{"primary":"#25aff4","background":"#eeeff2","ink":"#1f1f1f","palette":[{"color":"#25aff4","role":"primary","source":"src/app/globals.css --primary: 200 90% 55%"},{"color":"#eeeff2","role":"background","source":"src/app/globals.css --background: 220 14% 94%"},{"color":"#b4642e","role":"accent","source":"Native noheir 61f13d785b85, sampled sRGB pixel (1032, 870); artwork/logo-family/noheir/2026-09-07-02/palette.json"},{"color":"#f1ddc3","role":"accent","source":"Native noheir 61f13d785b85, sampled sRGB pixel (683, 558); artwork/logo-family/noheir/2026-09-07-02/palette.json"},{"color":"#f29b8a","role":"accent","source":"Native noheir 61f13d785b85, sampled sRGB pixel (631, 1385); artwork/logo-family/noheir/2026-09-07-02/palette.json"}]},"archived":false,"family":{"id":"2026-09-07-02","finishing":"02","root":"/logos/family/noheir/2026-09-07-02/02","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/noheir/2026-09-07-02","model":"gpt-image-2","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"Copper and cream cow with complete horns, blue eyes, and a coral muzzle","zh":"铜棕与奶油色奶牛，完整保留牛角、蓝眼睛和珊瑚鼻尖"},"original":"/logos/family/noheir/2026-09-07-02/02/transparent.png","display":"/logos/family/noheir/2026-09-07-02/02/transparent-1024.webp","width":2048,"height":2048,"sha256":"26d9720f81d6233909a9cffd5a791c62d7d3b46cb37da4875009d7ca875eaeff"},"previous":{"original":"/logos/originals/noheir.png","sourceUrl":"https://github.com/nocoo/noheir/blob/1041610cf06562bb04911e39f4356690f6256f57/logo.png","width":2048,"height":2048,"sha256":"2ed854204cbc8801a253c10797de0ae73f45dc0b83508bd8cf4e1066eb9595bb"},"direction":[{"aspect":"composition","title":{"en":"A gentle three-quarter turn","zh":"温和的侧身回望"},"description":{"en":"The familiar face keeps both horns and ears clear. A short neck settles into a broad shoulder entering the lower-right frame, replacing the old internal bust cut.","zh":"熟悉的面孔保留完整牛角与耳朵，短颈自然连接宽厚肩部并从右下进入画框，替换原先画面内部的头像截断。"}},{"aspect":"drawing","title":{"en":"Warm patches and clear eyes","zh":"暖色斑块与清晰眼神"},"description":{"en":"Broad copper and cream facets preserve the cow’s expression, coral nose, and blue eyes. This framing repair retains the existing accents without adding accessories.","zh":"大块铜棕和奶油色面保留奶牛表情、珊瑚鼻尖和蓝眼睛；这次修复构图，沿用原有点缀而不增加配饰。"}},{"aspect":"presentation","title":{"en":"Quiet terraces","zh":"安静的梯田"},"description":{"en":"The retained muted green field uses unequal stepped contours and softly lit edges. Its cool color contrasts the warm animal while the finance app theme remains separate.","zh":"沿用柔和绿色底面、高低不一的阶梯轮廓与细亮边，以冷暖对比衬托奶牛；财务应用主题色单独保留。"}}],"palette":[{"color":"#638783","role":"background","label":{"en":"Quiet terraces","zh":"展示底色"},"source":"Selected Noheir presentation, 2026-09-07-02/02; background.base in archived settings.json"},{"color":"#b4642e","role":"primary","label":{"en":"Copper brown","zh":"铜棕"},"source":"Native noheir 61f13d785b85, sampled sRGB pixel (1032, 870); artwork/logo-family/noheir/2026-09-07-02/palette.json"},{"color":"#f1ddc3","role":"accent","label":{"en":"Cream blaze","zh":"奶油额纹"},"source":"Native noheir 61f13d785b85, sampled sRGB pixel (683, 558); artwork/logo-family/noheir/2026-09-07-02/palette.json"},{"color":"#f29b8a","role":"accent","label":{"en":"Coral muzzle","zh":"珊瑚鼻尖"},"source":"Native noheir 61f13d785b85, sampled sRGB pixel (631, 1385); artwork/logo-family/noheir/2026-09-07-02/palette.json"},{"color":"#586b7b","role":"accent","label":{"en":"Eye blue","zh":"眼睛蓝"},"source":"Native noheir 61f13d785b85, sampled sRGB pixel (1128, 869); artwork/logo-family/noheir/2026-09-07-02/palette.json"},{"color":"#713b28","role":"accent","label":{"en":"Chestnut","zh":"栗棕"},"source":"Native noheir 61f13d785b85, sampled sRGB pixel (1616, 1501); artwork/logo-family/noheir/2026-09-07-02/palette.json"}],"sizeNote":{"en":"The cream blaze, paired horns, and coral muzzle stay legible at 32 px. Smaller color planes merge at 16 px; transparent marks serve the sidebar and browser, while installed icons use the square presentation.","zh":"32 像素时，奶油额纹、双角与珊瑚鼻尖仍然清晰；16 像素时细小色面合并。侧栏和浏览器使用透明图，安装图标使用方形展示版本。"}},"overview":{"goal":{"en":"Organize personal transactions, accounts and capital to review cash flow, allocation, returns and availability dates.","zh":"整理个人收支、账户和存量资金，查看现金流、资金配置、收益与可用日期。"},"techStack":[{"name":"TypeScript","role":{"en":"Application and financial calculations","zh":"应用与财务计算"}},{"name":"Next.js","role":{"en":"Web pages, Server Actions and MCP endpoints","zh":"Web 页面、Server Actions 与 MCP 入口"}},{"name":"React","role":{"en":"Interactive finance views","zh":"财务交互界面"}},{"name":"Cloudflare Workers","role":{"en":"Business API and SQL access","zh":"业务 API 与 SQL 访问"}},{"name":"Cloudflare D1","role":{"en":"Financial records and user settings","zh":"财务记录与用户设置存储"}},{"name":"Drizzle ORM","role":{"en":"Database schema and repositories","zh":"数据模型与查询"}},{"name":"Auth.js","role":{"en":"Google sign-in and sessions","zh":"Google 登录与会话"}},{"name":"MCP SDK","role":{"en":"Authorized finance tools for clients","zh":"供客户端授权访问的财务工具"}},{"name":"Bun","role":{"en":"Development, HTTP tests and Docker runtime","zh":"开发、HTTP 测试与 Docker 运行时"}}],"verified":{"date":"2026-09-08","revision":"68d20b352d8873865f39d2da89e2d086fcb5e03d","sources":["package.json","worker/package.json","worker/wrangler.toml","worker/src/index.ts","worker/db/schema.ts","src/auth.ts","src/lib/navigation.ts","src/app/actions/import-actions.ts","src/app/actions/data-actions.ts","src/app/ai-insight/page.tsx","src/app/api/mcp/route.ts","src/lib/mcp/server.ts","scripts/run-e2e.ts","e2e/bdd/navigation.spec.ts",".github/workflows/release.yml","Dockerfile"]}}},{"id":"ipsafe","repo":"ipsafe","title":"IPSafe","emoji":"🛡️","description":{"en":"Check your network connection before letting a command run.","zh":"在执行命令之前，先确认网络连接符合预期。"},"category":"tools","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/ipsafe","subject":"A green network cable tester with a short patch lead","reference":false,"logo":{"kind":"original","original":"/logos/originals/ipsafe-family-2026-09-07-01-01.png","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/ipsafe/blob/d8a28afb9ed85d4f3d1627738415a863f82b3629/logo.png","modified":false,"width":2048,"height":2048,"bytes":3104822,"sha256":"1cad3a55e3b03e27cc3962351e72026af873120e5dcd0bfb8afe9b5fe65bc75b","thumbnail":"/logos/display/ipsafe-160.webp","display":"/logos/display/ipsafe-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"CLI Tools","description":"Validate network connectivity before executing commands `npm i -g ipsafe`","repositoryRevision":"d8a28afb9ed85d4f3d1627738415a863f82b3629"},"colors":{"primary":"#315040","background":"#bbd2c7","ink":"#722616","palette":[{"color":"#315040","role":"primary","source":"Native ipsafe 949f4e0683ee, sampled sRGB pixel (1523, 1416); artwork/logo-family/ipsafe/2026-09-07-01/palette.json"},{"color":"#bbd2c7","role":"background","source":"Adopted IPSafe presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#424646","source":"Native ipsafe 949f4e0683ee, sampled sRGB pixel (1474, 839); artwork/logo-family/ipsafe/2026-09-07-01/palette.json","role":"accent"},{"color":"#dcd1ba","source":"Native ipsafe 949f4e0683ee, sampled sRGB pixel (926, 316); artwork/logo-family/ipsafe/2026-09-07-01/palette.json","role":"accent"},{"color":"#64de0f","source":"Native ipsafe 949f4e0683ee, sampled sRGB pixel (1322, 1184); artwork/logo-family/ipsafe/2026-09-07-01/palette.json","role":"accent"}]},"archived":false,"family":{"id":"2026-09-07-01","series":"material","finishing":"01","root":"/logos/family/ipsafe/2026-09-07-01/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/ipsafe/2026-09-07-01","status":"adopted","updated":"2026-09-07","foreground":{"subject":{"en":"A green network cable tester with a short patch lead","zh":"带短跳线的绿色网线测试仪"},"original":"/logos/family/ipsafe/2026-09-07-01/01/transparent.png","display":"/logos/family/ipsafe/2026-09-07-01/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"1cad3a55e3b03e27cc3962351e72026af873120e5dcd0bfb8afe9b5fe65bc75b"},"previous":{"original":"/logos/emoji/ipsafe.png","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","width":1024,"height":1024,"sha256":"cfb96dff0fac916f28c150e67adb746fb6b5c6adbe54286f66e23095bb5c239d"},"direction":[{"aspect":"composition","title":{"en":"The connection passes","zh":"连接通过检测的一刻"},"description":{"en":"A compact cable tester holds a short patch lead close to two ports. Three small status lights identify a completed connectivity check before the next command.","zh":"紧凑网线测试仪用短跳线连接两端口，三颗小状态灯表现下一条命令执行前已经通过的连接检查。"}},{"aspect":"drawing","title":{"en":"Rubber, metal and cable","zh":"橡胶、金属与线缆"},"description":{"en":"Green molded rubber surrounds a brushed charcoal face. Opaque cream cable and smoky connectors remain physical; the large loop opening is transparent.","zh":"绿色模压橡胶包覆拉丝深灰面板，象牙色线缆与烟灰接头保留实体质感，大线圈镂空透明。"}},{"aspect":"presentation","title":{"en":"Connection lanes","zh":"连接通道"},"description":{"en":"Paired port rectangles, guarded chevron lanes and three short status bars in quiet mint paper. The field, grain and contact shadow are independent of transparent app marks.","zh":"薄荷色纸面上的成对端口、保护通道折线和三条状态短线。 底色、颗粒与接触阴影均独立于透明应用标记。"}}],"palette":[{"color":"#bbd2c7","role":"background","label":{"en":"Connection lanes","zh":"连接通道"},"source":"Adopted IPSafe presentation, 2026-09-07-01/01; background.base in archived settings.json"},{"color":"#315040","role":"primary","label":{"en":"Green bumper","zh":"绿色护边"},"source":"Native ipsafe 949f4e0683ee, sampled sRGB pixel (1523, 1416); artwork/logo-family/ipsafe/2026-09-07-01/palette.json"},{"color":"#424646","role":"accent","label":{"en":"Charcoal face","zh":"深灰面板"},"source":"Native ipsafe 949f4e0683ee, sampled sRGB pixel (1474, 839); artwork/logo-family/ipsafe/2026-09-07-01/palette.json"},{"color":"#dcd1ba","role":"accent","label":{"en":"Cream cable","zh":"象牙色线缆"},"source":"Native ipsafe 949f4e0683ee, sampled sRGB pixel (926, 316); artwork/logo-family/ipsafe/2026-09-07-01/palette.json"},{"color":"#64de0f","role":"accent","label":{"en":"Status green","zh":"状态绿色"},"source":"Native ipsafe 949f4e0683ee, sampled sRGB pixel (1322, 1184); artwork/logo-family/ipsafe/2026-09-07-01/palette.json"}],"sizeNote":{"en":"At 128/64 px, the dark tester and cream cable loop remain clear. At 32/24/16 px, the compact silhouette and dominant colors carry recognition; fine material detail, printed marks and background lines naturally merge.","zh":"128/64 px 能辨认深色测试仪与象牙色线圈；32/24/16 px 以紧凑轮廓和主色维持识别，精细材质、印记与背景线条自然合并。"},"model":"gpt-image-2"},"overview":{"goal":{"en":"Check that a configured URL returns a successful HTTP response and optionally matches response content before starting a command, with project or user configuration and reusable Node.js APIs.","zh":"在启动命令前，确认指定 URL 返回成功响应并按需匹配内容；支持项目或用户配置，以及可复用的 Node.js API。"},"techStack":[{"name":"JavaScript / Node.js","role":{"en":"CLI and CommonJS API","zh":"命令行与 CommonJS API"}},{"name":"node:http / node:https","role":{"en":"Pre-execution HTTP checks","zh":"执行前 HTTP 检查"}},{"name":"node:child_process","role":{"en":"Command execution and output","zh":"命令执行与输出"}},{"name":"JSON / node:fs","role":{"en":"Project and user configuration","zh":"项目与用户配置"}},{"name":"Vitest","role":{"en":"Unit and simulated CLI tests","zh":"单元与 CLI 模拟测试"}}],"verified":{"date":"2026-09-08","revision":"d8a28afb9ed85d4f3d1627738415a863f82b3629","sources":["package.json","index.js","bin/ipsafe.js","lib/ipsafe.js","lib/check-safe.js","integrations/claude-code.js","ipsafe.config.json","vitest.config.ts"]}}},{"id":"uptime-kuma-skill","repo":"uptime-kuma-skill","title":"Uptime Kuma Skill","emoji":"🩺","description":{"en":"Give your agent the ability to manage monitors, uptime, and SSL certificates.","zh":"让智能体检查和管理监控项、可用性与 SSL 证书。"},"category":"extensions","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/uptime-kuma-skill","subject":"Existing profile emoji","reference":false,"logo":{"kind":"emoji","original":"/logos/emoji/uptime-kuma-skill.png","sourcePath":"nocoo/nocoo README.md — existing project emoji","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","modified":false,"width":1024,"height":1024,"bytes":271935,"sha256":"c75d48ae2f8436464c2723a87ad0d74302df20d58c99d2c0199613fb89f63de5","thumbnail":"/logos/display/uptime-kuma-skill-160.webp","display":"/logos/display/uptime-kuma-skill-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Skills & MCP Servers","description":"Manage Uptime Kuma monitors — status, SSL certs, response times, and CRUD","repositoryRevision":"f7b8da6b479ed2b32dcd0da7388538e6ec48cf74"},"colors":{"primary":"#444444","background":"transparent","ink":"#2e2e2e","palette":[{"color":"#444444","role":"primary","source":"Existing profile emoji glyph, dominant colored pixels"},{"color":"transparent","role":"background","source":"Existing profile emoji glyph, transparent background"},{"color":"#8e8e8e","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#c1c9d7","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#f9f8f9","role":"accent","source":"Existing profile emoji glyph, sampled pixel"}]},"archived":true},{"id":"microsoft-teams-send-as-workflow","repo":"microsoft-teams-send-as-workflow","title":"Teams Workflow","emoji":"📨","description":{"en":"Send messages and Adaptive Cards to Microsoft Teams through webhooks.","zh":"通过 Webhook 向 Microsoft Teams 发送消息与自适应卡片。"},"category":"extensions","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/microsoft-teams-send-as-workflow","subject":"Existing profile emoji","reference":false,"logo":{"kind":"emoji","original":"/logos/emoji/microsoft-teams-send-as-workflow.png","sourcePath":"nocoo/nocoo README.md — existing project emoji","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","modified":false,"width":1024,"height":1024,"bytes":353526,"sha256":"21be414c56a91874f22465a71a82d605ceee5bcd180c3f4b940b1cab30a1687d","thumbnail":"/logos/display/microsoft-teams-send-as-workflow-160.webp","display":"/logos/display/microsoft-teams-send-as-workflow-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Skills & MCP Servers","description":"Send messages and Adaptive Cards to Teams via Webhook","repositoryRevision":"b2b0f10619dee34054d92b532613a23c036d4660"},"colors":{"primary":"#124e80","background":"transparent","ink":"#082a45","palette":[{"color":"#124e80","role":"primary","source":"Existing profile emoji glyph, dominant colored pixels"},{"color":"transparent","role":"background","source":"Existing profile emoji glyph, transparent background"},{"color":"#c4c7cf","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#eeeeee","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#3096ea","role":"accent","source":"Existing profile emoji glyph, sampled pixel"}]},"archived":true},{"id":"image-stitch","repo":"image-stitch","title":"Image Stitch","emoji":"🖼️","description":{"en":"Turn overlapping scrolling screenshots into one continuous image.","zh":"把有重叠区域的滚动截图，拼成一张连贯的长图。"},"category":"extensions","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/image-stitch","subject":"Existing profile emoji","reference":false,"logo":{"kind":"emoji","original":"/logos/emoji/image-stitch.png","sourcePath":"nocoo/nocoo README.md — existing project emoji","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","modified":false,"width":1024,"height":1024,"bytes":559822,"sha256":"a8577c72f3b0bd47fa19cbbbbedac3347c0bfb39960777b37a3fd32c45acf6f4","thumbnail":"/logos/display/image-stitch-160.webp","display":"/logos/display/image-stitch-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Skills & MCP Servers","description":"Seamlessly stitch multiple scrolling screenshots into a single image","repositoryRevision":"316ec44397c3446cb7c324040394bf056b1bd5d9"},"colors":{"primary":"#ddb42d","background":"transparent","ink":"#492404","palette":[{"color":"#ddb42d","role":"primary","source":"Existing profile emoji glyph, dominant colored pixels"},{"color":"transparent","role":"background","source":"Existing profile emoji glyph, transparent background"},{"color":"#61c02e","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#c4dbe5","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#a76c1a","role":"accent","source":"Existing profile emoji glyph, sampled pixel"}]},"archived":true},{"id":"skill-faster-whisper","repo":"skill-faster-whisper","title":"Faster Whisper","emoji":"🎙️","description":{"en":"Fast speech-to-text transcription, ready for your coding agent.","zh":"为编程智能体准备的快速语音转文字工具。"},"category":"extensions","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/skill-faster-whisper","subject":"Existing profile emoji","reference":false,"logo":{"kind":"emoji","original":"/logos/emoji/skill-faster-whisper.png","sourcePath":"nocoo/nocoo README.md — existing project emoji","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","modified":false,"width":1024,"height":1024,"bytes":518181,"sha256":"fe2151b4426e09c6d6b153580e4962f112b342bd01f5bab0b6d4ba83961ba4a6","thumbnail":"/logos/display/skill-faster-whisper-160.webp","display":"/logos/display/skill-faster-whisper-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Skills & MCP Servers","description":"Fast speech-to-text transcription powered by faster-whisper","repositoryRevision":"592776b2f841a7f026b72d36a06b0d75a792f524"},"colors":{"primary":"#bfd3f0","background":"transparent","ink":"#151413","palette":[{"color":"#bfd3f0","role":"primary","source":"Existing profile emoji glyph, dominant colored pixels"},{"color":"transparent","role":"background","source":"Existing profile emoji glyph, transparent background"},{"color":"#151413","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#bfd1e5","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#404041","role":"accent","source":"Existing profile emoji glyph, sampled pixel"}]},"archived":true},{"id":"skill-task-notifier","repo":"skill-task-notifier","title":"Task Notifier","emoji":"📨","description":{"en":"Keep track of running tasks and get notified when their status changes.","zh":"跟踪正在执行的任务，在状态变化时收到通知。"},"category":"extensions","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/skill-task-notifier","subject":"Existing profile emoji","reference":false,"logo":{"kind":"emoji","original":"/logos/emoji/skill-task-notifier.png","sourcePath":"nocoo/nocoo README.md — existing project emoji","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","modified":false,"width":1024,"height":1024,"bytes":353526,"sha256":"21be414c56a91874f22465a71a82d605ceee5bcd180c3f4b940b1cab30a1687d","thumbnail":"/logos/display/skill-task-notifier-160.webp","display":"/logos/display/skill-task-notifier-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Skills & MCP Servers","description":"Notification service for monitoring and alerting on task execution status","repositoryRevision":"a095190b42b95b14e3b692cc50bb7eba082e2299"},"colors":{"primary":"#124e80","background":"transparent","ink":"#082a45","palette":[{"color":"#124e80","role":"primary","source":"Existing profile emoji glyph, dominant colored pixels"},{"color":"transparent","role":"background","source":"Existing profile emoji glyph, transparent background"},{"color":"#c4c7cf","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#eeeeee","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#3096ea","role":"accent","source":"Existing profile emoji glyph, sampled pixel"}]},"archived":true},{"id":"mcp-work-history","repo":"mcp-work-history","title":"Work History MCP","emoji":"🤖","description":{"en":"A searchable record of your AI tools and the work they do.","zh":"记录 AI 工具的工作活动，留存可查询的历史和指标。"},"category":"extensions","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/mcp-work-history","subject":"Existing profile emoji","reference":false,"logo":{"kind":"emoji","original":"/logos/emoji/mcp-work-history.png","sourcePath":"nocoo/nocoo README.md — existing project emoji","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","modified":false,"width":1024,"height":1024,"bytes":384558,"sha256":"cd0c3ef6a10e2311e6b444336d336c93e8fa0b316dbd5175b0c133e944649c7b","thumbnail":"/logos/display/mcp-work-history-160.webp","display":"/logos/display/mcp-work-history-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Skills & MCP Servers","description":"MCP server for logging AI tool activities with metrics tracking","repositoryRevision":"cae3f14f4e3cccd588915b7f8b015d5bf9de08ce"},"colors":{"primary":"#2a788c","background":"transparent","ink":"#150e10","palette":[{"color":"#2a788c","role":"primary","source":"Existing profile emoji glyph, dominant colored pixels"},{"color":"transparent","role":"background","source":"Existing profile emoji glyph, transparent background"},{"color":"#daf3f4","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#11323a","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#719da7","role":"accent","source":"Existing profile emoji glyph, sampled pixel"}]},"archived":true},{"id":"mcp-make-sound","repo":"mcp-make-sound","title":"Make Sound MCP","emoji":"🔊","description":{"en":"Let your AI tools play system sounds on macOS.","zh":"让 AI 工具在 macOS 上播放系统提示音。"},"category":"extensions","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/mcp-make-sound","subject":"Existing profile emoji","reference":false,"logo":{"kind":"emoji","original":"/logos/emoji/mcp-make-sound.png","sourcePath":"nocoo/nocoo README.md — existing project emoji","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","modified":false,"width":1024,"height":1024,"bytes":574400,"sha256":"e351632c7148db3536754e8d5e7f63120b16097fa22dff75d4e1138845cfa0b8","thumbnail":"/logos/display/mcp-make-sound-160.webp","display":"/logos/display/mcp-make-sound-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Skills & MCP Servers","description":"MCP server that provides system sound playback for macOS","repositoryRevision":"d88c1157ed9b976836eb39b8487ff718cc1b3211"},"colors":{"primary":"#67d2ee","background":"transparent","ink":"#0d0c0c","palette":[{"color":"#67d2ee","role":"primary","source":"Existing profile emoji glyph, dominant colored pixels"},{"color":"transparent","role":"background","source":"Existing profile emoji glyph, transparent background"},{"color":"#0d0c0c","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#5b5d5e","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#a4b0bf","role":"accent","source":"Existing profile emoji glyph, sampled pixel"}]},"archived":true},{"id":"infoviz","repo":"infoviz","title":"InfoViz","emoji":"📊","description":{"en":"A lightweight JavaScript library for beautiful, interactive data visualizations.","zh":"轻量的 JavaScript 数据可视化库，用来制作交互式图表。"},"category":"archive","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/infoviz","subject":"Existing application mark","reference":false,"logo":{"kind":"original","original":"/logos/originals/infoviz.png","sourcePath":"images/infoviz_logo@2x.png","sourceUrl":"https://github.com/nocoo/infoviz/blob/dc41fd2d23ac9f82c998b3072758c09a86d9b004/images/infoviz_logo@2x.png","modified":false,"width":600,"height":207,"bytes":24045,"sha256":"6572c1eabfc4a5159cb71dcda4f70a5f2078fb88205ad40b77a604508d317f9c","thumbnail":"/logos/display/infoviz-160.webp","display":"/logos/display/infoviz-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Legacy Projects","description":"A lightweight JavaScript library for creating beautiful, interactive data visualizations","repositoryRevision":"dc41fd2d23ac9f82c998b3072758c09a86d9b004"},"colors":{"primary":"#104386","background":"transparent","ink":"#104386","palette":[{"color":"#104386","role":"primary","source":"Preserved project artwork, dominant colored pixels"},{"color":"transparent","role":"background","source":"Preserved project artwork, transparent background"},{"color":"#ed550a","role":"accent","source":"Preserved project artwork, sampled pixel"}]},"archived":true},{"id":"jsinst","repo":"jsinst","title":"JSInst","emoji":"⚡","description":{"en":"JavaScript instrumentation and performance analysis tools.","zh":"用于 JavaScript 代码插桩与性能分析的工具集。"},"category":"archive","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/jsinst","subject":"Existing profile emoji","reference":false,"logo":{"kind":"emoji","original":"/logos/emoji/jsinst.png","sourcePath":"nocoo/nocoo README.md — existing project emoji","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","modified":false,"width":1024,"height":1024,"bytes":187921,"sha256":"fc80f6fe41b78073d17d73637336fb95637e2f8c3e1796b75488cc819d76543a","thumbnail":"/logos/display/jsinst-160.webp","display":"/logos/display/jsinst-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Legacy Projects","description":"A JavaScript instrumentation and performance toolkit","repositoryRevision":"56dd9f140b1d79ab3ca9b4a9ad6c04098f9f4693"},"colors":{"primary":"#ff9d00","background":"transparent","ink":"#ff8f00","palette":[{"color":"#ff9d00","role":"primary","source":"Existing profile emoji glyph, dominant colored pixels"},{"color":"transparent","role":"background","source":"Existing profile emoji glyph, transparent background"},{"color":"#ffffdf","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#ffff84","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#ffdc24","role":"accent","source":"Existing profile emoji glyph, sampled pixel"}]},"archived":true},{"id":"infoviz-builder","repo":"infoviz-builder","title":"InfoViz Builder","emoji":"🛠️","description":{"en":"A visual workspace for building InfoViz charts.","zh":"通过可视化操作制作 InfoViz 图表的工作空间。"},"category":"archive","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/infoviz-builder","subject":"Existing application mark","reference":false,"logo":{"kind":"original","original":"/logos/originals/infoviz-builder.png","sourcePath":"public/images/infoviz_logo_small@2x.png","sourceUrl":"https://github.com/nocoo/infoviz-builder/blob/76a9d4e664141d51a0f8ca9eb3d6b397b8e17b9a/public/images/infoviz_logo_small@2x.png","modified":false,"width":200,"height":69,"bytes":7354,"sha256":"53537d273b2f8638e4715dc8c4c2ed12c9ccbf4b63c666289b06e21c0651d493","thumbnail":"/logos/display/infoviz-builder-160.webp","display":"/logos/display/infoviz-builder-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Legacy Projects","description":"Visual creator for InfoViz charts","repositoryRevision":"76a9d4e664141d51a0f8ca9eb3d6b397b8e17b9a"},"colors":{"primary":"#0f4386","background":"transparent","ink":"#0f4386","palette":[{"color":"#0f4386","role":"primary","source":"Preserved project artwork, dominant colored pixels"},{"color":"transparent","role":"background","source":"Preserved project artwork, transparent background"},{"color":"#ec540a","role":"accent","source":"Preserved project artwork, sampled pixel"}]},"archived":true},{"id":"nodehub","repo":"nodehub","title":"NodeHub","emoji":"🔌","description":{"en":"A central place for running and organizing Node.js services.","zh":"集中运行与组织 Node.js 服务的工具。"},"category":"archive","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/nodehub","subject":"Existing application mark","reference":false,"logo":{"kind":"original","original":"/logos/originals/nodehub.png","sourcePath":"public/assets/images/favicon.png","sourceUrl":"https://github.com/nocoo/nodehub/blob/9d9ba8f91c98d9eb7fce99226f9a2a40fad085dd/public/assets/images/favicon.png","modified":false,"width":1024,"height":1024,"bytes":220294,"sha256":"ccdffc2057cbd73eb24549cb97667542a99c6a7a5a34848359caa675ac6ec223","thumbnail":"/logos/display/nodehub-160.webp","display":"/logos/display/nodehub-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Legacy Projects","description":"A hub for Node.js services","repositoryRevision":"9d9ba8f91c98d9eb7fce99226f9a2a40fad085dd"},"colors":{"primary":"#d76b00","background":"#ff9933","ink":"#cb5f00","palette":[{"color":"#d76b00","role":"primary","source":"Preserved project artwork, dominant colored pixels"},{"color":"#ff9933","role":"background","source":"Preserved project artwork, border pixel"},{"color":"#ffffff","role":"accent","source":"Preserved project artwork, sampled pixel"},{"color":"#efc8a0","role":"accent","source":"Preserved project artwork, sampled pixel"}]},"archived":true},{"id":"huran-cc","repo":"huran.cc","title":"huran.cc","emoji":"🏠","description":{"en":"An art marketplace connecting artists, collectors, and the works they love.","zh":"连接艺术家与收藏者的艺术电商平台。"},"category":"archive","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/huran.cc","subject":"Existing application mark","reference":false,"logo":{"kind":"original","original":"/logos/originals/huran-cc.png","sourcePath":"public/images/hr-logo-2x.png","sourceUrl":"https://github.com/nocoo/huran.cc/blob/9085d193a00fc378fb3c54c1b740328e4cf000f7/public/images/hr-logo-2x.png","modified":false,"width":398,"height":150,"bytes":8618,"sha256":"91d20c9117ae3166c1e4e911c07717246966fb456ec10150af2deb379045f0c7","thumbnail":"/logos/display/huran-cc-160.webp","display":"/logos/display/huran-cc-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Legacy Projects","description":"Art e-commerce platform connecting artists with collectors","repositoryRevision":"9085d193a00fc378fb3c54c1b740328e4cf000f7"},"colors":{"primary":"#271b17","background":"transparent","ink":"#221715","palette":[{"color":"#271b17","role":"primary","source":"Preserved project artwork, dominant colored pixels"},{"color":"transparent","role":"background","source":"Preserved project artwork, transparent background"}]},"archived":true},{"id":"doc-doctor-com","repo":"doc-doctor.com","title":"Doc Doctor","emoji":"📄","description":{"en":"A platform for study-abroad writing, editing, and translation services.","zh":"为留学文书提供写作、润色与翻译服务的平台。"},"category":"archive","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/doc-doctor.com","subject":"Existing application mark","reference":false,"logo":{"kind":"original","original":"/logos/originals/doc-doctor-com.png","sourcePath":"public/favicon.png","sourceUrl":"https://github.com/nocoo/doc-doctor.com/blob/a6f0de28d2118aeb75bdbd40100ded26ec5ade74/public/favicon.png","modified":false,"width":128,"height":128,"bytes":2327,"sha256":"3df40dd3972a8ea4b85362b84a2c10d2f7fa20564d0aa1d7975a74ab4862b283","thumbnail":"/logos/display/doc-doctor-com-160.webp","display":"/logos/display/doc-doctor-com-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Legacy Projects","description":"Study abroad document service platform built with Node.js and Express","repositoryRevision":"a6f0de28d2118aeb75bdbd40100ded26ec5ade74"},"colors":{"primary":"#0094bd","background":"#0094bd","ink":"#0094bd","palette":[{"color":"#0094bd","role":"primary","source":"Preserved project artwork, dominant colored pixels"},{"color":"#0094bd","role":"background","source":"Preserved project artwork, border pixel"},{"color":"#f2f4f5","role":"accent","source":"Preserved project artwork, sampled pixel"},{"color":"#79c4d9","role":"accent","source":"Preserved project artwork, sampled pixel"},{"color":"#b6dce7","role":"accent","source":"Preserved project artwork, sampled pixel"}]},"archived":true},{"id":"nodeviz","repo":"nodeviz","title":"NodeViz","emoji":"🔧","description":{"en":"A visualization toolkit for Node.js.","zh":"面向 Node.js 的可视化工具集。"},"category":"archive","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/nodeviz","subject":"Existing profile emoji","reference":false,"logo":{"kind":"emoji","original":"/logos/emoji/nodeviz.png","sourcePath":"nocoo/nocoo README.md — existing project emoji","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","modified":false,"width":1024,"height":1024,"bytes":252854,"sha256":"dbc4c45f02f94a25b39420c913494fd648794706b0e46981cf81a0aa2e259c51","thumbnail":"/logos/display/nodeviz-160.webp","display":"/logos/display/nodeviz-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Legacy Projects","description":"Node.js visualization toolkit","repositoryRevision":"c768753b64e1c2872dee7a94ad13dc2ba832c3b0"},"colors":{"primary":"#b2d3ee","background":"transparent","ink":"#2c2b29","palette":[{"color":"#b2d3ee","role":"primary","source":"Existing profile emoji glyph, dominant colored pixels"},{"color":"transparent","role":"background","source":"Existing profile emoji glyph, transparent background"},{"color":"#97a4b4","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#625a56","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#303234","role":"accent","source":"Existing profile emoji glyph, sampled pixel"}]},"archived":true},{"id":"express-spa","repo":"express-spa","title":"Express SPA","emoji":"🌐","description":{"en":"An early exploration of single-page applications built on Express.js.","zh":"基于 Express.js 构建单页应用的一次早期探索。"},"category":"archive","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/express-spa","subject":"Existing profile emoji","reference":false,"logo":{"kind":"emoji","original":"/logos/emoji/express-spa.png","sourcePath":"nocoo/nocoo README.md — existing project emoji","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","modified":false,"width":1024,"height":1024,"bytes":509124,"sha256":"7c0923ee71d9cad5f78561072378c0a2e121a23db05528fbd62cc93b23fe2f26","thumbnail":"/logos/display/express-spa-160.webp","display":"/logos/display/express-spa-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Legacy Projects","description":"Single page web app approach based on Express.js","repositoryRevision":"69509718bcf11a191830d3f18485d05530ad5a97"},"colors":{"primary":"#5ba8c8","background":"transparent","ink":"#47859e","palette":[{"color":"#5ba8c8","role":"primary","source":"Existing profile emoji glyph, dominant colored pixels"},{"color":"transparent","role":"background","source":"Existing profile emoji glyph, transparent background"},{"color":"#84e8f4","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#c9ebfc","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#abbfc7","role":"accent","source":"Existing profile emoji glyph, sampled pixel"}]},"archived":true},{"id":"discuz-recovery","repo":"discuz-recovery","title":"Discuz Recovery","emoji":"🔧","description":{"en":"Bring old Discuz! forum posts back from their backups.","zh":"从旧备份中找回 Discuz! 论坛的帖子。"},"category":"archive","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/discuz-recovery","subject":"Existing profile emoji","reference":false,"logo":{"kind":"emoji","original":"/logos/emoji/discuz-recovery.png","sourcePath":"nocoo/nocoo README.md — existing project emoji","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","modified":false,"width":1024,"height":1024,"bytes":252854,"sha256":"dbc4c45f02f94a25b39420c913494fd648794706b0e46981cf81a0aa2e259c51","thumbnail":"/logos/display/discuz-recovery-160.webp","display":"/logos/display/discuz-recovery-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Legacy Projects","description":"Recovery Discuz! posts data from old backup","repositoryRevision":"0287558e963d757952a3d58d95a4fa2bff5580d8"},"colors":{"primary":"#b2d3ee","background":"transparent","ink":"#2c2b29","palette":[{"color":"#b2d3ee","role":"primary","source":"Existing profile emoji glyph, dominant colored pixels"},{"color":"transparent","role":"background","source":"Existing profile emoji glyph, transparent background"},{"color":"#97a4b4","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#625a56","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#303234","role":"accent","source":"Existing profile emoji glyph, sampled pixel"}]},"archived":true},{"id":"feedmaid","repo":"feedmaid","title":"Feedmaid","emoji":"📬","description":{"en":"Collect user feedback and explore it through a web interface.","zh":"收集用户反馈，并在网页中查看和整理。"},"category":"archive","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/feedmaid","subject":"Existing profile emoji","reference":false,"logo":{"kind":"emoji","original":"/logos/emoji/feedmaid.png","sourcePath":"nocoo/nocoo README.md — existing project emoji","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","modified":false,"width":1024,"height":1024,"bytes":335132,"sha256":"ad705222d130c788d2ad7decc43a79eb8a1f2e8e6c64a54fadfc8891f8101bc5","thumbnail":"/logos/display/feedmaid-160.webp","display":"/logos/display/feedmaid-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Legacy Projects","description":"An Express application which collects user feedback and visualizes them","repositoryRevision":"568a88fb3673866d533227e958a26c196163fb57"},"colors":{"primary":"#2a6b92","background":"transparent","ink":"#262729","palette":[{"color":"#2a6b92","role":"primary","source":"Existing profile emoji glyph, dominant colored pixels"},{"color":"transparent","role":"background","source":"Existing profile emoji glyph, transparent background"},{"color":"#262729","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#e3240d","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#8d8e8e","role":"accent","source":"Existing profile emoji glyph, sampled pixel"}]},"archived":true},{"id":"infoviz-ios","repo":"infoviz-ios","title":"InfoViz iOS","emoji":"📱","description":{"en":"InfoViz visualizations, brought to iOS.","zh":"把 InfoViz 数据可视化带到 iOS 上。"},"category":"archive","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/infoviz-ios","subject":"Existing application mark","reference":false,"logo":{"kind":"original","original":"/logos/originals/infoviz-ios.png","sourcePath":"www/images/infoviz_logo.png","sourceUrl":"https://github.com/nocoo/infoviz-ios/blob/ee531d46fb38177bc908c8b6a12ff344cb5c4d75/www/images/infoviz_logo.png","modified":false,"width":300,"height":103,"bytes":11382,"sha256":"56ce71863c1e9e493bf8da07654fd98107bc82c70150bd12311e4dc27d417934","thumbnail":"/logos/display/infoviz-ios-160.webp","display":"/logos/display/infoviz-ios-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Legacy Projects","description":"InfoViz on iOS","repositoryRevision":"ee531d46fb38177bc908c8b6a12ff344cb5c4d75"},"colors":{"primary":"#104285","background":"transparent","ink":"#104285","palette":[{"color":"#104285","role":"primary","source":"Preserved project artwork, dominant colored pixels"},{"color":"transparent","role":"background","source":"Preserved project artwork, transparent background"},{"color":"#ed550a","role":"accent","source":"Preserved project artwork, sampled pixel"}]},"archived":true},{"id":"node-image-uploader","repo":"node-image-uploader","title":"Image Uploader","emoji":"🖼️","description":{"en":"A small Node.js utility for uploading images.","zh":"一个用于上传图片的 Node.js 小工具。"},"category":"archive","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/node-image-uploader","subject":"Existing profile emoji","reference":false,"logo":{"kind":"emoji","original":"/logos/emoji/node-image-uploader.png","sourcePath":"nocoo/nocoo README.md — existing project emoji","sourceUrl":"https://github.com/nocoo/nocoo/blob/9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6/README.md","modified":false,"width":1024,"height":1024,"bytes":559822,"sha256":"a8577c72f3b0bd47fa19cbbbbedac3347c0bfb39960777b37a3fd32c45acf6f4","thumbnail":"/logos/display/node-image-uploader-160.webp","display":"/logos/display/node-image-uploader-1024.webp"},"theme":{},"source":{"profileRevision":"9a7ad63e1e96428f9dcd12214bcdbd470b3b51c6","profileSection":"Legacy Projects","description":"A Node.js image uploader utility","repositoryRevision":"e1fb7864d92d3bb48244a59809f30c700c00ca4b"},"colors":{"primary":"#ddb42d","background":"transparent","ink":"#492404","palette":[{"color":"#ddb42d","role":"primary","source":"Existing profile emoji glyph, dominant colored pixels"},{"color":"transparent","role":"background","source":"Existing profile emoji glyph, transparent background"},{"color":"#61c02e","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#c4dbe5","role":"accent","source":"Existing profile emoji glyph, sampled pixel"},{"color":"#a76c1a","role":"accent","source":"Existing profile emoji glyph, sampled pixel"}]},"archived":true},{"id":"clip","repo":"clip","title":"clip","emoji":"✂️","description":{"en":"Generate fully working CLIs from a clip.yaml schema, with built-in credential management","zh":"从 clip.yaml 生成可用的 CLI 工具，并集中管理 API 凭据与鉴权。"},"category":"tools","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/clip","subject":"Faceted brown ostrich in a feathered hat","reference":false,"archived":false,"logo":{"kind":"original","original":"/logos/originals/clip.png","thumbnail":"/logos/display/clip-160.webp","display":"/logos/display/clip-1024.webp","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/clip/blob/d5dcc44d769d5f5ebc08d47537684a9d34cb6a6c/logo.png","modified":false,"width":2048,"height":2048,"bytes":3160958,"sha256":"4892842297da37ebe701ad3c9d9713164b32879f1c8a93faf357e3feb5bd5009"},"theme":{"primary":{"value":"#6366f1","source":"packages/web/src/styles/global.css :root --color-accent"},"background":{"value":"#0a0a0b","source":"packages/web/src/styles/global.css :root --color-bg"},"ink":{"value":"#e4e4e7","source":"packages/web/src/styles/global.css :root --color-text"}},"colors":{"primary":"#6366f1","background":"#0a0a0b","ink":"#e4e4e7","palette":[{"color":"#6366f1","role":"primary","source":"packages/web/src/styles/global.css :root --color-accent"},{"color":"#0a0a0b","role":"background","source":"packages/web/src/styles/global.css :root --color-bg"},{"color":"#e4e4e7","role":"accent","source":"packages/web/src/styles/global.css :root --color-text"}]},"source":{"profileRevision":"880737d35ff74923cc0c96873fccf9e09ea5e569","profileSection":"Recent Projects","description":"Generate fully working CLIs from a clip.yaml schema, with built-in credential management","repositoryRevision":"d5dcc44d769d5f5ebc08d47537684a9d34cb6a6c"},"family":{"id":"2026-09-07-02","finishing":"01","root":"/logos/family/clip/2026-09-07-02/01","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/clip/2026-09-07-02","status":"review","updated":"2026-09-07","model":"gpt-image-2","foreground":{"subject":{"en":"An amber-eyed ostrich in a brown hat with one bright feather cluster","zh":"戴棕色宽檐帽的琥珀眼鸵鸟，帽上留一簇多彩羽毛"},"original":"/logos/family/clip/2026-09-07-02/01/transparent.png","display":"/logos/family/clip/2026-09-07-02/01/transparent-1024.webp","width":2048,"height":2048,"sha256":"3399eb7f9ed54899845c6d686ad3c498c253b369e61b8acee4e41fd161158983"},"previous":{"original":"/logos/originals/clip.png","sourceUrl":"https://github.com/nocoo/clip/blob/d5dcc44d769d5f5ebc08d47537684a9d34cb6a6c/logo.png","width":2048,"height":2048,"sha256":"4892842297da37ebe701ad3c9d9713164b32879f1c8a93faf357e3feb5bd5009"},"direction":[{"aspect":"composition","title":{"en":"A glance under the brim","zh":"帽檐下的回眸"},"description":{"en":"The original ostrich turns toward the left while its hat and feather spray balance the upper right. A close portrait keeps the face substantial; the natural neck continues through the bottom of the viewfinder. One uniform 90% placement gives the whole brim, beak and feather tips room inside the rounded tile.","zh":"沿用原来的鸵鸟，向左回眸，宽檐帽与羽毛在右上方平衡画面。近景保留饱满的面部，颈部自然延伸至取景框下沿；整体以 90% 等比放置，为帽檐、喙和羽尖留下圆角安全空间。"}},{"aspect":"drawing","title":{"en":"Warm facets, one feather spray","zh":"暖色碎片，一簇彩羽"},"description":{"en":"Connected sandstone, tan and cocoa planes carry the face, neck and brown hat. Amber eyes retain the familiar expression. Coral, turquoise, blue and violet gather in one attached feather cluster; the old satellite ornaments give way to this single accent.","zh":"砂岩、浅棕与可可色的连贯色块构成面部、颈部和棕帽，琥珀眼保留熟悉的神态。珊瑚、青蓝和紫色集中在帽上的一簇羽毛，原图分散的小装饰收拢为这一处兴趣点。"}},{"aspect":"presentation","title":{"en":"Windward feather relief","zh":"迎风羽纹"},"description":{"en":"Warm linen paper carries long curved quills and spaced feather barbs through the empty corners. Soft light and shallow contact shadows give the presentation depth while the transparent bird remains free of background, grain and shadow.","zh":"暖亚麻纸面在留白处铺开弯曲的羽轴与疏朗羽纹，柔光和浅接触阴影增加层次。透明鸵鸟独立保存，不含底纹、背景或阴影。"}}],"palette":[{"color":"#baae91","role":"background","label":{"en":"Windward feather relief","zh":"迎风羽纹"},"source":"Selected local presentation, clip/2026-09-07-02/01; background.base in archived settings.json"},{"color":"#df9457","role":"primary","label":{"en":"Golden leather","zh":"金棕皮革"},"source":"Native clip a1268bdaffd6, sampled sRGB pixel (820, 310); artwork/logo-family/clip/2026-09-07-02/palette.json"},{"color":"#b3977a","role":"accent","label":{"en":"Sandstone","zh":"砂岩色"},"source":"Native clip a1268bdaffd6, sampled sRGB pixel (1130, 1620); artwork/logo-family/clip/2026-09-07-02/palette.json"},{"color":"#542c1c","role":"accent","label":{"en":"Cocoa","zh":"可可色"},"source":"Native clip a1268bdaffd6, sampled sRGB pixel (1110, 500); artwork/logo-family/clip/2026-09-07-02/palette.json"},{"color":"#67b8db","role":"accent","label":{"en":"Feather blue","zh":"羽毛蓝"},"source":"Native clip a1268bdaffd6, sampled sRGB pixel (1470, 325); artwork/logo-family/clip/2026-09-07-02/palette.json"},{"color":"#ec3536","role":"accent","label":{"en":"Feather coral","zh":"羽毛珊瑚色"},"source":"Native clip a1268bdaffd6, sampled sRGB pixel (1330, 252); artwork/logo-family/clip/2026-09-07-02/palette.json"},{"color":"#aa438c","role":"accent","label":{"en":"Feather violet","zh":"羽毛紫"},"source":"Native clip a1268bdaffd6, sampled sRGB pixel (1650, 235); artwork/logo-family/clip/2026-09-07-02/palette.json"}],"sizeNote":{"en":"The brim, beak and colorful feather silhouette carry the 32/16 px mark; individual eye facets and feather divisions soften at favicon size. Small app and browser marks use the transparent portrait, including its intentional lower neck entry.","zh":"32/16 px 主要依靠帽檐、喙与彩羽轮廓识别，眼部色块和羽毛分片在 favicon 尺寸会合并。小型应用和浏览器标记使用透明头像，并保留自然的下沿颈部入画。"}},"overview":{"goal":{"en":"Turn an HTTP API definition in clip.yaml into an editable command-line client, with credentials stored separately for each tool.","zh":"将 clip.yaml 中的 HTTP API 定义转换为可编辑的命令行客户端，并按工具分别管理凭据。"},"techStack":[{"name":"Bun / TypeScript","role":{"en":"CLI runtime and code generation","zh":"CLI 运行环境与代码生成"}},{"name":"commander","role":{"en":"Generated commands and arguments","zh":"生成的命令与参数解析"}},{"name":"Zod / yaml","role":{"en":"Schema parsing and validation","zh":"Schema 解析与校验"}},{"name":"@nocoo/base-cli","role":{"en":"Browser login and local callback","zh":"浏览器登录与本机回调"}},{"name":"Hono","role":{"en":"Example and test APIs","zh":"示例与测试 API"}},{"name":"Astro","role":{"en":"Static documentation site","zh":"静态文档站"}}],"verified":{"date":"2026-09-08","revision":"071d10dd71f913814a47a68047265883642c851c","sources":["package.json","packages/cli/package.json","packages/cli/src/index.ts","packages/cli/src/schema/validator.ts","packages/cli/src/codegen/generator.ts","packages/cli/src/codegen/templates.ts","packages/cli/src/auth/storage.ts","packages/cli/src/commands/auth.ts","packages/cli/src/commands/install.ts","packages/cli/src/commands/test.ts","packages/web/package.json"]}}},{"id":"fundly","repo":"fundly","title":"Fundly","emoji":"🪴","description":{"en":"China mutual-fund browser and ranking tool with local SQLite and Railway","zh":"中国公募基金浏览与排名工具，采用本地 SQLite 存储并部署于 Railway。"},"category":"everyday","website":"https://fundly.hexly.ai","websiteSource":"GitHub repository homepage and docs/09-RAILWAY.md custom-domain table","repository":"https://github.com/nocoo/fundly","subject":"White flame on an orange rounded square","reference":false,"archived":false,"logo":{"kind":"original","original":"/logos/originals/fundly.svg","thumbnail":"/logos/display/fundly-160.webp","display":"/logos/display/fundly-1024.webp","sourcePath":"apps/web/public/logo.svg","sourceUrl":"https://github.com/nocoo/fundly/blob/6de762074e00011009f7604bbeeb7c0b04923c00/apps/web/public/logo.svg","modified":false,"width":32,"height":32,"bytes":456,"sha256":"08ec45808b94078caa2a31720da96adf9b9aadfdaf5498c98cfc0c2adc973bf8"},"theme":{"primary":{"value":"#e95d2b","source":"apps/web/src/globals.css :root --basalt-primary: 16 81% 54%, converted to sRGB"}},"colors":{"primary":"#e95d2b","background":"#e85d2a","ink":"#ffffff","palette":[{"color":"#e95d2b","role":"primary","source":"apps/web/src/globals.css :root --basalt-primary: 16 81% 54%, converted to sRGB"},{"color":"#e85d2a","role":"background","source":"apps/web/public/logo.svg background rect fill"},{"color":"#ffffff","role":"accent","source":"apps/web/public/logo.svg foreground path fill"}]},"source":{"profileRevision":"880737d35ff74923cc0c96873fccf9e09ea5e569","profileSection":"Recent Projects","description":"China mutual-fund browser and ranking tool with local SQLite and Railway","repositoryRevision":"6de762074e00011009f7604bbeeb7c0b04923c00"},"family":{"id":"2026-09-07-01","finishing":"02","root":"/logos/family/fundly/2026-09-07-01/02","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/fundly/2026-09-07-01","status":"review","updated":"2026-09-07","model":"gpt-image-2","foreground":{"subject":{"en":"A worldly navy-and-ivory penguin holding binoculars","zh":"手持望远镜、见多识广的深蓝与象牙白企鹅"},"original":"/logos/family/fundly/2026-09-07-01/02/transparent.png","display":"/logos/family/fundly/2026-09-07-01/02/transparent-1024.webp","width":2048,"height":2048,"sha256":"e45f5a9e9c062160d2ad91785f7ce9e9ddfb27b41362cfd89a539429b9fceb7f"},"previous":{"original":"/logos/originals/fundly.svg","sourceUrl":"https://github.com/nocoo/fundly/blob/6de762074e00011009f7604bbeeb7c0b04923c00/apps/web/public/logo.svg","width":32,"height":32,"sha256":"08ec45808b94078caa2a31720da96adf9b9aadfdaf5498c98cfc0c2adc973bf8"},"direction":[{"aspect":"composition","title":{"en":"Just after the sighting","zh":"刚刚看见远方"},"description":{"en":"A compact whole penguin has lowered its binoculars and turns with calm curiosity. The navy body sits to the right while the instrument reaches into the left-hand space. Complete feet and feather tips stay comfortably inside the rounded viewfinder.","zh":"企鹅刚放下望远镜，带着平静的好奇回望。完整而紧凑的身体偏右，望远镜伸向左侧留白；脚趾与羽尖均在圆角取景框内保留充分空间。"}},{"aspect":"drawing","title":{"en":"Navy planes, prismatic lenses","zh":"深蓝色块，棱彩镜片"},"description":{"en":"Broad connected navy and indigo facets contrast with an opaque warm-ivory face and bib. The flippers support one brass-and-teal binocular instrument. Its lens facets form the sole multicolored accent group without covering the eyes.","zh":"连贯的深蓝与靛蓝色块衬托暖象牙白面部和腹部。双鳍自然托着黄铜与青色望远镜，镜片中的彩色碎片构成唯一一组多彩兴趣点，双眼保持清晰。"}},{"aspect":"presentation","title":{"en":"Far-horizon sightlines","zh":"远望地平线"},"description":{"en":"Mineral-blue paper opens into broad horizon arcs and short sighting ticks. The curves follow the penguin’s gaze and remain visible beside the dark body. Grain and contact shadows are independent of the transparent foreground.","zh":"矿物蓝纸面铺开宽阔的地平线弧与简短瞄准刻线，顺着企鹅的视线延伸，在深色主体旁保持可见。颗粒和接触阴影与透明前景分别保存。"}}],"palette":[{"color":"#9aafbb","role":"background","label":{"en":"Far-horizon sightlines","zh":"远望地平线"},"source":"Selected local presentation, fundly/2026-09-07-01/02; background.base in archived settings.json"},{"color":"#192541","role":"primary","label":{"en":"Midnight navy","zh":"午夜深蓝"},"source":"Native fundly 967f052960b2, sampled sRGB pixel (1340, 214); artwork/logo-family/fundly/2026-09-07-01/palette.json"},{"color":"#27365c","role":"accent","label":{"en":"Indigo","zh":"靛蓝"},"source":"Native fundly 967f052960b2, sampled sRGB pixel (1520, 1100); artwork/logo-family/fundly/2026-09-07-01/palette.json"},{"color":"#dfd2b8","role":"accent","label":{"en":"Warm ivory","zh":"暖象牙白"},"source":"Native fundly 967f052960b2, sampled sRGB pixel (1180, 1280); artwork/logo-family/fundly/2026-09-07-01/palette.json"},{"color":"#80682e","role":"accent","label":{"en":"Aged brass","zh":"旧黄铜"},"source":"Native fundly 967f052960b2, sampled sRGB pixel (861, 1025); artwork/logo-family/fundly/2026-09-07-01/palette.json"},{"color":"#335866","role":"accent","label":{"en":"Binocular teal","zh":"望远镜青色"},"source":"Native fundly 967f052960b2, sampled sRGB pixel (908, 925); artwork/logo-family/fundly/2026-09-07-01/palette.json"},{"color":"#cb615f","role":"accent","label":{"en":"Lens coral","zh":"镜片珊瑚色"},"source":"Native fundly 967f052960b2, sampled sRGB pixel (1034, 1148); artwork/logo-family/fundly/2026-09-07-01/palette.json"}],"sizeNote":{"en":"The navy-and-ivory silhouette and lowered binoculars remain the main small-size cues. At 16 px the individual lens colors and eye facets merge. The 24 px sidebar and 16 px browser samples use the transparent penguin without its paper tile.","zh":"深蓝与象牙白轮廓、放下的望远镜是小尺寸下的主要识别点；16 px 时镜片彩色与眼部色块会合并。24 px 侧栏和 16 px 浏览器样例采用不带纸面底图的透明企鹅。"}},"overview":{"goal":{"en":"Collect fund and market data for private research into Chinese funds, ETFs, stocks, and macro conditions.","zh":"采集基金与市场数据，用于研究中国公募基金、ETF、股票与宏观环境。"},"techStack":[{"name":"TypeScript","role":{"en":"Collection, calculations, and application logic","zh":"采集、计算与应用逻辑"}},{"name":"Bun","role":{"en":"Collection scripts, HTTP server, and tests","zh":"采集脚本、HTTP 服务与测试"}},{"name":"SQLite","role":{"en":"Local market data and computed metrics","zh":"本地市场数据与计算指标"}},{"name":"React","role":{"en":"Research pages and charts","zh":"研究页面与图表"}},{"name":"Vite","role":{"en":"SPA development and build","zh":"SPA 开发与构建"}},{"name":"React Router","role":{"en":"Research-page navigation","zh":"研究页面导航"}},{"name":"Basalt","role":{"en":"Interface components","zh":"界面组件"}},{"name":"Tailwind CSS","role":{"en":"Interface styling","zh":"界面样式"}},{"name":"Recharts","role":{"en":"Market and product charts","zh":"市场与产品图表"}},{"name":"Hono","role":{"en":"Market, authentication, and backup APIs","zh":"行情、认证与备份 API"}},{"name":"jose","role":{"en":"OAuth state and session tokens","zh":"OAuth 状态与会话令牌"}},{"name":"Railway","role":{"en":"Bun hosting with a persistent data volume","zh":"Bun 服务与持久数据卷"}}],"verified":{"date":"2026-09-08","revision":"6de762074e00011009f7604bbeeb7c0b04923c00","sources":["package.json","apps/web/package.json","apps/worker/package.json","apps/web/src/lib/navigation.ts","apps/worker/scripts/app.ts","apps/worker/scripts/serve.ts","apps/worker/src/lib/auth-config.ts","apps/worker/src/lib/auth-routes.ts","apps/worker/src/lib/selection-service.ts","src/db/repo.ts","src/metrics/screen-4433.ts","src/metrics/select-score.ts","src/metrics/selection-calc.ts","scripts/refresh-select.ts","scripts/fetch-macro.ts","scripts/fetch-selection.ts","apps/web/vite.config.ts","Dockerfile","railway.toml"]}}},{"id":"dreamro","repo":"dreamro","title":"DreamRO","emoji":"🌸","description":{"en":"Nostalgic 3D browser RPG with 20 classes, three realms, and local saves","zh":"怀旧风格的 3D 网页角色扮演游戏，提供 20 种职业、三大区域和本地存档。"},"category":"games","website":"https://dreamro.hexly.ai","websiteSource":"GitHub repository homepage and README.md linked game preview","repository":"https://github.com/nocoo/dreamro","subject":"Gold compass star with a smaller sage star","reference":false,"archived":false,"logo":{"kind":"original","original":"/logos/originals/dreamro.png","thumbnail":"/logos/display/dreamro-160.webp","display":"/logos/display/dreamro-1024.webp","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/dreamro/blob/07185e854a59e320f8b2a45f6d50484186753c57/logo.png","modified":false,"width":512,"height":512,"bytes":17371,"sha256":"142e1c21c3e2efbfb5776114056756b9e7b3338dc0de2e24d620abeb48de3fbc"},"theme":{"primary":{"value":"#a98c57","source":"src/styles.css :root --gold"},"background":{"value":"#f4f1e5","source":"src/styles.css :root background"},"ink":{"value":"#4c5c51","source":"src/styles.css :root --ink"}},"colors":{"primary":"#a98c57","background":"#f4f1e5","ink":"#4c5c51","palette":[{"color":"#a98c57","role":"primary","source":"src/styles.css :root --gold"},{"color":"#f4f1e5","role":"background","source":"src/styles.css :root background"},{"color":"#4c5c51","role":"accent","source":"src/styles.css :root --ink"}]},"source":{"profileRevision":"880737d35ff74923cc0c96873fccf9e09ea5e569","profileSection":"Games","description":"Nostalgic 3D browser RPG with 20 classes, three realms, and local saves","repositoryRevision":"07185e854a59e320f8b2a45f6d50484186753c57"},"family":{"id":"2026-09-07-01","finishing":"02","root":"/logos/family/dreamro/2026-09-07-01/02","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/dreamro/2026-09-07-01","status":"review","updated":"2026-09-07","model":"gpt-image-2","foreground":{"subject":{"en":"A crafted shield behind a bow and arrow, sword and magic staff","zh":"盾牌在后，弓箭、长剑与魔法杖在前的精制武器徽记"},"original":"/logos/family/dreamro/2026-09-07-01/02/transparent.png","display":"/logos/family/dreamro/2026-09-07-01/02/transparent-1024.webp","width":2048,"height":2048,"sha256":"e25c8837590746aeab75cc9cd26e0cf10a6f1e03f0909e6b9db44b92e2951f52"},"previous":{"original":"/logos/originals/dreamro.png","sourceUrl":"https://github.com/nocoo/dreamro/blob/07185e854a59e320f8b2a45f6d50484186753c57/logo.png","width":512,"height":512,"sha256":"142e1c21c3e2efbfb5776114056756b9e7b3338dc0de2e24d620abeb48de3fbc"},"direction":[{"aspect":"composition","title":{"en":"One complete adventuring emblem","zh":"完整的冒险徽记"},"description":{"en":"A timber shield anchors the back of the composition. A curved bow and arrow, steel sword and gemstone staff overlap in front as one compact equipment assembly. A gentle product-camera perspective preserves every weapon tip and the shield’s complete rim.","zh":"木盾稳住后景，弓箭、钢剑与宝石法杖在前方交叠，组成紧凑的冒险装备徽记。温和的产品摄影视角保留每一处武器尖端与完整盾缘。"}},{"aspect":"drawing","title":{"en":"Timber, brass, steel and amethyst","zh":"木材、黄铜、钢与紫晶"},"description":{"en":"Weathered timber, engraved antique gold, wrapped leather and polished steel give each object a distinct physical surface. One violet gemstone catches the light above the staff. This game emblem follows the physical-object series with continuous material shading.","zh":"旧木、雕刻古金、缠绕皮革与抛光钢材各有明确质感，法杖顶部的紫晶接住高光。这枚游戏徽记采用拟物系列的连续材质明暗。"}},{"aspect":"presentation","title":{"en":"Parchment heraldic lattice","zh":"羊皮纸纹章格"},"description":{"en":"Pale parchment carries a fine interlaced lozenge lattice and small heraldic corner stitches. A separate projected shadow lifts the shield and weapons gently from the page. Bright metal highlights remain in the foreground; the paper and shadow remain independent.","zh":"浅羊皮纸铺有精细交织菱格与小型纹章角饰，独立的投影让盾牌和武器轻轻浮起。金属高光保留在前景，纸面与阴影各自独立。"}}],"palette":[{"color":"#dccfad","role":"background","label":{"en":"Parchment heraldic lattice","zh":"羊皮纸纹章格"},"source":"Selected local presentation, dreamro/2026-09-07-01/02; background.base in archived settings.json"},{"color":"#5c6456","role":"primary","label":{"en":"Forest timber","zh":"森林色木材"},"source":"Native dreamro 90e59a8dfbc8, sampled sRGB pixel (824, 656); artwork/logo-family/dreamro/2026-09-07-01/palette.json"},{"color":"#e3be8e","role":"accent","label":{"en":"Antique gold","zh":"古金色"},"source":"Native dreamro 90e59a8dfbc8, sampled sRGB pixel (994, 252); artwork/logo-family/dreamro/2026-09-07-01/palette.json"},{"color":"#e2dfdb","role":"accent","label":{"en":"Polished steel","zh":"抛光钢色"},"source":"Native dreamro 90e59a8dfbc8, sampled sRGB pixel (1200, 1050); artwork/logo-family/dreamro/2026-09-07-01/palette.json"},{"color":"#29170b","role":"accent","label":{"en":"Dark bow wood","zh":"深色弓木"},"source":"Native dreamro 90e59a8dfbc8, sampled sRGB pixel (285, 750); artwork/logo-family/dreamro/2026-09-07-01/palette.json"},{"color":"#382cbe","role":"accent","label":{"en":"Amethyst","zh":"紫晶色"},"source":"Native dreamro 90e59a8dfbc8, sampled sRGB pixel (1770, 480); artwork/logo-family/dreamro/2026-09-07-01/palette.json"},{"color":"#31221e","role":"accent","label":{"en":"Dark leather","zh":"深色皮革"},"source":"Native dreamro 90e59a8dfbc8, sampled sRGB pixel (495, 1170); artwork/logo-family/dreamro/2026-09-07-01/palette.json"}],"sizeNote":{"en":"The shield and crossing weapon silhouettes carry the 32/16 px identity; engraved metal, the bowstring and timber grain resolve mainly in larger views. Browser and sidebar marks use the transparent equipment assembly. Large presentations use the parchment tile.","zh":"32/16 px 依靠盾牌与交叠武器的轮廓识别；金属雕花、弓弦与木纹主要在大图中呈现。浏览器和侧栏使用透明装备组合，大幅展示使用羊皮纸底图。"},"series":"material"},"overview":{"goal":{"en":"Explore an RO-inspired single-player RPG in the browser, from character creation and quests to combat and local progress.","zh":"在浏览器中体验 RO 风格的单人 RPG，创建角色、探索地图、完成任务并保存进度。"},"techStack":[{"name":"TypeScript","role":{"en":"Game logic and interface","zh":"游戏逻辑与界面"}},{"name":"Three.js","role":{"en":"Procedural 3D characters, maps, and effects","zh":"程序化三维角色、地图与特效"}},{"name":"WebGL","role":{"en":"Browser 3D rendering","zh":"浏览器三维渲染"}},{"name":"Web Audio","role":{"en":"Synthesized music and sound effects","zh":"合成音乐与音效"}},{"name":"localStorage","role":{"en":"Per-character saves and preferences","zh":"各角色存档与偏好"}},{"name":"Vite","role":{"en":"Development and static builds","zh":"开发与静态构建"}},{"name":"Cloudflare Workers","role":{"en":"Static game hosting","zh":"游戏静态托管"}}],"verified":{"date":"2026-09-08","revision":"07185e854a59e320f8b2a45f6d50484186753c57","sources":["package.json","src/main.ts","src/data/jobs.ts","src/game/Game.ts","src/game/World.ts","src/game/Character.ts","src/game/Audio.ts","src/game/pathfinding.ts","src/game/state.ts","src/ui/HUD.ts","vite.config.ts","playwright.config.ts","wrangler.jsonc","CREDITS.md"]}}},{"id":"meowth","repo":"meowth","title":"Meowth","emoji":"🐱","description":{"en":"Local bridge for five coding-agent CLIs with HTTP control and a web dashboard","zh":"把五种本机编程 Agent CLI 接入统一 HTTP 服务，并提供网页管理面板。"},"category":"ai","website":null,"websiteSource":null,"repository":"https://github.com/nocoo/meowth","subject":"Multicolored faceted kitten with a bow tie and paw-print accents","reference":false,"archived":false,"logo":{"kind":"original","original":"/logos/originals/meowth.png","thumbnail":"/logos/display/meowth-160.webp","display":"/logos/display/meowth-1024.webp","sourcePath":"logo.png","sourceUrl":"https://github.com/nocoo/meowth/blob/15b4d902c71ec6184c7220f0fb50a29ca87e080d/logo.png","modified":false,"width":2048,"height":2048,"bytes":3003934,"sha256":"13c60445ab61a9c54831af5a185d5c137b95a3c9abb672793250ceef29c33541"},"theme":{"primary":{"value":"#3c83f6","source":"apps/dashboard/src/index.css :root --primary: 217 91% 60%, converted to sRGB"},"background":{"value":"#eeeff2","source":"apps/dashboard/src/index.css :root --background: 220 14% 94%, converted to sRGB"},"ink":{"value":"#1f1f1f","source":"apps/dashboard/src/index.css :root --foreground: 0 0% 12%, converted to sRGB"}},"colors":{"primary":"#3c83f6","background":"#eeeff2","ink":"#1f1f1f","palette":[{"color":"#3c83f6","role":"primary","source":"apps/dashboard/src/index.css :root --primary: 217 91% 60%, converted to sRGB"},{"color":"#eeeff2","role":"background","source":"apps/dashboard/src/index.css :root --background: 220 14% 94%, converted to sRGB"},{"color":"#1f1f1f","role":"accent","source":"apps/dashboard/src/index.css :root --foreground: 0 0% 12%, converted to sRGB"}]},"source":{"profileRevision":"880737d35ff74923cc0c96873fccf9e09ea5e569","profileSection":"Recent Projects","description":"Local bridge for five coding-agent CLIs with HTTP control and a web dashboard","repositoryRevision":"15b4d902c71ec6184c7220f0fb50a29ca87e080d"},"family":{"id":"2026-09-07-01","finishing":"02","root":"/logos/family/meowth/2026-09-07-01/02","archive":"https://github.com/nocoo/hexly.ai/tree/main/artwork/logo-family/meowth/2026-09-07-01","status":"review","updated":"2026-09-07","model":"gpt-image-2","foreground":{"subject":{"en":"A silver-blue American Shorthair head playing with one yarn loop","zh":"拨弄一圈彩色毛线的银蓝美短猫头像"},"original":"/logos/family/meowth/2026-09-07-01/02/transparent.png","display":"/logos/family/meowth/2026-09-07-01/02/transparent-1024.webp","width":2048,"height":2048,"sha256":"5d7236bab120c37ab93a929d182708bc1c07da14285925be50c95e868e6ec378"},"previous":{"original":"/logos/originals/meowth.png","sourceUrl":"https://github.com/nocoo/meowth/blob/15b4d902c71ec6184c7220f0fb50a29ca87e080d/logo.png","width":2048,"height":2048,"sha256":"13c60445ab61a9c54831af5a185d5c137b95a3c9abb672793250ceef29c33541"},"direction":[{"aspect":"composition","title":{"en":"A tilted head and a waiting paw","zh":"歪头与停住的小爪"},"description":{"en":"The American Shorthair tilts its large head toward a single yarn strand held by one natural paw. Unequal ear heights and the loop beside the cheek establish the offset moment. The complete faceted shoulder contour is uniformly inset with generous room around ears, whiskers and yarn.","zh":"美短把大脑袋歪向一根毛线，一只自然的小爪轻轻按住它。高低错落的双耳与脸旁线圈形成偏心瞬间，完整的肩部色块轮廓等比内收，为耳尖、胡须和毛线留出空间。"}},{"aspect":"drawing","title":{"en":"Silver tabby, one yarn gesture","zh":"银灰虎斑，一根彩线"},"description":{"en":"Silver, slate blue and warm ivory form the classic tabby markings through connected flat facets. Amber eyes keep the expression clear. Coral, gold, turquoise and violet stay together along one continuous yarn strand instead of spreading across the coat.","zh":"银灰、石板蓝和暖象牙白以连贯的平面碎片构成经典虎斑，琥珀眼保持神态清楚。珊瑚、金、青与紫集中在一根连续毛线上，不散落到毛色中。"}},{"aspect":"presentation","title":{"en":"Quiet yarn loops","zh":"安静的毛线回环"},"description":{"en":"Muted mauve paper carries broad looping relief in the empty corners, echoing the yarn’s action at lower contrast. Fine grain, broad light and shallow contact shadows add depth while keeping the silver portrait distinct from the background.","zh":"柔和灰紫纸面在角落留白处铺开宽阔回环，以较低对比呼应毛线动作。细颗粒、宽柔光和浅接触阴影增加层次，让银灰头像与背景清楚分开。"}}],"palette":[{"color":"#b5a6bb","role":"background","label":{"en":"Quiet yarn loops","zh":"轻绕毛线纹"},"source":"Selected local presentation, meowth/2026-09-07-01/02; background.base in archived settings.json"},{"color":"#4c6073","role":"primary","label":{"en":"Slate blue","zh":"石板蓝"},"source":"Native meowth 64e396c30a77, sampled sRGB pixel (1180, 680); artwork/logo-family/meowth/2026-09-07-01/palette.json"},{"color":"#bdc2cc","role":"accent","label":{"en":"Silver","zh":"银灰色"},"source":"Native meowth 64e396c30a77, sampled sRGB pixel (840, 710); artwork/logo-family/meowth/2026-09-07-01/palette.json"},{"color":"#e8ded4","role":"accent","label":{"en":"Warm ivory","zh":"暖象牙白"},"source":"Native meowth 64e396c30a77, sampled sRGB pixel (800, 1300); artwork/logo-family/meowth/2026-09-07-01/palette.json"},{"color":"#e3b265","role":"accent","label":{"en":"Amber eyes","zh":"琥珀眼"},"source":"Native meowth 64e396c30a77, sampled sRGB pixel (667, 930); artwork/logo-family/meowth/2026-09-07-01/palette.json"},{"color":"#2badb8","role":"accent","label":{"en":"Yarn turquoise","zh":"毛线青色"},"source":"Native meowth 64e396c30a77, sampled sRGB pixel (1740, 1390); artwork/logo-family/meowth/2026-09-07-01/palette.json"},{"color":"#f1958d","role":"accent","label":{"en":"Yarn coral","zh":"毛线珊瑚色"},"source":"Native meowth 64e396c30a77, sampled sRGB pixel (1650, 1220); artwork/logo-family/meowth/2026-09-07-01/palette.json"}],"sizeNote":{"en":"At 32/16 px the tilted ears, silver tabby mask and amber eyes carry recognition. Fine whiskers and the two bends of the single yarn strand simplify. Sidebar and favicon marks use the transparent cat; large views may use the mauve presentation.","zh":"32/16 px 主要通过歪斜的双耳、银灰虎斑脸与琥珀眼识别；细胡须和同一根毛线的两个弯折会简化。侧栏和 favicon 使用透明猫咪，大图可使用灰紫色底纹展示。"}},"overview":{"goal":{"en":"Run locally installed coding CLIs through one web console and HTTP API, with streaming output and a record of their sessions.","zh":"通过同一个网页控制台与 HTTP 接口调用本机 coding CLI，查看流式输出并保存会话记录。"},"techStack":[{"name":"Go / Chi","role":{"en":"Daemon, HTTP API and CLI subprocesses","zh":"daemon、HTTP 接口与 CLI 子进程"}},{"name":"SQLite / sqlc","role":{"en":"Local tokens, sessions and events","zh":"本地 token、会话与事件"}},{"name":"React / TypeScript / Vite","role":{"en":"Embedded dashboard","zh":"内嵌 Dashboard"}},{"name":"Basalt / Tailwind CSS","role":{"en":"Components, themes and styling","zh":"组件、主题与样式"}},{"name":"React Markdown / remark-gfm","role":{"en":"Chat and session content","zh":"聊天与会话内容展示"}},{"name":"pnpm / Turborepo","role":{"en":"Frontend workspaces and builds","zh":"前端工作区与构建"}}],"verified":{"date":"2026-09-08","revision":"803b5b59d3dd0f24a0ffaa5e896c76567a40c1d7","sources":["package.json","daemon/go.mod","daemon/cmd/meowthd/main.go","daemon/internal/agentfactory/agentfactory.go","daemon/internal/server/handlers/exec.go","daemon/internal/home/home.go","daemon/internal/remoteaccess/remoteaccess.go","daemon/internal/store/secret.go","apps/dashboard/package.json","apps/dashboard/vite.config.ts","apps/dashboard/src/models/chat.ts","apps/dashboard/src/lib/localStorage.ts","scripts/prepare-dashboard-embed.sh"]}}}]
