Compare commits

...
26 Commits
Author SHA1 Message Date
dualfroz 115ad48eaf chore: refresh readme stats 2026-10-29 00:20:13 +01:00
dualfroz 858b15ab9d chore: refresh readme stats 2026-10-28 00:20:12 +01:00
dualfroz 0f16ed6f6d chore: refresh readme stats 2026-10-27 20:41:28 +01:00
dualfroz 22a29c7a63 data: Godot merged, out of the approved list 2026-10-27 20:41:27 +01:00
dualfroz 6a2dc0135f chore: refresh readme stats 2026-10-27 08:12:16 +01:00
dualfroz d329665483 feat: contributions beyond GitHub at the top of the open source section, refresh from the server instead of Actions 2026-10-27 07:40:55 +01:00
dualfroz dae8333029 ci: refresh readme stats every 6 hours 2026-10-27 07:40:55 +01:00
dualfroz dddc315b03 fix: retry ghapi requests and leave the readme untouched when the api fails 2026-10-27 07:40:55 +01:00
dualfroz 8ce0c99556 chore: refresh readme stats 2026-10-27 07:34:55 +01:00
dualfroz 9b71e79b8b chore: drop comment from the readme stats script 2026-10-26 01:52:20 +01:00
dualfroz 4dd2e5dff3 fix: take projects, open source totals and lines of code from the same sources as vulcode.com 2026-10-25 23:28:10 +01:00
github-actions[bot] b892c04379 chore: refresh readme stats 2026-10-19 09:56:32 +00:00
github-actions[bot] b047846177 chore: refresh readme stats 2026-10-18 08:52:14 +00:00
github-actions[bot] 458946f6bd chore: refresh readme stats 2026-10-17 08:35:34 +00:00
github-actions[bot] cee8efb60c chore: refresh readme stats 2026-10-16 09:03:10 +00:00
github-actions[bot] c365726b48 chore: refresh readme stats 2026-10-15 09:10:12 +00:00
github-actions[bot] 635c65995f chore: refresh readme stats 2026-10-14 09:32:53 +00:00
github-actions[bot] 40d21c6f64 chore: refresh readme stats 2026-10-13 11:50:26 +00:00
github-actions[bot] 4e1c1ba29b chore: refresh readme stats 2026-10-12 12:03:00 +00:00
github-actions[bot] 60f81a6d0a chore: refresh readme stats 2026-10-11 10:50:36 +00:00
github-actions[bot] 7a8aa36ce2 chore: refresh readme stats 2026-10-10 10:38:02 +00:00
github-actions[bot] 150304ea22 chore: refresh readme stats 2026-10-09 11:20:46 +00:00
github-actions[bot] b831538d10 chore: refresh readme stats 2026-10-08 11:23:48 +00:00
github-actions[bot] 1d73421d97 chore: refresh readme stats 2026-10-07 11:06:03 +00:00
github-actions[bot] dc82565fa2 chore: refresh readme stats 2026-10-06 11:18:00 +00:00
dualfroz 95a289d54f Merge pull request #1 from VulCodeCom/chore/fresh-stats
Fresh numbers in the org profile, generated from ghapi
2026-10-05 15:41:20 +02:00
9 changed files with 936 additions and 354 deletions

No files matched your search

-24
View File
@@ -1,24 +0,0 @@
name: stats
on:
schedule:
- cron: "17 4 * * *"
workflow_dispatch:
permissions:
contents: write
jobs:
refresh:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Refresh numbers from ghapi
run: python3 scripts/update_readme_stats.py
- name: Commit when something changed
run: |
if git diff --quiet; then exit 0; fi
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git commit -am "chore: refresh readme stats"
git push
+110 -64
View File
@@ -17,7 +17,7 @@
<br>
VulCode is a Polish software house with years of experience. Since 2020 we have delivered high-quality software and written more than **5 million lines of code** across **200+ projects**. We also contributed to **53 open source repositories** with **410,000+ combined stars** on GitHub. We specialize in websites, panels and dashboards, and applications, as well as building scalable platforms, and we actively contribute to dozens of open source projects.
VulCode is a Polish software house with years of experience. Since 2020 we have delivered high-quality software and written more than **6 million lines of code** across **150+ projects**. We also contributed to **82 open source repositories** with **1,300,000+ combined stars** on GitHub. We specialize in websites, panels and dashboards, and applications, as well as building scalable platforms, and we actively contribute to dozens of open source projects.
## 🧩 What we do
@@ -110,22 +110,22 @@ A transparent, 7-step process from first call to production support:
<!-- stats:summary -->
<table>
<tr>
<td align="center" colspan="2" width="50%"><h3>5,994,022</h3>lines of code</td>
<td align="center" width="25%"><h3>23,830</h3>commits</td>
<td align="center" width="25%"><h3>200+</h3>projects</td>
<td align="center" colspan="2" width="50%"><h3>6,399,947</h3>lines of code</td>
<td align="center" width="25%"><h3>24,331</h3>commits</td>
<td align="center" width="25%"><h3>150+</h3>projects</td>
</tr>
<tr>
<td align="center" width="25%"><h3>410,000+</h3>OSS project stars</td>
<td align="center" width="25%"><h3>53</h3>open source projects</td>
<td align="center" width="25%"><h3>1,300,000+</h3>OSS project stars</td>
<td align="center" width="25%"><h3>82</h3>open source projects</td>
<td align="center" width="25%"><h3>26</h3>languages</td>
<td align="center" width="25%"><h3>1,655</h3>working days</td>
<td align="center" width="25%"><h3>1,680</h3>working days</td>
</tr>
</table>
```diff
+ 5,994,022 lines added
- 778,721 lines removed
! 5,215,301 net lines
+ 7,579,803 lines added
- 1,318,793 lines removed
! 6,261,010 net lines
```
<!-- /stats:summary -->
@@ -142,37 +142,37 @@ A transparent, 7-step process from first call to production support:
<!-- stats:languages -->
<table align="center">
<tr><th></th><th align="left">Language</th><th align="right">Lines of code</th><th align="right">Commits</th><th align="right">Share</th></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ts" width="18" alt="TypeScript"></td><td><b>TypeScript</b></td><td align="right">2,274,503</td><td align="right">6,203</td><td align="right">46.0% <sub>██████████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=rust" width="18" alt="Rust"></td><td><b>Rust</b></td><td align="right">988,753</td><td align="right">2,516</td><td align="right">20.0% <sub>████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=go" width="18" alt="Go"></td><td><b>Go</b></td><td align="right">281,782</td><td align="right">907</td><td align="right">5.7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=kotlin" width="18" alt="Kotlin"></td><td><b>Kotlin</b></td><td align="right">206,250</td><td align="right">796</td><td align="right">4.2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cs" width="18" alt="C#"></td><td><b>C#</b></td><td align="right">162,872</td><td align="right">752</td><td align="right">3.3% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=js" width="18" alt="JavaScript"></td><td><b>JavaScript</b></td><td align="right">140,024</td><td align="right">500</td><td align="right">2.8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=php" width="18" alt="PHP"></td><td><b>PHP</b></td><td align="right">130,914</td><td align="right">149</td><td align="right">2.6% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=swift" width="18" alt="Swift"></td><td><b>Swift</b></td><td align="right">116,812</td><td align="right">437</td><td align="right">2.4% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=elixir" width="18" alt="Elixir"></td><td><b>Elixir</b></td><td align="right">91,810</td><td align="right">438</td><td align="right">1.9% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=py" width="18" alt="Python"></td><td><b>Python</b></td><td align="right">84,375</td><td align="right">317</td><td align="right">1.7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=html" width="18" alt="HTML"></td><td><b>HTML</b></td><td align="right">80,555</td><td align="right">145</td><td align="right">1.6% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=css" width="18" alt="CSS"></td><td><b>CSS</b></td><td align="right">61,717</td><td align="right">502</td><td align="right">1.2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cpp" width="18" alt="C++"></td><td><b>C++</b></td><td align="right">57,275</td><td align="right">358</td><td align="right">1.2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=c" width="18" alt="C"></td><td><b>C</b></td><td align="right">49,346</td><td align="right">355</td><td align="right">1.0% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=zig" width="18" alt="Zig"></td><td><b>Zig</b></td><td align="right">44,583</td><td align="right">284</td><td align="right">0.9% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=mysql" width="18" alt="SQL"></td><td><b>SQL</b></td><td align="right">38,114</td><td align="right">590</td><td align="right">0.8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ruby" width="18" alt="Ruby"></td><td><b>Ruby</b></td><td align="right">37,655</td><td align="right">263</td><td align="right">0.8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=lua" width="18" alt="Lua"></td><td><b>Lua</b></td><td align="right">32,053</td><td align="right">206</td><td align="right">0.6% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=bash" width="18" alt="Shell"></td><td><b>Shell</b></td><td align="right">29,411</td><td align="right">263</td><td align="right">0.6% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=java" width="18" alt="Java"></td><td><b>Java</b></td><td align="right">13,788</td><td align="right">75</td><td align="right">0.3% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=dart" width="18" alt="Dart"></td><td><b>Dart</b></td><td align="right">6,013</td><td align="right">40</td><td align="right">0.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ts" width="18" alt="TypeScript"></td><td><b>TypeScript</b></td><td align="right">3,245,343</td><td align="right">7,512</td><td align="right">50.7% <sub>███████████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=rust" width="18" alt="Rust"></td><td><b>Rust</b></td><td align="right">1,280,619</td><td align="right">2,781</td><td align="right">20.0% <sub>████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=go" width="18" alt="Go"></td><td><b>Go</b></td><td align="right">343,647</td><td align="right">965</td><td align="right">5.4% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=kotlin" width="18" alt="Kotlin"></td><td><b>Kotlin</b></td><td align="right">207,212</td><td align="right">552</td><td align="right">3.2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cs" width="18" alt="C#"></td><td><b>C#</b></td><td align="right">175,421</td><td align="right">707</td><td align="right">2.7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=js" width="18" alt="JavaScript"></td><td><b>JavaScript</b></td><td align="right">146,327</td><td align="right">593</td><td align="right">2.3% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=php" width="18" alt="PHP"></td><td><b>PHP</b></td><td align="right">133,817</td><td align="right">110</td><td align="right">2.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=swift" width="18" alt="Swift"></td><td><b>Swift</b></td><td align="right">119,541</td><td align="right">437</td><td align="right">1.9% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=py" width="18" alt="Python"></td><td><b>Python</b></td><td align="right">114,446</td><td align="right">375</td><td align="right">1.8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=elixir" width="18" alt="Elixir"></td><td><b>Elixir</b></td><td align="right">107,776</td><td align="right">415</td><td align="right">1.7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=html" width="18" alt="HTML"></td><td><b>HTML</b></td><td align="right">80,830</td><td align="right">163</td><td align="right">1.3% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=css" width="18" alt="CSS"></td><td><b>CSS</b></td><td align="right">67,799</td><td align="right">571</td><td align="right">1.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cpp" width="18" alt="C++"></td><td><b>C++</b></td><td align="right">60,532</td><td align="right">84</td><td align="right">0.9% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ruby" width="18" alt="Ruby"></td><td><b>Ruby</b></td><td align="right">52,836</td><td align="right">73</td><td align="right">0.8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=c" width="18" alt="C"></td><td><b>C</b></td><td align="right">51,238</td><td align="right">109</td><td align="right">0.8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=lua" width="18" alt="Lua"></td><td><b>Lua</b></td><td align="right">47,845</td><td align="right">64</td><td align="right">0.7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=mysql" width="18" alt="SQL"></td><td><b>SQL</b></td><td align="right">47,780</td><td align="right">686</td><td align="right">0.7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=zig" width="18" alt="Zig"></td><td><b>Zig</b></td><td align="right">46,238</td><td align="right">73</td><td align="right">0.7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=bash" width="18" alt="Shell"></td><td><b>Shell</b></td><td align="right">32,511</td><td align="right">313</td><td align="right">0.5% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=java" width="18" alt="Java"></td><td><b>Java</b></td><td align="right">14,401</td><td align="right">50</td><td align="right">0.2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=dart" width="18" alt="Dart"></td><td><b>Dart</b></td><td align="right">6,146</td><td align="right">28</td><td align="right">0.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=scala" width="18" alt="Scala"></td><td><b>Scala</b></td><td align="right">5,439</td><td align="right">25</td><td align="right">0.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=solidity" width="18" alt="Solidity"></td><td><b>Solidity</b></td><td align="right">4,688</td><td align="right">33</td><td align="right">0.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=haskell" width="18" alt="Haskell"></td><td><b>Haskell</b></td><td align="right">3,609</td><td align="right">28</td><td align="right">0.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=scala" width="18" alt="Scala"></td><td><b>Scala</b></td><td align="right">3,133</td><td align="right">29</td><td align="right">0.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/fsharp.png" width="18" alt="F#"></td><td><b>F#</b></td><td align="right">3,017</td><td align="right">18</td><td align="right">0.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/assembly.png" width="18" alt="Assembly"></td><td><b>Assembly</b></td><td align="right">397</td><td align="right">6</td><td align="right">0.0% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=haskell" width="18" alt="Haskell"></td><td><b>Haskell</b></td><td align="right">3,641</td><td align="right">25</td><td align="right">0.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/fsharp.png" width="18" alt="F#"></td><td><b>F#</b></td><td align="right">3,297</td><td align="right">19</td><td align="right">0.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/assembly.png" width="18" alt="Assembly"></td><td><b>Assembly</b></td><td align="right">577</td><td align="right">8</td><td align="right">0.0% <sub>â–ˆ</sub></td></tr>
</table>
**Frameworks & tools detected across projects** <sub>(repository count)</sub>
Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Vite <sub>25</sub> · Tailwind CSS <sub>24</sub> · Motion <sub>18</sub> · Prisma <sub>16</sub> · discord.js <sub>14</sub> · Serde <sub>10</sub> · Tokio <sub>7</sub> · reqwest <sub>7</sub> · Gorilla WebSocket <sub>6</sub> · SQLite <sub>6</sub> · xUnit <sub>6</sub> · Stripe <sub>5</sub> · Avalonia <sub>4</sub> · Axum <sub>4</sub> · JUnit <sub>4</sub> · PHPUnit <sub>4</sub> · Playwright <sub>4</sub> · SQLx <sub>4</sub> · Framer Motion <sub>3</sub> · Jetpack Compose <sub>3</sub> · Redis <sub>3</sub> · Vitest <sub>3</sub> · clap <sub>3</sub> · gRPC <sub>3</sub> · wasm-bindgen <sub>3</sub> · Android <sub>2</sub> · BullMQ <sub>2</sub> · Chart.js <sub>2</sub> · Coroutines <sub>2</sub> · Guzzle <sub>2</sub> · Jest <sub>2</sub> · Laravel <sub>2</sub> · Next.js <sub>2</sub> · Pterodactyl <sub>2</sub> · Zod <sub>2</sub> · aiohttp <sub>2</sub> · discord.py <sub>2</sub> · i18next <sub>2</sub> · webpack <sub>2</sub> · Cobra <sub>1</sub> · Discord.Net <sub>1</sub> · Docker SDK <sub>1</sub> · Ecto <sub>1</sub> · Electron <sub>1</sub> · Expo <sub>1</sub> · FastAPI <sub>1</sub> · GORM <sub>1</sub> · Gin <sub>1</sub> · HTTPX <sub>1</sub> · Json.NET <sub>1</sub> · Paper <sub>1</sub> · PostgreSQL <sub>1</sub> · Preact <sub>1</sub> · Ratatui <sub>1</sub> · React Native <sub>1</sub> · Spring Boot <sub>1</sub> · Tauri <sub>1</sub> · chi <sub>1</sub> · discordgo <sub>1</sub> · gopher-lua <sub>1</sub> · pytest <sub>1</sub> · tonic <sub>1</sub>
Docker <sub>62</sub> · React <sub>31</sub> · Express <sub>27</sub> · Vite <sub>26</sub> · Tailwind CSS <sub>24</sub> · Motion <sub>18</sub> · Prisma <sub>16</sub> · discord.js <sub>14</sub> · Serde <sub>10</sub> · Tokio <sub>7</sub> · reqwest <sub>7</sub> · Gorilla WebSocket <sub>6</sub> · SQLite <sub>6</sub> · xUnit <sub>6</sub> · Stripe <sub>5</sub> · Avalonia <sub>4</sub> · Axum <sub>4</sub> · JUnit <sub>4</sub> · PHPUnit <sub>4</sub> · Playwright <sub>4</sub> · SQLx <sub>4</sub> · Vitest <sub>4</sub> · Framer Motion <sub>3</sub> · Jetpack Compose <sub>3</sub> · Redis <sub>3</sub> · Zod <sub>3</sub> · clap <sub>3</sub> · gRPC <sub>3</sub> · wasm-bindgen <sub>3</sub> · Android <sub>2</sub> · BullMQ <sub>2</sub> · Chart.js <sub>2</sub> · Coroutines <sub>2</sub> · FastAPI <sub>2</sub> · Guzzle <sub>2</sub> · HTTPX <sub>2</sub> · Jest <sub>2</sub> · Laravel <sub>2</sub> · Next.js <sub>2</sub> · Pterodactyl <sub>2</sub> · aiohttp <sub>2</sub> · discord.py <sub>2</sub> · i18next <sub>2</sub> · pytest <sub>2</sub> · webpack <sub>2</sub> · Click <sub>1</sub> · Cobra <sub>1</sub> · Discord.Net <sub>1</sub> · Docker SDK <sub>1</sub> · Ecto <sub>1</sub> · Electron <sub>1</sub> · Expo <sub>1</sub> · GORM <sub>1</sub> · Gin <sub>1</sub> · Json.NET <sub>1</sub> · Paper <sub>1</sub> · PostgreSQL <sub>1</sub> · Preact <sub>1</sub> · Pydantic <sub>1</sub> · Ratatui <sub>1</sub> · React Native <sub>1</sub> · SQLAlchemy <sub>1</sub> · Spring Boot <sub>1</sub> · Storybook <sub>1</sub> · TanStack Query <sub>1</sub> · Tauri <sub>1</sub> · chi <sub>1</sub> · discordgo <sub>1</sub> · gopher-lua <sub>1</sub> · pygame <sub>1</sub> · tonic <sub>1</sub>
<!-- /stats:languages -->
<sub>Counted by my own API [ghapi.dualfroz.com](https://ghapi.dualfroz.com/v2/public) across every repository, private ones included. Updated daily.</sub>
@@ -307,62 +307,108 @@ Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Vite <su
## 🌍 Open source
### Beyond GitHub
<!-- stats:beyond -->
> Code merged outside GitHub, through mailing lists and the projects' own review tools: **12** commits in **5** repositories. Below them, changes approved by the maintainers that are awaiting merge.
| Project | Repository | Status | Changes |
|---|---|---|---|
| Proxmox VE | [pve-manager](https://git.proxmox.com/?p=pve-manager.git;a=search;h=HEAD;s=Michal+Fox;st=author)<br><sub>git.proxmox.com</sub> | merged, 6 commits | [e42092e](https://git.proxmox.com/?p=pve-manager.git;a=commit;h=e42092e) fix #6475: ui: upload: only show the file name of the selected file<br>[ac0c87d](https://git.proxmox.com/?p=pve-manager.git;a=commit;h=ac0c87d) fix #4986: jobs: do not get stuck if the task log is missing<br>[8efee57](https://git.proxmox.com/?p=pve-manager.git;a=commit;h=8efee57) fix #7108: ui: ipset: do not offer aliases that are already added<br>[+3 more](https://git.proxmox.com/?p=pve-manager.git;a=search;h=HEAD;s=Michal+Fox;st=author) |
| Proxmox VE | [qemu-server](https://git.proxmox.com/?p=qemu-server.git;a=search;h=HEAD;s=Michal+Fox;st=author)<br><sub>git.proxmox.com</sub> | merged, 3 commits | [167f3d70a5](https://git.proxmox.com/?p=qemu-server.git;a=commit;h=167f3d70a5) fix #6907: memory: allow multi-digit host nodes with hugepages<br>[a4efa5f9ad](https://git.proxmox.com/?p=qemu-server.git;a=commit;h=a4efa5f9ad) partially fix #4012: migrate: mention snapshots referencing a local ISO image<br>[5abda85](https://git.proxmox.com/?p=qemu-server.git;a=commit;h=5abda85) test: migration: support volumes other than images |
| Proxmox VE | [pve-storage](https://git.proxmox.com/?p=pve-storage.git;a=search;h=HEAD;s=Michal+Fox;st=author)<br><sub>git.proxmox.com</sub> | merged, 1 commit | [c10faa6972](https://git.proxmox.com/?p=pve-storage.git;a=commit;h=c10faa6972) fix #6969: plugin: keep content directory when freeing its last file |
| Proxmox VE | [proxmox-widget-toolkit](https://git.proxmox.com/?p=proxmox-widget-toolkit.git;a=search;h=HEAD;s=Michal+Fox;st=author)<br><sub>git.proxmox.com</sub> | merged, 1 commit | [b92a9ad19f](https://git.proxmox.com/?p=proxmox-widget-toolkit.git;a=commit;h=b92a9ad19f) fix #6943: ui: network selector: show comments of IPv6 entries |
| Mozilla Firefox | [mozilla-central](https://hg.mozilla.org/mozilla-central/rev/9c1b9b8ff0a8)<br><sub>hg.mozilla.org</sub> | merged, 1 commit | [Bug 1996443](https://bugzilla.mozilla.org/show_bug.cgi?id=1996443) Bugzilla report<br>[D332854](https://phabricator.services.mozilla.com/D332854) Phabricator revision<br>[9c1b9b8ff0a8](https://hg.mozilla.org/mozilla-central/rev/9c1b9b8ff0a8) mozilla-central commit<br>[16fd06a0033d](https://github.com/mozilla-firefox/firefox/commit/16fd06a0033d) GitHub mirror |
| Blender | [blender/blender](https://projects.blender.org/blender/blender)<br><sub>projects.blender.org</sub> | approved, awaiting merge | [#165627](https://projects.blender.org/blender/blender/pulls/165627) Fix #92527: Local View unhide<br>[#165628](https://projects.blender.org/blender/blender/pulls/165628) Fix #96432: D key in text editing |
| OBS Studio | [obsproject/obs-studio](https://github.com/obsproject/obs-studio/pull/14080)<br><sub>GitHub</sub> | approved, awaiting merge | [#14080](https://github.com/obsproject/obs-studio/pull/14080) libobs: numpad without NumLock on Wayland |
<!-- /stats:beyond -->
### On GitHub
<!-- stats:opensource -->
Code that made it into projects we use every day. **70** merged pull requests in **53** repositories with **410,000+** stars combined.
Code that made it into projects we use every day. **162** merged pull requests in **82** repositories with **1,300,000+** stars combined.
| Project | Stars | Language | Changes |
|---|---|---|---|
| [zed-industries/zed](https://github.com/zed-industries/zed) | ⭐ 91.3k | Rust | <code>+123</code> <code>-10</code> |
| [icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy) | ⭐ 26.2k | C# | <code>+4624</code> <code>-13</code> |
| [nodejs/node](https://github.com/nodejs/node) | ⭐ 123.2k | JavaScript | <code>+43</code> <code>-7</code> |
| [godotengine/godot](https://github.com/godotengine/godot) | ⭐ 119.2k | C++ | <code>+3</code> <code>-0</code> |
| [mui/material-ui](https://github.com/mui/material-ui) | ⭐ 99.3k | JavaScript | <code>+23</code> <code>-28</code> |
| [zed-industries/zed](https://github.com/zed-industries/zed) | ⭐ 92.3k | Rust | <code>+123</code> <code>-10</code> |
| [astral-sh/uv](https://github.com/astral-sh/uv) | ⭐ 91.3k | Rust | <code>+124</code> <code>-7</code> |
| [grafana/grafana](https://github.com/grafana/grafana) | ⭐ 77.6k | TypeScript | <code>+52</code> <code>-2</code> |
| [alacritty/alacritty](https://github.com/alacritty/alacritty) | ⭐ 66.1k | Rust | <code>+127</code> <code>-30</code> |
| [mastodon/mastodon](https://github.com/mastodon/mastodon) | ⭐ 50.5k | Ruby | <code>+34</code> <code>-2</code> |
| [markedjs/marked](https://github.com/markedjs/marked) | ⭐ 37.3k | JavaScript | <code>+37</code> <code>-1</code> |
| [telegramdesktop/tdesktop](https://github.com/telegramdesktop/tdesktop) | ⭐ 33.4k | C++ | <code>+7</code> <code>-5</code> |
| [composer/composer](https://github.com/composer/composer) | ⭐ 29.6k | PHP | <code>+10</code> <code>-4</code> |
| [icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy) | ⭐ 26.9k | C# | <code>+4724</code> <code>-29</code> |
| [urfave/cli](https://github.com/urfave/cli) | ⭐ 24.3k | Go | <code>+52</code> <code>-12</code> |
| [PHPMailer/PHPMailer](https://github.com/PHPMailer/PHPMailer) | ⭐ 22.3k | PHP | <code>+135</code> <code>-4</code> |
| [postcss/autoprefixer](https://github.com/postcss/autoprefixer) | ⭐ 22.2k | JavaScript | <code>+50</code> <code>-4</code> |
| [postcss/autoprefixer](https://github.com/postcss/autoprefixer) | ⭐ 22.2k | JavaScript | <code>+314</code> <code>-63</code> |
| [twpayne/chezmoi](https://github.com/twpayne/chezmoi) | ⭐ 22.1k | Go | <code>+43</code> <code>-17</code> |
| [gleam-lang/gleam](https://github.com/gleam-lang/gleam) | ⭐ 22k | Rust | <code>+134</code> <code>-1</code> |
| [Seldaek/monolog](https://github.com/Seldaek/monolog) | ⭐ 21.4k | PHP | <code>+41</code> <code>-2</code> |
| [valeriansaliou/sonic](https://github.com/valeriansaliou/sonic) | ⭐ 21.4k | Rust | <code>+88</code> <code>-20</code> |
| [valeriansaliou/sonic](https://github.com/valeriansaliou/sonic) | ⭐ 21.4k | Rust | <code>+217</code> <code>-36</code> |
| [lichess-org/lila](https://github.com/lichess-org/lila) | ⭐ 18.9k | Scala | <code>+35</code> <code>-7</code> |
| [OpenRA/OpenRA](https://github.com/OpenRA/OpenRA) | ⭐ 17.7k | C# | <code>+43</code> <code>-5</code> |
| [briannesbitt/Carbon](https://github.com/briannesbitt/Carbon) | ⭐ 16.6k | PHP | <code>+87</code> <code>-0</code> |
| [PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery) | ⭐ 15k | Go | <code>+183</code> <code>-18</code> |
| [App-vNext/Polly](https://github.com/App-vNext/Polly) | ⭐ 14.2k | C# | <code>+19</code> <code>-1</code> |
| [hajimehoshi/ebiten](https://github.com/hajimehoshi/ebiten) | ⭐ 13.5k | Go | <code>+19</code> <code>-13</code> |
| [App-vNext/Polly](https://github.com/App-vNext/Polly) | ⭐ 14.3k | C# | <code>+19</code> <code>-1</code> |
| [hajimehoshi/ebiten](https://github.com/hajimehoshi/ebiten) | ⭐ 13.6k | Go | <code>+381</code> <code>-297</code> |
| [filp/whoops](https://github.com/filp/whoops) | ⭐ 13.2k | PHP | <code>+115</code> <code>-3</code> |
| [spencermountain/compromise](https://github.com/spencermountain/compromise) | ⭐ 12.2k | JavaScript | <code>+124</code> <code>-11</code> |
| [spencermountain/compromise](https://github.com/spencermountain/compromise) | ⭐ 12.2k | JavaScript | <code>+518</code> <code>-91</code> |
| [doctrine/lexer](https://github.com/doctrine/lexer) | ⭐ 11.1k | PHP | <code>+72</code> <code>-2</code> |
| [kanboard/kanboard](https://github.com/kanboard/kanboard) | ⭐ 9.9k | PHP | <code>+127</code> <code>-7</code> |
| [kanboard/kanboard](https://github.com/kanboard/kanboard) | ⭐ 9.9k | PHP | <code>+293</code> <code>-11</code> |
| [FluentValidation/FluentValidation](https://github.com/FluentValidation/FluentValidation) | ⭐ 9.8k | C# | <code>+14</code> <code>-1</code> |
| [serilog/serilog](https://github.com/serilog/serilog) | ⭐ 8k | C# | <code>+12</code> <code>-0</code> |
| [serilog/serilog](https://github.com/serilog/serilog) | ⭐ 8.1k | C# | <code>+12</code> <code>-0</code> |
| [concourse/concourse](https://github.com/concourse/concourse) | ⭐ 7.9k | Go | <code>+153</code> <code>-23</code> |
| [predis/predis](https://github.com/predis/predis) | ⭐ 7.8k | PHP | <code>+352</code> <code>-27</code> |
| [vscode-neovim/vscode-neovim](https://github.com/vscode-neovim/vscode-neovim) | ⭐ 7.8k | TypeScript | <code>+65</code> <code>-2</code> |
| [NLog/NLog](https://github.com/NLog/NLog) | ⭐ 6.5k | C# | <code>+19</code> <code>-0</code> |
| [maildev/maildev](https://github.com/maildev/maildev) | ⭐ 6.1k | TypeScript | <code>+69</code> <code>-13</code> |
| [NLog/NLog](https://github.com/NLog/NLog) | ⭐ 6.5k | C# | <code>+94</code> <code>-4</code> |
| [maildev/maildev](https://github.com/maildev/maildev) | ⭐ 6.2k | TypeScript | <code>+69</code> <code>-13</code> |
| [Pagefind/pagefind](https://github.com/Pagefind/pagefind) | ⭐ 5.5k | Rust | <code>+48</code> <code>-2</code> |
| [xoofx/markdig](https://github.com/xoofx/markdig) | ⭐ 5.3k | C# | <code>+223</code> <code>-7</code> |
| [spencermountain/spacetime](https://github.com/spencermountain/spacetime) | ⭐ 4.1k | JavaScript | <code>+15</code> <code>-40</code> |
| [xoofx/markdig](https://github.com/xoofx/markdig) | ⭐ 5.3k | C# | <code>+357</code> <code>-48</code> |
| [dromara/carbon](https://github.com/dromara/carbon) | ⭐ 5.2k | Go | <code>+41</code> <code>-4</code> |
| [alecthomas/chroma](https://github.com/alecthomas/chroma) | ⭐ 5.1k | Go | <code>+90</code> <code>-3</code> |
| [olekukonko/tablewriter](https://github.com/olekukonko/tablewriter) | ⭐ 4.8k | Go | <code>+16</code> <code>-0</code> |
| [knadh/koanf](https://github.com/knadh/koanf) | ⭐ 4.2k | Go | <code>+28</code> <code>-7</code> |
| [spencermountain/spacetime](https://github.com/spencermountain/spacetime) | ⭐ 4.1k | JavaScript | <code>+67</code> <code>-62</code> |
| [itchyny/gojq](https://github.com/itchyny/gojq) | ⭐ 3.8k | Go | <code>+42</code> <code>-5</code> |
| [Suor/funcy](https://github.com/Suor/funcy) | ⭐ 3.5k | Python | <code>+18</code> <code>-2</code> |
| [thephpleague/csv](https://github.com/thephpleague/csv) | ⭐ 3.5k | PHP | <code>+22</code> <code>-9</code> |
| [composer/satis](https://github.com/composer/satis) | ⭐ 3.3k | PHP | <code>+55</code> <code>-10</code> |
| [composer/satis](https://github.com/composer/satis) | ⭐ 3.3k | PHP | <code>+105</code> <code>-12</code> |
| [NaturalIntelligence/fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) | ⭐ 3.1k | JavaScript | <code>+2</code> <code>-0</code> |
| [versity/versitygw](https://github.com/versity/versitygw) | ⭐ 3.1k | Go | <code>+1004</code> <code>-85</code> |
| [montanaflynn/stats](https://github.com/montanaflynn/stats) | ⭐ 3k | Go | <code>+66</code> <code>-23</code> |
| [versity/versitygw](https://github.com/versity/versitygw) | ⭐ 3k | Go | <code>+124</code> <code>-14</code> |
| [mitsuhiko/insta](https://github.com/mitsuhiko/insta) | ⭐ 3k | Rust | <code>+8</code> <code>-2</code> |
| [thephpleague/commonmark](https://github.com/thephpleague/commonmark) | ⭐ 3k | PHP | <code>+17</code> <code>-0</code> |
| [Paymenter/Paymenter](https://github.com/Paymenter/Paymenter) | ⭐ 2.4k | PHP | <code>+135</code> <code>-11</code> |
| [BurntSushi/jiff](https://github.com/BurntSushi/jiff) | ⭐ 3k | Rust | <code>+37</code> <code>-5</code> |
| [zzzprojects/html-agility-pack](https://github.com/zzzprojects/html-agility-pack) | ⭐ 2.9k | C# | <code>+27</code> <code>-1</code> |
| [Paymenter/Paymenter](https://github.com/Paymenter/Paymenter) | ⭐ 2.8k | PHP | <code>+137</code> <code>-11</code> |
| [api-platform/core](https://github.com/api-platform/core) | ⭐ 2.6k | PHP | <code>+52</code> <code>-27</code> |
| [pelican/panel](https://github.com/pelican/panel) | ⭐ 2.4k | PHP | <code>+338</code> <code>-32</code> |
| [gookit/goutil](https://github.com/gookit/goutil) | ⭐ 2.4k | Go | <code>+12</code> <code>-0</code> |
| [pelican/panel](https://github.com/pelican/panel) | ⭐ 2.3k | PHP | <code>+64</code> <code>-3</code> |
| [dedoc/scramble](https://github.com/dedoc/scramble) | ⭐ 2.2k | PHP | <code>+23</code> <code>-0</code> |
| [gocarina/gocsv](https://github.com/gocarina/gocsv) | ⭐ 2.2k | Go | <code>+89</code> <code>-2</code> |
| [thephpleague/html-to-markdown](https://github.com/thephpleague/html-to-markdown) | ⭐ 1.9k | PHP | <code>+3</code> <code>-2</code> |
| [gocarina/gocsv](https://github.com/gocarina/gocsv) | ⭐ 2.2k | Go | <code>+185</code> <code>-22</code> |
| [thephpleague/html-to-markdown](https://github.com/thephpleague/html-to-markdown) | ⭐ 1.9k | PHP | <code>+20</code> <code>-9</code> |
| [spatie/period](https://github.com/spatie/period) | ⭐ 1.7k | PHP | <code>+69</code> <code>-0</code> |
| [AfterShip/email-verifier](https://github.com/AfterShip/email-verifier) | ⭐ 1.6k | Go | <code>+99</code> <code>-3</code> |
| [gookit/color](https://github.com/gookit/color) | ⭐ 1.6k | Go | <code>+12</code> <code>-1</code> |
| [fabiocaccamo/python-benedict](https://github.com/fabiocaccamo/python-benedict) | ⭐ 1.6k | Python | <code>+66</code> <code>-5</code> |
| [gookit/color](https://github.com/gookit/color) | ⭐ 1.6k | Go | <code>+12</code> <code>-1</code> |
| [linuxmint/nemo](https://github.com/linuxmint/nemo) | ⭐ 1.6k | C | <code>+3</code> <code>-5</code> |
| [olebedev/when](https://github.com/olebedev/when) | ⭐ 1.5k | Go | <code>+45</code> <code>-1</code> |
| [dgilland/pydash](https://github.com/dgilland/pydash) | ⭐ 1.4k | Python | <code>+18</code> <code>-5</code> |
| [cakephp/chronos](https://github.com/cakephp/chronos) | ⭐ 1.4k | PHP | <code>+17</code> <code>-2</code> |
| [go-playground/form](https://github.com/go-playground/form) | ⭐ 930 | Go | <code>+35</code> <code>-0</code> |
| [go-playground/form](https://github.com/go-playground/form) | ⭐ 932 | Go | <code>+35</code> <code>-0</code> |
| [mkideal/cli](https://github.com/mkideal/cli) | ⭐ 723 | Go | <code>+22</code> <code>-1</code> |
| [gookit/config](https://github.com/gookit/config) | ⭐ 585 | Go | <code>+29</code> <code>-8</code> |
| [rust-syndication/rss](https://github.com/rust-syndication/rss) | ⭐ 504 | Rust | <code>+24</code> <code>-2</code> |
| [kelindar/bitmap](https://github.com/kelindar/bitmap) | ⭐ 384 | Assembly | <code>+146</code> <code>-12</code> |
| [brick/date-time](https://github.com/brick/date-time) | ⭐ 361 | PHP | <code>+67</code> <code>-36</code> |
| [pydantic/pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | ⭐ 338 | Python | <code>+124</code> <code>-1</code> |
| [rust-syndication/rss](https://github.com/rust-syndication/rss) | ⭐ 503 | Rust | <code>+24</code> <code>-2</code> |
| [kelindar/bitmap](https://github.com/kelindar/bitmap) | ⭐ 385 | Assembly | <code>+146</code> <code>-12</code> |
| [brick/date-time](https://github.com/brick/date-time) | ⭐ 360 | PHP | <code>+67</code> <code>-36</code> |
| [pydantic/pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | ⭐ 340 | Python | <code>+124</code> <code>-1</code> |
| [rodaine/table](https://github.com/rodaine/table) | ⭐ 324 | Go | <code>+32</code> <code>-2</code> |
| [wroberts/pytimeparse](https://github.com/wroberts/pytimeparse) | ⭐ 299 | Python | <code>+5</code> <code>-1</code> |
| [QEDK/configparser-rs](https://github.com/QEDK/configparser-rs) | ⭐ 87 | Rust | <code>+22</code> <code>-1</code> |
| [wroberts/pytimeparse](https://github.com/wroberts/pytimeparse) | ⭐ 296 | Python | <code>+5</code> <code>-1</code> |
| [QEDK/configparser-rs](https://github.com/QEDK/configparser-rs) | ⭐ 88 | Rust | <code>+22</code> <code>-1</code> |
| [thephpleague/uri-src](https://github.com/thephpleague/uri-src) | ⭐ 51 | PHP | <code>+18</code> <code>-2</code> |
| [spiral/testing](https://github.com/spiral/testing) | ⭐ 7 | PHP | <code>+255</code> <code>-6</code> |
<!-- /stats:opensource -->
+110 -64
View File
@@ -17,7 +17,7 @@
<br>
VulCode to polski software house z wieloletnim doświadczeniem. Od 2020 roku dostarczamy oprogramowanie wysokiej jakości i napisaliśmy już ponad **5 mln linijek kodu** w **200+ projektach**. Dołożyliśmy też swoją cegiełkę do **53 repozytoriów open source**, które łącznie mają **410 000+ gwiazdek** na GitHubie. Specjalizujemy się w stronach internetowych, panelach i dashboardach oraz aplikacjach, a także w budowie skalowalnych platform. Aktywnie kontrybuujemy do dziesiątek projektów open source.
VulCode to polski software house z wieloletnim doświadczeniem. Od 2020 roku dostarczamy oprogramowanie wysokiej jakości i napisaliśmy już ponad **6 mln linijek kodu** w **150+ projektach**. Dołożyliśmy też swoją cegiełkę do **82 repozytoriów open source**, które łącznie mają **1 300 000+ gwiazdek** na GitHubie. Specjalizujemy się w stronach internetowych, panelach i dashboardach oraz aplikacjach, a także w budowie skalowalnych platform. Aktywnie kontrybuujemy do dziesiątek projektów open source.
## 🧩 Czym się zajmujemy?
@@ -110,22 +110,22 @@ Przejrzysty, 7-etapowy proces realizacji projektu:
<!-- stats:summary -->
<table>
<tr>
<td align="center" colspan="2" width="50%"><h3>5 994 022</h3>linii kodu</td>
<td align="center" width="25%"><h3>23 830</h3>commitów</td>
<td align="center" width="25%"><h3>200+</h3>projektów</td>
<td align="center" colspan="2" width="50%"><h3>6 399 947</h3>linii kodu</td>
<td align="center" width="25%"><h3>24 331</h3>commitów</td>
<td align="center" width="25%"><h3>150+</h3>projektów</td>
</tr>
<tr>
<td align="center" width="25%"><h3>410 000+</h3>gwiazdek projektów OSS</td>
<td align="center" width="25%"><h3>53</h3>projektów open source</td>
<td align="center" width="25%"><h3>1 300 000+</h3>gwiazdek projektów OSS</td>
<td align="center" width="25%"><h3>82</h3>projektów open source</td>
<td align="center" width="25%"><h3>26</h3>języków</td>
<td align="center" width="25%"><h3>1 655</h3>dni pracy</td>
<td align="center" width="25%"><h3>1 680</h3>dni pracy</td>
</tr>
</table>
```diff
+ 5 994 022 linii dodanych
- 778 721 linii usuniętych
! 5 215 301 linii netto
+ 7 579 803 linii dodanych
- 1 318 793 linii usuniętych
! 6 261 010 linii netto
```
<!-- /stats:summary -->
@@ -138,37 +138,37 @@ Przejrzysty, 7-etapowy proces realizacji projektu:
<!-- stats:languages -->
<table align="center">
<tr><th></th><th align="left">Język</th><th align="right">Linie kodu</th><th align="right">Commity</th><th align="right">Udział</th></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ts" width="18" alt="TypeScript"></td><td><b>TypeScript</b></td><td align="right">2 274 503</td><td align="right">6 203</td><td align="right">46,0% <sub>██████████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=rust" width="18" alt="Rust"></td><td><b>Rust</b></td><td align="right">988 753</td><td align="right">2 516</td><td align="right">20,0% <sub>████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=go" width="18" alt="Go"></td><td><b>Go</b></td><td align="right">281 782</td><td align="right">907</td><td align="right">5,7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=kotlin" width="18" alt="Kotlin"></td><td><b>Kotlin</b></td><td align="right">206 250</td><td align="right">796</td><td align="right">4,2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cs" width="18" alt="C#"></td><td><b>C#</b></td><td align="right">162 872</td><td align="right">752</td><td align="right">3,3% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=js" width="18" alt="JavaScript"></td><td><b>JavaScript</b></td><td align="right">140 024</td><td align="right">500</td><td align="right">2,8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=php" width="18" alt="PHP"></td><td><b>PHP</b></td><td align="right">130 914</td><td align="right">149</td><td align="right">2,6% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=swift" width="18" alt="Swift"></td><td><b>Swift</b></td><td align="right">116 812</td><td align="right">437</td><td align="right">2,4% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=elixir" width="18" alt="Elixir"></td><td><b>Elixir</b></td><td align="right">91 810</td><td align="right">438</td><td align="right">1,9% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=py" width="18" alt="Python"></td><td><b>Python</b></td><td align="right">84 375</td><td align="right">317</td><td align="right">1,7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=html" width="18" alt="HTML"></td><td><b>HTML</b></td><td align="right">80 555</td><td align="right">145</td><td align="right">1,6% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=css" width="18" alt="CSS"></td><td><b>CSS</b></td><td align="right">61 717</td><td align="right">502</td><td align="right">1,2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cpp" width="18" alt="C++"></td><td><b>C++</b></td><td align="right">57 275</td><td align="right">358</td><td align="right">1,2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=c" width="18" alt="C"></td><td><b>C</b></td><td align="right">49 346</td><td align="right">355</td><td align="right">1,0% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=zig" width="18" alt="Zig"></td><td><b>Zig</b></td><td align="right">44 583</td><td align="right">284</td><td align="right">0,9% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=mysql" width="18" alt="SQL"></td><td><b>SQL</b></td><td align="right">38 114</td><td align="right">590</td><td align="right">0,8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ruby" width="18" alt="Ruby"></td><td><b>Ruby</b></td><td align="right">37 655</td><td align="right">263</td><td align="right">0,8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=lua" width="18" alt="Lua"></td><td><b>Lua</b></td><td align="right">32 053</td><td align="right">206</td><td align="right">0,6% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=bash" width="18" alt="Shell"></td><td><b>Shell</b></td><td align="right">29 411</td><td align="right">263</td><td align="right">0,6% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=java" width="18" alt="Java"></td><td><b>Java</b></td><td align="right">13 788</td><td align="right">75</td><td align="right">0,3% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=dart" width="18" alt="Dart"></td><td><b>Dart</b></td><td align="right">6 013</td><td align="right">40</td><td align="right">0,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ts" width="18" alt="TypeScript"></td><td><b>TypeScript</b></td><td align="right">3 245 343</td><td align="right">7 512</td><td align="right">50,7% <sub>███████████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=rust" width="18" alt="Rust"></td><td><b>Rust</b></td><td align="right">1 280 619</td><td align="right">2 781</td><td align="right">20,0% <sub>████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=go" width="18" alt="Go"></td><td><b>Go</b></td><td align="right">343 647</td><td align="right">965</td><td align="right">5,4% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=kotlin" width="18" alt="Kotlin"></td><td><b>Kotlin</b></td><td align="right">207 212</td><td align="right">552</td><td align="right">3,2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cs" width="18" alt="C#"></td><td><b>C#</b></td><td align="right">175 421</td><td align="right">707</td><td align="right">2,7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=js" width="18" alt="JavaScript"></td><td><b>JavaScript</b></td><td align="right">146 327</td><td align="right">593</td><td align="right">2,3% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=php" width="18" alt="PHP"></td><td><b>PHP</b></td><td align="right">133 817</td><td align="right">110</td><td align="right">2,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=swift" width="18" alt="Swift"></td><td><b>Swift</b></td><td align="right">119 541</td><td align="right">437</td><td align="right">1,9% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=py" width="18" alt="Python"></td><td><b>Python</b></td><td align="right">114 446</td><td align="right">375</td><td align="right">1,8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=elixir" width="18" alt="Elixir"></td><td><b>Elixir</b></td><td align="right">107 776</td><td align="right">415</td><td align="right">1,7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=html" width="18" alt="HTML"></td><td><b>HTML</b></td><td align="right">80 830</td><td align="right">163</td><td align="right">1,3% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=css" width="18" alt="CSS"></td><td><b>CSS</b></td><td align="right">67 799</td><td align="right">571</td><td align="right">1,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cpp" width="18" alt="C++"></td><td><b>C++</b></td><td align="right">60 532</td><td align="right">84</td><td align="right">0,9% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ruby" width="18" alt="Ruby"></td><td><b>Ruby</b></td><td align="right">52 836</td><td align="right">73</td><td align="right">0,8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=c" width="18" alt="C"></td><td><b>C</b></td><td align="right">51 238</td><td align="right">109</td><td align="right">0,8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=lua" width="18" alt="Lua"></td><td><b>Lua</b></td><td align="right">47 845</td><td align="right">64</td><td align="right">0,7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=mysql" width="18" alt="SQL"></td><td><b>SQL</b></td><td align="right">47 780</td><td align="right">686</td><td align="right">0,7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=zig" width="18" alt="Zig"></td><td><b>Zig</b></td><td align="right">46 238</td><td align="right">73</td><td align="right">0,7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=bash" width="18" alt="Shell"></td><td><b>Shell</b></td><td align="right">32 511</td><td align="right">313</td><td align="right">0,5% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=java" width="18" alt="Java"></td><td><b>Java</b></td><td align="right">14 401</td><td align="right">50</td><td align="right">0,2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=dart" width="18" alt="Dart"></td><td><b>Dart</b></td><td align="right">6 146</td><td align="right">28</td><td align="right">0,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=scala" width="18" alt="Scala"></td><td><b>Scala</b></td><td align="right">5 439</td><td align="right">25</td><td align="right">0,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=solidity" width="18" alt="Solidity"></td><td><b>Solidity</b></td><td align="right">4 688</td><td align="right">33</td><td align="right">0,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=haskell" width="18" alt="Haskell"></td><td><b>Haskell</b></td><td align="right">3 609</td><td align="right">28</td><td align="right">0,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=scala" width="18" alt="Scala"></td><td><b>Scala</b></td><td align="right">3 133</td><td align="right">29</td><td align="right">0,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/fsharp.png" width="18" alt="F#"></td><td><b>F#</b></td><td align="right">3 017</td><td align="right">18</td><td align="right">0,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/assembly.png" width="18" alt="Assembly"></td><td><b>Assembly</b></td><td align="right">397</td><td align="right">6</td><td align="right">0,0% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=haskell" width="18" alt="Haskell"></td><td><b>Haskell</b></td><td align="right">3 641</td><td align="right">25</td><td align="right">0,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/fsharp.png" width="18" alt="F#"></td><td><b>F#</b></td><td align="right">3 297</td><td align="right">19</td><td align="right">0,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/assembly.png" width="18" alt="Assembly"></td><td><b>Assembly</b></td><td align="right">577</td><td align="right">8</td><td align="right">0,0% <sub>â–ˆ</sub></td></tr>
</table>
**Frameworki i narzędzia wykryte w projektach** <sub>(liczba repozytoriów)</sub>
Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Vite <sub>25</sub> · Tailwind CSS <sub>24</sub> · Motion <sub>18</sub> · Prisma <sub>16</sub> · discord.js <sub>14</sub> · Serde <sub>10</sub> · Tokio <sub>7</sub> · reqwest <sub>7</sub> · Gorilla WebSocket <sub>6</sub> · SQLite <sub>6</sub> · xUnit <sub>6</sub> · Stripe <sub>5</sub> · Avalonia <sub>4</sub> · Axum <sub>4</sub> · JUnit <sub>4</sub> · PHPUnit <sub>4</sub> · Playwright <sub>4</sub> · SQLx <sub>4</sub> · Framer Motion <sub>3</sub> · Jetpack Compose <sub>3</sub> · Redis <sub>3</sub> · Vitest <sub>3</sub> · clap <sub>3</sub> · gRPC <sub>3</sub> · wasm-bindgen <sub>3</sub> · Android <sub>2</sub> · BullMQ <sub>2</sub> · Chart.js <sub>2</sub> · Coroutines <sub>2</sub> · Guzzle <sub>2</sub> · Jest <sub>2</sub> · Laravel <sub>2</sub> · Next.js <sub>2</sub> · Pterodactyl <sub>2</sub> · Zod <sub>2</sub> · aiohttp <sub>2</sub> · discord.py <sub>2</sub> · i18next <sub>2</sub> · webpack <sub>2</sub> · Cobra <sub>1</sub> · Discord.Net <sub>1</sub> · Docker SDK <sub>1</sub> · Ecto <sub>1</sub> · Electron <sub>1</sub> · Expo <sub>1</sub> · FastAPI <sub>1</sub> · GORM <sub>1</sub> · Gin <sub>1</sub> · HTTPX <sub>1</sub> · Json.NET <sub>1</sub> · Paper <sub>1</sub> · PostgreSQL <sub>1</sub> · Preact <sub>1</sub> · Ratatui <sub>1</sub> · React Native <sub>1</sub> · Spring Boot <sub>1</sub> · Tauri <sub>1</sub> · chi <sub>1</sub> · discordgo <sub>1</sub> · gopher-lua <sub>1</sub> · pytest <sub>1</sub> · tonic <sub>1</sub>
Docker <sub>62</sub> · React <sub>31</sub> · Express <sub>27</sub> · Vite <sub>26</sub> · Tailwind CSS <sub>24</sub> · Motion <sub>18</sub> · Prisma <sub>16</sub> · discord.js <sub>14</sub> · Serde <sub>10</sub> · Tokio <sub>7</sub> · reqwest <sub>7</sub> · Gorilla WebSocket <sub>6</sub> · SQLite <sub>6</sub> · xUnit <sub>6</sub> · Stripe <sub>5</sub> · Avalonia <sub>4</sub> · Axum <sub>4</sub> · JUnit <sub>4</sub> · PHPUnit <sub>4</sub> · Playwright <sub>4</sub> · SQLx <sub>4</sub> · Vitest <sub>4</sub> · Framer Motion <sub>3</sub> · Jetpack Compose <sub>3</sub> · Redis <sub>3</sub> · Zod <sub>3</sub> · clap <sub>3</sub> · gRPC <sub>3</sub> · wasm-bindgen <sub>3</sub> · Android <sub>2</sub> · BullMQ <sub>2</sub> · Chart.js <sub>2</sub> · Coroutines <sub>2</sub> · FastAPI <sub>2</sub> · Guzzle <sub>2</sub> · HTTPX <sub>2</sub> · Jest <sub>2</sub> · Laravel <sub>2</sub> · Next.js <sub>2</sub> · Pterodactyl <sub>2</sub> · aiohttp <sub>2</sub> · discord.py <sub>2</sub> · i18next <sub>2</sub> · pytest <sub>2</sub> · webpack <sub>2</sub> · Click <sub>1</sub> · Cobra <sub>1</sub> · Discord.Net <sub>1</sub> · Docker SDK <sub>1</sub> · Ecto <sub>1</sub> · Electron <sub>1</sub> · Expo <sub>1</sub> · GORM <sub>1</sub> · Gin <sub>1</sub> · Json.NET <sub>1</sub> · Paper <sub>1</sub> · PostgreSQL <sub>1</sub> · Preact <sub>1</sub> · Pydantic <sub>1</sub> · Ratatui <sub>1</sub> · React Native <sub>1</sub> · SQLAlchemy <sub>1</sub> · Spring Boot <sub>1</sub> · Storybook <sub>1</sub> · TanStack Query <sub>1</sub> · Tauri <sub>1</sub> · chi <sub>1</sub> · discordgo <sub>1</sub> · gopher-lua <sub>1</sub> · pygame <sub>1</sub> · tonic <sub>1</sub>
<!-- /stats:languages -->
<sub>Liczone przez moje API [ghapi.dualfroz.com](https://ghapi.dualfroz.com/v2/public) ze wszystkich repozytoriów, także prywatnych. Aktualizowane raz na 24 godziny.</sub>
@@ -301,62 +301,108 @@ Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Vite <su
## 🌍 Open source
### Poza GitHubem
<!-- stats:beyond -->
> Kod przyjęty poza GitHubem, przez listy mailowe i własne systemy review: **12** commitów w **5** repozytoriach. Pod nimi zmiany zaakceptowane przez maintainerów, które czekają na merge.
| Projekt | Repozytorium | Stan | Zmiany |
|---|---|---|---|
| Proxmox VE | [pve-manager](https://git.proxmox.com/?p=pve-manager.git;a=search;h=HEAD;s=Michal+Fox;st=author)<br><sub>git.proxmox.com</sub> | przyjęte, 6 commitów | [e42092e](https://git.proxmox.com/?p=pve-manager.git;a=commit;h=e42092e) fix #6475: ui: upload: only show the file name of the selected file<br>[ac0c87d](https://git.proxmox.com/?p=pve-manager.git;a=commit;h=ac0c87d) fix #4986: jobs: do not get stuck if the task log is missing<br>[8efee57](https://git.proxmox.com/?p=pve-manager.git;a=commit;h=8efee57) fix #7108: ui: ipset: do not offer aliases that are already added<br>[+3 więcej](https://git.proxmox.com/?p=pve-manager.git;a=search;h=HEAD;s=Michal+Fox;st=author) |
| Proxmox VE | [qemu-server](https://git.proxmox.com/?p=qemu-server.git;a=search;h=HEAD;s=Michal+Fox;st=author)<br><sub>git.proxmox.com</sub> | przyjęte, 3 commity | [167f3d70a5](https://git.proxmox.com/?p=qemu-server.git;a=commit;h=167f3d70a5) fix #6907: memory: allow multi-digit host nodes with hugepages<br>[a4efa5f9ad](https://git.proxmox.com/?p=qemu-server.git;a=commit;h=a4efa5f9ad) partially fix #4012: migrate: mention snapshots referencing a local ISO image<br>[5abda85](https://git.proxmox.com/?p=qemu-server.git;a=commit;h=5abda85) test: migration: support volumes other than images |
| Proxmox VE | [pve-storage](https://git.proxmox.com/?p=pve-storage.git;a=search;h=HEAD;s=Michal+Fox;st=author)<br><sub>git.proxmox.com</sub> | przyjęte, 1 commit | [c10faa6972](https://git.proxmox.com/?p=pve-storage.git;a=commit;h=c10faa6972) fix #6969: plugin: keep content directory when freeing its last file |
| Proxmox VE | [proxmox-widget-toolkit](https://git.proxmox.com/?p=proxmox-widget-toolkit.git;a=search;h=HEAD;s=Michal+Fox;st=author)<br><sub>git.proxmox.com</sub> | przyjęte, 1 commit | [b92a9ad19f](https://git.proxmox.com/?p=proxmox-widget-toolkit.git;a=commit;h=b92a9ad19f) fix #6943: ui: network selector: show comments of IPv6 entries |
| Mozilla Firefox | [mozilla-central](https://hg.mozilla.org/mozilla-central/rev/9c1b9b8ff0a8)<br><sub>hg.mozilla.org</sub> | przyjęte, 1 commit | [Bug 1996443](https://bugzilla.mozilla.org/show_bug.cgi?id=1996443) zgłoszenie w Bugzilli<br>[D332854](https://phabricator.services.mozilla.com/D332854) rewizja w Phabricatorze<br>[9c1b9b8ff0a8](https://hg.mozilla.org/mozilla-central/rev/9c1b9b8ff0a8) commit w mozilla-central<br>[16fd06a0033d](https://github.com/mozilla-firefox/firefox/commit/16fd06a0033d) mirror na GitHubie |
| Blender | [blender/blender](https://projects.blender.org/blender/blender)<br><sub>projects.blender.org</sub> | zaakceptowane, czeka na merge | [#165627](https://projects.blender.org/blender/blender/pulls/165627) Fix #92527: unhide w Local View<br>[#165628](https://projects.blender.org/blender/blender/pulls/165628) Fix #96432: klawisz D w edycji tekstu |
| OBS Studio | [obsproject/obs-studio](https://github.com/obsproject/obs-studio/pull/14080)<br><sub>GitHub</sub> | zaakceptowane, czeka na merge | [#14080](https://github.com/obsproject/obs-studio/pull/14080) libobs: numpad bez NumLocka na Waylandzie |
<!-- /stats:beyond -->
### Na GitHubie
<!-- stats:opensource -->
> Projekty, do których regularnie kontrybuujemy (tylko te z zaakceptowanymi zmianami). Projekty posortowane według liczby gwiazdek. Łącznie 410 000+ ⭐ w 53 repozytoriach.
> Projekty, do których regularnie kontrybuujemy (tylko te z zaakceptowanymi zmianami). Projekty posortowane według liczby gwiazdek. Łącznie 1 300 000+ ⭐ w 82 repozytoriach.
| Projekt | Gwiazdki | Język | Zmiany |
|---|---|---|---|
| [zed-industries/zed](https://github.com/zed-industries/zed) | ⭐ 91,3 tys. | Rust | <code>+123</code> <code>-10</code> |
| [icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy) | ⭐ 26,2 tys. | C# | <code>+4624</code> <code>-13</code> |
| [nodejs/node](https://github.com/nodejs/node) | ⭐ 123,2 tys. | JavaScript | <code>+43</code> <code>-7</code> |
| [godotengine/godot](https://github.com/godotengine/godot) | ⭐ 119,2 tys. | C++ | <code>+3</code> <code>-0</code> |
| [mui/material-ui](https://github.com/mui/material-ui) | ⭐ 99,3 tys. | JavaScript | <code>+23</code> <code>-28</code> |
| [zed-industries/zed](https://github.com/zed-industries/zed) | ⭐ 92,3 tys. | Rust | <code>+123</code> <code>-10</code> |
| [astral-sh/uv](https://github.com/astral-sh/uv) | ⭐ 91,3 tys. | Rust | <code>+124</code> <code>-7</code> |
| [grafana/grafana](https://github.com/grafana/grafana) | ⭐ 77,6 tys. | TypeScript | <code>+52</code> <code>-2</code> |
| [alacritty/alacritty](https://github.com/alacritty/alacritty) | ⭐ 66,1 tys. | Rust | <code>+127</code> <code>-30</code> |
| [mastodon/mastodon](https://github.com/mastodon/mastodon) | ⭐ 50,5 tys. | Ruby | <code>+34</code> <code>-2</code> |
| [markedjs/marked](https://github.com/markedjs/marked) | ⭐ 37,3 tys. | JavaScript | <code>+37</code> <code>-1</code> |
| [telegramdesktop/tdesktop](https://github.com/telegramdesktop/tdesktop) | ⭐ 33,4 tys. | C++ | <code>+7</code> <code>-5</code> |
| [composer/composer](https://github.com/composer/composer) | ⭐ 29,6 tys. | PHP | <code>+10</code> <code>-4</code> |
| [icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy) | ⭐ 26,9 tys. | C# | <code>+4724</code> <code>-29</code> |
| [urfave/cli](https://github.com/urfave/cli) | ⭐ 24,3 tys. | Go | <code>+52</code> <code>-12</code> |
| [PHPMailer/PHPMailer](https://github.com/PHPMailer/PHPMailer) | ⭐ 22,3 tys. | PHP | <code>+135</code> <code>-4</code> |
| [postcss/autoprefixer](https://github.com/postcss/autoprefixer) | ⭐ 22,2 tys. | JavaScript | <code>+50</code> <code>-4</code> |
| [postcss/autoprefixer](https://github.com/postcss/autoprefixer) | ⭐ 22,2 tys. | JavaScript | <code>+314</code> <code>-63</code> |
| [twpayne/chezmoi](https://github.com/twpayne/chezmoi) | ⭐ 22,1 tys. | Go | <code>+43</code> <code>-17</code> |
| [gleam-lang/gleam](https://github.com/gleam-lang/gleam) | ⭐ 22 tys. | Rust | <code>+134</code> <code>-1</code> |
| [Seldaek/monolog](https://github.com/Seldaek/monolog) | ⭐ 21,4 tys. | PHP | <code>+41</code> <code>-2</code> |
| [valeriansaliou/sonic](https://github.com/valeriansaliou/sonic) | ⭐ 21,4 tys. | Rust | <code>+88</code> <code>-20</code> |
| [valeriansaliou/sonic](https://github.com/valeriansaliou/sonic) | ⭐ 21,4 tys. | Rust | <code>+217</code> <code>-36</code> |
| [lichess-org/lila](https://github.com/lichess-org/lila) | ⭐ 18,9 tys. | Scala | <code>+35</code> <code>-7</code> |
| [OpenRA/OpenRA](https://github.com/OpenRA/OpenRA) | ⭐ 17,7 tys. | C# | <code>+43</code> <code>-5</code> |
| [briannesbitt/Carbon](https://github.com/briannesbitt/Carbon) | ⭐ 16,6 tys. | PHP | <code>+87</code> <code>-0</code> |
| [PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery) | ⭐ 15 tys. | Go | <code>+183</code> <code>-18</code> |
| [App-vNext/Polly](https://github.com/App-vNext/Polly) | ⭐ 14,2 tys. | C# | <code>+19</code> <code>-1</code> |
| [hajimehoshi/ebiten](https://github.com/hajimehoshi/ebiten) | ⭐ 13,5 tys. | Go | <code>+19</code> <code>-13</code> |
| [App-vNext/Polly](https://github.com/App-vNext/Polly) | ⭐ 14,3 tys. | C# | <code>+19</code> <code>-1</code> |
| [hajimehoshi/ebiten](https://github.com/hajimehoshi/ebiten) | ⭐ 13,6 tys. | Go | <code>+381</code> <code>-297</code> |
| [filp/whoops](https://github.com/filp/whoops) | ⭐ 13,2 tys. | PHP | <code>+115</code> <code>-3</code> |
| [spencermountain/compromise](https://github.com/spencermountain/compromise) | ⭐ 12,2 tys. | JavaScript | <code>+124</code> <code>-11</code> |
| [spencermountain/compromise](https://github.com/spencermountain/compromise) | ⭐ 12,2 tys. | JavaScript | <code>+518</code> <code>-91</code> |
| [doctrine/lexer](https://github.com/doctrine/lexer) | ⭐ 11,1 tys. | PHP | <code>+72</code> <code>-2</code> |
| [kanboard/kanboard](https://github.com/kanboard/kanboard) | ⭐ 9,9 tys. | PHP | <code>+127</code> <code>-7</code> |
| [kanboard/kanboard](https://github.com/kanboard/kanboard) | ⭐ 9,9 tys. | PHP | <code>+293</code> <code>-11</code> |
| [FluentValidation/FluentValidation](https://github.com/FluentValidation/FluentValidation) | ⭐ 9,8 tys. | C# | <code>+14</code> <code>-1</code> |
| [serilog/serilog](https://github.com/serilog/serilog) | ⭐ 8 tys. | C# | <code>+12</code> <code>-0</code> |
| [serilog/serilog](https://github.com/serilog/serilog) | ⭐ 8,1 tys. | C# | <code>+12</code> <code>-0</code> |
| [concourse/concourse](https://github.com/concourse/concourse) | ⭐ 7,9 tys. | Go | <code>+153</code> <code>-23</code> |
| [predis/predis](https://github.com/predis/predis) | ⭐ 7,8 tys. | PHP | <code>+352</code> <code>-27</code> |
| [vscode-neovim/vscode-neovim](https://github.com/vscode-neovim/vscode-neovim) | ⭐ 7,8 tys. | TypeScript | <code>+65</code> <code>-2</code> |
| [NLog/NLog](https://github.com/NLog/NLog) | ⭐ 6,5 tys. | C# | <code>+19</code> <code>-0</code> |
| [maildev/maildev](https://github.com/maildev/maildev) | ⭐ 6,1 tys. | TypeScript | <code>+69</code> <code>-13</code> |
| [NLog/NLog](https://github.com/NLog/NLog) | ⭐ 6,5 tys. | C# | <code>+94</code> <code>-4</code> |
| [maildev/maildev](https://github.com/maildev/maildev) | ⭐ 6,2 tys. | TypeScript | <code>+69</code> <code>-13</code> |
| [Pagefind/pagefind](https://github.com/Pagefind/pagefind) | ⭐ 5,5 tys. | Rust | <code>+48</code> <code>-2</code> |
| [xoofx/markdig](https://github.com/xoofx/markdig) | ⭐ 5,3 tys. | C# | <code>+223</code> <code>-7</code> |
| [spencermountain/spacetime](https://github.com/spencermountain/spacetime) | ⭐ 4,1 tys. | JavaScript | <code>+15</code> <code>-40</code> |
| [xoofx/markdig](https://github.com/xoofx/markdig) | ⭐ 5,3 tys. | C# | <code>+357</code> <code>-48</code> |
| [dromara/carbon](https://github.com/dromara/carbon) | ⭐ 5,2 tys. | Go | <code>+41</code> <code>-4</code> |
| [alecthomas/chroma](https://github.com/alecthomas/chroma) | ⭐ 5,1 tys. | Go | <code>+90</code> <code>-3</code> |
| [olekukonko/tablewriter](https://github.com/olekukonko/tablewriter) | ⭐ 4,8 tys. | Go | <code>+16</code> <code>-0</code> |
| [knadh/koanf](https://github.com/knadh/koanf) | ⭐ 4,2 tys. | Go | <code>+28</code> <code>-7</code> |
| [spencermountain/spacetime](https://github.com/spencermountain/spacetime) | ⭐ 4,1 tys. | JavaScript | <code>+67</code> <code>-62</code> |
| [itchyny/gojq](https://github.com/itchyny/gojq) | ⭐ 3,8 tys. | Go | <code>+42</code> <code>-5</code> |
| [Suor/funcy](https://github.com/Suor/funcy) | ⭐ 3,5 tys. | Python | <code>+18</code> <code>-2</code> |
| [thephpleague/csv](https://github.com/thephpleague/csv) | ⭐ 3,5 tys. | PHP | <code>+22</code> <code>-9</code> |
| [composer/satis](https://github.com/composer/satis) | ⭐ 3,3 tys. | PHP | <code>+55</code> <code>-10</code> |
| [composer/satis](https://github.com/composer/satis) | ⭐ 3,3 tys. | PHP | <code>+105</code> <code>-12</code> |
| [NaturalIntelligence/fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) | ⭐ 3,1 tys. | JavaScript | <code>+2</code> <code>-0</code> |
| [versity/versitygw](https://github.com/versity/versitygw) | ⭐ 3,1 tys. | Go | <code>+1004</code> <code>-85</code> |
| [montanaflynn/stats](https://github.com/montanaflynn/stats) | ⭐ 3 tys. | Go | <code>+66</code> <code>-23</code> |
| [versity/versitygw](https://github.com/versity/versitygw) | ⭐ 3 tys. | Go | <code>+124</code> <code>-14</code> |
| [mitsuhiko/insta](https://github.com/mitsuhiko/insta) | ⭐ 3 tys. | Rust | <code>+8</code> <code>-2</code> |
| [thephpleague/commonmark](https://github.com/thephpleague/commonmark) | ⭐ 3 tys. | PHP | <code>+17</code> <code>-0</code> |
| [Paymenter/Paymenter](https://github.com/Paymenter/Paymenter) | ⭐ 2,4 tys. | PHP | <code>+135</code> <code>-11</code> |
| [BurntSushi/jiff](https://github.com/BurntSushi/jiff) | ⭐ 3 tys. | Rust | <code>+37</code> <code>-5</code> |
| [zzzprojects/html-agility-pack](https://github.com/zzzprojects/html-agility-pack) | ⭐ 2,9 tys. | C# | <code>+27</code> <code>-1</code> |
| [Paymenter/Paymenter](https://github.com/Paymenter/Paymenter) | ⭐ 2,8 tys. | PHP | <code>+137</code> <code>-11</code> |
| [api-platform/core](https://github.com/api-platform/core) | ⭐ 2,6 tys. | PHP | <code>+52</code> <code>-27</code> |
| [pelican/panel](https://github.com/pelican/panel) | ⭐ 2,4 tys. | PHP | <code>+338</code> <code>-32</code> |
| [gookit/goutil](https://github.com/gookit/goutil) | ⭐ 2,4 tys. | Go | <code>+12</code> <code>-0</code> |
| [pelican/panel](https://github.com/pelican/panel) | ⭐ 2,3 tys. | PHP | <code>+64</code> <code>-3</code> |
| [dedoc/scramble](https://github.com/dedoc/scramble) | ⭐ 2,2 tys. | PHP | <code>+23</code> <code>-0</code> |
| [gocarina/gocsv](https://github.com/gocarina/gocsv) | ⭐ 2,2 tys. | Go | <code>+89</code> <code>-2</code> |
| [thephpleague/html-to-markdown](https://github.com/thephpleague/html-to-markdown) | ⭐ 1,9 tys. | PHP | <code>+3</code> <code>-2</code> |
| [gocarina/gocsv](https://github.com/gocarina/gocsv) | ⭐ 2,2 tys. | Go | <code>+185</code> <code>-22</code> |
| [thephpleague/html-to-markdown](https://github.com/thephpleague/html-to-markdown) | ⭐ 1,9 tys. | PHP | <code>+20</code> <code>-9</code> |
| [spatie/period](https://github.com/spatie/period) | ⭐ 1,7 tys. | PHP | <code>+69</code> <code>-0</code> |
| [AfterShip/email-verifier](https://github.com/AfterShip/email-verifier) | ⭐ 1,6 tys. | Go | <code>+99</code> <code>-3</code> |
| [gookit/color](https://github.com/gookit/color) | ⭐ 1,6 tys. | Go | <code>+12</code> <code>-1</code> |
| [fabiocaccamo/python-benedict](https://github.com/fabiocaccamo/python-benedict) | ⭐ 1,6 tys. | Python | <code>+66</code> <code>-5</code> |
| [gookit/color](https://github.com/gookit/color) | ⭐ 1,6 tys. | Go | <code>+12</code> <code>-1</code> |
| [linuxmint/nemo](https://github.com/linuxmint/nemo) | ⭐ 1,6 tys. | C | <code>+3</code> <code>-5</code> |
| [olebedev/when](https://github.com/olebedev/when) | ⭐ 1,5 tys. | Go | <code>+45</code> <code>-1</code> |
| [dgilland/pydash](https://github.com/dgilland/pydash) | ⭐ 1,4 tys. | Python | <code>+18</code> <code>-5</code> |
| [cakephp/chronos](https://github.com/cakephp/chronos) | ⭐ 1,4 tys. | PHP | <code>+17</code> <code>-2</code> |
| [go-playground/form](https://github.com/go-playground/form) | ⭐ 930 | Go | <code>+35</code> <code>-0</code> |
| [go-playground/form](https://github.com/go-playground/form) | ⭐ 932 | Go | <code>+35</code> <code>-0</code> |
| [mkideal/cli](https://github.com/mkideal/cli) | ⭐ 723 | Go | <code>+22</code> <code>-1</code> |
| [gookit/config](https://github.com/gookit/config) | ⭐ 585 | Go | <code>+29</code> <code>-8</code> |
| [rust-syndication/rss](https://github.com/rust-syndication/rss) | ⭐ 504 | Rust | <code>+24</code> <code>-2</code> |
| [kelindar/bitmap](https://github.com/kelindar/bitmap) | ⭐ 384 | Assembly | <code>+146</code> <code>-12</code> |
| [brick/date-time](https://github.com/brick/date-time) | ⭐ 361 | PHP | <code>+67</code> <code>-36</code> |
| [pydantic/pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | ⭐ 338 | Python | <code>+124</code> <code>-1</code> |
| [rust-syndication/rss](https://github.com/rust-syndication/rss) | ⭐ 503 | Rust | <code>+24</code> <code>-2</code> |
| [kelindar/bitmap](https://github.com/kelindar/bitmap) | ⭐ 385 | Assembly | <code>+146</code> <code>-12</code> |
| [brick/date-time](https://github.com/brick/date-time) | ⭐ 360 | PHP | <code>+67</code> <code>-36</code> |
| [pydantic/pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | ⭐ 340 | Python | <code>+124</code> <code>-1</code> |
| [rodaine/table](https://github.com/rodaine/table) | ⭐ 324 | Go | <code>+32</code> <code>-2</code> |
| [wroberts/pytimeparse](https://github.com/wroberts/pytimeparse) | ⭐ 299 | Python | <code>+5</code> <code>-1</code> |
| [QEDK/configparser-rs](https://github.com/QEDK/configparser-rs) | ⭐ 87 | Rust | <code>+22</code> <code>-1</code> |
| [wroberts/pytimeparse](https://github.com/wroberts/pytimeparse) | ⭐ 296 | Python | <code>+5</code> <code>-1</code> |
| [QEDK/configparser-rs](https://github.com/QEDK/configparser-rs) | ⭐ 88 | Rust | <code>+22</code> <code>-1</code> |
| [thephpleague/uri-src](https://github.com/thephpleague/uri-src) | ⭐ 51 | PHP | <code>+18</code> <code>-2</code> |
| [spiral/testing](https://github.com/spiral/testing) | ⭐ 7 | PHP | <code>+255</code> <code>-6</code> |
<!-- /stats:opensource -->
+267
View File
@@ -0,0 +1,267 @@
{
"contributions": [
{
"project": "Proxmox VE",
"platform": "git.proxmox.com",
"repo": "pve-manager",
"url": "https://git.proxmox.com/?p=pve-manager.git;a=summary",
"authorSearchUrl": "https://git.proxmox.com/?p=pve-manager.git;a=search;h=HEAD;s=Michal+Fox;st=author",
"status": "accepted",
"commits": 6,
"language": "JavaScript",
"color": "#f1e05a",
"description": {
"pl": "Interfejs WWW i API Proxmox VE, platformy wirtualizacji serwerów.",
"en": "Web interface and API of Proxmox VE, the server virtualization platform."
},
"changes": [
{
"label": "e42092e",
"title": {
"pl": "fix #6475: ui: upload: only show the file name of the selected file",
"en": "fix #6475: ui: upload: only show the file name of the selected file"
},
"url": "https://git.proxmox.com/?p=pve-manager.git;a=commit;h=e42092e"
},
{
"label": "ac0c87d",
"title": {
"pl": "fix #4986: jobs: do not get stuck if the task log is missing",
"en": "fix #4986: jobs: do not get stuck if the task log is missing"
},
"url": "https://git.proxmox.com/?p=pve-manager.git;a=commit;h=ac0c87d"
},
{
"label": "8efee57",
"title": {
"pl": "fix #7108: ui: ipset: do not offer aliases that are already added",
"en": "fix #7108: ui: ipset: do not offer aliases that are already added"
},
"url": "https://git.proxmox.com/?p=pve-manager.git;a=commit;h=8efee57"
},
{
"label": "55c76c2",
"title": {
"pl": "fix #5608: ui: resource mappings: validate the name like the API does",
"en": "fix #5608: ui: resource mappings: validate the name like the API does"
},
"url": "https://git.proxmox.com/?p=pve-manager.git;a=commit;h=55c76c2"
},
{
"label": "2380c3d",
"title": {
"pl": "fix #8015: ui: upload: let the user choose the .img image format",
"en": "fix #8015: ui: upload: let the user choose the .img image format"
},
"url": "https://git.proxmox.com/?p=pve-manager.git;a=commit;h=2380c3d"
},
{
"label": "ebf648d",
"title": {
"pl": "fix #8015: ui: download url: let the user choose the .img image format",
"en": "fix #8015: ui: download url: let the user choose the .img image format"
},
"url": "https://git.proxmox.com/?p=pve-manager.git;a=commit;h=ebf648d"
}
]
},
{
"project": "Proxmox VE",
"platform": "git.proxmox.com",
"repo": "qemu-server",
"url": "https://git.proxmox.com/?p=qemu-server.git;a=summary",
"authorSearchUrl": "https://git.proxmox.com/?p=qemu-server.git;a=search;h=HEAD;s=Michal+Fox;st=author",
"status": "accepted",
"commits": 3,
"language": "Perl",
"color": "#0298c3",
"description": {
"pl": "Obsługa maszyn wirtualnych QEMU/KVM w Proxmox VE.",
"en": "QEMU/KVM virtual machine management in Proxmox VE."
},
"changes": [
{
"label": "167f3d70a5",
"title": {
"pl": "fix #6907: memory: allow multi-digit host nodes with hugepages",
"en": "fix #6907: memory: allow multi-digit host nodes with hugepages"
},
"url": "https://git.proxmox.com/?p=qemu-server.git;a=commit;h=167f3d70a5"
},
{
"label": "a4efa5f9ad",
"title": {
"pl": "partially fix #4012: migrate: mention snapshots referencing a local ISO image",
"en": "partially fix #4012: migrate: mention snapshots referencing a local ISO image"
},
"url": "https://git.proxmox.com/?p=qemu-server.git;a=commit;h=a4efa5f9ad"
},
{
"label": "5abda85",
"title": {
"pl": "test: migration: support volumes other than images",
"en": "test: migration: support volumes other than images"
},
"url": "https://git.proxmox.com/?p=qemu-server.git;a=commit;h=5abda85"
}
]
},
{
"project": "Proxmox VE",
"platform": "git.proxmox.com",
"repo": "pve-storage",
"url": "https://git.proxmox.com/?p=pve-storage.git;a=summary",
"authorSearchUrl": "https://git.proxmox.com/?p=pve-storage.git;a=search;h=HEAD;s=Michal+Fox;st=author",
"status": "accepted",
"commits": 1,
"language": "Perl",
"color": "#0298c3",
"description": {
"pl": "Warstwa magazynów danych Proxmox VE.",
"en": "Storage layer of Proxmox VE."
},
"changes": [
{
"label": "c10faa6972",
"title": {
"pl": "fix #6969: plugin: keep content directory when freeing its last file",
"en": "fix #6969: plugin: keep content directory when freeing its last file"
},
"url": "https://git.proxmox.com/?p=pve-storage.git;a=commit;h=c10faa6972"
}
]
},
{
"project": "Proxmox VE",
"platform": "git.proxmox.com",
"repo": "proxmox-widget-toolkit",
"url": "https://git.proxmox.com/?p=proxmox-widget-toolkit.git;a=summary",
"authorSearchUrl": "https://git.proxmox.com/?p=proxmox-widget-toolkit.git;a=search;h=HEAD;s=Michal+Fox;st=author",
"status": "accepted",
"commits": 1,
"language": "JavaScript",
"color": "#f1e05a",
"description": {
"pl": "Wspólne komponenty interfejsu produktów Proxmox.",
"en": "Shared UI components of the Proxmox products."
},
"changes": [
{
"label": "b92a9ad19f",
"title": {
"pl": "fix #6943: ui: network selector: show comments of IPv6 entries",
"en": "fix #6943: ui: network selector: show comments of IPv6 entries"
},
"url": "https://git.proxmox.com/?p=proxmox-widget-toolkit.git;a=commit;h=b92a9ad19f"
}
]
},
{
"project": "Mozilla Firefox",
"platform": "hg.mozilla.org",
"repo": "mozilla-central",
"url": "https://hg.mozilla.org/mozilla-central/rev/9c1b9b8ff0a8",
"authorSearchUrl": null,
"status": "accepted",
"commits": 1,
"language": "JavaScript",
"color": "#f1e05a",
"description": {
"pl": "Menedżer haseł: \"View Saved Passwords\" otwierało about:logins bez fokusu. Wydanie: Firefox 160.",
"en": "Password manager: \"View Saved Passwords\" opened about:logins without focus. Release: Firefox 160."
},
"changes": [
{
"label": "Bug 1996443",
"title": {
"pl": "zgłoszenie w Bugzilli",
"en": "Bugzilla report"
},
"url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1996443"
},
{
"label": "D332854",
"title": {
"pl": "rewizja w Phabricatorze",
"en": "Phabricator revision"
},
"url": "https://phabricator.services.mozilla.com/D332854"
},
{
"label": "9c1b9b8ff0a8",
"title": {
"pl": "commit w mozilla-central",
"en": "mozilla-central commit"
},
"url": "https://hg.mozilla.org/mozilla-central/rev/9c1b9b8ff0a8"
},
{
"label": "16fd06a0033d",
"title": {
"pl": "mirror na GitHubie",
"en": "GitHub mirror"
},
"url": "https://github.com/mozilla-firefox/firefox/commit/16fd06a0033d"
}
]
},
{
"project": "Blender",
"platform": "projects.blender.org",
"repo": "blender/blender",
"url": "https://projects.blender.org/blender/blender",
"authorSearchUrl": null,
"status": "approved",
"commits": 0,
"language": "C++",
"color": "#f34b7d",
"description": {
"pl": "Dwie poprawki zaakceptowane przez maintainerów: Local View i edycja tekstu.",
"en": "Two fixes approved by the maintainers: Local View and text editing."
},
"changes": [
{
"label": "#165627",
"title": {
"pl": "Fix #92527: unhide w Local View",
"en": "Fix #92527: Local View unhide"
},
"url": "https://projects.blender.org/blender/blender/pulls/165627"
},
{
"label": "#165628",
"title": {
"pl": "Fix #96432: klawisz D w edycji tekstu",
"en": "Fix #96432: D key in text editing"
},
"url": "https://projects.blender.org/blender/blender/pulls/165628"
}
]
},
{
"project": "OBS Studio",
"platform": "GitHub",
"repo": "obsproject/obs-studio",
"url": "https://github.com/obsproject/obs-studio/pull/14080",
"authorSearchUrl": null,
"status": "approved",
"commits": 0,
"language": "C",
"color": "#555555",
"description": {
"pl": "libobs: klawisze numeryczne bez NumLocka na Waylandzie.",
"en": "libobs: numpad keys without NumLock on Wayland."
},
"changes": [
{
"label": "#14080",
"title": {
"pl": "libobs: numpad bez NumLocka na Waylandzie",
"en": "libobs: numpad without NumLock on Wayland"
},
"url": "https://github.com/obsproject/obs-studio/pull/14080"
}
]
}
]
}
+110 -64
View File
@@ -17,7 +17,7 @@
<br>
VulCode is a Polish software house with years of experience. Since 2020 we have delivered high-quality software and written more than **5 million lines of code** across **200+ projects**. We also contributed to **53 open source repositories** with **410,000+ combined stars** on GitHub. We specialize in websites, panels and dashboards, and applications, as well as building scalable platforms, and we actively contribute to dozens of open source projects.
VulCode is a Polish software house with years of experience. Since 2020 we have delivered high-quality software and written more than **6 million lines of code** across **150+ projects**. We also contributed to **82 open source repositories** with **1,300,000+ combined stars** on GitHub. We specialize in websites, panels and dashboards, and applications, as well as building scalable platforms, and we actively contribute to dozens of open source projects.
## 🧩 What we do
@@ -110,22 +110,22 @@ A transparent, 7-step process from first call to production support:
<!-- stats:summary -->
<table>
<tr>
<td align="center" colspan="2" width="50%"><h3>5,994,022</h3>lines of code</td>
<td align="center" width="25%"><h3>23,830</h3>commits</td>
<td align="center" width="25%"><h3>200+</h3>projects</td>
<td align="center" colspan="2" width="50%"><h3>6,399,947</h3>lines of code</td>
<td align="center" width="25%"><h3>24,331</h3>commits</td>
<td align="center" width="25%"><h3>150+</h3>projects</td>
</tr>
<tr>
<td align="center" width="25%"><h3>410,000+</h3>OSS project stars</td>
<td align="center" width="25%"><h3>53</h3>open source projects</td>
<td align="center" width="25%"><h3>1,300,000+</h3>OSS project stars</td>
<td align="center" width="25%"><h3>82</h3>open source projects</td>
<td align="center" width="25%"><h3>26</h3>languages</td>
<td align="center" width="25%"><h3>1,655</h3>working days</td>
<td align="center" width="25%"><h3>1,680</h3>working days</td>
</tr>
</table>
```diff
+ 5,994,022 lines added
- 778,721 lines removed
! 5,215,301 net lines
+ 7,579,803 lines added
- 1,318,793 lines removed
! 6,261,010 net lines
```
<!-- /stats:summary -->
@@ -142,37 +142,37 @@ A transparent, 7-step process from first call to production support:
<!-- stats:languages -->
<table align="center">
<tr><th></th><th align="left">Language</th><th align="right">Lines of code</th><th align="right">Commits</th><th align="right">Share</th></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ts" width="18" alt="TypeScript"></td><td><b>TypeScript</b></td><td align="right">2,274,503</td><td align="right">6,203</td><td align="right">46.0% <sub>██████████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=rust" width="18" alt="Rust"></td><td><b>Rust</b></td><td align="right">988,753</td><td align="right">2,516</td><td align="right">20.0% <sub>████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=go" width="18" alt="Go"></td><td><b>Go</b></td><td align="right">281,782</td><td align="right">907</td><td align="right">5.7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=kotlin" width="18" alt="Kotlin"></td><td><b>Kotlin</b></td><td align="right">206,250</td><td align="right">796</td><td align="right">4.2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cs" width="18" alt="C#"></td><td><b>C#</b></td><td align="right">162,872</td><td align="right">752</td><td align="right">3.3% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=js" width="18" alt="JavaScript"></td><td><b>JavaScript</b></td><td align="right">140,024</td><td align="right">500</td><td align="right">2.8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=php" width="18" alt="PHP"></td><td><b>PHP</b></td><td align="right">130,914</td><td align="right">149</td><td align="right">2.6% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=swift" width="18" alt="Swift"></td><td><b>Swift</b></td><td align="right">116,812</td><td align="right">437</td><td align="right">2.4% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=elixir" width="18" alt="Elixir"></td><td><b>Elixir</b></td><td align="right">91,810</td><td align="right">438</td><td align="right">1.9% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=py" width="18" alt="Python"></td><td><b>Python</b></td><td align="right">84,375</td><td align="right">317</td><td align="right">1.7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=html" width="18" alt="HTML"></td><td><b>HTML</b></td><td align="right">80,555</td><td align="right">145</td><td align="right">1.6% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=css" width="18" alt="CSS"></td><td><b>CSS</b></td><td align="right">61,717</td><td align="right">502</td><td align="right">1.2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cpp" width="18" alt="C++"></td><td><b>C++</b></td><td align="right">57,275</td><td align="right">358</td><td align="right">1.2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=c" width="18" alt="C"></td><td><b>C</b></td><td align="right">49,346</td><td align="right">355</td><td align="right">1.0% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=zig" width="18" alt="Zig"></td><td><b>Zig</b></td><td align="right">44,583</td><td align="right">284</td><td align="right">0.9% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=mysql" width="18" alt="SQL"></td><td><b>SQL</b></td><td align="right">38,114</td><td align="right">590</td><td align="right">0.8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ruby" width="18" alt="Ruby"></td><td><b>Ruby</b></td><td align="right">37,655</td><td align="right">263</td><td align="right">0.8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=lua" width="18" alt="Lua"></td><td><b>Lua</b></td><td align="right">32,053</td><td align="right">206</td><td align="right">0.6% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=bash" width="18" alt="Shell"></td><td><b>Shell</b></td><td align="right">29,411</td><td align="right">263</td><td align="right">0.6% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=java" width="18" alt="Java"></td><td><b>Java</b></td><td align="right">13,788</td><td align="right">75</td><td align="right">0.3% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=dart" width="18" alt="Dart"></td><td><b>Dart</b></td><td align="right">6,013</td><td align="right">40</td><td align="right">0.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ts" width="18" alt="TypeScript"></td><td><b>TypeScript</b></td><td align="right">3,245,343</td><td align="right">7,512</td><td align="right">50.7% <sub>███████████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=rust" width="18" alt="Rust"></td><td><b>Rust</b></td><td align="right">1,280,619</td><td align="right">2,781</td><td align="right">20.0% <sub>████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=go" width="18" alt="Go"></td><td><b>Go</b></td><td align="right">343,647</td><td align="right">965</td><td align="right">5.4% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=kotlin" width="18" alt="Kotlin"></td><td><b>Kotlin</b></td><td align="right">207,212</td><td align="right">552</td><td align="right">3.2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cs" width="18" alt="C#"></td><td><b>C#</b></td><td align="right">175,421</td><td align="right">707</td><td align="right">2.7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=js" width="18" alt="JavaScript"></td><td><b>JavaScript</b></td><td align="right">146,327</td><td align="right">593</td><td align="right">2.3% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=php" width="18" alt="PHP"></td><td><b>PHP</b></td><td align="right">133,817</td><td align="right">110</td><td align="right">2.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=swift" width="18" alt="Swift"></td><td><b>Swift</b></td><td align="right">119,541</td><td align="right">437</td><td align="right">1.9% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=py" width="18" alt="Python"></td><td><b>Python</b></td><td align="right">114,446</td><td align="right">375</td><td align="right">1.8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=elixir" width="18" alt="Elixir"></td><td><b>Elixir</b></td><td align="right">107,776</td><td align="right">415</td><td align="right">1.7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=html" width="18" alt="HTML"></td><td><b>HTML</b></td><td align="right">80,830</td><td align="right">163</td><td align="right">1.3% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=css" width="18" alt="CSS"></td><td><b>CSS</b></td><td align="right">67,799</td><td align="right">571</td><td align="right">1.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cpp" width="18" alt="C++"></td><td><b>C++</b></td><td align="right">60,532</td><td align="right">84</td><td align="right">0.9% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ruby" width="18" alt="Ruby"></td><td><b>Ruby</b></td><td align="right">52,836</td><td align="right">73</td><td align="right">0.8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=c" width="18" alt="C"></td><td><b>C</b></td><td align="right">51,238</td><td align="right">109</td><td align="right">0.8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=lua" width="18" alt="Lua"></td><td><b>Lua</b></td><td align="right">47,845</td><td align="right">64</td><td align="right">0.7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=mysql" width="18" alt="SQL"></td><td><b>SQL</b></td><td align="right">47,780</td><td align="right">686</td><td align="right">0.7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=zig" width="18" alt="Zig"></td><td><b>Zig</b></td><td align="right">46,238</td><td align="right">73</td><td align="right">0.7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=bash" width="18" alt="Shell"></td><td><b>Shell</b></td><td align="right">32,511</td><td align="right">313</td><td align="right">0.5% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=java" width="18" alt="Java"></td><td><b>Java</b></td><td align="right">14,401</td><td align="right">50</td><td align="right">0.2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=dart" width="18" alt="Dart"></td><td><b>Dart</b></td><td align="right">6,146</td><td align="right">28</td><td align="right">0.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=scala" width="18" alt="Scala"></td><td><b>Scala</b></td><td align="right">5,439</td><td align="right">25</td><td align="right">0.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=solidity" width="18" alt="Solidity"></td><td><b>Solidity</b></td><td align="right">4,688</td><td align="right">33</td><td align="right">0.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=haskell" width="18" alt="Haskell"></td><td><b>Haskell</b></td><td align="right">3,609</td><td align="right">28</td><td align="right">0.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=scala" width="18" alt="Scala"></td><td><b>Scala</b></td><td align="right">3,133</td><td align="right">29</td><td align="right">0.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/fsharp.png" width="18" alt="F#"></td><td><b>F#</b></td><td align="right">3,017</td><td align="right">18</td><td align="right">0.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/assembly.png" width="18" alt="Assembly"></td><td><b>Assembly</b></td><td align="right">397</td><td align="right">6</td><td align="right">0.0% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=haskell" width="18" alt="Haskell"></td><td><b>Haskell</b></td><td align="right">3,641</td><td align="right">25</td><td align="right">0.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/fsharp.png" width="18" alt="F#"></td><td><b>F#</b></td><td align="right">3,297</td><td align="right">19</td><td align="right">0.1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/assembly.png" width="18" alt="Assembly"></td><td><b>Assembly</b></td><td align="right">577</td><td align="right">8</td><td align="right">0.0% <sub>â–ˆ</sub></td></tr>
</table>
**Frameworks & tools detected across projects** <sub>(repository count)</sub>
Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Vite <sub>25</sub> · Tailwind CSS <sub>24</sub> · Motion <sub>18</sub> · Prisma <sub>16</sub> · discord.js <sub>14</sub> · Serde <sub>10</sub> · Tokio <sub>7</sub> · reqwest <sub>7</sub> · Gorilla WebSocket <sub>6</sub> · SQLite <sub>6</sub> · xUnit <sub>6</sub> · Stripe <sub>5</sub> · Avalonia <sub>4</sub> · Axum <sub>4</sub> · JUnit <sub>4</sub> · PHPUnit <sub>4</sub> · Playwright <sub>4</sub> · SQLx <sub>4</sub> · Framer Motion <sub>3</sub> · Jetpack Compose <sub>3</sub> · Redis <sub>3</sub> · Vitest <sub>3</sub> · clap <sub>3</sub> · gRPC <sub>3</sub> · wasm-bindgen <sub>3</sub> · Android <sub>2</sub> · BullMQ <sub>2</sub> · Chart.js <sub>2</sub> · Coroutines <sub>2</sub> · Guzzle <sub>2</sub> · Jest <sub>2</sub> · Laravel <sub>2</sub> · Next.js <sub>2</sub> · Pterodactyl <sub>2</sub> · Zod <sub>2</sub> · aiohttp <sub>2</sub> · discord.py <sub>2</sub> · i18next <sub>2</sub> · webpack <sub>2</sub> · Cobra <sub>1</sub> · Discord.Net <sub>1</sub> · Docker SDK <sub>1</sub> · Ecto <sub>1</sub> · Electron <sub>1</sub> · Expo <sub>1</sub> · FastAPI <sub>1</sub> · GORM <sub>1</sub> · Gin <sub>1</sub> · HTTPX <sub>1</sub> · Json.NET <sub>1</sub> · Paper <sub>1</sub> · PostgreSQL <sub>1</sub> · Preact <sub>1</sub> · Ratatui <sub>1</sub> · React Native <sub>1</sub> · Spring Boot <sub>1</sub> · Tauri <sub>1</sub> · chi <sub>1</sub> · discordgo <sub>1</sub> · gopher-lua <sub>1</sub> · pytest <sub>1</sub> · tonic <sub>1</sub>
Docker <sub>62</sub> · React <sub>31</sub> · Express <sub>27</sub> · Vite <sub>26</sub> · Tailwind CSS <sub>24</sub> · Motion <sub>18</sub> · Prisma <sub>16</sub> · discord.js <sub>14</sub> · Serde <sub>10</sub> · Tokio <sub>7</sub> · reqwest <sub>7</sub> · Gorilla WebSocket <sub>6</sub> · SQLite <sub>6</sub> · xUnit <sub>6</sub> · Stripe <sub>5</sub> · Avalonia <sub>4</sub> · Axum <sub>4</sub> · JUnit <sub>4</sub> · PHPUnit <sub>4</sub> · Playwright <sub>4</sub> · SQLx <sub>4</sub> · Vitest <sub>4</sub> · Framer Motion <sub>3</sub> · Jetpack Compose <sub>3</sub> · Redis <sub>3</sub> · Zod <sub>3</sub> · clap <sub>3</sub> · gRPC <sub>3</sub> · wasm-bindgen <sub>3</sub> · Android <sub>2</sub> · BullMQ <sub>2</sub> · Chart.js <sub>2</sub> · Coroutines <sub>2</sub> · FastAPI <sub>2</sub> · Guzzle <sub>2</sub> · HTTPX <sub>2</sub> · Jest <sub>2</sub> · Laravel <sub>2</sub> · Next.js <sub>2</sub> · Pterodactyl <sub>2</sub> · aiohttp <sub>2</sub> · discord.py <sub>2</sub> · i18next <sub>2</sub> · pytest <sub>2</sub> · webpack <sub>2</sub> · Click <sub>1</sub> · Cobra <sub>1</sub> · Discord.Net <sub>1</sub> · Docker SDK <sub>1</sub> · Ecto <sub>1</sub> · Electron <sub>1</sub> · Expo <sub>1</sub> · GORM <sub>1</sub> · Gin <sub>1</sub> · Json.NET <sub>1</sub> · Paper <sub>1</sub> · PostgreSQL <sub>1</sub> · Preact <sub>1</sub> · Pydantic <sub>1</sub> · Ratatui <sub>1</sub> · React Native <sub>1</sub> · SQLAlchemy <sub>1</sub> · Spring Boot <sub>1</sub> · Storybook <sub>1</sub> · TanStack Query <sub>1</sub> · Tauri <sub>1</sub> · chi <sub>1</sub> · discordgo <sub>1</sub> · gopher-lua <sub>1</sub> · pygame <sub>1</sub> · tonic <sub>1</sub>
<!-- /stats:languages -->
<sub>Counted by my own API [ghapi.dualfroz.com](https://ghapi.dualfroz.com/v2/public) across every repository, private ones included. Updated daily.</sub>
@@ -307,62 +307,108 @@ Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Vite <su
## 🌍 Open source
### Beyond GitHub
<!-- stats:beyond -->
> Code merged outside GitHub, through mailing lists and the projects' own review tools: **12** commits in **5** repositories. Below them, changes approved by the maintainers that are awaiting merge.
| Project | Repository | Status | Changes |
|---|---|---|---|
| Proxmox VE | [pve-manager](https://git.proxmox.com/?p=pve-manager.git;a=search;h=HEAD;s=Michal+Fox;st=author)<br><sub>git.proxmox.com</sub> | merged, 6 commits | [e42092e](https://git.proxmox.com/?p=pve-manager.git;a=commit;h=e42092e) fix #6475: ui: upload: only show the file name of the selected file<br>[ac0c87d](https://git.proxmox.com/?p=pve-manager.git;a=commit;h=ac0c87d) fix #4986: jobs: do not get stuck if the task log is missing<br>[8efee57](https://git.proxmox.com/?p=pve-manager.git;a=commit;h=8efee57) fix #7108: ui: ipset: do not offer aliases that are already added<br>[+3 more](https://git.proxmox.com/?p=pve-manager.git;a=search;h=HEAD;s=Michal+Fox;st=author) |
| Proxmox VE | [qemu-server](https://git.proxmox.com/?p=qemu-server.git;a=search;h=HEAD;s=Michal+Fox;st=author)<br><sub>git.proxmox.com</sub> | merged, 3 commits | [167f3d70a5](https://git.proxmox.com/?p=qemu-server.git;a=commit;h=167f3d70a5) fix #6907: memory: allow multi-digit host nodes with hugepages<br>[a4efa5f9ad](https://git.proxmox.com/?p=qemu-server.git;a=commit;h=a4efa5f9ad) partially fix #4012: migrate: mention snapshots referencing a local ISO image<br>[5abda85](https://git.proxmox.com/?p=qemu-server.git;a=commit;h=5abda85) test: migration: support volumes other than images |
| Proxmox VE | [pve-storage](https://git.proxmox.com/?p=pve-storage.git;a=search;h=HEAD;s=Michal+Fox;st=author)<br><sub>git.proxmox.com</sub> | merged, 1 commit | [c10faa6972](https://git.proxmox.com/?p=pve-storage.git;a=commit;h=c10faa6972) fix #6969: plugin: keep content directory when freeing its last file |
| Proxmox VE | [proxmox-widget-toolkit](https://git.proxmox.com/?p=proxmox-widget-toolkit.git;a=search;h=HEAD;s=Michal+Fox;st=author)<br><sub>git.proxmox.com</sub> | merged, 1 commit | [b92a9ad19f](https://git.proxmox.com/?p=proxmox-widget-toolkit.git;a=commit;h=b92a9ad19f) fix #6943: ui: network selector: show comments of IPv6 entries |
| Mozilla Firefox | [mozilla-central](https://hg.mozilla.org/mozilla-central/rev/9c1b9b8ff0a8)<br><sub>hg.mozilla.org</sub> | merged, 1 commit | [Bug 1996443](https://bugzilla.mozilla.org/show_bug.cgi?id=1996443) Bugzilla report<br>[D332854](https://phabricator.services.mozilla.com/D332854) Phabricator revision<br>[9c1b9b8ff0a8](https://hg.mozilla.org/mozilla-central/rev/9c1b9b8ff0a8) mozilla-central commit<br>[16fd06a0033d](https://github.com/mozilla-firefox/firefox/commit/16fd06a0033d) GitHub mirror |
| Blender | [blender/blender](https://projects.blender.org/blender/blender)<br><sub>projects.blender.org</sub> | approved, awaiting merge | [#165627](https://projects.blender.org/blender/blender/pulls/165627) Fix #92527: Local View unhide<br>[#165628](https://projects.blender.org/blender/blender/pulls/165628) Fix #96432: D key in text editing |
| OBS Studio | [obsproject/obs-studio](https://github.com/obsproject/obs-studio/pull/14080)<br><sub>GitHub</sub> | approved, awaiting merge | [#14080](https://github.com/obsproject/obs-studio/pull/14080) libobs: numpad without NumLock on Wayland |
<!-- /stats:beyond -->
### On GitHub
<!-- stats:opensource -->
Code that made it into projects we use every day. **70** merged pull requests in **53** repositories with **410,000+** stars combined.
Code that made it into projects we use every day. **162** merged pull requests in **82** repositories with **1,300,000+** stars combined.
| Project | Stars | Language | Changes |
|---|---|---|---|
| [zed-industries/zed](https://github.com/zed-industries/zed) | ⭐ 91.3k | Rust | <code>+123</code> <code>-10</code> |
| [icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy) | ⭐ 26.2k | C# | <code>+4624</code> <code>-13</code> |
| [nodejs/node](https://github.com/nodejs/node) | ⭐ 123.2k | JavaScript | <code>+43</code> <code>-7</code> |
| [godotengine/godot](https://github.com/godotengine/godot) | ⭐ 119.2k | C++ | <code>+3</code> <code>-0</code> |
| [mui/material-ui](https://github.com/mui/material-ui) | ⭐ 99.3k | JavaScript | <code>+23</code> <code>-28</code> |
| [zed-industries/zed](https://github.com/zed-industries/zed) | ⭐ 92.3k | Rust | <code>+123</code> <code>-10</code> |
| [astral-sh/uv](https://github.com/astral-sh/uv) | ⭐ 91.3k | Rust | <code>+124</code> <code>-7</code> |
| [grafana/grafana](https://github.com/grafana/grafana) | ⭐ 77.6k | TypeScript | <code>+52</code> <code>-2</code> |
| [alacritty/alacritty](https://github.com/alacritty/alacritty) | ⭐ 66.1k | Rust | <code>+127</code> <code>-30</code> |
| [mastodon/mastodon](https://github.com/mastodon/mastodon) | ⭐ 50.5k | Ruby | <code>+34</code> <code>-2</code> |
| [markedjs/marked](https://github.com/markedjs/marked) | ⭐ 37.3k | JavaScript | <code>+37</code> <code>-1</code> |
| [telegramdesktop/tdesktop](https://github.com/telegramdesktop/tdesktop) | ⭐ 33.4k | C++ | <code>+7</code> <code>-5</code> |
| [composer/composer](https://github.com/composer/composer) | ⭐ 29.6k | PHP | <code>+10</code> <code>-4</code> |
| [icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy) | ⭐ 26.9k | C# | <code>+4724</code> <code>-29</code> |
| [urfave/cli](https://github.com/urfave/cli) | ⭐ 24.3k | Go | <code>+52</code> <code>-12</code> |
| [PHPMailer/PHPMailer](https://github.com/PHPMailer/PHPMailer) | ⭐ 22.3k | PHP | <code>+135</code> <code>-4</code> |
| [postcss/autoprefixer](https://github.com/postcss/autoprefixer) | ⭐ 22.2k | JavaScript | <code>+50</code> <code>-4</code> |
| [postcss/autoprefixer](https://github.com/postcss/autoprefixer) | ⭐ 22.2k | JavaScript | <code>+314</code> <code>-63</code> |
| [twpayne/chezmoi](https://github.com/twpayne/chezmoi) | ⭐ 22.1k | Go | <code>+43</code> <code>-17</code> |
| [gleam-lang/gleam](https://github.com/gleam-lang/gleam) | ⭐ 22k | Rust | <code>+134</code> <code>-1</code> |
| [Seldaek/monolog](https://github.com/Seldaek/monolog) | ⭐ 21.4k | PHP | <code>+41</code> <code>-2</code> |
| [valeriansaliou/sonic](https://github.com/valeriansaliou/sonic) | ⭐ 21.4k | Rust | <code>+88</code> <code>-20</code> |
| [valeriansaliou/sonic](https://github.com/valeriansaliou/sonic) | ⭐ 21.4k | Rust | <code>+217</code> <code>-36</code> |
| [lichess-org/lila](https://github.com/lichess-org/lila) | ⭐ 18.9k | Scala | <code>+35</code> <code>-7</code> |
| [OpenRA/OpenRA](https://github.com/OpenRA/OpenRA) | ⭐ 17.7k | C# | <code>+43</code> <code>-5</code> |
| [briannesbitt/Carbon](https://github.com/briannesbitt/Carbon) | ⭐ 16.6k | PHP | <code>+87</code> <code>-0</code> |
| [PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery) | ⭐ 15k | Go | <code>+183</code> <code>-18</code> |
| [App-vNext/Polly](https://github.com/App-vNext/Polly) | ⭐ 14.2k | C# | <code>+19</code> <code>-1</code> |
| [hajimehoshi/ebiten](https://github.com/hajimehoshi/ebiten) | ⭐ 13.5k | Go | <code>+19</code> <code>-13</code> |
| [App-vNext/Polly](https://github.com/App-vNext/Polly) | ⭐ 14.3k | C# | <code>+19</code> <code>-1</code> |
| [hajimehoshi/ebiten](https://github.com/hajimehoshi/ebiten) | ⭐ 13.6k | Go | <code>+381</code> <code>-297</code> |
| [filp/whoops](https://github.com/filp/whoops) | ⭐ 13.2k | PHP | <code>+115</code> <code>-3</code> |
| [spencermountain/compromise](https://github.com/spencermountain/compromise) | ⭐ 12.2k | JavaScript | <code>+124</code> <code>-11</code> |
| [spencermountain/compromise](https://github.com/spencermountain/compromise) | ⭐ 12.2k | JavaScript | <code>+518</code> <code>-91</code> |
| [doctrine/lexer](https://github.com/doctrine/lexer) | ⭐ 11.1k | PHP | <code>+72</code> <code>-2</code> |
| [kanboard/kanboard](https://github.com/kanboard/kanboard) | ⭐ 9.9k | PHP | <code>+127</code> <code>-7</code> |
| [kanboard/kanboard](https://github.com/kanboard/kanboard) | ⭐ 9.9k | PHP | <code>+293</code> <code>-11</code> |
| [FluentValidation/FluentValidation](https://github.com/FluentValidation/FluentValidation) | ⭐ 9.8k | C# | <code>+14</code> <code>-1</code> |
| [serilog/serilog](https://github.com/serilog/serilog) | ⭐ 8k | C# | <code>+12</code> <code>-0</code> |
| [serilog/serilog](https://github.com/serilog/serilog) | ⭐ 8.1k | C# | <code>+12</code> <code>-0</code> |
| [concourse/concourse](https://github.com/concourse/concourse) | ⭐ 7.9k | Go | <code>+153</code> <code>-23</code> |
| [predis/predis](https://github.com/predis/predis) | ⭐ 7.8k | PHP | <code>+352</code> <code>-27</code> |
| [vscode-neovim/vscode-neovim](https://github.com/vscode-neovim/vscode-neovim) | ⭐ 7.8k | TypeScript | <code>+65</code> <code>-2</code> |
| [NLog/NLog](https://github.com/NLog/NLog) | ⭐ 6.5k | C# | <code>+19</code> <code>-0</code> |
| [maildev/maildev](https://github.com/maildev/maildev) | ⭐ 6.1k | TypeScript | <code>+69</code> <code>-13</code> |
| [NLog/NLog](https://github.com/NLog/NLog) | ⭐ 6.5k | C# | <code>+94</code> <code>-4</code> |
| [maildev/maildev](https://github.com/maildev/maildev) | ⭐ 6.2k | TypeScript | <code>+69</code> <code>-13</code> |
| [Pagefind/pagefind](https://github.com/Pagefind/pagefind) | ⭐ 5.5k | Rust | <code>+48</code> <code>-2</code> |
| [xoofx/markdig](https://github.com/xoofx/markdig) | ⭐ 5.3k | C# | <code>+223</code> <code>-7</code> |
| [spencermountain/spacetime](https://github.com/spencermountain/spacetime) | ⭐ 4.1k | JavaScript | <code>+15</code> <code>-40</code> |
| [xoofx/markdig](https://github.com/xoofx/markdig) | ⭐ 5.3k | C# | <code>+357</code> <code>-48</code> |
| [dromara/carbon](https://github.com/dromara/carbon) | ⭐ 5.2k | Go | <code>+41</code> <code>-4</code> |
| [alecthomas/chroma](https://github.com/alecthomas/chroma) | ⭐ 5.1k | Go | <code>+90</code> <code>-3</code> |
| [olekukonko/tablewriter](https://github.com/olekukonko/tablewriter) | ⭐ 4.8k | Go | <code>+16</code> <code>-0</code> |
| [knadh/koanf](https://github.com/knadh/koanf) | ⭐ 4.2k | Go | <code>+28</code> <code>-7</code> |
| [spencermountain/spacetime](https://github.com/spencermountain/spacetime) | ⭐ 4.1k | JavaScript | <code>+67</code> <code>-62</code> |
| [itchyny/gojq](https://github.com/itchyny/gojq) | ⭐ 3.8k | Go | <code>+42</code> <code>-5</code> |
| [Suor/funcy](https://github.com/Suor/funcy) | ⭐ 3.5k | Python | <code>+18</code> <code>-2</code> |
| [thephpleague/csv](https://github.com/thephpleague/csv) | ⭐ 3.5k | PHP | <code>+22</code> <code>-9</code> |
| [composer/satis](https://github.com/composer/satis) | ⭐ 3.3k | PHP | <code>+55</code> <code>-10</code> |
| [composer/satis](https://github.com/composer/satis) | ⭐ 3.3k | PHP | <code>+105</code> <code>-12</code> |
| [NaturalIntelligence/fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) | ⭐ 3.1k | JavaScript | <code>+2</code> <code>-0</code> |
| [versity/versitygw](https://github.com/versity/versitygw) | ⭐ 3.1k | Go | <code>+1004</code> <code>-85</code> |
| [montanaflynn/stats](https://github.com/montanaflynn/stats) | ⭐ 3k | Go | <code>+66</code> <code>-23</code> |
| [versity/versitygw](https://github.com/versity/versitygw) | ⭐ 3k | Go | <code>+124</code> <code>-14</code> |
| [mitsuhiko/insta](https://github.com/mitsuhiko/insta) | ⭐ 3k | Rust | <code>+8</code> <code>-2</code> |
| [thephpleague/commonmark](https://github.com/thephpleague/commonmark) | ⭐ 3k | PHP | <code>+17</code> <code>-0</code> |
| [Paymenter/Paymenter](https://github.com/Paymenter/Paymenter) | ⭐ 2.4k | PHP | <code>+135</code> <code>-11</code> |
| [BurntSushi/jiff](https://github.com/BurntSushi/jiff) | ⭐ 3k | Rust | <code>+37</code> <code>-5</code> |
| [zzzprojects/html-agility-pack](https://github.com/zzzprojects/html-agility-pack) | ⭐ 2.9k | C# | <code>+27</code> <code>-1</code> |
| [Paymenter/Paymenter](https://github.com/Paymenter/Paymenter) | ⭐ 2.8k | PHP | <code>+137</code> <code>-11</code> |
| [api-platform/core](https://github.com/api-platform/core) | ⭐ 2.6k | PHP | <code>+52</code> <code>-27</code> |
| [pelican/panel](https://github.com/pelican/panel) | ⭐ 2.4k | PHP | <code>+338</code> <code>-32</code> |
| [gookit/goutil](https://github.com/gookit/goutil) | ⭐ 2.4k | Go | <code>+12</code> <code>-0</code> |
| [pelican/panel](https://github.com/pelican/panel) | ⭐ 2.3k | PHP | <code>+64</code> <code>-3</code> |
| [dedoc/scramble](https://github.com/dedoc/scramble) | ⭐ 2.2k | PHP | <code>+23</code> <code>-0</code> |
| [gocarina/gocsv](https://github.com/gocarina/gocsv) | ⭐ 2.2k | Go | <code>+89</code> <code>-2</code> |
| [thephpleague/html-to-markdown](https://github.com/thephpleague/html-to-markdown) | ⭐ 1.9k | PHP | <code>+3</code> <code>-2</code> |
| [gocarina/gocsv](https://github.com/gocarina/gocsv) | ⭐ 2.2k | Go | <code>+185</code> <code>-22</code> |
| [thephpleague/html-to-markdown](https://github.com/thephpleague/html-to-markdown) | ⭐ 1.9k | PHP | <code>+20</code> <code>-9</code> |
| [spatie/period](https://github.com/spatie/period) | ⭐ 1.7k | PHP | <code>+69</code> <code>-0</code> |
| [AfterShip/email-verifier](https://github.com/AfterShip/email-verifier) | ⭐ 1.6k | Go | <code>+99</code> <code>-3</code> |
| [gookit/color](https://github.com/gookit/color) | ⭐ 1.6k | Go | <code>+12</code> <code>-1</code> |
| [fabiocaccamo/python-benedict](https://github.com/fabiocaccamo/python-benedict) | ⭐ 1.6k | Python | <code>+66</code> <code>-5</code> |
| [gookit/color](https://github.com/gookit/color) | ⭐ 1.6k | Go | <code>+12</code> <code>-1</code> |
| [linuxmint/nemo](https://github.com/linuxmint/nemo) | ⭐ 1.6k | C | <code>+3</code> <code>-5</code> |
| [olebedev/when](https://github.com/olebedev/when) | ⭐ 1.5k | Go | <code>+45</code> <code>-1</code> |
| [dgilland/pydash](https://github.com/dgilland/pydash) | ⭐ 1.4k | Python | <code>+18</code> <code>-5</code> |
| [cakephp/chronos](https://github.com/cakephp/chronos) | ⭐ 1.4k | PHP | <code>+17</code> <code>-2</code> |
| [go-playground/form](https://github.com/go-playground/form) | ⭐ 930 | Go | <code>+35</code> <code>-0</code> |
| [go-playground/form](https://github.com/go-playground/form) | ⭐ 932 | Go | <code>+35</code> <code>-0</code> |
| [mkideal/cli](https://github.com/mkideal/cli) | ⭐ 723 | Go | <code>+22</code> <code>-1</code> |
| [gookit/config](https://github.com/gookit/config) | ⭐ 585 | Go | <code>+29</code> <code>-8</code> |
| [rust-syndication/rss](https://github.com/rust-syndication/rss) | ⭐ 504 | Rust | <code>+24</code> <code>-2</code> |
| [kelindar/bitmap](https://github.com/kelindar/bitmap) | ⭐ 384 | Assembly | <code>+146</code> <code>-12</code> |
| [brick/date-time](https://github.com/brick/date-time) | ⭐ 361 | PHP | <code>+67</code> <code>-36</code> |
| [pydantic/pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | ⭐ 338 | Python | <code>+124</code> <code>-1</code> |
| [rust-syndication/rss](https://github.com/rust-syndication/rss) | ⭐ 503 | Rust | <code>+24</code> <code>-2</code> |
| [kelindar/bitmap](https://github.com/kelindar/bitmap) | ⭐ 385 | Assembly | <code>+146</code> <code>-12</code> |
| [brick/date-time](https://github.com/brick/date-time) | ⭐ 360 | PHP | <code>+67</code> <code>-36</code> |
| [pydantic/pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | ⭐ 340 | Python | <code>+124</code> <code>-1</code> |
| [rodaine/table](https://github.com/rodaine/table) | ⭐ 324 | Go | <code>+32</code> <code>-2</code> |
| [wroberts/pytimeparse](https://github.com/wroberts/pytimeparse) | ⭐ 299 | Python | <code>+5</code> <code>-1</code> |
| [QEDK/configparser-rs](https://github.com/QEDK/configparser-rs) | ⭐ 87 | Rust | <code>+22</code> <code>-1</code> |
| [wroberts/pytimeparse](https://github.com/wroberts/pytimeparse) | ⭐ 296 | Python | <code>+5</code> <code>-1</code> |
| [QEDK/configparser-rs](https://github.com/QEDK/configparser-rs) | ⭐ 88 | Rust | <code>+22</code> <code>-1</code> |
| [thephpleague/uri-src](https://github.com/thephpleague/uri-src) | ⭐ 51 | PHP | <code>+18</code> <code>-2</code> |
| [spiral/testing](https://github.com/spiral/testing) | ⭐ 7 | PHP | <code>+255</code> <code>-6</code> |
<!-- /stats:opensource -->
+110 -64
View File
@@ -17,7 +17,7 @@
<br>
VulCode to polski software house z wieloletnim doświadczeniem. Od 2020 roku dostarczamy oprogramowanie wysokiej jakości i napisaliśmy już ponad **5 mln linijek kodu** w **200+ projektach**. Dołożyliśmy też swoją cegiełkę do **53 repozytoriów open source**, które łącznie mają **410 000+ gwiazdek** na GitHubie. Specjalizujemy się w stronach internetowych, panelach i dashboardach oraz aplikacjach, a także w budowie skalowalnych platform. Aktywnie kontrybuujemy do dziesiątek projektów open source.
VulCode to polski software house z wieloletnim doświadczeniem. Od 2020 roku dostarczamy oprogramowanie wysokiej jakości i napisaliśmy już ponad **6 mln linijek kodu** w **150+ projektach**. Dołożyliśmy też swoją cegiełkę do **82 repozytoriów open source**, które łącznie mają **1 300 000+ gwiazdek** na GitHubie. Specjalizujemy się w stronach internetowych, panelach i dashboardach oraz aplikacjach, a także w budowie skalowalnych platform. Aktywnie kontrybuujemy do dziesiątek projektów open source.
## 🧩 Czym się zajmujemy?
@@ -110,22 +110,22 @@ Przejrzysty, 7-etapowy proces realizacji projektu:
<!-- stats:summary -->
<table>
<tr>
<td align="center" colspan="2" width="50%"><h3>5 994 022</h3>linii kodu</td>
<td align="center" width="25%"><h3>23 830</h3>commitów</td>
<td align="center" width="25%"><h3>200+</h3>projektów</td>
<td align="center" colspan="2" width="50%"><h3>6 399 947</h3>linii kodu</td>
<td align="center" width="25%"><h3>24 331</h3>commitów</td>
<td align="center" width="25%"><h3>150+</h3>projektów</td>
</tr>
<tr>
<td align="center" width="25%"><h3>410 000+</h3>gwiazdek projektów OSS</td>
<td align="center" width="25%"><h3>53</h3>projektów open source</td>
<td align="center" width="25%"><h3>1 300 000+</h3>gwiazdek projektów OSS</td>
<td align="center" width="25%"><h3>82</h3>projektów open source</td>
<td align="center" width="25%"><h3>26</h3>języków</td>
<td align="center" width="25%"><h3>1 655</h3>dni pracy</td>
<td align="center" width="25%"><h3>1 680</h3>dni pracy</td>
</tr>
</table>
```diff
+ 5 994 022 linii dodanych
- 778 721 linii usuniętych
! 5 215 301 linii netto
+ 7 579 803 linii dodanych
- 1 318 793 linii usuniętych
! 6 261 010 linii netto
```
<!-- /stats:summary -->
@@ -138,37 +138,37 @@ Przejrzysty, 7-etapowy proces realizacji projektu:
<!-- stats:languages -->
<table align="center">
<tr><th></th><th align="left">Język</th><th align="right">Linie kodu</th><th align="right">Commity</th><th align="right">Udział</th></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ts" width="18" alt="TypeScript"></td><td><b>TypeScript</b></td><td align="right">2 274 503</td><td align="right">6 203</td><td align="right">46,0% <sub>██████████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=rust" width="18" alt="Rust"></td><td><b>Rust</b></td><td align="right">988 753</td><td align="right">2 516</td><td align="right">20,0% <sub>████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=go" width="18" alt="Go"></td><td><b>Go</b></td><td align="right">281 782</td><td align="right">907</td><td align="right">5,7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=kotlin" width="18" alt="Kotlin"></td><td><b>Kotlin</b></td><td align="right">206 250</td><td align="right">796</td><td align="right">4,2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cs" width="18" alt="C#"></td><td><b>C#</b></td><td align="right">162 872</td><td align="right">752</td><td align="right">3,3% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=js" width="18" alt="JavaScript"></td><td><b>JavaScript</b></td><td align="right">140 024</td><td align="right">500</td><td align="right">2,8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=php" width="18" alt="PHP"></td><td><b>PHP</b></td><td align="right">130 914</td><td align="right">149</td><td align="right">2,6% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=swift" width="18" alt="Swift"></td><td><b>Swift</b></td><td align="right">116 812</td><td align="right">437</td><td align="right">2,4% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=elixir" width="18" alt="Elixir"></td><td><b>Elixir</b></td><td align="right">91 810</td><td align="right">438</td><td align="right">1,9% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=py" width="18" alt="Python"></td><td><b>Python</b></td><td align="right">84 375</td><td align="right">317</td><td align="right">1,7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=html" width="18" alt="HTML"></td><td><b>HTML</b></td><td align="right">80 555</td><td align="right">145</td><td align="right">1,6% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=css" width="18" alt="CSS"></td><td><b>CSS</b></td><td align="right">61 717</td><td align="right">502</td><td align="right">1,2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cpp" width="18" alt="C++"></td><td><b>C++</b></td><td align="right">57 275</td><td align="right">358</td><td align="right">1,2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=c" width="18" alt="C"></td><td><b>C</b></td><td align="right">49 346</td><td align="right">355</td><td align="right">1,0% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=zig" width="18" alt="Zig"></td><td><b>Zig</b></td><td align="right">44 583</td><td align="right">284</td><td align="right">0,9% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=mysql" width="18" alt="SQL"></td><td><b>SQL</b></td><td align="right">38 114</td><td align="right">590</td><td align="right">0,8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ruby" width="18" alt="Ruby"></td><td><b>Ruby</b></td><td align="right">37 655</td><td align="right">263</td><td align="right">0,8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=lua" width="18" alt="Lua"></td><td><b>Lua</b></td><td align="right">32 053</td><td align="right">206</td><td align="right">0,6% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=bash" width="18" alt="Shell"></td><td><b>Shell</b></td><td align="right">29 411</td><td align="right">263</td><td align="right">0,6% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=java" width="18" alt="Java"></td><td><b>Java</b></td><td align="right">13 788</td><td align="right">75</td><td align="right">0,3% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=dart" width="18" alt="Dart"></td><td><b>Dart</b></td><td align="right">6 013</td><td align="right">40</td><td align="right">0,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ts" width="18" alt="TypeScript"></td><td><b>TypeScript</b></td><td align="right">3 245 343</td><td align="right">7 512</td><td align="right">50,7% <sub>███████████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=rust" width="18" alt="Rust"></td><td><b>Rust</b></td><td align="right">1 280 619</td><td align="right">2 781</td><td align="right">20,0% <sub>████</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=go" width="18" alt="Go"></td><td><b>Go</b></td><td align="right">343 647</td><td align="right">965</td><td align="right">5,4% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=kotlin" width="18" alt="Kotlin"></td><td><b>Kotlin</b></td><td align="right">207 212</td><td align="right">552</td><td align="right">3,2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cs" width="18" alt="C#"></td><td><b>C#</b></td><td align="right">175 421</td><td align="right">707</td><td align="right">2,7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=js" width="18" alt="JavaScript"></td><td><b>JavaScript</b></td><td align="right">146 327</td><td align="right">593</td><td align="right">2,3% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=php" width="18" alt="PHP"></td><td><b>PHP</b></td><td align="right">133 817</td><td align="right">110</td><td align="right">2,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=swift" width="18" alt="Swift"></td><td><b>Swift</b></td><td align="right">119 541</td><td align="right">437</td><td align="right">1,9% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=py" width="18" alt="Python"></td><td><b>Python</b></td><td align="right">114 446</td><td align="right">375</td><td align="right">1,8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=elixir" width="18" alt="Elixir"></td><td><b>Elixir</b></td><td align="right">107 776</td><td align="right">415</td><td align="right">1,7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=html" width="18" alt="HTML"></td><td><b>HTML</b></td><td align="right">80 830</td><td align="right">163</td><td align="right">1,3% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=css" width="18" alt="CSS"></td><td><b>CSS</b></td><td align="right">67 799</td><td align="right">571</td><td align="right">1,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=cpp" width="18" alt="C++"></td><td><b>C++</b></td><td align="right">60 532</td><td align="right">84</td><td align="right">0,9% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=ruby" width="18" alt="Ruby"></td><td><b>Ruby</b></td><td align="right">52 836</td><td align="right">73</td><td align="right">0,8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=c" width="18" alt="C"></td><td><b>C</b></td><td align="right">51 238</td><td align="right">109</td><td align="right">0,8% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=lua" width="18" alt="Lua"></td><td><b>Lua</b></td><td align="right">47 845</td><td align="right">64</td><td align="right">0,7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=mysql" width="18" alt="SQL"></td><td><b>SQL</b></td><td align="right">47 780</td><td align="right">686</td><td align="right">0,7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=zig" width="18" alt="Zig"></td><td><b>Zig</b></td><td align="right">46 238</td><td align="right">73</td><td align="right">0,7% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=bash" width="18" alt="Shell"></td><td><b>Shell</b></td><td align="right">32 511</td><td align="right">313</td><td align="right">0,5% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=java" width="18" alt="Java"></td><td><b>Java</b></td><td align="right">14 401</td><td align="right">50</td><td align="right">0,2% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=dart" width="18" alt="Dart"></td><td><b>Dart</b></td><td align="right">6 146</td><td align="right">28</td><td align="right">0,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=scala" width="18" alt="Scala"></td><td><b>Scala</b></td><td align="right">5 439</td><td align="right">25</td><td align="right">0,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=solidity" width="18" alt="Solidity"></td><td><b>Solidity</b></td><td align="right">4 688</td><td align="right">33</td><td align="right">0,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=haskell" width="18" alt="Haskell"></td><td><b>Haskell</b></td><td align="right">3 609</td><td align="right">28</td><td align="right">0,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=scala" width="18" alt="Scala"></td><td><b>Scala</b></td><td align="right">3 133</td><td align="right">29</td><td align="right">0,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/fsharp.png" width="18" alt="F#"></td><td><b>F#</b></td><td align="right">3 017</td><td align="right">18</td><td align="right">0,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/assembly.png" width="18" alt="Assembly"></td><td><b>Assembly</b></td><td align="right">397</td><td align="right">6</td><td align="right">0,0% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://skillicons.dev/icons?i=haskell" width="18" alt="Haskell"></td><td><b>Haskell</b></td><td align="right">3 641</td><td align="right">25</td><td align="right">0,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/fsharp.png" width="18" alt="F#"></td><td><b>F#</b></td><td align="right">3 297</td><td align="right">19</td><td align="right">0,1% <sub>â–ˆ</sub></td></tr>
<tr><td><img src="https://docs.vulcode.com/uploads/images/gallery/2026-09/assembly.png" width="18" alt="Assembly"></td><td><b>Assembly</b></td><td align="right">577</td><td align="right">8</td><td align="right">0,0% <sub>â–ˆ</sub></td></tr>
</table>
**Frameworki i narzędzia wykryte w projektach** <sub>(liczba repozytoriów)</sub>
Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Vite <sub>25</sub> · Tailwind CSS <sub>24</sub> · Motion <sub>18</sub> · Prisma <sub>16</sub> · discord.js <sub>14</sub> · Serde <sub>10</sub> · Tokio <sub>7</sub> · reqwest <sub>7</sub> · Gorilla WebSocket <sub>6</sub> · SQLite <sub>6</sub> · xUnit <sub>6</sub> · Stripe <sub>5</sub> · Avalonia <sub>4</sub> · Axum <sub>4</sub> · JUnit <sub>4</sub> · PHPUnit <sub>4</sub> · Playwright <sub>4</sub> · SQLx <sub>4</sub> · Framer Motion <sub>3</sub> · Jetpack Compose <sub>3</sub> · Redis <sub>3</sub> · Vitest <sub>3</sub> · clap <sub>3</sub> · gRPC <sub>3</sub> · wasm-bindgen <sub>3</sub> · Android <sub>2</sub> · BullMQ <sub>2</sub> · Chart.js <sub>2</sub> · Coroutines <sub>2</sub> · Guzzle <sub>2</sub> · Jest <sub>2</sub> · Laravel <sub>2</sub> · Next.js <sub>2</sub> · Pterodactyl <sub>2</sub> · Zod <sub>2</sub> · aiohttp <sub>2</sub> · discord.py <sub>2</sub> · i18next <sub>2</sub> · webpack <sub>2</sub> · Cobra <sub>1</sub> · Discord.Net <sub>1</sub> · Docker SDK <sub>1</sub> · Ecto <sub>1</sub> · Electron <sub>1</sub> · Expo <sub>1</sub> · FastAPI <sub>1</sub> · GORM <sub>1</sub> · Gin <sub>1</sub> · HTTPX <sub>1</sub> · Json.NET <sub>1</sub> · Paper <sub>1</sub> · PostgreSQL <sub>1</sub> · Preact <sub>1</sub> · Ratatui <sub>1</sub> · React Native <sub>1</sub> · Spring Boot <sub>1</sub> · Tauri <sub>1</sub> · chi <sub>1</sub> · discordgo <sub>1</sub> · gopher-lua <sub>1</sub> · pytest <sub>1</sub> · tonic <sub>1</sub>
Docker <sub>62</sub> · React <sub>31</sub> · Express <sub>27</sub> · Vite <sub>26</sub> · Tailwind CSS <sub>24</sub> · Motion <sub>18</sub> · Prisma <sub>16</sub> · discord.js <sub>14</sub> · Serde <sub>10</sub> · Tokio <sub>7</sub> · reqwest <sub>7</sub> · Gorilla WebSocket <sub>6</sub> · SQLite <sub>6</sub> · xUnit <sub>6</sub> · Stripe <sub>5</sub> · Avalonia <sub>4</sub> · Axum <sub>4</sub> · JUnit <sub>4</sub> · PHPUnit <sub>4</sub> · Playwright <sub>4</sub> · SQLx <sub>4</sub> · Vitest <sub>4</sub> · Framer Motion <sub>3</sub> · Jetpack Compose <sub>3</sub> · Redis <sub>3</sub> · Zod <sub>3</sub> · clap <sub>3</sub> · gRPC <sub>3</sub> · wasm-bindgen <sub>3</sub> · Android <sub>2</sub> · BullMQ <sub>2</sub> · Chart.js <sub>2</sub> · Coroutines <sub>2</sub> · FastAPI <sub>2</sub> · Guzzle <sub>2</sub> · HTTPX <sub>2</sub> · Jest <sub>2</sub> · Laravel <sub>2</sub> · Next.js <sub>2</sub> · Pterodactyl <sub>2</sub> · aiohttp <sub>2</sub> · discord.py <sub>2</sub> · i18next <sub>2</sub> · pytest <sub>2</sub> · webpack <sub>2</sub> · Click <sub>1</sub> · Cobra <sub>1</sub> · Discord.Net <sub>1</sub> · Docker SDK <sub>1</sub> · Ecto <sub>1</sub> · Electron <sub>1</sub> · Expo <sub>1</sub> · GORM <sub>1</sub> · Gin <sub>1</sub> · Json.NET <sub>1</sub> · Paper <sub>1</sub> · PostgreSQL <sub>1</sub> · Preact <sub>1</sub> · Pydantic <sub>1</sub> · Ratatui <sub>1</sub> · React Native <sub>1</sub> · SQLAlchemy <sub>1</sub> · Spring Boot <sub>1</sub> · Storybook <sub>1</sub> · TanStack Query <sub>1</sub> · Tauri <sub>1</sub> · chi <sub>1</sub> · discordgo <sub>1</sub> · gopher-lua <sub>1</sub> · pygame <sub>1</sub> · tonic <sub>1</sub>
<!-- /stats:languages -->
<sub>Liczone przez moje API [ghapi.dualfroz.com](https://ghapi.dualfroz.com/v2/public) ze wszystkich repozytoriów, także prywatnych. Aktualizowane raz na 24 godziny.</sub>
@@ -301,62 +301,108 @@ Docker <sub>61</sub> · React <sub>30</sub> · Express <sub>27</sub> · Vite <su
## 🌍 Open source
### Poza GitHubem
<!-- stats:beyond -->
> Kod przyjęty poza GitHubem, przez listy mailowe i własne systemy review: **12** commitów w **5** repozytoriach. Pod nimi zmiany zaakceptowane przez maintainerów, które czekają na merge.
| Projekt | Repozytorium | Stan | Zmiany |
|---|---|---|---|
| Proxmox VE | [pve-manager](https://git.proxmox.com/?p=pve-manager.git;a=search;h=HEAD;s=Michal+Fox;st=author)<br><sub>git.proxmox.com</sub> | przyjęte, 6 commitów | [e42092e](https://git.proxmox.com/?p=pve-manager.git;a=commit;h=e42092e) fix #6475: ui: upload: only show the file name of the selected file<br>[ac0c87d](https://git.proxmox.com/?p=pve-manager.git;a=commit;h=ac0c87d) fix #4986: jobs: do not get stuck if the task log is missing<br>[8efee57](https://git.proxmox.com/?p=pve-manager.git;a=commit;h=8efee57) fix #7108: ui: ipset: do not offer aliases that are already added<br>[+3 więcej](https://git.proxmox.com/?p=pve-manager.git;a=search;h=HEAD;s=Michal+Fox;st=author) |
| Proxmox VE | [qemu-server](https://git.proxmox.com/?p=qemu-server.git;a=search;h=HEAD;s=Michal+Fox;st=author)<br><sub>git.proxmox.com</sub> | przyjęte, 3 commity | [167f3d70a5](https://git.proxmox.com/?p=qemu-server.git;a=commit;h=167f3d70a5) fix #6907: memory: allow multi-digit host nodes with hugepages<br>[a4efa5f9ad](https://git.proxmox.com/?p=qemu-server.git;a=commit;h=a4efa5f9ad) partially fix #4012: migrate: mention snapshots referencing a local ISO image<br>[5abda85](https://git.proxmox.com/?p=qemu-server.git;a=commit;h=5abda85) test: migration: support volumes other than images |
| Proxmox VE | [pve-storage](https://git.proxmox.com/?p=pve-storage.git;a=search;h=HEAD;s=Michal+Fox;st=author)<br><sub>git.proxmox.com</sub> | przyjęte, 1 commit | [c10faa6972](https://git.proxmox.com/?p=pve-storage.git;a=commit;h=c10faa6972) fix #6969: plugin: keep content directory when freeing its last file |
| Proxmox VE | [proxmox-widget-toolkit](https://git.proxmox.com/?p=proxmox-widget-toolkit.git;a=search;h=HEAD;s=Michal+Fox;st=author)<br><sub>git.proxmox.com</sub> | przyjęte, 1 commit | [b92a9ad19f](https://git.proxmox.com/?p=proxmox-widget-toolkit.git;a=commit;h=b92a9ad19f) fix #6943: ui: network selector: show comments of IPv6 entries |
| Mozilla Firefox | [mozilla-central](https://hg.mozilla.org/mozilla-central/rev/9c1b9b8ff0a8)<br><sub>hg.mozilla.org</sub> | przyjęte, 1 commit | [Bug 1996443](https://bugzilla.mozilla.org/show_bug.cgi?id=1996443) zgłoszenie w Bugzilli<br>[D332854](https://phabricator.services.mozilla.com/D332854) rewizja w Phabricatorze<br>[9c1b9b8ff0a8](https://hg.mozilla.org/mozilla-central/rev/9c1b9b8ff0a8) commit w mozilla-central<br>[16fd06a0033d](https://github.com/mozilla-firefox/firefox/commit/16fd06a0033d) mirror na GitHubie |
| Blender | [blender/blender](https://projects.blender.org/blender/blender)<br><sub>projects.blender.org</sub> | zaakceptowane, czeka na merge | [#165627](https://projects.blender.org/blender/blender/pulls/165627) Fix #92527: unhide w Local View<br>[#165628](https://projects.blender.org/blender/blender/pulls/165628) Fix #96432: klawisz D w edycji tekstu |
| OBS Studio | [obsproject/obs-studio](https://github.com/obsproject/obs-studio/pull/14080)<br><sub>GitHub</sub> | zaakceptowane, czeka na merge | [#14080](https://github.com/obsproject/obs-studio/pull/14080) libobs: numpad bez NumLocka na Waylandzie |
<!-- /stats:beyond -->
### Na GitHubie
<!-- stats:opensource -->
> Projekty, do których regularnie kontrybuujemy (tylko te z zaakceptowanymi zmianami). Projekty posortowane według liczby gwiazdek. Łącznie 410 000+ ⭐ w 53 repozytoriach.
> Projekty, do których regularnie kontrybuujemy (tylko te z zaakceptowanymi zmianami). Projekty posortowane według liczby gwiazdek. Łącznie 1 300 000+ ⭐ w 82 repozytoriach.
| Projekt | Gwiazdki | Język | Zmiany |
|---|---|---|---|
| [zed-industries/zed](https://github.com/zed-industries/zed) | ⭐ 91,3 tys. | Rust | <code>+123</code> <code>-10</code> |
| [icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy) | ⭐ 26,2 tys. | C# | <code>+4624</code> <code>-13</code> |
| [nodejs/node](https://github.com/nodejs/node) | ⭐ 123,2 tys. | JavaScript | <code>+43</code> <code>-7</code> |
| [godotengine/godot](https://github.com/godotengine/godot) | ⭐ 119,2 tys. | C++ | <code>+3</code> <code>-0</code> |
| [mui/material-ui](https://github.com/mui/material-ui) | ⭐ 99,3 tys. | JavaScript | <code>+23</code> <code>-28</code> |
| [zed-industries/zed](https://github.com/zed-industries/zed) | ⭐ 92,3 tys. | Rust | <code>+123</code> <code>-10</code> |
| [astral-sh/uv](https://github.com/astral-sh/uv) | ⭐ 91,3 tys. | Rust | <code>+124</code> <code>-7</code> |
| [grafana/grafana](https://github.com/grafana/grafana) | ⭐ 77,6 tys. | TypeScript | <code>+52</code> <code>-2</code> |
| [alacritty/alacritty](https://github.com/alacritty/alacritty) | ⭐ 66,1 tys. | Rust | <code>+127</code> <code>-30</code> |
| [mastodon/mastodon](https://github.com/mastodon/mastodon) | ⭐ 50,5 tys. | Ruby | <code>+34</code> <code>-2</code> |
| [markedjs/marked](https://github.com/markedjs/marked) | ⭐ 37,3 tys. | JavaScript | <code>+37</code> <code>-1</code> |
| [telegramdesktop/tdesktop](https://github.com/telegramdesktop/tdesktop) | ⭐ 33,4 tys. | C++ | <code>+7</code> <code>-5</code> |
| [composer/composer](https://github.com/composer/composer) | ⭐ 29,6 tys. | PHP | <code>+10</code> <code>-4</code> |
| [icsharpcode/ILSpy](https://github.com/icsharpcode/ILSpy) | ⭐ 26,9 tys. | C# | <code>+4724</code> <code>-29</code> |
| [urfave/cli](https://github.com/urfave/cli) | ⭐ 24,3 tys. | Go | <code>+52</code> <code>-12</code> |
| [PHPMailer/PHPMailer](https://github.com/PHPMailer/PHPMailer) | ⭐ 22,3 tys. | PHP | <code>+135</code> <code>-4</code> |
| [postcss/autoprefixer](https://github.com/postcss/autoprefixer) | ⭐ 22,2 tys. | JavaScript | <code>+50</code> <code>-4</code> |
| [postcss/autoprefixer](https://github.com/postcss/autoprefixer) | ⭐ 22,2 tys. | JavaScript | <code>+314</code> <code>-63</code> |
| [twpayne/chezmoi](https://github.com/twpayne/chezmoi) | ⭐ 22,1 tys. | Go | <code>+43</code> <code>-17</code> |
| [gleam-lang/gleam](https://github.com/gleam-lang/gleam) | ⭐ 22 tys. | Rust | <code>+134</code> <code>-1</code> |
| [Seldaek/monolog](https://github.com/Seldaek/monolog) | ⭐ 21,4 tys. | PHP | <code>+41</code> <code>-2</code> |
| [valeriansaliou/sonic](https://github.com/valeriansaliou/sonic) | ⭐ 21,4 tys. | Rust | <code>+88</code> <code>-20</code> |
| [valeriansaliou/sonic](https://github.com/valeriansaliou/sonic) | ⭐ 21,4 tys. | Rust | <code>+217</code> <code>-36</code> |
| [lichess-org/lila](https://github.com/lichess-org/lila) | ⭐ 18,9 tys. | Scala | <code>+35</code> <code>-7</code> |
| [OpenRA/OpenRA](https://github.com/OpenRA/OpenRA) | ⭐ 17,7 tys. | C# | <code>+43</code> <code>-5</code> |
| [briannesbitt/Carbon](https://github.com/briannesbitt/Carbon) | ⭐ 16,6 tys. | PHP | <code>+87</code> <code>-0</code> |
| [PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery) | ⭐ 15 tys. | Go | <code>+183</code> <code>-18</code> |
| [App-vNext/Polly](https://github.com/App-vNext/Polly) | ⭐ 14,2 tys. | C# | <code>+19</code> <code>-1</code> |
| [hajimehoshi/ebiten](https://github.com/hajimehoshi/ebiten) | ⭐ 13,5 tys. | Go | <code>+19</code> <code>-13</code> |
| [App-vNext/Polly](https://github.com/App-vNext/Polly) | ⭐ 14,3 tys. | C# | <code>+19</code> <code>-1</code> |
| [hajimehoshi/ebiten](https://github.com/hajimehoshi/ebiten) | ⭐ 13,6 tys. | Go | <code>+381</code> <code>-297</code> |
| [filp/whoops](https://github.com/filp/whoops) | ⭐ 13,2 tys. | PHP | <code>+115</code> <code>-3</code> |
| [spencermountain/compromise](https://github.com/spencermountain/compromise) | ⭐ 12,2 tys. | JavaScript | <code>+124</code> <code>-11</code> |
| [spencermountain/compromise](https://github.com/spencermountain/compromise) | ⭐ 12,2 tys. | JavaScript | <code>+518</code> <code>-91</code> |
| [doctrine/lexer](https://github.com/doctrine/lexer) | ⭐ 11,1 tys. | PHP | <code>+72</code> <code>-2</code> |
| [kanboard/kanboard](https://github.com/kanboard/kanboard) | ⭐ 9,9 tys. | PHP | <code>+127</code> <code>-7</code> |
| [kanboard/kanboard](https://github.com/kanboard/kanboard) | ⭐ 9,9 tys. | PHP | <code>+293</code> <code>-11</code> |
| [FluentValidation/FluentValidation](https://github.com/FluentValidation/FluentValidation) | ⭐ 9,8 tys. | C# | <code>+14</code> <code>-1</code> |
| [serilog/serilog](https://github.com/serilog/serilog) | ⭐ 8 tys. | C# | <code>+12</code> <code>-0</code> |
| [serilog/serilog](https://github.com/serilog/serilog) | ⭐ 8,1 tys. | C# | <code>+12</code> <code>-0</code> |
| [concourse/concourse](https://github.com/concourse/concourse) | ⭐ 7,9 tys. | Go | <code>+153</code> <code>-23</code> |
| [predis/predis](https://github.com/predis/predis) | ⭐ 7,8 tys. | PHP | <code>+352</code> <code>-27</code> |
| [vscode-neovim/vscode-neovim](https://github.com/vscode-neovim/vscode-neovim) | ⭐ 7,8 tys. | TypeScript | <code>+65</code> <code>-2</code> |
| [NLog/NLog](https://github.com/NLog/NLog) | ⭐ 6,5 tys. | C# | <code>+19</code> <code>-0</code> |
| [maildev/maildev](https://github.com/maildev/maildev) | ⭐ 6,1 tys. | TypeScript | <code>+69</code> <code>-13</code> |
| [NLog/NLog](https://github.com/NLog/NLog) | ⭐ 6,5 tys. | C# | <code>+94</code> <code>-4</code> |
| [maildev/maildev](https://github.com/maildev/maildev) | ⭐ 6,2 tys. | TypeScript | <code>+69</code> <code>-13</code> |
| [Pagefind/pagefind](https://github.com/Pagefind/pagefind) | ⭐ 5,5 tys. | Rust | <code>+48</code> <code>-2</code> |
| [xoofx/markdig](https://github.com/xoofx/markdig) | ⭐ 5,3 tys. | C# | <code>+223</code> <code>-7</code> |
| [spencermountain/spacetime](https://github.com/spencermountain/spacetime) | ⭐ 4,1 tys. | JavaScript | <code>+15</code> <code>-40</code> |
| [xoofx/markdig](https://github.com/xoofx/markdig) | ⭐ 5,3 tys. | C# | <code>+357</code> <code>-48</code> |
| [dromara/carbon](https://github.com/dromara/carbon) | ⭐ 5,2 tys. | Go | <code>+41</code> <code>-4</code> |
| [alecthomas/chroma](https://github.com/alecthomas/chroma) | ⭐ 5,1 tys. | Go | <code>+90</code> <code>-3</code> |
| [olekukonko/tablewriter](https://github.com/olekukonko/tablewriter) | ⭐ 4,8 tys. | Go | <code>+16</code> <code>-0</code> |
| [knadh/koanf](https://github.com/knadh/koanf) | ⭐ 4,2 tys. | Go | <code>+28</code> <code>-7</code> |
| [spencermountain/spacetime](https://github.com/spencermountain/spacetime) | ⭐ 4,1 tys. | JavaScript | <code>+67</code> <code>-62</code> |
| [itchyny/gojq](https://github.com/itchyny/gojq) | ⭐ 3,8 tys. | Go | <code>+42</code> <code>-5</code> |
| [Suor/funcy](https://github.com/Suor/funcy) | ⭐ 3,5 tys. | Python | <code>+18</code> <code>-2</code> |
| [thephpleague/csv](https://github.com/thephpleague/csv) | ⭐ 3,5 tys. | PHP | <code>+22</code> <code>-9</code> |
| [composer/satis](https://github.com/composer/satis) | ⭐ 3,3 tys. | PHP | <code>+55</code> <code>-10</code> |
| [composer/satis](https://github.com/composer/satis) | ⭐ 3,3 tys. | PHP | <code>+105</code> <code>-12</code> |
| [NaturalIntelligence/fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) | ⭐ 3,1 tys. | JavaScript | <code>+2</code> <code>-0</code> |
| [versity/versitygw](https://github.com/versity/versitygw) | ⭐ 3,1 tys. | Go | <code>+1004</code> <code>-85</code> |
| [montanaflynn/stats](https://github.com/montanaflynn/stats) | ⭐ 3 tys. | Go | <code>+66</code> <code>-23</code> |
| [versity/versitygw](https://github.com/versity/versitygw) | ⭐ 3 tys. | Go | <code>+124</code> <code>-14</code> |
| [mitsuhiko/insta](https://github.com/mitsuhiko/insta) | ⭐ 3 tys. | Rust | <code>+8</code> <code>-2</code> |
| [thephpleague/commonmark](https://github.com/thephpleague/commonmark) | ⭐ 3 tys. | PHP | <code>+17</code> <code>-0</code> |
| [Paymenter/Paymenter](https://github.com/Paymenter/Paymenter) | ⭐ 2,4 tys. | PHP | <code>+135</code> <code>-11</code> |
| [BurntSushi/jiff](https://github.com/BurntSushi/jiff) | ⭐ 3 tys. | Rust | <code>+37</code> <code>-5</code> |
| [zzzprojects/html-agility-pack](https://github.com/zzzprojects/html-agility-pack) | ⭐ 2,9 tys. | C# | <code>+27</code> <code>-1</code> |
| [Paymenter/Paymenter](https://github.com/Paymenter/Paymenter) | ⭐ 2,8 tys. | PHP | <code>+137</code> <code>-11</code> |
| [api-platform/core](https://github.com/api-platform/core) | ⭐ 2,6 tys. | PHP | <code>+52</code> <code>-27</code> |
| [pelican/panel](https://github.com/pelican/panel) | ⭐ 2,4 tys. | PHP | <code>+338</code> <code>-32</code> |
| [gookit/goutil](https://github.com/gookit/goutil) | ⭐ 2,4 tys. | Go | <code>+12</code> <code>-0</code> |
| [pelican/panel](https://github.com/pelican/panel) | ⭐ 2,3 tys. | PHP | <code>+64</code> <code>-3</code> |
| [dedoc/scramble](https://github.com/dedoc/scramble) | ⭐ 2,2 tys. | PHP | <code>+23</code> <code>-0</code> |
| [gocarina/gocsv](https://github.com/gocarina/gocsv) | ⭐ 2,2 tys. | Go | <code>+89</code> <code>-2</code> |
| [thephpleague/html-to-markdown](https://github.com/thephpleague/html-to-markdown) | ⭐ 1,9 tys. | PHP | <code>+3</code> <code>-2</code> |
| [gocarina/gocsv](https://github.com/gocarina/gocsv) | ⭐ 2,2 tys. | Go | <code>+185</code> <code>-22</code> |
| [thephpleague/html-to-markdown](https://github.com/thephpleague/html-to-markdown) | ⭐ 1,9 tys. | PHP | <code>+20</code> <code>-9</code> |
| [spatie/period](https://github.com/spatie/period) | ⭐ 1,7 tys. | PHP | <code>+69</code> <code>-0</code> |
| [AfterShip/email-verifier](https://github.com/AfterShip/email-verifier) | ⭐ 1,6 tys. | Go | <code>+99</code> <code>-3</code> |
| [gookit/color](https://github.com/gookit/color) | ⭐ 1,6 tys. | Go | <code>+12</code> <code>-1</code> |
| [fabiocaccamo/python-benedict](https://github.com/fabiocaccamo/python-benedict) | ⭐ 1,6 tys. | Python | <code>+66</code> <code>-5</code> |
| [gookit/color](https://github.com/gookit/color) | ⭐ 1,6 tys. | Go | <code>+12</code> <code>-1</code> |
| [linuxmint/nemo](https://github.com/linuxmint/nemo) | ⭐ 1,6 tys. | C | <code>+3</code> <code>-5</code> |
| [olebedev/when](https://github.com/olebedev/when) | ⭐ 1,5 tys. | Go | <code>+45</code> <code>-1</code> |
| [dgilland/pydash](https://github.com/dgilland/pydash) | ⭐ 1,4 tys. | Python | <code>+18</code> <code>-5</code> |
| [cakephp/chronos](https://github.com/cakephp/chronos) | ⭐ 1,4 tys. | PHP | <code>+17</code> <code>-2</code> |
| [go-playground/form](https://github.com/go-playground/form) | ⭐ 930 | Go | <code>+35</code> <code>-0</code> |
| [go-playground/form](https://github.com/go-playground/form) | ⭐ 932 | Go | <code>+35</code> <code>-0</code> |
| [mkideal/cli](https://github.com/mkideal/cli) | ⭐ 723 | Go | <code>+22</code> <code>-1</code> |
| [gookit/config](https://github.com/gookit/config) | ⭐ 585 | Go | <code>+29</code> <code>-8</code> |
| [rust-syndication/rss](https://github.com/rust-syndication/rss) | ⭐ 504 | Rust | <code>+24</code> <code>-2</code> |
| [kelindar/bitmap](https://github.com/kelindar/bitmap) | ⭐ 384 | Assembly | <code>+146</code> <code>-12</code> |
| [brick/date-time](https://github.com/brick/date-time) | ⭐ 361 | PHP | <code>+67</code> <code>-36</code> |
| [pydantic/pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | ⭐ 338 | Python | <code>+124</code> <code>-1</code> |
| [rust-syndication/rss](https://github.com/rust-syndication/rss) | ⭐ 503 | Rust | <code>+24</code> <code>-2</code> |
| [kelindar/bitmap](https://github.com/kelindar/bitmap) | ⭐ 385 | Assembly | <code>+146</code> <code>-12</code> |
| [brick/date-time](https://github.com/brick/date-time) | ⭐ 360 | PHP | <code>+67</code> <code>-36</code> |
| [pydantic/pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | ⭐ 340 | Python | <code>+124</code> <code>-1</code> |
| [rodaine/table](https://github.com/rodaine/table) | ⭐ 324 | Go | <code>+32</code> <code>-2</code> |
| [wroberts/pytimeparse](https://github.com/wroberts/pytimeparse) | ⭐ 299 | Python | <code>+5</code> <code>-1</code> |
| [QEDK/configparser-rs](https://github.com/QEDK/configparser-rs) | ⭐ 87 | Rust | <code>+22</code> <code>-1</code> |
| [wroberts/pytimeparse](https://github.com/wroberts/pytimeparse) | ⭐ 296 | Python | <code>+5</code> <code>-1</code> |
| [QEDK/configparser-rs](https://github.com/QEDK/configparser-rs) | ⭐ 88 | Rust | <code>+22</code> <code>-1</code> |
| [thephpleague/uri-src](https://github.com/thephpleague/uri-src) | ⭐ 51 | PHP | <code>+18</code> <code>-2</code> |
| [spiral/testing](https://github.com/spiral/testing) | ⭐ 7 | PHP | <code>+255</code> <code>-6</code> |
<!-- /stats:opensource -->
+16
View File
@@ -0,0 +1,16 @@
#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")/.."
git pull --rebase --quiet
python3 scripts/update_readme_stats.py
if git diff --quiet; then
exit 0
fi
git commit --quiet -am "chore: refresh readme stats"
for remote in $(git remote); do
git push --quiet "$remote" HEAD
done
+213 -74
View File
@@ -6,43 +6,85 @@ Rewrites four places, all from https://ghapi.dualfroz.com/v2/public:
- the "In numbers" table and the diff block (between <!-- stats:summary --> markers),
- the languages table and the frameworks line (<!-- stats:languages -->),
- the open source list (<!-- stats:opensource -->).
Everything is fetched before any file is touched: when the API stays unreachable after
retries the files are left as they are and the script exits with 1. A section whose data
is missing or empty keeps its current content.
Run it from the repository root: python3 scripts/update_readme_stats.py
"""
import http.client
import json
import re
import sys
import time
import urllib.request
API = "https://ghapi.dualfroz.com/v2/public"
FILES = {"pl": ["profile/README.md", "README.md"], "en": ["profile/README.en.md", "README.en.md"]}
apiBase = "https://ghapi.dualfroz.com/v2/public"
headlineUrl = "https://vulcode.com/headline.json"
proxmoxExtra = {"repos": 1, "merged": 6}
readmeFiles = {"pl": ["profile/README.md", "README.md"], "en": ["profile/README.en.md", "README.en.md"]}
beyondFile = "data/beyondGithub.json"
beyondChangesShown = 4
userAgent = "readme-stats"
attempts = 5
requestTimeout = 20
TEXT = {
labels = {
"pl": {
"loc": "linii kodu", "commits": "commitów", "projects": "projektów",
"oss_stars": "gwiazdek projektów OSS", "oss_projects": "projektów open source",
"ossStars": "gwiazdek projektów OSS", "ossProjects": "projektów open source",
"languages": "języków", "days": "dni pracy",
"added": "linii dodanych", "removed": "linii usuniętych", "net": "linii netto",
"head": ("Język", "Linie kodu", "Commity", "Udział"),
"oss_intro": "> Projekty, do których regularnie kontrybuujemy (tylko te z zaakceptowanymi zmianami). "
"Projekty posortowane według liczby gwiazdek. Łącznie {stars}+ ⭐ w {repos} repozytoriach.",
"oss_head": "| Projekt | Gwiazdki | Język | Zmiany |",
"ossIntro": "> Projekty, do których regularnie kontrybuujemy (tylko te z zaakceptowanymi zmianami). "
"Projekty posortowane według liczby gwiazdek. Łącznie {stars}+ ⭐ w {repos} repozytoriach.",
"ossHead": "| Projekt | Gwiazdki | Język | Zmiany |",
"beyondIntro": "Kod przyjęty poza GitHubem, przez listy mailowe i własne systemy review: **{commits}** {commitsWord} "
"w **{repos}** {reposWord}.",
"beyondPending": "Pod nimi zmiany zaakceptowane przez maintainerów, które czekają na merge.",
"beyondHead": "| Projekt | Repozytorium | Stan | Zmiany |",
"accepted": "przyjęte, {n} {commitsWord}",
"approved": "zaakceptowane, czeka na merge",
"more": "+{n} więcej",
},
"en": {
"loc": "lines of code", "commits": "commits", "projects": "projects",
"oss_stars": "OSS project stars", "oss_projects": "open source projects",
"ossStars": "OSS project stars", "ossProjects": "open source projects",
"languages": "languages", "days": "working days",
"added": "lines added", "removed": "lines removed", "net": "net lines",
"head": ("Language", "Lines of code", "Commits", "Share"),
"oss_intro": "Code that made it into projects we use every day. **{prs}** merged pull requests "
"in **{repos}** repositories with **{stars}+** stars combined.",
"oss_head": "| Project | Stars | Language | Changes |",
"ossIntro": "Code that made it into projects we use every day. **{prs}** merged pull requests "
"in **{repos}** repositories with **{stars}+** stars combined.",
"ossHead": "| Project | Stars | Language | Changes |",
"beyondIntro": "Code merged outside GitHub, through mailing lists and the projects' own review tools: **{commits}** {commitsWord} "
"in **{repos}** {reposWord}.",
"beyondPending": "Below them, changes approved by the maintainers that are awaiting merge.",
"beyondHead": "| Project | Repository | Status | Changes |",
"accepted": "merged, {n} {commitsWord}",
"approved": "approved, awaiting merge",
"more": "+{n} more",
},
}
class ApiError(Exception):
pass
def get(path):
request = urllib.request.Request(f"{API}{path}", headers={"User-Agent": "dualfroz-readme"})
with urllib.request.urlopen(request, timeout=60) as response:
return json.load(response)
url = path if path.startswith("http") else f"{apiBase}{path}"
request = urllib.request.Request(url, headers={"User-Agent": userAgent, "Accept": "application/json"})
for attempt in range(1, attempts + 1):
try:
with urllib.request.urlopen(request, timeout=requestTimeout) as response:
payload = json.load(response)
if not isinstance(payload, dict):
raise ValueError(f"expected a JSON object, got {type(payload).__name__}")
return payload
except (OSError, http.client.HTTPException, ValueError) as error:
print(f"{url}: attempt {attempt}/{attempts} failed: {error}", file=sys.stderr)
if attempt == attempts:
raise ApiError(f"{url}: {error}") from error
time.sleep(5 * attempt)
def num(value, lang):
@@ -50,119 +92,216 @@ def num(value, lang):
return text.replace(",", " ") if lang == "pl" else text
def floor_to(value, step):
return value // step * step
def floorTo(value, step):
return int(value) // step * step
def stars_short(value, lang):
def starsShort(value, lang):
if value < 1000:
return str(value)
k = f"{value / 1000:.1f}".rstrip("0").rstrip(".")
return f"{k.replace('.', ',')} tys." if lang == "pl" else f"{k}k"
thousands = f"{value / 1000:.1f}".rstrip("0").rstrip(".")
return f"{thousands.replace('.', ',')} tys." if lang == "pl" else f"{thousands}k"
def block(content, name, body):
start, end = f"<!-- stats:{name} -->", f"<!-- /stats:{name} -->"
pattern = re.compile(re.escape(start) + r".*?" + re.escape(end), re.S)
if not pattern.search(content):
raise SystemExit(f"missing {start} markers")
raise ValueError(f"missing {start} markers")
return pattern.sub(lambda _: f"{start}\n{body}\n{end}", content)
def summary(s, lang):
t, oss = s["totals"], s["openSource"]["contributed"]
T = TEXT[lang]
net = t["linesAdded"] - t["linesRemoved"]
def summary(stats, projects, lang):
totals, oss = stats["totals"], stats["openSource"]["contributed"]
words = labels[lang]
net = totals["linesAdded"] - totals["linesRemoved"]
return f"""<table>
<tr>
<td align="center" colspan="2" width="50%"><h3>{num(t["linesAdded"], lang)}</h3>{T["loc"]}</td>
<td align="center" width="25%"><h3>{num(t["commits"], lang)}</h3>{T["commits"]}</td>
<td align="center" width="25%"><h3>200+</h3>{T["projects"]}</td>
<td align="center" colspan="2" width="50%"><h3>{num(totals["lines"], lang)}</h3>{words["loc"]}</td>
<td align="center" width="25%"><h3>{num(totals["commits"], lang)}</h3>{words["commits"]}</td>
<td align="center" width="25%"><h3>{num(projects, lang)}+</h3>{words["projects"]}</td>
</tr>
<tr>
<td align="center" width="25%"><h3>{num(floor_to(oss["stars"], 10_000), lang)}+</h3>{T["oss_stars"]}</td>
<td align="center" width="25%"><h3>{num(oss["repos"], lang)}</h3>{T["oss_projects"]}</td>
<td align="center" width="25%"><h3>{num(t["languages"], lang)}</h3>{T["languages"]}</td>
<td align="center" width="25%"><h3>{num(t["activeDays"], lang)}</h3>{T["days"]}</td>
<td align="center" width="25%"><h3>{num(floorTo(oss["stars"], 10_000), lang)}+</h3>{words["ossStars"]}</td>
<td align="center" width="25%"><h3>{num(oss["repos"] + proxmoxExtra["repos"], lang)}</h3>{words["ossProjects"]}</td>
<td align="center" width="25%"><h3>{num(totals["languages"], lang)}</h3>{words["languages"]}</td>
<td align="center" width="25%"><h3>{num(totals["activeDays"], lang)}</h3>{words["days"]}</td>
</tr>
</table>
```diff
+ {num(t["linesAdded"], lang)} {T["added"]}
- {num(t["linesRemoved"], lang)} {T["removed"]}
! {num(net, lang)} {T["net"]}
+ {num(totals["linesAdded"], lang)} {words["added"]}
- {num(totals["linesRemoved"], lang)} {words["removed"]}
! {num(net, lang)} {words["net"]}
```"""
def languages(langs, frameworks, icons, lang):
T = TEXT[lang]
if not langs or not frameworks:
raise ValueError("empty languages or frameworks list")
words = labels[lang]
rows = []
for item in langs:
pct = item["share"] * 100
share = f"{pct:.1f}%"
for language in langs:
percent = language["share"] * 100
share = f"{percent:.1f}%"
if lang == "pl":
share = share.replace(".", ",")
bar = "â–ˆ" * max(1, round(pct / 4.5))
icon = icons.get(item["name"], "")
icon_td = f'<img src="{icon}" width="18" alt="{item["name"]}">' if icon else ""
bar = "â–ˆ" * max(1, round(percent / 4.5))
icon = icons.get(language["name"], "")
iconCell = f'<img src="{icon}" width="18" alt="{language["name"]}">' if icon else ""
rows.append(
f' <tr><td>{icon_td}</td><td><b>{item["name"]}</b></td>'
f'<td align="right">{num(item["linesAdded"], lang)}</td>'
f'<td align="right">{num(item["commits"], lang)}</td>'
f' <tr><td>{iconCell}</td><td><b>{language["name"]}</b></td>'
f'<td align="right">{num(language["linesAdded"], lang)}</td>'
f'<td align="right">{num(language["commits"], lang)}</td>'
f'<td align="right">{share} <sub>{bar}</sub></td></tr>'
)
head = "".join(f'<th align="{"left" if i == 0 else "right"}">{h}</th>' for i, h in enumerate(T["head"]))
head = "".join(f'<th align="{"left" if i == 0 else "right"}">{h}</th>' for i, h in enumerate(words["head"]))
table = '<table align="center">\n <tr><th></th>' + head + "</tr>\n" + "\n".join(rows) + "\n</table>"
fw = " · ".join(f'{f["name"]} <sub>{f["repos"]}</sub>' for f in frameworks)
frameworkLine = " · ".join(f'{framework["name"]} <sub>{framework["repos"]}</sub>' for framework in frameworks)
heading = ("**Frameworki i narzędzia wykryte w projektach** <sub>(liczba repozytoriów)</sub>" if lang == "pl"
else "**Frameworks & tools detected across projects** <sub>(repository count)</sub>")
return f"{table}\n\n{heading}\n\n{fw}"
return f"{table}\n\n{heading}\n\n{frameworkLine}"
def opensource(oss, lang):
T = TEXT[lang]
merged = sorted((p for p in oss["projects"] if p["merged"] > 0), key=lambda p: -p["stars"])
stars = floor_to(oss["contributed"]["stars"], 10_000)
intro_line = T["oss_intro"].format(stars=num(stars, lang), repos=len(merged), prs=num(oss["pullRequests"]["merged"], lang))
lines = [intro_line, "", T["oss_head"], "|---|---|---|---|"]
for p in merged:
words = labels[lang]
merged = sorted((project for project in oss["projects"] if project.get("merged", 0) > 0),
key=lambda project: -project.get("stars", 0))
if not merged:
raise ValueError("no merged open source projects")
stars = floorTo(oss["contributed"]["stars"], 10_000)
repos = oss["contributed"]["repos"] + proxmoxExtra["repos"]
prs = oss["pullRequests"]["merged"] + proxmoxExtra["merged"]
introLine = words["ossIntro"].format(stars=num(stars, lang), repos=repos, prs=num(prs, lang))
lines = [introLine, "", words["ossHead"], "|---|---|---|---|"]
for project in merged:
lines.append(
f'| [{p["name"]}]({p["url"]}) | ⭐ {stars_short(p["stars"], lang)} | {p.get("language") or "-"} | '
f'<code>+{p["linesAdded"]}</code> <code>-{p["linesRemoved"]}</code> |'
f'| [{project["name"]}]({project["url"]}) | ⭐ {starsShort(project.get("stars", 0), lang)} | '
f'{project.get("language") or "-"} | '
f'<code>+{project.get("linesAdded", 0)}</code> <code>-{project.get("linesRemoved", 0)}</code> |'
)
return "\n".join(lines)
def intro(content, s, lang):
t, oss = s["totals"], s["openSource"]["contributed"]
millions = t["linesAdded"] // 1_000_000
stars = floor_to(oss["stars"], 10_000)
def commitsWord(count, lang):
if lang == "en":
return "commit" if count == 1 else "commits"
if count == 1:
return "commit"
return "commity" if count % 10 in (2, 3, 4) and count % 100 not in (12, 13, 14) else "commitów"
def reposWord(count, lang):
if lang == "en":
return "repository" if count == 1 else "repositories"
return "repozytorium" if count == 1 else "repozytoriach"
def beyondChanges(contribution, lang):
changes = contribution["changes"]
shown = changes if len(changes) <= beyondChangesShown else changes[:beyondChangesShown - 1]
links = [f'[{change["label"]}]({change["url"]}) {change["title"][lang]}' for change in shown]
if len(shown) < len(changes):
more = labels[lang]["more"].format(n=len(changes) - len(shown))
links.append(f'[{more}]({contribution["authorSearchUrl"] or contribution["url"]})')
return "<br>".join(links)
def beyond(contributions, lang):
if not contributions:
raise ValueError("no contributions beyond GitHub")
words = labels[lang]
accepted = [contribution for contribution in contributions if contribution["status"] == "accepted"]
commits = sum(contribution["commits"] for contribution in accepted)
introLine = words["beyondIntro"].format(commits=num(commits, lang), commitsWord=commitsWord(commits, lang),
repos=len(accepted), reposWord=reposWord(len(accepted), lang))
if len(accepted) < len(contributions):
introLine = f'{introLine} {words["beyondPending"]}'
lines = [f"> {introLine}", "", words["beyondHead"], "|---|---|---|---|"]
for contribution in contributions:
state = (words["accepted"].format(n=contribution["commits"], commitsWord=commitsWord(contribution["commits"], lang))
if contribution["status"] == "accepted" else words["approved"])
lines.append(
f'| {contribution["project"]} | '
f'[{contribution["repo"]}]({contribution["authorSearchUrl"] or contribution["url"]})<br><sub>{contribution["platform"]}</sub> | '
f'{state} | {beyondChanges(contribution, lang)} |'
)
return "\n".join(lines)
def intro(content, stats, projects, lang):
totals, oss = stats["totals"], stats["openSource"]["contributed"]
millions = int(totals["lines"]) // 1_000_000
stars = floorTo(oss["stars"], 10_000)
repos = oss["repos"] + proxmoxExtra["repos"]
if lang == "pl":
content = re.sub(r"ponad \*\*\d+ mln linijek kodu\*\*", f"ponad **{millions} mln linijek kodu**", content)
content = re.sub(r"cegiełkę do \*\*\d+ repozytoriów open source\*\*", f"cegiełkę do **{oss['repos']} repozytoriów open source**", content)
content = re.sub(r"cegiełkę do \*\*\d+ repozytoriów open source\*\*", f"cegiełkę do **{repos} repozytoriów open source**", content)
content = re.sub(r"majÄ… \*\*[\d ]+\+ gwiazdek\*\*", f"majÄ… **{num(stars, lang)}+ gwiazdek**", content)
content = re.sub(r"w \*\*\d+\+ projektach\*\*", f"w **{projects}+ projektach**", content)
else:
content = re.sub(r"more than \*\*\d+ million lines of code\*\*", f"more than **{millions} million lines of code**", content)
content = re.sub(r"contributed to \*\*\d+ open source repositories\*\*", f"contributed to **{oss['repos']} open source repositories**", content)
content = re.sub(r"contributed to \*\*\d+ open source repositories\*\*", f"contributed to **{repos} open source repositories**", content)
content = re.sub(r"\*\*[\d,]+\+ combined stars\*\*", f"**{num(stars, lang)}+ combined stars**", content)
content = re.sub(r"across \*\*\d+\+ projects\*\*", f"across **{projects}+ projects**", content)
return content
def section(content, name, render):
try:
return render(content)
except (KeyError, TypeError, ValueError, AttributeError) as error:
print(f"::warning::{name} left unchanged: {type(error).__name__}: {error}", file=sys.stderr)
return content
def fetchAll():
sources = {
"frameworks": get("/frameworks").get("frameworks"),
"opensource": get("/opensource?limit=500"),
"projects": get(headlineUrl).get("projects"),
}
for lang in readmeFiles:
sources[f"summary:{lang}"] = get(f"/summary?lang={lang}")
sources[f"languages:{lang}"] = get(f"/languages?limit=100&lang={lang}").get("languages")
return sources
def render(content, sources, lang):
stats, projects = sources[f"summary:{lang}"], sources["projects"]
icons = dict((m.group(2), m.group(1)) for m in re.finditer(
r'<tr><td><img src="([^"]+)" width="18" alt="([^"]+)"></td>', content))
if projects is None:
print("::warning::headline.json has no projects, intro and summary left unchanged", file=sys.stderr)
else:
content = section(content, "intro", lambda text: intro(text, stats, projects, lang))
content = section(content, "summary", lambda text: block(text, "summary", summary(stats, projects, lang)))
content = section(content, "languages", lambda text: block(
text, "languages", languages(sources[f"languages:{lang}"], sources["frameworks"], icons, lang)))
content = section(content, "beyond", lambda text: block(text, "beyond", beyond(sources["beyond"], lang)))
content = section(content, "opensource", lambda text: block(
text, "opensource", opensource(sources["opensource"], lang)))
return content
def main():
frameworks = get("/frameworks")["frameworks"]
oss = get("/opensource?limit=500")
for lang, paths in FILES.items():
s = get(f"/summary?lang={lang}")
langs = get(f"/languages?limit=100&lang={lang}")["languages"]
try:
sources = fetchAll()
except ApiError as error:
print(f"::error::API unreachable, README files left untouched: {error}", file=sys.stderr)
sys.exit(1)
with open(beyondFile, encoding="utf-8") as file:
sources["beyond"] = json.load(file)["contributions"]
for lang, paths in readmeFiles.items():
for path in paths:
content = open(path, encoding="utf-8").read()
icons = dict((m.group(2), m.group(1)) for m in re.finditer(
r'<tr><td><img src="([^"]+)" width="18" alt="([^"]+)"></td>', content))
content = intro(content, s, lang)
content = block(content, "summary", summary(s, lang))
content = block(content, "languages", languages(langs, frameworks, icons, lang))
content = block(content, "opensource", opensource(oss, lang))
open(path, "w", encoding="utf-8").write(content)
with open(path, encoding="utf-8") as file:
current = file.read()
updated = render(current, sources, lang)
if updated == current:
print(f"{path}: unchanged")
continue
with open(path, "w", encoding="utf-8") as file:
file.write(updated)
print(f"{path}: updated")