Merge pull request #27 from gamosoft/features/various-fixes
- dependencies pinned to concrete version numbers to avoid issues - when dragging a note with a blank/space in the name, link is now created correctly escaping the text - deleting the only note in a folder will not attempt to delete the parent folder anymore
This commit is contained in:
commit
7253a1988f
|
|
@ -225,11 +225,7 @@ def delete_note(notes_dir: str, note_path: str) -> bool:
|
|||
|
||||
full_path.unlink()
|
||||
|
||||
# Remove empty parent directories
|
||||
try:
|
||||
full_path.parent.rmdir()
|
||||
except OSError:
|
||||
pass # Directory not empty, that's fine
|
||||
# Note: We don't automatically delete empty folders to preserve user's folder structure
|
||||
|
||||
return True
|
||||
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@
|
|||
<!-- Primary Meta Tags -->
|
||||
<title>NoteDiscovery - Your Self-Hosted Knowledge Base</title>
|
||||
<meta name="title" content="NoteDiscovery - Your Self-Hosted Knowledge Base">
|
||||
<meta name="description" content="A lightweight, privacy-focused note-taking application. Self-hosted, free, and open source. Write, organize, and discover your notes with markdown support.">
|
||||
<meta name="keywords" content="note taking, markdown editor, self-hosted, knowledge base, open source, privacy, notes app, docker, second brain, obsidian alternative">
|
||||
<meta name="description" content="A lightweight, privacy-focused Markdown note-taking application with LaTeX math, Mermaid diagrams, and code highlighting. Self-hosted, free, and open source.">
|
||||
<meta name="keywords" content="note taking, markdown editor, self-hosted, knowledge base, open source, privacy, notes app, docker, second brain, obsidian alternative, notion, evernote, onenote, latex, mermaid, diagrams, math equations">
|
||||
<meta name="author" content="Gamosoft">
|
||||
<meta name="robots" content="index, follow">
|
||||
<link rel="canonical" href="https://www.notediscovery.com">
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://www.notediscovery.com">
|
||||
<meta property="og:title" content="NoteDiscovery - Your Self-Hosted Knowledge Base">
|
||||
<meta property="og:description" content="A lightweight, privacy-focused note-taking application. Self-hosted, free, and open source.">
|
||||
<meta property="og:description" content="A lightweight, privacy-focused Markdown note-taking application with LaTeX math, Mermaid diagrams, and code highlighting. Self-hosted, free, and open source.">
|
||||
<meta property="og:image" content="https://www.notediscovery.com/og-image.png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
|
|
@ -28,7 +28,7 @@
|
|||
<meta name="twitter:site" content="@gamosoft">
|
||||
<meta name="twitter:creator" content="@gamosoft">
|
||||
<meta name="twitter:title" content="NoteDiscovery - Your Self-Hosted Knowledge Base">
|
||||
<meta name="twitter:description" content="A lightweight, privacy-focused note-taking application. Self-hosted, free, and open source.">
|
||||
<meta name="twitter:description" content="A lightweight, privacy-focused note-taking application with LaTeX math, Mermaid diagrams, and code highlighting. Self-hosted, free, and open source.">
|
||||
<meta name="twitter:image" content="https://www.notediscovery.com/og-image.png">
|
||||
<meta name="twitter:image:alt" content="NoteDiscovery - Self-hosted note-taking application interface">
|
||||
|
||||
|
|
@ -509,7 +509,7 @@
|
|||
<div class="hero">
|
||||
<div class="hero-content">
|
||||
<h2>Take Control of Your Notes</h2>
|
||||
<p>A lightweight, privacy-focused note-taking application that puts you in complete control of your knowledge base. Write, organize, and discover your notes with a beautiful, modern interface—all running on your own server.</p>
|
||||
<p>A lightweight, privacy-focused note-taking application with powerful features: LaTeX math equations, Mermaid diagrams, code highlighting, and more. Write, organize, and discover your notes with a beautiful, modern interface—all running on your own server.</p>
|
||||
<a href="https://github.com/gamosoft/NoteDiscovery" class="cta-button">Get Started on GitHub →</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -550,6 +550,24 @@
|
|||
<p>Instant search and navigation. Works offline, always responsive.</p>
|
||||
</div>
|
||||
|
||||
<div class="feature">
|
||||
<div class="feature-icon">🧮</div>
|
||||
<h3>LaTeX Math</h3>
|
||||
<p>Beautiful equation rendering with MathJax. Perfect for scientific notes.</p>
|
||||
</div>
|
||||
|
||||
<div class="feature">
|
||||
<div class="feature-icon">📊</div>
|
||||
<h3>Diagrams</h3>
|
||||
<p>Create flowcharts, mind maps, and diagrams with Mermaid syntax.</p>
|
||||
</div>
|
||||
|
||||
<div class="feature">
|
||||
<div class="feature-icon">💻</div>
|
||||
<h3>Code Highlighting</h3>
|
||||
<p>Syntax highlighting for popular coding languages. Developer-friendly notes.</p>
|
||||
</div>
|
||||
|
||||
<div class="feature">
|
||||
<div class="feature-icon">📂</div>
|
||||
<h3>Simple Storage</h3>
|
||||
|
|
@ -559,7 +577,7 @@
|
|||
<div class="feature">
|
||||
<div class="feature-icon">🎨</div>
|
||||
<h3>Beautiful Themes</h3>
|
||||
<p>Multiple built-in themes with full customization support.</p>
|
||||
<p>8 built-in themes with dark/light modes and full customization.</p>
|
||||
</div>
|
||||
|
||||
<div class="feature">
|
||||
|
|
@ -619,6 +637,38 @@
|
|||
You own your data
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="benefit-item">
|
||||
<span class="emoji">🔗</span>
|
||||
<div class="text">
|
||||
<strong>Wiki Links</strong>
|
||||
Connect notes with internal links
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="benefit-item">
|
||||
<span class="emoji">📄</span>
|
||||
<div class="text">
|
||||
<strong>HTML Export</strong>
|
||||
Share standalone HTML files
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="benefit-item">
|
||||
<span class="emoji">⌨️</span>
|
||||
<div class="text">
|
||||
<strong>Keyboard Shortcuts</strong>
|
||||
Navigate and create with speed
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="benefit-item">
|
||||
<span class="emoji">🔐</span>
|
||||
<div class="text">
|
||||
<strong>Optional Auth</strong>
|
||||
Password protection when needed
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -671,10 +721,11 @@
|
|||
"@context": "https://schema.org",
|
||||
"@type": "SoftwareApplication",
|
||||
"name": "NoteDiscovery",
|
||||
"description": "A lightweight, privacy-focused note-taking application. Self-hosted, free, and open source.",
|
||||
"description": "A lightweight, Obsidian and Evernote alternative, privacy-focused Markdown note-taking application with LaTeX math, Mermaid diagrams, and code highlighting. Self-hosted, free, and open source.",
|
||||
"url": "https://www.notediscovery.com",
|
||||
"applicationCategory": "ProductivityApplication",
|
||||
"operatingSystem": "Linux, Windows, macOS",
|
||||
"featureList": "Markdown editor, LaTeX math equations, Mermaid diagrams, Code syntax highlighting, Dark mode, Plugin system, Internal wiki links, HTML export, Full-text search, Self-hosted, Obsidian, Evernote, Notion, Onenote, Second brain",
|
||||
"offers": {
|
||||
"@type": "Offer",
|
||||
"price": "0",
|
||||
|
|
|
|||
|
|
@ -734,8 +734,9 @@ function noteApp() {
|
|||
const notePath = this.draggedNoteForLink;
|
||||
const noteName = notePath.split('/').pop().replace('.md', '');
|
||||
|
||||
// Create markdown link
|
||||
const link = `[${noteName}](${notePath})`;
|
||||
// Create markdown link (URL-encode the path to handle spaces and special characters)
|
||||
const encodedPath = notePath.split('/').map(segment => encodeURIComponent(segment)).join('/');
|
||||
const link = `[${noteName}](${encodedPath})`;
|
||||
|
||||
// Insert at cursor position
|
||||
const textarea = event.target;
|
||||
|
|
@ -775,7 +776,8 @@ function noteApp() {
|
|||
event.preventDefault();
|
||||
|
||||
// Remove any anchor from the href (e.g., "note.md#section" -> "note.md")
|
||||
const notePath = href.split('#')[0];
|
||||
// Also decode URL encoding (e.g., "note%203.md" -> "note 3.md")
|
||||
const notePath = decodeURIComponent(href.split('#')[0]);
|
||||
|
||||
// Skip if it's just an anchor link
|
||||
if (!notePath) return;
|
||||
|
|
@ -2424,11 +2426,11 @@ function noteApp() {
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>${noteName}</title>
|
||||
|
||||
<!-- Highlight.js for code syntax highlighting -->
|
||||
<!-- Highlight.js for code syntax highlighting (v11.9.0) -->
|
||||
${highlightTheme ? `<link rel="stylesheet" href="${highlightTheme}">` : '<!-- No highlight.js theme detected -->'}
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
|
||||
|
||||
<!-- MathJax for LaTeX math rendering (same config as preview) -->
|
||||
<!-- MathJax for LaTeX math rendering (v3.2.2) -->
|
||||
<script>
|
||||
MathJax = {
|
||||
tex: {
|
||||
|
|
@ -2452,11 +2454,11 @@ function noteApp() {
|
|||
}
|
||||
};
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-mml-chtml.js"></script>
|
||||
|
||||
<!-- Mermaid.js for diagrams (if used in note) -->
|
||||
<!-- Mermaid.js for diagrams (v10.9.0) -->
|
||||
<script type="module">
|
||||
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
|
||||
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10.9.0/dist/mermaid.esm.min.mjs';
|
||||
const isDark = ${this.getThemeType() === 'dark'};
|
||||
mermaid.initialize({
|
||||
startOnLoad: false,
|
||||
|
|
|
|||
|
|
@ -11,14 +11,14 @@
|
|||
<link rel="icon" type="image/png" sizes="16x16" href="/static/favicon.svg">
|
||||
<link rel="apple-touch-icon" href="/static/logo.svg">
|
||||
|
||||
<!-- Tailwind CSS from CDN -->
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<!-- Tailwind CSS from CDN (v3.4.17) -->
|
||||
<script src="https://cdn.tailwindcss.com/3.4.17"></script>
|
||||
|
||||
<!-- Alpine.js -->
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script>
|
||||
<!-- Alpine.js (v3.14.1) -->
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.14.1/dist/cdn.min.js"></script>
|
||||
|
||||
<!-- Marked.js for Markdown parsing -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
||||
<!-- Marked.js for Markdown parsing (v12.0.2) -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/marked@12.0.2/marked.min.js"></script>
|
||||
|
||||
<!-- MathJax for LaTeX math rendering -->
|
||||
<script>
|
||||
|
|
@ -39,9 +39,9 @@
|
|||
}
|
||||
};
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-mml-chtml.js"></script>
|
||||
|
||||
<!-- Highlight.js for code syntax highlighting -->
|
||||
<!-- Highlight.js for code syntax highlighting (v11.9.0) -->
|
||||
<link rel="stylesheet" id="highlight-theme" href="">
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/csharp.min.js"></script>
|
||||
|
|
@ -57,9 +57,9 @@
|
|||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/css.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/http.min.js"></script>
|
||||
|
||||
<!-- Mermaid.js for diagram rendering -->
|
||||
<!-- Mermaid.js for diagram rendering (v10.9.0) -->
|
||||
<script type="module">
|
||||
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
|
||||
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10.9.0/dist/mermaid.esm.min.mjs';
|
||||
// Note: Mermaid is initialized dynamically by app.js renderMermaid() based on current theme
|
||||
window.mermaid = mermaid;
|
||||
</script>
|
||||
|
|
|
|||
Loading…
Reference in New Issue