J'aime pas les bords arrondis partout. Une option pour désactiver serait sympa mais bon j'imagine qu'il y a d'autres priorités.

En attendant un petit userscript rapidement généré par Claude pour obtenir cet effet (je ne garde l'arrondi que sur les story, edit:pq il a codé en français ce con enfin bref :

En attendant un petit userscript rapidement généré par Claude pour obtenir cet effet (je ne garde l'arrondi que sur les story, edit:pq il a codé en français ce con enfin bref :
USERSCRIPT
// ==UserScript==
// @name Onche – Pas d'angles arrondis
// @namespace
https://onche.org/
// @version 1.3
// @description Supprime tous les border-radius sur onche.org (bords carrés partout, avatars compris).
// @match
https://onche.org/*
// @match
https://*.onche.org/*
// @run-at document-start
// @grant GM_addStyle
// ==/UserScript==
(function () {
'use strict';
// Mettre à false pour garder les avatars/pastilles ronds.
const CARRE_PARTOUT = true;
// IMPORTANT : une règle CSS dont la liste de sélecteurs contient UN pseudo-élément
// inconnu du navigateur est jetée EN ENTIER. (ex. ::-moz-range-thumb dans Chrome,
// ::-webkit-scrollbar-thumb dans Firefox). Donc une règle par sélecteur.
const selecteurs = [
'*',
'*::before',
'*::after',
'*::file-selector-button',
'*::-webkit-scrollbar',
'*::-webkit-scrollbar-thumb',
'*::-webkit-scrollbar-track',
'*::-webkit-progress-bar',
'*::-webkit-progress-value',
'*::-webkit-slider-thumb',
'*::-webkit-slider-runnable-track',
'*::-moz-range-thumb',
'*::-moz-range-track',
'*::-moz-progress-bar',
];
// Zone « stories » exclue : tout élément dont une classe contient story/stories,
// ainsi que ses descendants, garde ses angles d'origine.
// svelte-1g7vzqk = barre de bulles (root/bar/bubble/avatar), dont les classes ne contiennent pas « story ».
// Ce hash change si le site est recompilé : à mettre à jour le cas échéant.
const STORY = ':is([class*="stories"],[class*="story"],[class~="svelte-1g7vzqk"])';
const EXCLU = `:not(${STORY}):not(${STORY} *)`;
let css = selecteurs
.map((s) => s.replace('*', '*' + EXCLU))
.map((s) => `${s}{border-radius:0 !important}`)
.join('\n');
if (!CARRE_PARTOUT) {
css += '\n.rounded,.avatar,[class*="avatar"],.photo{border-radius:50% !important}';
}
const ID = 'onche-no-radius';
let el = null;
function inject() {
if (el && el.isConnected) return;
// 1) GM_addStyle contourne la CSP de la page (le site utilise des nonces,
// donc un <style> ajouté à la main est très probablement bloqué).
if (typeof GM_addStyle === 'function') {
try {
el = GM_addStyle(css);
if (el) el.id = ID;
return;
} catch (e) {}
}
// 2) Repli : <style> classique (ne marche que si la CSP l'autorise).
el = document.createElement('style');
el.id = ID;
el.textContent = css;
(document.head || document.documentElement).appendChild(el);
}
inject();
// Réinjecte si le style est retiré (navigation SvelteKit, remplacement du <head>).
new MutationObserver(inject).observe(document.documentElement, {
childList: true,
subtree: true,
});
})();
// @name Onche – Pas d'angles arrondis
// @namespace
// @version 1.3
// @description Supprime tous les border-radius sur onche.org (bords carrés partout, avatars compris).
// @match
// @match
// @run-at document-start
// @grant GM_addStyle
// ==/UserScript==
(function () {
'use strict';
// Mettre à false pour garder les avatars/pastilles ronds.
const CARRE_PARTOUT = true;
// IMPORTANT : une règle CSS dont la liste de sélecteurs contient UN pseudo-élément
// inconnu du navigateur est jetée EN ENTIER. (ex. ::-moz-range-thumb dans Chrome,
// ::-webkit-scrollbar-thumb dans Firefox). Donc une règle par sélecteur.
const selecteurs = [
'*',
'*::before',
'*::after',
'*::file-selector-button',
'*::-webkit-scrollbar',
'*::-webkit-scrollbar-thumb',
'*::-webkit-scrollbar-track',
'*::-webkit-progress-bar',
'*::-webkit-progress-value',
'*::-webkit-slider-thumb',
'*::-webkit-slider-runnable-track',
'*::-moz-range-thumb',
'*::-moz-range-track',
'*::-moz-progress-bar',
];
// Zone « stories » exclue : tout élément dont une classe contient story/stories,
// ainsi que ses descendants, garde ses angles d'origine.
// svelte-1g7vzqk = barre de bulles (root/bar/bubble/avatar), dont les classes ne contiennent pas « story ».
// Ce hash change si le site est recompilé : à mettre à jour le cas échéant.
const STORY = ':is([class*="stories"],[class*="story"],[class~="svelte-1g7vzqk"])';
const EXCLU = `:not(${STORY}):not(${STORY} *)`;
let css = selecteurs
.map((s) => s.replace('*', '*' + EXCLU))
.map((s) => `${s}{border-radius:0 !important}`)
.join('\n');
if (!CARRE_PARTOUT) {
css += '\n.rounded,.avatar,[class*="avatar"],.photo{border-radius:50% !important}';
}
const ID = 'onche-no-radius';
let el = null;
function inject() {
if (el && el.isConnected) return;
// 1) GM_addStyle contourne la CSP de la page (le site utilise des nonces,
// donc un <style> ajouté à la main est très probablement bloqué).
if (typeof GM_addStyle === 'function') {
try {
el = GM_addStyle(css);
if (el) el.id = ID;
return;
} catch (e) {}
}
// 2) Repli : <style> classique (ne marche que si la CSP l'autorise).
el = document.createElement('style');
el.id = ID;
el.textContent = css;
(document.head || document.documentElement).appendChild(el);
}
inject();
// Réinjecte si le style est retiré (navigation SvelteKit, remplacement du <head>).
new MutationObserver(inject).observe(document.documentElement, {
childList: true,
subtree: true,
});
})();









