Merge pull request #206 from gamosoft/features/enhancements
Features/enhancements
This commit is contained in:
commit
5f8b7d0fa4
|
|
@ -252,13 +252,7 @@ Want to learn more?
|
||||||
|
|
||||||
## 🌍 Multiple Languages
|
## 🌍 Multiple Languages
|
||||||
|
|
||||||
NoteDiscovery supports multiple languages! Currently available:
|
NoteDiscovery supports multiple interface languages via JSON locale files in `locales/`. Open **Settings** (gear icon) → **Language** to choose one; the list reflects whatever locales are installed (bundled files, mounts, or your own additions).
|
||||||
- 🇺🇸 English (en-US) - Default
|
|
||||||
- 🇪🇸 Español (es-ES)
|
|
||||||
- 🇩🇪 Deutsch (de-DE)
|
|
||||||
- 🇫🇷 Français (fr-FR)
|
|
||||||
|
|
||||||
**To change language:** Go to Settings (gear icon) → Language dropdown.
|
|
||||||
|
|
||||||
**To add your own language:** See the [Contributing Guidelines](CONTRIBUTING.md#-contributing-translations) for instructions on creating translation files.
|
**To add your own language:** See the [Contributing Guidelines](CONTRIBUTING.md#-contributing-translations) for instructions on creating translation files.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,9 @@ def get_available_themes(themes_dir: str) -> List[Dict[str, str]]:
|
||||||
"cobalt2": "🌊",
|
"cobalt2": "🌊",
|
||||||
"vs-blue": "🔷",
|
"vs-blue": "🔷",
|
||||||
"gruvbox-dark": "🟫",
|
"gruvbox-dark": "🟫",
|
||||||
"matcha-light": "🍵"
|
"matcha-light": "🍵",
|
||||||
|
"hacker": "🖥️",
|
||||||
|
"ubuntu": "🟠"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Load all themes from themes folder
|
# Load all themes from themes folder
|
||||||
|
|
|
||||||
|
|
@ -891,7 +891,7 @@
|
||||||
<div class="feature animate-on-scroll">
|
<div class="feature animate-on-scroll">
|
||||||
<div class="feature-icon">🎨</div>
|
<div class="feature-icon">🎨</div>
|
||||||
<h3>Beautiful Themes</h3>
|
<h3>Beautiful Themes</h3>
|
||||||
<p>8 built-in themes with dark/light modes and full customization.</p>
|
<p>Several built-in themes with dark/light modes and full customization.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="feature animate-on-scroll">
|
<div class="feature animate-on-scroll">
|
||||||
|
|
@ -1015,7 +1015,7 @@
|
||||||
<span class="emoji">🌍</span>
|
<span class="emoji">🌍</span>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<strong>Multi-Language</strong>
|
<strong>Multi-Language</strong>
|
||||||
English, Spanish, German, French
|
Multiple interface languages; add your own via locale files
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
- **Visual tree view** - Expandable/collapsible navigation
|
- **Visual tree view** - Expandable/collapsible navigation
|
||||||
- **Hide system folders** - Toggle to hide `_attachments`, `_templates` and other underscore-prefixed folders from sidebar
|
- **Hide system folders** - Toggle to hide `_attachments`, `_templates` and other underscore-prefixed folders from sidebar
|
||||||
- **Tab inserts tab** - Toggle to make Tab key insert a tab character in the editor instead of changing focus
|
- **Tab inserts tab** - Toggle to make Tab key insert a tab character in the editor instead of changing focus
|
||||||
- **List & quote continuation (Enter)** - At the end of a line, Enter continues blockquotes (`>`), bullets (`-` / `*` / `+`), and task lists (`- [ ]` / `- [x]`); pressing Enter again on an empty continued line exits the list or quote. Disabled inside fenced code blocks and when using Shift+Enter (plain newline)
|
- **List & quote continuation (Enter)** - At the end of a line, Enter continues blockquotes (`>`), bullets (`-` / `*` / `+`), ordered lists (`1.` / `1)`), and task lists (`- [ ]` / `- [x]`); pressing Enter again on an empty continued line exits the list or quote. Disabled inside fenced code blocks and when using Shift+Enter (plain newline)
|
||||||
|
|
||||||
### Export & Print
|
### Export & Print
|
||||||
- **HTML Export** - Download notes as standalone HTML files with all styling, images, diagrams, and math embedded
|
- **HTML Export** - Download notes as standalone HTML files with all styling, images, diagrams, and math embedded
|
||||||
|
|
@ -100,7 +100,7 @@ To link to a heading, convert the heading text to a slug: **lowercase, spaces
|
||||||
## 🎨 Customization
|
## 🎨 Customization
|
||||||
|
|
||||||
### Themes
|
### Themes
|
||||||
- **8 built-in themes** - Light, Dark, Dracula, Nord, Monokai, Vue High Contrast, Cobalt2, VS Blue
|
- **Several built-in themes** - Multiple light and dark options out of the box (see **Settings → Theme** or the `themes/` directory)
|
||||||
- **Theme persistence** - Remembers your choice
|
- **Theme persistence** - Remembers your choice
|
||||||
- **Custom themes** - Create your own CSS themes
|
- **Custom themes** - Create your own CSS themes
|
||||||
- **Instant switching** - No reload required
|
- **Instant switching** - No reload required
|
||||||
|
|
@ -360,7 +360,7 @@ NoteDiscovery can be installed as a standalone app on your device:
|
||||||
|
|
||||||
## 🌍 Internationalization
|
## 🌍 Internationalization
|
||||||
|
|
||||||
- **Multiple languages** - English, Spanish, German, French built-in
|
- **Multiple interface languages** - Bundled locale files under `locales/`; pick one in **Settings → Language**
|
||||||
- **Easy to add** - Drop JSON files in `locales/` folder
|
- **Easy to add** - Drop JSON files in `locales/` folder
|
||||||
- **Instant switch** - Change language in Settings without reload
|
- **Instant switch** - Change language in Settings without reload
|
||||||
- **Community translations** - Contributions welcome!
|
- **Community translations** - Contributions welcome!
|
||||||
|
|
|
||||||
|
|
@ -2,20 +2,9 @@
|
||||||
|
|
||||||
## Built-in Themes
|
## Built-in Themes
|
||||||
|
|
||||||
NoteDiscovery comes with **10 beautiful themes** out of the box:
|
NoteDiscovery ships with **several built-in themes** (light and dark styles). Open **Settings → Theme** to browse what is available; your choice is saved automatically.
|
||||||
|
|
||||||
- 🌞 **Light** - Clean, professional, easy on the eyes
|
The set can grow over time—see the `themes/` folder in the repository for the current files. You can also add your own (see below) or override themes when self-hosting.
|
||||||
- 🌙 **Dark** - Modern dark mode for night owls
|
|
||||||
- 🧛 **Dracula** - Popular purple-tinted dark theme
|
|
||||||
- ❄️ **Nord** - Cool, Arctic-inspired color palette
|
|
||||||
- 🎨 **Monokai** - Vibrant, high-contrast theme inspired by the classic code editor theme
|
|
||||||
- 💚 **Vue High Contrast** - Dark theme with distinctive greenish tint and Vue.js aesthetics
|
|
||||||
- 🌊 **Cobalt2** - Deep ocean blue with vibrant yellow highlights, inspired by Wes Bos
|
|
||||||
- 🔷 **VS Blue** - Classic Visual Studio 2015 light blue professional theme
|
|
||||||
- 🟫 **Gruvbox Dark** - A retro groove color scheme for Vim lovers
|
|
||||||
- 🍵 **Matcha Light** - A vibrant, green-tinted light theme inspired by Doki Theme
|
|
||||||
|
|
||||||
Switch themes anytime from the sidebar dropdown. Your preference is saved automatically!
|
|
||||||
|
|
||||||
## Create Custom Themes
|
## Create Custom Themes
|
||||||
|
|
||||||
|
|
@ -139,7 +128,7 @@ All these CSS variables **must** be defined for your theme to work properly:
|
||||||
- Shadows: `shadow-sm`, `shadow-md`, `shadow-lg`
|
- Shadows: `shadow-sm`, `shadow-md`, `shadow-lg`
|
||||||
|
|
||||||
### 📋 Quick Start
|
### 📋 Quick Start
|
||||||
1. Copy an existing theme file (e.g., `dracula.css`)
|
1. Copy an existing theme file from `themes/` (any `.css` file)
|
||||||
2. Rename it to your theme name
|
2. Rename it to your theme name
|
||||||
3. Update the `data-theme` attribute to match
|
3. Update the `data-theme` attribute to match
|
||||||
4. Modify the colors
|
4. Modify the colors
|
||||||
|
|
|
||||||
|
|
@ -859,7 +859,7 @@ function noteApp() {
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enter: continue blockquote / bullet / task list; second Enter on empty item exits (see editor-markdown-continue.js).
|
* Enter: continue blockquote / bullet / ordered list / task list; second Enter on empty item exits (see editor-markdown-continue.js).
|
||||||
*/
|
*/
|
||||||
handleEditorEnterKey(event) {
|
handleEditorEnterKey(event) {
|
||||||
if (typeof EditorMarkdownContinue === 'undefined') return;
|
if (typeof EditorMarkdownContinue === 'undefined') return;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/**
|
/**
|
||||||
* Markdown editor helpers: Enter continues blockquotes, bullets, and task lists.
|
* Markdown editor helpers: Enter continues blockquotes, bullets, ordered lists, and task lists.
|
||||||
* Plain functions only; no DOM. Used by app.js handleEditorEnterKey.
|
* Plain functions only; no DOM. Used by app.js handleEditorEnterKey.
|
||||||
*/
|
*/
|
||||||
(function (global) {
|
(function (global) {
|
||||||
|
|
@ -70,6 +70,17 @@
|
||||||
return { continuePrefix: quoteFull + inner + marker, isEmpty };
|
return { continuePrefix: quoteFull + inner + marker, isEmpty };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const orderedMatch = rest.match(/^(\s*)(\d+)([.)])\s+(.*)$/);
|
||||||
|
if (orderedMatch) {
|
||||||
|
const inner = orderedMatch[1];
|
||||||
|
const num = parseInt(orderedMatch[2], 10);
|
||||||
|
const sep = orderedMatch[3];
|
||||||
|
const cont = orderedMatch[4];
|
||||||
|
const marker = (num + 1) + sep + ' ';
|
||||||
|
const isEmpty = cont.trim() === '';
|
||||||
|
return { continuePrefix: quoteFull + inner + marker, isEmpty };
|
||||||
|
}
|
||||||
|
|
||||||
if (quoteFull) {
|
if (quoteFull) {
|
||||||
const isEmpty = rest.trim() === '';
|
const isEmpty = rest.trim() === '';
|
||||||
return { continuePrefix: quoteFull, isEmpty };
|
return { continuePrefix: quoteFull, isEmpty };
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
/* Hacker — phosphor terminal / CRT aesthetic */
|
||||||
|
/* @theme-type: dark */
|
||||||
|
|
||||||
|
:root[data-theme="hacker"] {
|
||||||
|
/* Background colors — near-black with a green wash */
|
||||||
|
--bg-primary: #0a0f0c;
|
||||||
|
--bg-secondary: #050806;
|
||||||
|
--bg-tertiary: #122018;
|
||||||
|
--bg-hover: #1a2e22;
|
||||||
|
--bg-active: #234030;
|
||||||
|
|
||||||
|
/* Text — soft phosphor on dark */
|
||||||
|
--text-primary: #c8f5c8;
|
||||||
|
--text-secondary: #8ecf8e;
|
||||||
|
--text-tertiary: #5a9c6a;
|
||||||
|
|
||||||
|
/* Borders — dim terminal green */
|
||||||
|
--border-primary: #1f4d33;
|
||||||
|
--border-secondary: #163828;
|
||||||
|
|
||||||
|
/* Accent — bright matrix green for controls & links */
|
||||||
|
--accent-primary: #39ff14;
|
||||||
|
--accent-hover: #5cff3d;
|
||||||
|
--accent-light: rgba(57, 255, 20, 0.18);
|
||||||
|
|
||||||
|
/* Status colors — tuned for green UI */
|
||||||
|
--success: #5ee984;
|
||||||
|
--error: #ff6b8a;
|
||||||
|
--warning: #ffd447;
|
||||||
|
|
||||||
|
/* Shadows — heavy, like a dim room */
|
||||||
|
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.55);
|
||||||
|
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.65);
|
||||||
|
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.75);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
/* Ubuntu Color Theme — matches radu-matei.vscode-ubuntu-color-theme (VS Code) */
|
||||||
|
/* @theme-type: dark */
|
||||||
|
|
||||||
|
:root[data-theme="ubuntu"] {
|
||||||
|
/* Backgrounds — editor #300a24, sidebar #2a091f, inputs #3d0d2d, activity #23071a */
|
||||||
|
--bg-primary: #300a24;
|
||||||
|
--bg-secondary: #2a091f;
|
||||||
|
--bg-tertiary: #3d0d2d;
|
||||||
|
--bg-hover: #450e33;
|
||||||
|
--bg-active: #4a0f37;
|
||||||
|
|
||||||
|
/* Text — editor.foreground & UI foreground */
|
||||||
|
--text-primary: #f1f1e7;
|
||||||
|
--text-secondary: #c6c6bd;
|
||||||
|
--text-tertiary: #a5a59e;
|
||||||
|
|
||||||
|
/* Borders — tab.border, dropdown.border */
|
||||||
|
--border-primary: #4a0f37;
|
||||||
|
--border-secondary: #470f34;
|
||||||
|
|
||||||
|
/* Accent — focusBorder / textLink / button (orange) */
|
||||||
|
--accent-primary: #fa8d3e;
|
||||||
|
--accent-hover: #ffce6b;
|
||||||
|
--accent-light: rgba(250, 141, 62, 0.22);
|
||||||
|
|
||||||
|
/* Status — errorForeground, list.warning, list.highlight (teal) */
|
||||||
|
--success: #4cbf99;
|
||||||
|
--error: #f07171;
|
||||||
|
--warning: #ef7c2a;
|
||||||
|
|
||||||
|
/* Shadows — widget.shadow */
|
||||||
|
--shadow-sm: 0 1px 2px 0 rgba(6, 1, 4, 0.55);
|
||||||
|
--shadow-md: 0 4px 6px -1px rgba(6, 1, 4, 0.6);
|
||||||
|
--shadow-lg: 0 10px 15px -3px rgba(6, 1, 4, 0.65);
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue