Skip to content

Commit 7dd836f

Browse files
committed
added toggle to hide system folders/consistent hover styles
1 parent de66ad0 commit 7dd836f

File tree

14 files changed

+71
-18
lines changed

14 files changed

+71
-18
lines changed

documentation/FEATURES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
- **Alphabetical sorting** - Find notes quickly
3232
- **Rename anything** - Files and folders, instantly
3333
- **Visual tree view** - Expandable/collapsible navigation
34+
- **Hide system folders** - Toggle to hide `_attachments`, `_templates` and other underscore-prefixed folders from sidebar
3435

3536
## 🔗 Linking & Discovery
3637

frontend/app.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ const LOCAL_SETTINGS = {
1818
readableLineLength: { key: 'readableLineLength', type: 'boolean', default: true },
1919
favoritesExpanded: { key: 'favoritesExpanded', type: 'boolean', default: true },
2020
tagsExpanded: { key: 'tagsExpanded', type: 'boolean', default: false },
21+
hideUnderscoreFolders: { key: 'hideUnderscoreFolders', type: 'boolean', default: false },
2122
// Number settings with validation
2223
sidebarWidth: { key: 'sidebarWidth', type: 'number', default: CONFIG.DEFAULT_SIDEBAR_WIDTH, min: 200, max: 600 },
2324
editorWidth: { key: 'editorWidth', type: 'number', default: 50, min: 20, max: 80 },
@@ -209,6 +210,9 @@ function noteApp() {
209210
// Readable line length (preview max-width)
210211
readableLineLength: true,
211212

213+
// Hide underscore-prefixed folders (_attachments, _templates) from sidebar
214+
hideUnderscoreFolders: false,
215+
212216
// Icon rail / panel state
213217
activePanel: 'files', // 'files', 'search', 'tags', 'settings'
214218

@@ -807,6 +811,12 @@ function noteApp() {
807811
localStorage.setItem('readableLineLength', this.readableLineLength);
808812
},
809813

814+
// Hide underscore folders toggle (hides _attachments, _templates, etc. from sidebar)
815+
toggleHideUnderscoreFolders() {
816+
this.hideUnderscoreFolders = !this.hideUnderscoreFolders;
817+
localStorage.setItem('hideUnderscoreFolders', this.hideUnderscoreFolders);
818+
},
819+
810820
// Update syntax highlight overlay (debounced, called on input)
811821
updateSyntaxHighlight() {
812822
if (!this.syntaxHighlightEnabled) return;
@@ -1852,9 +1862,7 @@ function noteApp() {
18521862
ondragleave="window.$root.handleFolderDragLeave(this)"
18531863
ondrop="window.$root.handleFolderDrop(this, event)"
18541864
onclick="window.$root.handleFolderClick(this)"
1855-
onmouseover="if(!window.$root.draggedItem) this.style.backgroundColor='var(--bg-hover)'"
1856-
onmouseout="if(!window.$root.draggedItem) this.style.backgroundColor='transparent'"
1857-
class="folder-item px-2 py-1 text-sm relative"
1865+
class="folder-item hover-accent px-2 py-1 text-sm relative"
18581866
style="color: var(--text-primary); cursor: pointer;"
18591867
>
18601868
<div class="flex items-center gap-1">
@@ -1909,9 +1917,9 @@ function noteApp() {
19091917

19101918
// First, render child folders (if any)
19111919
if (folder.children && Object.keys(folder.children).length > 0) {
1912-
const children = Object.entries(folder.children).sort((a, b) =>
1913-
a[1].name.toLowerCase().localeCompare(b[1].name.toLowerCase())
1914-
);
1920+
const children = Object.entries(folder.children)
1921+
.filter(([k, v]) => !this.hideUnderscoreFolders || !v.name.startsWith('_'))
1922+
.sort((a, b) => a[1].name.toLowerCase().localeCompare(b[1].name.toLowerCase()));
19151923

19161924
children.forEach(([childKey, childFolder]) => {
19171925
html += this.renderFolderRecursive(childFolder, 0, false);

frontend/index.html

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -763,6 +763,10 @@
763763
border-left-color: var(--accent-primary);
764764
}
765765

766+
.hover-accent.active:hover {
767+
transform: translateX(2px);
768+
}
769+
766770
/* Tag chip - same effect but no margin */
767771
.tag-chip {
768772
border-left: 3px solid transparent;
@@ -1586,7 +1590,7 @@
15861590
</div>
15871591

15881592
<!-- Folders (rendered recursively for unlimited nesting) -->
1589-
<template x-for="[folderKey, folder] in Object.entries(folderTree).filter(([k]) => k !== '__root__').sort((a, b) => a[1].name.toLowerCase().localeCompare(b[1].name.toLowerCase()))" :key="folderKey">
1593+
<template x-for="[folderKey, folder] in Object.entries(folderTree).filter(([k, v]) => k !== '__root__' && (!hideUnderscoreFolders || !v.name.startsWith('_'))).sort((a, b) => a[1].name.toLowerCase().localeCompare(b[1].name.toLowerCase()))" :key="folderKey">
15901594
<div x-html="renderFolderRecursive(folder, 0, true)"></div>
15911595
</template>
15921596

@@ -1898,6 +1902,24 @@
18981902
<p class="text-xs mt-1" style="color: var(--text-tertiary);" x-text="t('settings.readable_line_length_desc')"></p>
18991903
</div>
19001904

1905+
<!-- Hide Underscore Folders Toggle -->
1906+
<div class="mb-4">
1907+
<label class="flex items-center justify-between cursor-pointer">
1908+
<span class="text-xs font-medium" style="color: var(--text-secondary);" x-text="t('settings.hide_underscore_folders')"></span>
1909+
<div
1910+
@click="toggleHideUnderscoreFolders()"
1911+
class="relative w-10 h-5 rounded-full transition-colors cursor-pointer"
1912+
:style="hideUnderscoreFolders ? 'background-color: var(--accent-primary)' : 'background-color: var(--bg-tertiary)'"
1913+
>
1914+
<div
1915+
class="absolute top-0.5 left-0.5 w-4 h-4 rounded-full transition-transform"
1916+
:style="'background-color: var(--bg-primary);' + (hideUnderscoreFolders ? ' transform: translateX(20px);' : '')"
1917+
></div>
1918+
</div>
1919+
</label>
1920+
<p class="text-xs mt-1" style="color: var(--text-tertiary);" x-text="t('settings.hide_underscore_folders_desc')"></p>
1921+
</div>
1922+
19011923
<!-- Logout (if auth enabled) - uses authEnabled from main app state -->
19021924
<div x-show="authEnabled" class="mb-4">
19031925
<label class="block text-xs font-medium mb-2" style="color: var(--text-secondary);" x-text="t('settings.account')"></label>

locales/de-DE.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,9 @@
239239
"account": "Konto",
240240
"logout": "Abmelden",
241241
"readable_line_length": "Lesbare Zeilenlänge",
242-
"readable_line_length_desc": "Vorschaubreite für bessere Lesbarkeit begrenzen"
242+
"readable_line_length_desc": "Vorschaubreite für bessere Lesbarkeit begrenzen",
243+
"hide_underscore_folders": "Systemordner ausblenden",
244+
"hide_underscore_folders_desc": "_attachments, _templates und andere Unterstrich-Ordner ausblenden"
243245
},
244246

245247
"homepage": {

locales/en-GB.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,9 @@
238238
"account": "Account",
239239
"logout": "Logout",
240240
"readable_line_length": "Readable line length",
241-
"readable_line_length_desc": "Limit preview width for easier reading"
241+
"readable_line_length_desc": "Limit preview width for easier reading",
242+
"hide_underscore_folders": "Hide system folders",
243+
"hide_underscore_folders_desc": "Hide _attachments, _templates and other underscore folders from sidebar"
242244
},
243245

244246
"homepage": {

locales/en-US.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,9 @@
239239
"account": "Account",
240240
"logout": "Logout",
241241
"readable_line_length": "Readable line length",
242-
"readable_line_length_desc": "Limit preview width for easier reading"
242+
"readable_line_length_desc": "Limit preview width for easier reading",
243+
"hide_underscore_folders": "Hide system folders",
244+
"hide_underscore_folders_desc": "Hide _attachments, _templates and other underscore folders from sidebar"
243245
},
244246

245247
"homepage": {

locales/es-ES.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,9 @@
239239
"account": "Cuenta",
240240
"logout": "Cerrar sesión",
241241
"readable_line_length": "Longitud de línea legible",
242-
"readable_line_length_desc": "Limitar el ancho de vista previa para facilitar la lectura"
242+
"readable_line_length_desc": "Limitar el ancho de vista previa para facilitar la lectura",
243+
"hide_underscore_folders": "Ocultar carpetas de sistema",
244+
"hide_underscore_folders_desc": "Ocultar _attachments, _templates y otras carpetas con guion bajo"
243245
},
244246

245247
"homepage": {

locales/fr-FR.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,9 @@
239239
"account": "Compte",
240240
"logout": "Déconnexion",
241241
"readable_line_length": "Longueur de ligne lisible",
242-
"readable_line_length_desc": "Limiter la largeur de l'aperçu pour une lecture plus facile"
242+
"readable_line_length_desc": "Limiter la largeur de l'aperçu pour une lecture plus facile",
243+
"hide_underscore_folders": "Masquer les dossiers système",
244+
"hide_underscore_folders_desc": "Masquer _attachments, _templates et autres dossiers préfixés"
243245
},
244246

245247
"homepage": {

locales/hu-HU.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,9 @@
239239
"account": "Fiók",
240240
"logout": "Kijelentkezés",
241241
"readable_line_length": "Olvasható sorhossz",
242-
"readable_line_length_desc": "Korlátozd az előnézeti szélességet a könnyebb olvasás érdekében"
242+
"readable_line_length_desc": "Korlátozd az előnézeti szélességet a könnyebb olvasás érdekében",
243+
"hide_underscore_folders": "Rendszermappák elrejtése",
244+
"hide_underscore_folders_desc": "_attachments, _templates és más aláhúzásos mappák elrejtése"
243245
},
244246

245247
"homepage": {

locales/it-IT.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,9 @@
238238
"account": "Account",
239239
"logout": "Esci",
240240
"readable_line_length": "Larghezza riga leggibile",
241-
"readable_line_length_desc": "Limita la larghezza dell'anteprima per una lettura più facile"
241+
"readable_line_length_desc": "Limita la larghezza dell'anteprima per una lettura più facile",
242+
"hide_underscore_folders": "Nascondi cartelle di sistema",
243+
"hide_underscore_folders_desc": "Nascondi _attachments, _templates e altre cartelle con underscore"
242244
},
243245

244246
"homepage": {

0 commit comments

Comments
 (0)