feat: barre d'outils de lecture epinglee, coloration syntaxique des fichiers de code et avatars predefinis (#115, #117, BUG-078)
CI / lint (push) Successful in 2m5s
CI / security (push) Successful in 1m27s
CI / test (push) Successful in 4m10s
CI / build (push) Successful in 1m23s
CI / e2e (push) Successful in 13m55s

This commit is contained in:
2026-09-24 16:21:45 -04:00
parent e1842043d8
commit 943005328c
36 changed files with 426 additions and 29 deletions
+48 -1
View File
@@ -1767,7 +1767,22 @@ select {
/* File header */
.file-header {
margin-bottom: 20px;
margin-bottom: 8px;
}
/* #115 — sticky document action bar: stays visible while long content scrolls.
A direct child of `.content-area` (the scroll container), opaque so the text
scrolling underneath never bleeds through. */
.file-toolbar {
position: sticky;
top: 0;
z-index: 30;
margin: 0 0 16px;
padding: 8px 0;
background: var(--bg-primary);
border-bottom: 1px solid var(--border);
}
.file-toolbar .file-actions {
margin-top: 0;
}
.file-title {
font-family: "JetBrains Mono", monospace;
@@ -2670,6 +2685,32 @@ select {
.profile-avatar-remove-btn { background: var(--danger-bg) !important; color: var(--danger) !important; border-color: var(--danger) !important; }
.profile-avatar-error { font-size: 0.7rem; color: var(--danger); margin-top: 8px; }
.profile-avatar-error.hidden { display: none; }
/* #117 — preset avatar gallery */
.profile-avatar-presets {
display: grid;
grid-template-columns: repeat(6, minmax(0, 1fr));
gap: 8px;
margin-top: 10px;
max-width: 420px;
}
.profile-avatar-preset {
padding: 0;
margin: 0;
border: 2px solid var(--border);
border-radius: 50%;
overflow: hidden;
cursor: pointer;
background: var(--bg-secondary);
aspect-ratio: 1;
transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.1s ease;
}
.profile-avatar-preset img { width: 100%; height: 100%; object-fit: cover; display: block; }
.profile-avatar-preset:hover { border-color: var(--accent); transform: translateY(-1px); }
.profile-avatar-preset.active {
border-color: var(--accent);
box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent);
}
.profile-avatar-preset:disabled { opacity: 0.6; cursor: progress; }
.config-save-btn {
padding: 6px 18px; font-size: 0.75rem; font-weight: 600;
background: var(--accent); color: #fff;
@@ -4920,6 +4961,11 @@ body.resizing-v {
flex-wrap: wrap;
gap: 12px;
}
/* Preset avatars: 4 per row on narrow screens (44px touch targets). */
#config-modal .profile-avatar-presets {
grid-template-columns: repeat(4, minmax(0, 1fr));
max-width: 100%;
}
#config-modal .profile-form {
max-width: 100%;
}
@@ -11853,6 +11899,7 @@ body.reading-mode .main-body {
padding-bottom: 0;
}
body.reading-mode .breadcrumb,
body.reading-mode .file-toolbar,
body.reading-mode .file-actions {
display: none;
}