[{"data":1,"prerenderedAt":507},["ShallowReactive",2],{"\u002Fprojects\u002Fstreamdeck-scape":3,"github-\u002Fprojects\u002Fstreamdeck-scape":98,"skills":104},{"id":4,"title":5,"body":6,"description":70,"extension":71,"featured":72,"image":73,"languages":74,"links":81,"meta":87,"navigation":86,"path":88,"repo":89,"seo":90,"skills":93,"stem":96,"__hash__":97},"projects\u002Fprojects\u002Fstreamdeck-scape.md","Scape Battery",{"type":7,"value":8,"toc":64},"minimark",[9,13,16,21,24,27,61],[10,11,12],"p",{},"Das Fractal Design Scape ist ein tolles Wireless-Headset mit einem kuriosen Problem: Es gibt keine Desktop-Anzeige für den Akkustand. Der einzige offizielle Weg ist Fractals „Adjust\"-Web-App im Browser – für einen schnellen Blick auf die Batterie etwas viel Aufwand.",[10,14,15],{},"Also habe ich das Protokoll des 2,4-GHz-USB-Dongles genommen und ein Stream-Deck-Plugin gebaut, das den Akkustand dauerhaft auf einer Taste anzeigt – ganz ohne Hersteller-Software.",[17,18,20],"h3",{"id":19},"direkt-am-usb-dongle","Direkt am USB-Dongle",[10,22,23],{},"Das Plugin spricht per Raw-USB-HID dasselbe reverse-engineerte Protokoll wie Fractals eigene Web-App: alle 1,5 Sekunden ein Status-Poll plus der Keepalive-Heartbeat, den auch „Adjust\" sendet, und aus dem 64-Byte-Report werden Akkustand, Verbindung und Mic-Mute geparst.",[10,25,26],{},"Dabei steckt die meiste Arbeit in den Randfällen:",[28,29,30,38,44,55],"ul",{},[31,32,33,37],"li",{},[34,35,36],"strong",{},"Schlaf-Erkennung"," – ein Response-Timeout unterscheidet „Headset aus \u002F außer Reichweite\" von „verbunden\" und zeigt dann ein eigenes Sleep-Icon.",[31,39,40,43],{},[34,41,42],{},"Unplug-sicher"," – wird der Dongle gezogen, erkennt das Plugin das am HID-Fehler und re-enumeriert das Gerät automatisch, ohne dass das Stream Deck neu gestartet werden muss.",[31,45,46,49,50,54],{},[34,47,48],{},"Daemon-Fallback"," – weil HID-Verbindungen auf macOS exklusiv sind, bevorzugt das Plugin meinen lokalen ",[51,52,53],"code",{},"scaped","-Daemon als Quelle (WebSocket auf localhost) und fällt transparent auf direktes HID-Polling zurück, wenn er nicht läuft.",[31,56,57,60],{},[34,58,59],{},"Icons zur Laufzeit"," – 13 Batterie-Stufen werden mit Jimp live komponiert, mit frei wählbarer Hintergrundfarbe und eigenem Label pro Taste.",[10,62,63],{},"Das Plugin ist Teil eines kleinen „Scape-Ökosystems\", das ich mir gebaut habe: ein launchd-Daemon, der die eine HID-Verbindung besitzt und beim Andocken automatisch den Audio-Output umschaltet, plus eine Swift-Menubar-App für den Mac.",{"title":65,"searchDepth":66,"depth":66,"links":67},"",2,[68],{"id":19,"depth":69,"text":20},3,"Ein Stream-Deck-Plugin, das den Akkustand des Fractal Scape Headsets live anzeigt – per Reverse-Engineering direkt über USB-HID, ganz ohne Hersteller-Software.","md",false,"\u002Fimages\u002Fprojects\u002Fcards\u002Fstreamdeck-scape.png",[75,78],{"language":76,"percentage":77},"TypeScript",95,{"language":79,"percentage":80},"HTML",5,[82],{"label":83,"icon":84,"to":85,"external":86},"Github Projekt","i-mdi-github","https:\u002F\u002Fgithub.com\u002FNiki2k1\u002Fstreamdeck-scape-battery-plugin",true,{},"\u002Fprojects\u002Fstreamdeck-scape","Niki2k1\u002Fstreamdeck-scape-battery-plugin",{"title":91,"description":92},"Scape Battery – Stream-Deck-Plugin für das Fractal Scape","Scape Battery ist ein Stream-Deck-Plugin, das den Akkustand des Fractal Design Scape Headsets live auf einer Taste anzeigt – über das reverse-engineerte USB-HID-Protokoll des Dongles, ohne dass Hersteller-Software laufen muss.",[94,95],"typescript","node-js","projects\u002Fstreamdeck-scape","6cjnEH5EOJIVNO8eJAmTvogJt696BxPzA5I2owvD3MU",{"stars":99,"forks":99,"createdAt":100,"pushedAt":101,"commitCount":102,"activity":103},0,"2026-07-03T15:36:55Z","2026-07-03T17:21:40Z",8,[99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,102,99,99],[105,117,128,137,146,155,166,175,184,192,200,208,217,225,234,242,251,258,267,277,285,293,301,309,317,325,332,339,348,356,364,372,380,388,396,404,412,420,428,436,444,451,459,467,475,483,491,499],{"id":106,"category":107,"extension":108,"icon":109,"level":110,"meta":111,"name":112,"stem":113,"url":114,"year":115,"__hash__":116},"skills\u002Fskills\u002Fai-sdk.yml","Backend","yml","i-logos-vercel-icon","Familiar",{},"AI SDK","skills\u002Fai-sdk","https:\u002F\u002Fai-sdk.dev","2026","wrZ81rlAkAtAOUgPZ3O7XKZVo_ZA40usaRMX1x2QIqI",{"id":118,"category":119,"extension":108,"icon":120,"level":121,"meta":122,"name":123,"stem":124,"url":125,"year":126,"__hash__":127},"skills\u002Fskills\u002Fazure.yml","DevOps","i-logos-microsoft-azure","Proficient",{},"Azure","skills\u002Fazure","https:\u002F\u002Fazure.microsoft.com","2021","uhi9OV2kz1bgheQ-n9srKx0HSUYlYI7MuyjObYDUgrQ",{"id":129,"category":107,"extension":108,"icon":130,"level":121,"meta":131,"name":132,"stem":133,"url":134,"year":135,"__hash__":136},"skills\u002Fskills\u002Fbun.yml","i-logos-bun",{},"Bun","skills\u002Fbun","https:\u002F\u002Fbun.sh","2024","bkieq8AIp5NIJh3xetY96f7WfuFNjAMI7oevfWb1W-0",{"id":138,"category":139,"extension":108,"icon":140,"level":110,"meta":141,"name":142,"stem":143,"url":144,"year":115,"__hash__":145},"skills\u002Fskills\u002Fclaude-code.yml","Tooling","i-logos-claude-icon",{},"Claude Code","skills\u002Fclaude-code","https:\u002F\u002Fclaude.com\u002Fclaude-code","nq8UwiCtks6-HbLWOie3mLLRI_0FcRckcL4OK0btTzI",{"id":147,"category":119,"extension":108,"icon":148,"level":121,"meta":149,"name":150,"stem":151,"url":152,"year":153,"__hash__":154},"skills\u002Fskills\u002Fcoolify.yml","i-simple-icons-coolify",{},"Coolify","skills\u002Fcoolify","https:\u002F\u002Fcoolify.io","2023","uh7httXSb9SS1ggRLMKgfmPi2mgMtqNgSGUnSDHeAXk",{"id":156,"category":157,"extension":108,"icon":158,"level":159,"meta":160,"name":161,"stem":162,"url":163,"year":164,"__hash__":165},"skills\u002Fskills\u002Fcss.yml","Frontend","i-logos-css-3","Core",{},"CSS","skills\u002Fcss","https:\u002F\u002Fdeveloper.mozilla.org\u002Fdocs\u002FWeb\u002FCSS","2013","GLbnVt9JlmOE-RyFF0Pmh8QKVBKq-Qj-uXhgVZkMxBs",{"id":167,"category":107,"extension":108,"icon":168,"level":110,"meta":169,"name":170,"stem":171,"url":172,"year":173,"__hash__":174},"skills\u002Fskills\u002Fdeno.yml","i-logos-deno",{},"Deno","skills\u002Fdeno","https:\u002F\u002Fdeno.com","2022","8A31HmVc4GmvzZgLwJKLp_Km8w1T5q_vG3TVVtDOHnQ",{"id":176,"category":119,"extension":108,"icon":177,"level":159,"meta":178,"name":179,"stem":180,"url":181,"year":182,"__hash__":183},"skills\u002Fskills\u002Fdocker.yml","i-logos-docker-icon",{},"Docker","skills\u002Fdocker","https:\u002F\u002Fwww.docker.com","2018","uyfqCF9l6H7XsIozx1X-BUtL2KULygtDHq2cOZARNZ0",{"id":185,"category":107,"extension":108,"icon":186,"level":121,"meta":187,"name":188,"stem":189,"url":190,"year":153,"__hash__":191},"skills\u002Fskills\u002Fdrizzle-orm.yml","\u002Fimages\u002Fskills\u002Fdrizzle.png",{},"Drizzle ORM","skills\u002Fdrizzle-orm","https:\u002F\u002Form.drizzle.team","zWErcCRBV0E4HJ5FqPZd5-J3wK3j9Yw25nOgK2Qy5hw",{"id":193,"category":139,"extension":108,"icon":194,"level":110,"meta":195,"name":196,"stem":197,"url":198,"year":115,"__hash__":199},"skills\u002Fskills\u002Felectron.yml","i-logos-electron",{},"Electron","skills\u002Felectron","https:\u002F\u002Fwww.electronjs.org","fraXMojywwTj5bFfI5bkZhPnQV48uvu0gcmqTT5a4_U",{"id":201,"category":107,"extension":108,"icon":202,"level":121,"meta":203,"name":204,"stem":205,"url":206,"year":182,"__hash__":207},"skills\u002Fskills\u002Fexpress.yml","i-simple-icons-express",{},"Express","skills\u002Fexpress","https:\u002F\u002Fexpressjs.com","HDN_-ZUR4vI-cmgZ4yy84nm94T5rgkV3mr3PQjeBwe4",{"id":209,"category":139,"extension":108,"icon":210,"level":110,"meta":211,"name":212,"stem":213,"url":214,"year":215,"__hash__":216},"skills\u002Fskills\u002Fffmpeg.yml","i-logos-ffmpeg-icon",{},"ffmpeg","skills\u002Fffmpeg","https:\u002F\u002Fffmpeg.org","2020","ApV9_VXvOROhOvHzPYhx23qctHIqsAdUiIIvG6U8HeE",{"id":218,"category":139,"extension":108,"icon":219,"level":121,"meta":220,"name":221,"stem":222,"url":223,"year":126,"__hash__":224},"skills\u002Fskills\u002Ffigma.yml","i-logos-figma",{},"Figma","skills\u002Ffigma","https:\u002F\u002Fwww.figma.com","7YpzoWeTiTmAMs8PL1jIfpLLzHc028OaNC-k2XmWF7c",{"id":226,"category":227,"extension":108,"icon":228,"level":121,"meta":229,"name":230,"stem":231,"url":232,"year":215,"__hash__":233},"skills\u002Fskills\u002Ffirebase.yml","Data","i-logos-firebase",{},"Firebase","skills\u002Ffirebase","https:\u002F\u002Ffirebase.google.com","2BZXkjqAiQI7NcBh95AwkW55Kg9OYJcTd4g7BZlVyH8",{"id":235,"category":107,"extension":108,"icon":236,"level":159,"meta":237,"name":238,"stem":239,"url":240,"year":153,"__hash__":241},"skills\u002Fskills\u002Fgo.yml","i-logos-go",{},"Go","skills\u002Fgo","https:\u002F\u002Fgo.dev","jfqLu9ALZexHbFIxbNX4hXCa9YWsGQ_J879h7nG3Mwg",{"id":243,"category":119,"extension":108,"icon":244,"level":121,"meta":245,"name":246,"stem":247,"url":248,"year":249,"__hash__":250},"skills\u002Fskills\u002Fgrafana.yml","i-logos-grafana",{},"Grafana","skills\u002Fgrafana","https:\u002F\u002Fgrafana.com","2019","bAJDLy0__P9oiyY9zBlhcQLKAc6ijpLfODLoQFmcXRk",{"id":252,"category":157,"extension":108,"icon":253,"level":159,"meta":254,"name":79,"stem":255,"url":256,"year":164,"__hash__":257},"skills\u002Fskills\u002Fhtml.yml","i-logos-html-5",{},"skills\u002Fhtml","https:\u002F\u002Fdeveloper.mozilla.org\u002Fdocs\u002FWeb\u002FHTML","uKm-23PNdCtyRNJPSwsp0T81LlpZYyDem_nanppkV40",{"id":259,"category":157,"extension":108,"icon":260,"level":159,"meta":261,"name":262,"stem":263,"url":264,"year":265,"__hash__":266},"skills\u002Fskills\u002Fjavascript.yml","i-logos-javascript",{},"JavaScript","skills\u002Fjavascript","https:\u002F\u002Fdeveloper.mozilla.org\u002Fdocs\u002FWeb\u002FJavaScript","2017","IAVd2T2nFt-Keg7ky5OkJQv0XHXgH5Q6azMVo_EwOZc",{"id":268,"category":269,"extension":108,"icon":270,"level":110,"meta":271,"name":272,"stem":273,"url":274,"year":275,"__hash__":276},"skills\u002Fskills\u002Fk6.yml","Testing","i-simple-icons-k6",{},"k6","skills\u002Fk6","https:\u002F\u002Fk6.io","2025","9LQe3jOXpzWYeu4o8j4frNKF_kRfmU34bztg9h0iybs",{"id":278,"category":119,"extension":108,"icon":279,"level":121,"meta":280,"name":281,"stem":282,"url":283,"year":126,"__hash__":284},"skills\u002Fskills\u002Fkubernetes.yml","i-logos-kubernetes",{},"Kubernetes","skills\u002Fkubernetes","https:\u002F\u002Fkubernetes.io","QZKWLGxmYYLjqMaWXYElwW6LzZIhRiWviV7EqzTuf20",{"id":286,"category":119,"extension":108,"icon":287,"level":110,"meta":288,"name":289,"stem":290,"url":291,"year":275,"__hash__":292},"skills\u002Fskills\u002Floki.yml","\u002Fimages\u002Fskills\u002Floki.png",{},"Loki","skills\u002Floki","https:\u002F\u002Fgrafana.com\u002Foss\u002Floki","6XbX8pKz3kJ-UNj2sa0D5jiJpCuOjHZPHW6K0p9yc5c",{"id":294,"category":227,"extension":108,"icon":295,"level":121,"meta":296,"name":297,"stem":298,"url":299,"year":215,"__hash__":300},"skills\u002Fskills\u002Fmongodb.yml","i-logos-mongodb-icon",{},"MongoDB","skills\u002Fmongodb","https:\u002F\u002Fwww.mongodb.com","vAymZsawe3eHWefRddwCPUkOz4ENH0f27f3c7qoPaiU",{"id":302,"category":107,"extension":108,"icon":303,"level":121,"meta":304,"name":305,"stem":306,"url":307,"year":126,"__hash__":308},"skills\u002Fskills\u002Fnest.yml","i-logos-nestjs",{},"Nest","skills\u002Fnest","https:\u002F\u002Fnestjs.com","_k_OLI2yWacjZ6bnL_2SY5foR4PTtG05W754HMLaw84",{"id":310,"category":107,"extension":108,"icon":311,"level":159,"meta":312,"name":313,"stem":314,"url":315,"year":182,"__hash__":316},"skills\u002Fskills\u002Fnode-js.yml","i-logos-nodejs-icon",{},"Node.js","skills\u002Fnode-js","https:\u002F\u002Fnodejs.org","EDZpDGWxfyGs0KkLE0Lb99w_kAQ3M6Q7drthHbUYEY0",{"id":318,"category":157,"extension":108,"icon":319,"level":159,"meta":320,"name":321,"stem":322,"url":323,"year":173,"__hash__":324},"skills\u002Fskills\u002Fnuxt.yml","i-logos-nuxt-icon",{},"Nuxt","skills\u002Fnuxt","https:\u002F\u002Fnuxt.com","kH1NvQG2PGmpWgMoKRLQGjTCwFTGQmiXgMDGdRNAcOI",{"id":326,"category":157,"extension":108,"icon":319,"level":121,"meta":327,"name":328,"stem":329,"url":330,"year":135,"__hash__":331},"skills\u002Fskills\u002Fnuxt-content.yml",{},"Nuxt Content","skills\u002Fnuxt-content","https:\u002F\u002Fcontent.nuxt.com","RgsSePMO7r_6Hu61Hnfy5f4ll2ofq37vk0rJxmPjfg0",{"id":333,"category":157,"extension":108,"icon":319,"level":121,"meta":334,"name":335,"stem":336,"url":337,"year":135,"__hash__":338},"skills\u002Fskills\u002Fnuxt-ui.yml",{},"Nuxt UI","skills\u002Fnuxt-ui","https:\u002F\u002Fui.nuxt.com","e8h3Pmq1FaZ6dXccd_HW3_NTbNofuk5zfmn7_FmlBnU",{"id":340,"category":107,"extension":108,"icon":341,"level":110,"meta":342,"name":343,"stem":344,"url":345,"year":346,"__hash__":347},"skills\u002Fskills\u002Fphp.yml","i-logos-php",{},"PHP","skills\u002Fphp","https:\u002F\u002Fwww.php.net","2016","s1Q64crnDcVTJ7GDn-w43Gl5HMI8gYVM7AOWotWdEWc",{"id":349,"category":157,"extension":108,"icon":350,"level":121,"meta":351,"name":352,"stem":353,"url":354,"year":173,"__hash__":355},"skills\u002Fskills\u002Fpinia.yml","i-logos-pinia",{},"Pinia","skills\u002Fpinia","https:\u002F\u002Fpinia.vuejs.org","otf3EcrCxdIwH7CiBpeIxBI-K0pma63F5TzHHSN51IA",{"id":357,"category":269,"extension":108,"icon":358,"level":121,"meta":359,"name":360,"stem":361,"url":362,"year":135,"__hash__":363},"skills\u002Fskills\u002Fplaywright.yml","i-logos-playwright",{},"Playwright","skills\u002Fplaywright","https:\u002F\u002Fplaywright.dev","U-Tn8P9DTjsve7P0YEyG-yEgkuI9kLgoY3KIcnUZ8Qw",{"id":365,"category":227,"extension":108,"icon":366,"level":159,"meta":367,"name":368,"stem":369,"url":370,"year":135,"__hash__":371},"skills\u002Fskills\u002Fpostgres.yml","i-logos-postgresql",{},"Postgres","skills\u002Fpostgres","https:\u002F\u002Fwww.postgresql.org","SkbJBjm46QnLyVmsyIEO7LGDxT46TkJ5yLBcO-KOl3A",{"id":373,"category":107,"extension":108,"icon":374,"level":121,"meta":375,"name":376,"stem":377,"url":378,"year":153,"__hash__":379},"skills\u002Fskills\u002Fprisma.yml","i-logos-prisma",{},"Prisma","skills\u002Fprisma","https:\u002F\u002Fwww.prisma.io","q8u6bLwKxVNFZN18eMkhkkQW9KO1tzZzNCryalAhOQU",{"id":381,"category":119,"extension":108,"icon":382,"level":110,"meta":383,"name":384,"stem":385,"url":386,"year":275,"__hash__":387},"skills\u002Fskills\u002Fprometheus.yml","i-logos-prometheus",{},"Prometheus","skills\u002Fprometheus","https:\u002F\u002Fprometheus.io","wFPFPMT9NMAGyNakkGxpy1sdEZkiIYGD14Z-a9iSh7Y",{"id":389,"category":107,"extension":108,"icon":390,"level":110,"meta":391,"name":392,"stem":393,"url":394,"year":135,"__hash__":395},"skills\u002Fskills\u002Fpruvious.yml","\u002Fimages\u002Fskills\u002Fpruvious.svg",{},"Pruvious","skills\u002Fpruvious","https:\u002F\u002Fpruvious.com","OPpO35l5b9442tiQxW7FFq8LEVi8h2xGuNHgriT2UXM",{"id":397,"category":157,"extension":108,"icon":398,"level":121,"meta":399,"name":400,"stem":401,"url":402,"year":182,"__hash__":403},"skills\u002Fskills\u002Freact.yml","i-logos-react",{},"React","skills\u002Freact","https:\u002F\u002Freact.dev","0GbioLLfFPZRDh0rOzkolvqdcZFEEMKUh0_3lzOVaL4",{"id":405,"category":227,"extension":108,"icon":406,"level":121,"meta":407,"name":408,"stem":409,"url":410,"year":135,"__hash__":411},"skills\u002Fskills\u002Fsqlite.yml","i-logos-sqlite",{},"SQLite","skills\u002Fsqlite","https:\u002F\u002Fwww.sqlite.org","gHx-0xMVX6TE88ObCbbLoWfkLG1t3B_z6zSzT8m__fI",{"id":413,"category":107,"extension":108,"icon":414,"level":121,"meta":415,"name":416,"stem":417,"url":418,"year":153,"__hash__":419},"skills\u002Fskills\u002Fstripe.yml","i-logos-stripe",{},"Stripe","skills\u002Fstripe","https:\u002F\u002Fstripe.com","UGj0EO6yOfztwtcQ_wMiqUU1UYgTLbB5jxl9e-asFpA",{"id":421,"category":157,"extension":108,"icon":422,"level":159,"meta":423,"name":424,"stem":425,"url":426,"year":153,"__hash__":427},"skills\u002Fskills\u002Ftailwind.yml","i-logos-tailwindcss-icon",{},"Tailwind","skills\u002Ftailwind","https:\u002F\u002Ftailwindcss.com","VkKWaTtKA70dUgAsMIDKN8N94TH1MsU8-b1kPUx-Wq8",{"id":429,"category":157,"extension":108,"icon":430,"level":110,"meta":431,"name":432,"stem":433,"url":434,"year":275,"__hash__":435},"skills\u002Fskills\u002Ftiptap.yml","i-custom-tiptap",{},"Tiptap","skills\u002Ftiptap","https:\u002F\u002Ftiptap.dev","gBw3cx61wA-4kZNeChkBoB38Z2aS7Y5P7_ufagI8BSU",{"id":437,"category":119,"extension":108,"icon":438,"level":110,"meta":439,"name":440,"stem":441,"url":442,"year":153,"__hash__":443},"skills\u002Fskills\u002Ftraefik.yml","i-simple-icons-traefikproxy",{},"Traefik","skills\u002Ftraefik","https:\u002F\u002Ftraefik.io","o-rECQEfSq4kbulKrfx14EeER1PTEYFavnEQHhAuaBw",{"id":445,"category":157,"extension":108,"icon":446,"level":159,"meta":447,"name":76,"stem":448,"url":449,"year":249,"__hash__":450},"skills\u002Fskills\u002Ftypescript.yml","i-logos-typescript-icon",{},"skills\u002Ftypescript","https:\u002F\u002Fwww.typescriptlang.org","C6S0SKAC_EKz2ITnMm4hCCUKG2P5KsOfbGXqMzFI-EY",{"id":452,"category":139,"extension":108,"icon":453,"level":121,"meta":454,"name":455,"stem":456,"url":457,"year":173,"__hash__":458},"skills\u002Fskills\u002Fvite.yml","i-logos-vitejs",{},"Vite","skills\u002Fvite","https:\u002F\u002Fvite.dev","TpxW7LK8p6-A-XypTE_uBmHo2vAWbB_1Zy8pSt8Ih8A",{"id":460,"category":269,"extension":108,"icon":461,"level":121,"meta":462,"name":463,"stem":464,"url":465,"year":153,"__hash__":466},"skills\u002Fskills\u002Fvitest.yml","i-logos-vitest",{},"Vitest","skills\u002Fvitest","https:\u002F\u002Fvitest.dev","IS5nla0e3iC4ACuhoQjqBEdsXwdYY2WRZ118YrtMNHg",{"id":468,"category":157,"extension":108,"icon":469,"level":159,"meta":470,"name":471,"stem":472,"url":473,"year":249,"__hash__":474},"skills\u002Fskills\u002Fvue.yml","i-logos-vue",{},"Vue","skills\u002Fvue","https:\u002F\u002Fvuejs.org","F0ztv5f98yIVCbyfDGbwlJ22KROp3yL3Izjp0VBWlAU",{"id":476,"category":157,"extension":108,"icon":477,"level":110,"meta":478,"name":479,"stem":480,"url":481,"year":126,"__hash__":482},"skills\u002Fskills\u002Fvuetify.yml","i-logos-vuetifyjs",{},"Vuetify","skills\u002Fvuetify","https:\u002F\u002Fvuetifyjs.com","g2xXVDYSXlGLfnyLDkx3zPBVc3BCYEiGx5Ilh5-pTT4",{"id":484,"category":157,"extension":108,"icon":485,"level":121,"meta":486,"name":487,"stem":488,"url":489,"year":153,"__hash__":490},"skills\u002Fskills\u002Fvueuse.yml","i-logos-vueuse",{},"VueUse","skills\u002Fvueuse","https:\u002F\u002Fvueuse.org","-6U_Vo_7APwR3Oo6rLI2mWO_Emse0aAoL1vL4noxZEk",{"id":492,"category":139,"extension":108,"icon":493,"level":121,"meta":494,"name":495,"stem":496,"url":497,"year":153,"__hash__":498},"skills\u002Fskills\u002Fwhisper.yml","i-simple-icons-openai",{},"Whisper","skills\u002Fwhisper","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fwhisper","KtdfiQb3uVjd4DFgV3SN8y6xCAu-eP81lC8nH3NM0S8",{"id":500,"category":107,"extension":108,"icon":501,"level":121,"meta":502,"name":503,"stem":504,"url":505,"year":153,"__hash__":506},"skills\u002Fskills\u002Fzod.yml","i-logos-zod",{},"Zod","skills\u002Fzod","https:\u002F\u002Fzod.dev","DLk6ZAEEgRjsJqbGw9uXcZmhZaVQZj7gSbhWpolBDNk",1784578080523]