[{"data":1,"prerenderedAt":943},["ShallowReactive",2],{"navigation":3,"open-source-index":18},[4],{"title":5,"path":6,"stem":7,"children":8,"page":17},"Open Source","\u002Fopen-source","open-source",[9,13],{"title":10,"path":11,"stem":12},"Crisp","\u002Fopen-source\u002Fcrisp","open-source\u002Fcrisp",{"title":14,"path":15,"stem":16},"@weburz\u002Fparticle-canvas","\u002Fopen-source\u002Fparticle-canvas","open-source\u002Fparticle-canvas",false,[19,686],{"id":20,"title":14,"body":21,"description":667,"extension":668,"icon":669,"links":670,"meta":679,"navigation":166,"path":15,"seo":680,"stem":16,"tags":681,"__hash__":685},"openSource\u002Fopen-source\u002Fparticle-canvas.md",{"type":22,"value":23,"toc":660},"minimark",[24,35,45,50,53,79,83,99,259,263,266,542,552,556,637,643,647,657],[25,26,27,30,31,34],"p",{},[28,29,14],"code",{}," is a Nuxt 4 module that ships a drop-in\n",[28,32,33],{},"\u003CParticleCanvas \u002F>"," component for animated linked-particle backgrounds. Zero\nruntime dependencies, ~10 KB unminified (~3 KB gzipped), TypeScript-first.",[36,37,38],"blockquote",{},[25,39,40,44],{},[41,42,43],"strong",{},"Status: experimental."," Pre-1.0 — the API may shift between minor releases.",[46,47,49],"h2",{"id":48},"why-it-exists","Why it exists",[25,51,52],{},"Every marketing site we build ends up wanting a particle-y hero background.\nWe wanted something small, Nuxt-native, and SSR-safe — so we wrote one,\noptimized for the way we ship sites.",[54,55,56,63,66,73,76],"ul",{},[57,58,59,60,62],"li",{},"Auto-imported ",[28,61,33],{}," component",[57,64,65],{},"Zero runtime dependencies",[57,67,68,69,72],{},"SSR-safe — the engine runs only in the browser via a ",[28,70,71],{},"window"," guard",[57,74,75],{},"Linked-line constellations, hover\u002Fclick interactions, density-aware scaling",[57,77,78],{},"First-class TypeScript types",[46,80,82],{"id":81},"install","Install",[84,85,90],"pre",{"className":86,"code":87,"language":88,"meta":89,"style":89},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add @weburz\u002Fparticle-canvas\n","sh","",[28,91,92],{"__ignoreMap":89},[93,94,97],"span",{"class":95,"line":96},"line",1,[93,98,87],{},[84,100,104],{"className":101,"code":102,"language":103,"meta":89,"style":89},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F nuxt.config.ts\nexport default defineNuxtConfig({\n  modules: [\"@weburz\u002Fparticle-canvas\"],\n\n  particleCanvas: {\n    defaults: {\n      count: 100,\n      color: [\"#a3c4e0\", \"#ffd86b\"],\n    },\n  },\n});\n","ts",[28,105,106,112,134,161,168,179,189,203,235,241,247],{"__ignoreMap":89},[93,107,108],{"class":95,"line":96},[93,109,111],{"class":110},"sHwdD","\u002F\u002F nuxt.config.ts\n",[93,113,115,119,122,126,130],{"class":95,"line":114},2,[93,116,118],{"class":117},"s7zQu","export",[93,120,121],{"class":117}," default",[93,123,125],{"class":124},"s2Zo4"," defineNuxtConfig",[93,127,129],{"class":128},"sTEyZ","(",[93,131,133],{"class":132},"sMK4o","{\n",[93,135,137,141,144,147,150,153,155,158],{"class":95,"line":136},3,[93,138,140],{"class":139},"swJcz","  modules",[93,142,143],{"class":132},":",[93,145,146],{"class":128}," [",[93,148,149],{"class":132},"\"",[93,151,14],{"class":152},"sfazB",[93,154,149],{"class":132},[93,156,157],{"class":128},"]",[93,159,160],{"class":132},",\n",[93,162,164],{"class":95,"line":163},4,[93,165,167],{"emptyLinePlaceholder":166},true,"\n",[93,169,171,174,176],{"class":95,"line":170},5,[93,172,173],{"class":139},"  particleCanvas",[93,175,143],{"class":132},[93,177,178],{"class":132}," {\n",[93,180,182,185,187],{"class":95,"line":181},6,[93,183,184],{"class":139},"    defaults",[93,186,143],{"class":132},[93,188,178],{"class":132},[93,190,192,195,197,201],{"class":95,"line":191},7,[93,193,194],{"class":139},"      count",[93,196,143],{"class":132},[93,198,200],{"class":199},"sbssI"," 100",[93,202,160],{"class":132},[93,204,206,209,211,213,215,218,220,223,226,229,231,233],{"class":95,"line":205},8,[93,207,208],{"class":139},"      color",[93,210,143],{"class":132},[93,212,146],{"class":128},[93,214,149],{"class":132},[93,216,217],{"class":152},"#a3c4e0",[93,219,149],{"class":132},[93,221,222],{"class":132},",",[93,224,225],{"class":132}," \"",[93,227,228],{"class":152},"#ffd86b",[93,230,149],{"class":132},[93,232,157],{"class":128},[93,234,160],{"class":132},[93,236,238],{"class":95,"line":237},9,[93,239,240],{"class":132},"    },\n",[93,242,244],{"class":95,"line":243},10,[93,245,246],{"class":132},"  },\n",[93,248,250,253,256],{"class":95,"line":249},11,[93,251,252],{"class":132},"}",[93,254,255],{"class":128},")",[93,257,258],{"class":132},";\n",[46,260,262],{"id":261},"usage","Usage",[25,264,265],{},"Drop the component anywhere — it auto-imports:",[84,267,271],{"className":268,"code":269,"language":270,"meta":89,"style":89},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Ctemplate>\n  \u003Cdiv class=\"hero\">\n    \u003CParticleCanvas\n      :config=\"{\n        count: 150,\n        linked: {\n          enable: true,\n          distance: 140,\n          color: '#a3c4e0',\n          width: 1,\n          opacity: 0.4,\n        },\n      }\"\n    \u002F>\n    \u003Ch1>Hello\u003C\u002Fh1>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cstyle scoped>\n.hero {\n  position: relative;\n  height: 100vh;\n}\n.hero > :first-child {\n  position: absolute;\n  inset: 0;\n}\n\u003C\u002Fstyle>\n","vue",[28,272,273,284,308,316,327,332,337,342,347,352,357,362,368,377,383,404,414,423,428,441,452,466,479,485,503,515,528,533],{"__ignoreMap":89},[93,274,275,278,281],{"class":95,"line":96},[93,276,277],{"class":132},"\u003C",[93,279,280],{"class":139},"template",[93,282,283],{"class":132},">\n",[93,285,286,289,292,296,299,301,304,306],{"class":95,"line":114},[93,287,288],{"class":132},"  \u003C",[93,290,291],{"class":139},"div",[93,293,295],{"class":294},"spNyl"," class",[93,297,298],{"class":132},"=",[93,300,149],{"class":132},[93,302,303],{"class":152},"hero",[93,305,149],{"class":132},[93,307,283],{"class":132},[93,309,310,313],{"class":95,"line":136},[93,311,312],{"class":132},"    \u003C",[93,314,315],{"class":139},"ParticleCanvas\n",[93,317,318,321,323,325],{"class":95,"line":163},[93,319,320],{"class":294},"      :config",[93,322,298],{"class":132},[93,324,149],{"class":132},[93,326,133],{"class":152},[93,328,329],{"class":95,"line":170},[93,330,331],{"class":152},"        count: 150,\n",[93,333,334],{"class":95,"line":181},[93,335,336],{"class":152},"        linked: {\n",[93,338,339],{"class":95,"line":191},[93,340,341],{"class":152},"          enable: true,\n",[93,343,344],{"class":95,"line":205},[93,345,346],{"class":152},"          distance: 140,\n",[93,348,349],{"class":95,"line":237},[93,350,351],{"class":152},"          color: '#a3c4e0',\n",[93,353,354],{"class":95,"line":243},[93,355,356],{"class":152},"          width: 1,\n",[93,358,359],{"class":95,"line":249},[93,360,361],{"class":152},"          opacity: 0.4,\n",[93,363,365],{"class":95,"line":364},12,[93,366,367],{"class":152},"        },\n",[93,369,371,374],{"class":95,"line":370},13,[93,372,373],{"class":152},"      }",[93,375,376],{"class":132},"\"\n",[93,378,380],{"class":95,"line":379},14,[93,381,382],{"class":132},"    \u002F>\n",[93,384,386,388,391,394,397,400,402],{"class":95,"line":385},15,[93,387,312],{"class":132},[93,389,390],{"class":139},"h1",[93,392,393],{"class":132},">",[93,395,396],{"class":128},"Hello",[93,398,399],{"class":132},"\u003C\u002F",[93,401,390],{"class":139},[93,403,283],{"class":132},[93,405,407,410,412],{"class":95,"line":406},16,[93,408,409],{"class":132},"  \u003C\u002F",[93,411,291],{"class":139},[93,413,283],{"class":132},[93,415,417,419,421],{"class":95,"line":416},17,[93,418,399],{"class":132},[93,420,280],{"class":139},[93,422,283],{"class":132},[93,424,426],{"class":95,"line":425},18,[93,427,167],{"emptyLinePlaceholder":166},[93,429,431,433,436,439],{"class":95,"line":430},19,[93,432,277],{"class":132},[93,434,435],{"class":139},"style",[93,437,438],{"class":294}," scoped",[93,440,283],{"class":132},[93,442,444,447,450],{"class":95,"line":443},20,[93,445,446],{"class":132},".",[93,448,303],{"class":449},"sBMFI",[93,451,178],{"class":132},[93,453,455,459,461,464],{"class":95,"line":454},21,[93,456,458],{"class":457},"sqsOY","  position",[93,460,143],{"class":132},[93,462,463],{"class":128}," relative",[93,465,258],{"class":132},[93,467,469,472,474,477],{"class":95,"line":468},22,[93,470,471],{"class":457},"  height",[93,473,143],{"class":132},[93,475,476],{"class":199}," 100vh",[93,478,258],{"class":132},[93,480,482],{"class":95,"line":481},23,[93,483,484],{"class":132},"}\n",[93,486,488,490,492,495,498,501],{"class":95,"line":487},24,[93,489,446],{"class":132},[93,491,303],{"class":449},[93,493,494],{"class":132}," >",[93,496,497],{"class":132}," :",[93,499,500],{"class":294},"first-child",[93,502,178],{"class":132},[93,504,506,508,510,513],{"class":95,"line":505},25,[93,507,458],{"class":457},[93,509,143],{"class":132},[93,511,512],{"class":128}," absolute",[93,514,258],{"class":132},[93,516,518,521,523,526],{"class":95,"line":517},26,[93,519,520],{"class":457},"  inset",[93,522,143],{"class":132},[93,524,525],{"class":199}," 0",[93,527,258],{"class":132},[93,529,531],{"class":95,"line":530},27,[93,532,484],{"class":132},[93,534,536,538,540],{"class":95,"line":535},28,[93,537,399],{"class":132},[93,539,435],{"class":139},[93,541,283],{"class":132},[25,543,544,545,547,548,551],{},"The composable short-circuits when ",[28,546,71],{}," is undefined, so the engine never\nexecutes during SSR. The ",[28,549,550],{},"\u003Ccanvas>"," element renders identically on server and\nclient — no hydration mismatch.",[46,553,555],{"id":554},"module-options","Module options",[557,558,559,578],"table",{},[560,561,562],"thead",{},[563,564,565,569,572,575],"tr",{},[566,567,568],"th",{},"Option",[566,570,571],{},"Type",[566,573,574],{},"Default",[566,576,577],{},"Description",[579,580,581,610],"tbody",{},[563,582,583,589,594,599],{},[584,585,586],"td",{},[28,587,588],{},"defaults",[584,590,591],{},[28,592,593],{},"ParticleConfig",[584,595,596],{},[28,597,598],{},"{}",[584,600,601,602,605,606,609],{},"Config applied when ",[28,603,604],{},"\u003CParticleCanvas>"," is rendered without a ",[28,607,608],{},"config"," prop",[563,611,612,617,622,627],{},[584,613,614],{},[28,615,616],{},"prefix",[584,618,619],{},[28,620,621],{},"string",[584,623,624],{},[28,625,626],{},"\"\"",[584,628,629,630,633,634],{},"Component name prefix, e.g. ",[28,631,632],{},"\"Weburz\""," → ",[28,635,636],{},"\u003CWeburzParticleCanvas>",[25,638,639,640,642],{},"Full ",[28,641,593],{}," reference lives in the repo README — see below.",[46,644,646],{"id":645},"source","Source",[25,648,649,656],{},[650,651,655],"a",{"href":652,"rel":653},"https:\u002F\u002Fgithub.com\u002FWeburz\u002Fparticle-canvas",[654],"nofollow","github.com\u002FWeburz\u002Fparticle-canvas"," — MIT licensed.",[435,658,659],{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sqsOY, html code.shiki .sqsOY{--shiki-light:#8796B0;--shiki-default:#B2CCD6;--shiki-dark:#B2CCD6}",{"title":89,"searchDepth":96,"depth":114,"links":661},[662,663,664,665,666],{"id":48,"depth":114,"text":49},{"id":81,"depth":114,"text":82},{"id":261,"depth":114,"text":262},{"id":554,"depth":114,"text":555},{"id":645,"depth":114,"text":646},"Zero-dependency animated particle canvas for Nuxt 4 — drop-in \u003CParticleCanvas \u002F> component, ~10 KB.","md","i-simple-icons-nuxt",[671,675],{"label":672,"icon":673,"to":652,"target":674},"GitHub","i-simple-icons-github","_blank",{"label":676,"icon":677,"to":678,"target":674},"npm","i-simple-icons-npm","https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@weburz\u002Fparticle-canvas",{},{"title":14,"description":667},[682,683,684],"Nuxt","TypeScript","Canvas","j4w1YBLHRGVS2F1l_a8E4d76ZEHQTb5ehd3tb2fGEzg",{"id":687,"title":10,"body":688,"description":932,"extension":668,"icon":933,"links":934,"meta":936,"navigation":166,"path":11,"seo":937,"stem":12,"tags":938,"__hash__":942},"openSource\u002Fopen-source\u002Fcrisp.md",{"type":22,"value":689,"toc":926},[690,703,706,708,733,735,744,832,835,844,850,859,863,866,874,911,914,916,923],[25,691,692,693,698,699,702],{},"Crisp is a ",[650,694,697],{"href":695,"rel":696},"https:\u002F\u002Fwww.conventionalcommits.org",[654],"Conventional Commits"," linter\nfor ",[28,700,701],{},"git commit"," messages. It's a single Go binary — no Node toolchain, no\ndependency churn, no version-pin drama.",[25,704,705],{},"We built it because the JavaScript-ecosystem alternatives broke too often and\nwere heavyweight for what is a very small, very static problem: does this\ncommit message follow our convention or not.",[46,707,49],{"id":48},[709,710,711,717,723],"ol",{},[57,712,713,716],{},[41,714,715],{},"No Node dependency tree."," A commit-message linter is a 200ms one-shot\ntool. It shouldn't need to resolve a 300-package install graph to run.",[57,718,719,722],{},[41,720,721],{},"Opinionated and uniform."," One style across every Weburz repo, enforced\nthe same way on every machine.",[57,724,725,728,729,732],{},[41,726,727],{},"Easy to drop in."," A ",[28,730,731],{},"pre-commit"," hook entry and you're done.",[46,734,82],{"id":81},[25,736,737,738,143],{},"The recommended path is via ",[650,739,742],{"href":740,"rel":741},"https:\u002F\u002Fpre-commit.com",[654],[28,743,731],{},[84,745,749],{"className":746,"code":747,"language":748,"meta":89,"style":89},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# .pre-commit-config.yaml\nrepos:\n  - repo: https:\u002F\u002Fgithub.com\u002FWeburz\u002Fcrisp\n    rev: v1.0.0\n    hooks:\n      - id: crisp\n        stages: [commit-msg]\n        name: lint commit messages\n","yaml",[28,750,751,756,764,777,787,794,807,822],{"__ignoreMap":89},[93,752,753],{"class":95,"line":96},[93,754,755],{"class":110},"# .pre-commit-config.yaml\n",[93,757,758,761],{"class":95,"line":114},[93,759,760],{"class":139},"repos",[93,762,763],{"class":132},":\n",[93,765,766,769,772,774],{"class":95,"line":136},[93,767,768],{"class":132},"  -",[93,770,771],{"class":139}," repo",[93,773,143],{"class":132},[93,775,776],{"class":152}," https:\u002F\u002Fgithub.com\u002FWeburz\u002Fcrisp\n",[93,778,779,782,784],{"class":95,"line":163},[93,780,781],{"class":139},"    rev",[93,783,143],{"class":132},[93,785,786],{"class":152}," v1.0.0\n",[93,788,789,792],{"class":95,"line":170},[93,790,791],{"class":139},"    hooks",[93,793,763],{"class":132},[93,795,796,799,802,804],{"class":95,"line":181},[93,797,798],{"class":132},"      -",[93,800,801],{"class":139}," id",[93,803,143],{"class":132},[93,805,806],{"class":152}," crisp\n",[93,808,809,812,814,816,819],{"class":95,"line":191},[93,810,811],{"class":139},"        stages",[93,813,143],{"class":132},[93,815,146],{"class":132},[93,817,818],{"class":152},"commit-msg",[93,820,821],{"class":132},"]\n",[93,823,824,827,829],{"class":95,"line":205},[93,825,826],{"class":139},"        name",[93,828,143],{"class":132},[93,830,831],{"class":152}," lint commit messages\n",[25,833,834],{},"Then in your repo:",[84,836,838],{"className":86,"code":837,"language":88,"meta":89,"style":89},"pre-commit install --install-hooks\n",[28,839,840],{"__ignoreMap":89},[93,841,842],{"class":95,"line":96},[93,843,837],{},[25,845,846,847,849],{},"That's it. Every ",[28,848,701],{}," now runs Crisp against the message.",[25,851,852,853,858],{},"You can also grab the binary directly from the\n",[650,854,857],{"href":855,"rel":856},"https:\u002F\u002Fgithub.com\u002FWeburz\u002Fcrisp\u002Freleases",[654],"releases page"," and run it standalone.",[46,860,862],{"id":861},"what-it-checks","What it checks",[25,864,865],{},"Standard Conventional Commits format:",[84,867,872],{"className":868,"code":870,"language":871},[869],"language-text","\u003Ctype>(\u003Coptional scope>): \u003Cdescription>\n\n\u003Coptional body>\n\n\u003Coptional footer>\n","text",[28,873,870],{"__ignoreMap":89},[25,875,876,877,880,881,880,884,880,887,160,890,880,893,880,896,880,898,880,901,880,904,880,907,910],{},"Allowed types are the conventional set (",[28,878,879],{},"feat",", ",[28,882,883],{},"fix",[28,885,886],{},"chore",[28,888,889],{},"docs",[28,891,892],{},"refactor",[28,894,895],{},"test",[28,897,435],{},[28,899,900],{},"perf",[28,902,903],{},"build",[28,905,906],{},"ci",[28,908,909],{},"revert",").",[25,912,913],{},"Bad message → non-zero exit → commit blocked. Good message → silent pass.",[46,915,646],{"id":645},[25,917,918,656],{},[650,919,922],{"href":920,"rel":921},"https:\u002F\u002Fgithub.com\u002FWeburz\u002Fcrisp",[654],"github.com\u002FWeburz\u002Fcrisp",[435,924,925],{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":89,"searchDepth":96,"depth":114,"links":927},[928,929,930,931],{"id":48,"depth":114,"text":49},{"id":81,"depth":114,"text":82},{"id":861,"depth":114,"text":862},{"id":645,"depth":114,"text":646},"A no-nonsense Conventional Commits linter for Git, written in Go. Single binary, no Node required.","i-simple-icons-go",[935],{"label":672,"icon":673,"to":920,"target":674},{},{"title":10,"description":932},[939,940,941],"Go","Git","CLI","eNGsUWv77RCqYtbDxum3buMN9HNXOVlS8tS7qWDcgXk",1779552213236]