Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
47a4810
Fix Reamde
Liamoulee Sep 26, 2026
eef7ed7
Update Bun installation instructions in BUILDING.md
Liamoulee Sep 28, 2026
3104a41
Merge branch 'NullDev:dev' into dev
Liamoulee Sep 28, 2026
2854fe8
Merge branch 'NullDev:dev' into dev
Liamoulee Sep 29, 2026
a8c2a65
Merge branch 'NullDev:dev' into dev
Liamoulee Oct 2, 2026
22f525b
Merge branch 'NullDev:dev' into dev
Liamoulee Oct 4, 2026
9070517
Merge branch 'NullDev:dev' into dev
Liamoulee Oct 15, 2026
3e2f34b
Merge branch 'NullDev:dev' into dev
Liamoulee Oct 20, 2026
16ffa7a
Merge branch 'NullDev:dev' into dev
Liamoulee Oct 20, 2026
176ab84
Merge branch 'NullDev:dev' into dev
Liamoulee Oct 20, 2026
404744f
Adding CSS Store
Liamoulee Oct 20, 2026
edabb6e
line-end format fixed
Liamoulee Oct 21, 2026
db93208
Merge branch 'NullDev:dev' into dev
Liamoulee Oct 21, 2026
ac16e4f
Description removed for CSS Store
Liamoulee Oct 21, 2026
314b43e
Merge branch 'dev' into dev
Liamoulee Oct 22, 2026
ab767e9
Bringed back old bundle.js
Liamoulee Oct 23, 2026
4de8491
Merge branch 'dev' into dev
Liamoulee Oct 23, 2026
9084bfd
Merge remote-tracking branch 'origin/dev' into dev
Liamoulee Oct 23, 2026
5a680b9
Merge branch 'dev' into pr13-css-store
NullDev Oct 23, 2026
877ad8d
rebuild bundle
NullDev Oct 23, 2026
90ddc72
bundle.js
Liamoulee Oct 23, 2026
b680bc6
Merge remote-tracking branch 'origin/dev' into dev
Liamoulee Oct 23, 2026
0be56ac
drop unrelated formatting changes in css manager
NullDev Oct 23, 2026
c9220c5
load css store from the kute-client repo and validate its catalog
NullDev Oct 23, 2026
dc9d1fd
restyle css store with the manager styles
NullDev Oct 23, 2026
04d5435
add css store to the website
NullDev Oct 23, 2026
298f3cd
show a placeholder for css store items without a preview
NullDev Oct 23, 2026
7dcf286
rebuild bundle
NullDev Oct 23, 2026
a7b2c4a
Merge branch 'dev' of https://github.com/Liamoulee/Kute into pr13-css…
NullDev Oct 23, 2026
b23c27d
we can now zoom on the css preview
Liamoulee Oct 23, 2026
08f576c
need build and refix
Liamoulee Oct 23, 2026
cc03bb7
close the zoomed store preview on escape and move its styles to the s…
NullDev Oct 24, 2026
a2cd674
rebuild bundle
NullDev Oct 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ Kute is a high-performance Krunker client designed to enhance your gaming experi
- [x] Autoupdater with a download progress window, plus changelogs
- [x] Rebindable kute hotkeys
- [x] Spotify overlay - by [@Liamoulee](https://github.com/Liamoulee)
- [x] CSS Store - by [@Liamoulee](https://github.com/Liamoulee)
- [ ] BetterKDR™️ (coming soon)
- [x] and more...

Expand Down
1 change: 1 addition & 0 deletions server/public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -385,6 +385,7 @@ <h3>Interface</h3>
<h3>Customization</h3>
<div><span></span><b>Resource swapper</b><p>Replaces game files with your own. The manager shows what the game loads, drop a file onto the one it replaces and it lands in the right place. CSS and other text files can be written and edited right there, and CSS swaps apply instantly.</p></div>
<div><span></span><b>CSS Manager</b><p>Keep as many CSS themes as you like: write them in the client with syntax highlighting and a live preview, paste them or import .css files, and switch between them with one click. They always load after Krunker's styles, so your rules win.</p></div>
<div><span></span><b>CSS Store</b><p>Browse CSS made by the community right in the CSS Manager, with previews, and download any of them with one click.</p></div>
<div><span></span><b>Kute CSS</b><p>One switch gives the whole client Kute's look: menus, settings, every window and popup, the social window and the HUD, with a few cats. Colors that mean something, like KR, rarities and health, stay as they are, and your own CSS still wins.</p></div>
<div><span></span><b>Motion blur</b><p>A slight blur while you turn the camera, with adjustable strength. The HUD stays sharp, and nothing runs while you stand still.</p></div>
<div><span></span><b>Custom sky</b><p>Your own sky on every map: starfield, aurora, synthwave and more built in, a color gradient, or any image you drop into the skies folder.</p></div>
Expand Down
128 changes: 128 additions & 0 deletions src/frontend/components/managers/customCss.html
Original file line number Diff line number Diff line change
Expand Up @@ -102,20 +102,148 @@
.managerPopup.legacy #ccFiles {
display: none;
}

#ccStorePanel {
flex: 1 1 auto;
min-height: 0;
margin-bottom: 0;
overflow-y: auto;
}

.managerBody:not(.storeOpen) > #ccStorePanel,
.managerBody.storeOpen > #ccEditor,
.managerBody.storeOpen > #ccFiles,
.managerPopup.legacy #ccStore {
display: none;
}

#ccStoreBack {
margin-left: auto;
}

#ccStoreList {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
gap: 0.9em;
padding: 0.9em;
}

#ccStoreList > .empty {
grid-column: 1 / -1;
}

.storeCard {
display: flex;
flex-direction: column;
gap: 0.3em;
padding: 0.6em;
border: 1px solid var(--line);
border-radius: 8px;
background: #202020;
}

.storeShot {
position: relative;
display: flex;
align-items: center;
justify-content: center;
aspect-ratio: 16 / 9;
overflow: hidden;
border-radius: 5px;
background: #2b2b2b;
color: #555;
}

.storeShot .mi {
font-size: 32px;
}

.storeShot img {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
object-fit: cover;
cursor: zoom-in;
}

#ccZoom {
position: fixed;
inset: 0;
z-index: 10;
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
padding: 40px;
background: rgba(0, 0, 0, 0.88);
cursor: zoom-out;
}

#ccZoom img {
max-width: 100%;
max-height: 100%;
object-fit: contain;
border-radius: 8px;
box-shadow: 0 10px 50px rgba(0, 0, 0, 0.5);
cursor: default;
}

#ccZoom .managerClose {
position: absolute;
top: 16px;
right: 24px;
font-size: 2.2em;
}

.storeName {
overflow: hidden;
color: #fff;
text-overflow: ellipsis;
white-space: nowrap;
}

.storeAuthor {
min-height: 1.2em;
overflow: hidden;
color: var(--muted);
font-size: 0.85em;
text-overflow: ellipsis;
white-space: nowrap;
}

.storeCard .btn {
justify-content: center;
margin-top: 0.3em;
}

.storeCard .btn.done {
color: var(--muted);
cursor: default;
pointer-events: none;
}
</style>
<div class="managerPopup">
<div class="managerHeader">
<h2 class="managerTitle">CSS Manager</h2>
<label class="previewToggle" title="Show the file you edit right away, closing puts the active one back"><input type="checkbox" id="ccLive" checked>Live preview</label>
<div class="btn" id="ccPeek" title="Hold to look at the game behind this window"><span class="mi">visibility</span>Hold to peek</div>
<div class="btn" id="ccFolder"><span class="mi">folder_open</span>Show folder</div>
<div class="btn" id="ccStore" title="Download CSS made by the community"><span class="mi">storefront</span>CSS Store</div>
<div class="managerClose" data-close>&times;</div>
</div>
<div class="managerHint" id="ccHint">One file is active at a time and loads after all of Krunker's styles, so a rule with the same selector wins.
Krunker's inline styles and its own <code>!important</code> rules still need <code>!important</code> here. Files live in <code>Documents\kute\css</code>.</div>
<div class="managerError" data-error hidden></div>
<div class="managerNotice" id="ccOff" hidden><span>CSS Manager is switched off (Settings, Customization), nothing of this is applied.</span></div>
<div class="managerBody">
<div class="group" id="ccStorePanel">
<div class="groupHead">
<div class="groupTitle">CSS Store</div>
<div class="btn small" id="ccStoreBack"><span class="mi">arrow_back</span>Back</div>
</div>
<div id="ccStoreList"></div>
</div>
<div id="ccEditor"></div>
<div class="group" id="ccFiles">
<div class="groupHead">
Expand Down
Loading
Loading