feat(release): v0.2.0

commit 78d6c27c8940da32a6de8e64327c86f74fdaa2eb
Author: adminoo <git@kadath.corp>
Date:   Wed Feb 4 12:59:22 2026 +0100

    feat: freebsd log rotation config thingie

commit 55af4e6c70122e679272ed247c26e04b1247f694
Author: adminoo <git@kadath.corp>
Date:   Wed Feb 4 12:58:43 2026 +0100

    feat: embed templates, static resolution

commit 29c917f929a7378ec29c54315ee2e9f420747787
Author: adminoo <git@kadath.corp>
Date:   Wed Feb 4 10:44:34 2026 +0100

    feat: set log file path

commit 294fd3d1549979eab63587ceec6ff5d0978e9afc
Author: adminoo <git@kadath.corp>
Date:   Wed Feb 4 10:23:53 2026 +0100

    feat: logging HTTP request

commit c9ae80b240d58e1abed7ae3b7b2c3b283a31f1a1
Author: adminoo <git@kadath.corp>
Date:   Wed Feb 4 09:54:05 2026 +0100

    feat: freebsd-specific compile target and scripts

commit 86ca154dedd19aa1fe5f571c445dcf17a8396bfa
Author: adminoo <git@kadath.corp>
Date:   Wed Feb 4 09:25:16 2026 +0100

    feat: mobile friendly CSS

commit 199f4319e0b08a4b6d595d7eb3effb6db6c7beec
Author: adminoo <git@kadath.corp>
Date:   Wed Feb 4 09:25:03 2026 +0100

    feat: persisting rendered note

commit 865e258237e45d7c542685a4653bcad3c5af259d
Author: adminoo <git@kadath.corp>
Date:   Wed Feb 4 08:06:38 2026 +0100

    fix: grouping notes by folder

commit 242d1d074c92461f38212b033c7a9e383f9dc550
Author: adminoo <git@kadath.corp>
Date:   Tue Feb 3 16:52:50 2026 +0100

    feat: storage layer logic

    - Prune notes from db not matching current folder structure at start
    - Detect file system deletion on start by comparing in-db notes
    - Prevent updating of in-db notes at start if modification time is not
      newer
    - Delete by path

commit d75d46bc1ab22bd990d0fdc307e571fe52f0dd99
Author: adminoo <git@kadath.corp>
Date:   Tue Feb 3 15:27:07 2026 +0100

    feat: group notes by root folders

commit e1e25a938e717599332f7b40a449d9bb854b673a
Author: adminoo <git@kadath.corp>
Date:   Tue Feb 3 14:24:37 2026 +0100

    feat: size in kilobytes

commit 61220272a2df2b66c2b8e356ba359ed01de3bd12
Author: adminoo <git@kadath.corp>
Date:   Tue Feb 3 14:19:40 2026 +0100

    feat: styling inputs
This commit is contained in:
2026-02-04 13:15:55 +01:00
parent 9d1254244f
commit b571588b15
23 changed files with 691 additions and 70 deletions

View File

@ -5,10 +5,10 @@
<meta charset="utf-8">
<title>Donnie Marko</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="/static/css/main.css" type="text/css">
<link rel="stylesheet" href="{{ .BasePath }}/static/css/main.css" type="text/css">
</head>
<body>
{{ template "content" . }}
</body>
</html>
{{ end }}
{{ end }}

View File

@ -5,15 +5,15 @@
<section class="meta-block">
<h3>Tags</h3>
<form method="POST" action="/notes/{{ .Note.ID }}/tags" class="tag-form">
<form method="POST" action="{{ .BasePath }}/notes/{{ .Note.ID }}/tags" class="tag-form">
<input type="text" name="tag" class="tag-input" placeholder="Add tag">
<input type="submit" value="add" class="tag-submit" />
</form>
<div class="meta-tags">
{{ range .Note.Tags }}
<span class="tag-chip">
<a class="tag-link" href="/?tag={{ . | urlquery }}">{{ . }}</a>
<form method="POST" action="/notes/{{ $.Note.ID }}/tags/{{ . | urlquery }}" class="tag-remove-form">
<a class="tag-link" href="{{ $.BasePath }}/?tag={{ . | urlquery }}&active={{ $.Note.ID }}">{{ . }}</a>
<form method="POST" action="{{ $.BasePath }}/notes/{{ $.Note.ID }}/tags/{{ . | urlquery }}" class="tag-remove-form">
<button type="submit" class="tag-remove" aria-label="Remove tag {{ . }}">×</button>
</form>
</span>
@ -24,29 +24,12 @@
<section class="meta-block">
<h3>File Info</h3>
<ul class="meta-list">
<li><strong>Last Modified:</strong>{{ .Note.GetUpdateDateRep }}</li>
<li><strong>Size:</strong> {{ .Note.Size }}</li>
<li><strong>Path:</strong> {{ .Note.Path }}</li>
<li><strong>Hash:</strong> {{ .Note.ID }}</li>
<li><strong>Size:</strong> {{ .Note.GetSizeKB }}</li>
<li><strong>Last Modified:</strong>{{ .Note.GetUpdateDateRep }}</li>
</ul>
</section>
<section class="meta-block">
<h3>Category</h3>
<div class="meta-category">Software Engineering</div>
</section>
<section class="meta-block">
<h3>Document Stats</h3>
<ul class="meta-list">
<li><strong>Word Count:</strong> 542</li>
<li><strong>Unique Words:</strong> 211</li>
</ul>
<!-- Placeholder for future stats such as word cloud -->
<div class="meta-stats-placeholder">
<p>Word cloud / stats visualization<br>(future)</p>
</div>
</section>
</aside>
{{ end }}
{{ end }}

View File

@ -1,39 +1,51 @@
{{ define "noteList" }}
<aside>
<header>
<h1 class="main-logo"><a href="/">Donnie Marko</a></h1>
<form method="GET" action="/" class="search-form">
<input type="text" name="search" class="search-bar" placeholder="Search notes or tags... (empty query to clear)">
<input type="submit" value="ok"/>
</form>
<form method="GET" action="/">
<select name="sort" value="sort" class="sort-dropdown">
<option value="" disabled {{ if eq "" .SortBy }}selected{{ end }}>Sort by</option>
<option value="recent" {{ if eq "recent" .SortBy }}selected{{ end }}>Recent</option>
<option value="oldest" {{ if eq "oldest" .SortBy }}selected{{ end }}>Oldest</option>
<option value="alpha" {{ if eq "alpha" .SortBy }}selected{{ end }}>Alphabetical</option>
<option value="ralpha" {{ if eq "ralpha" .SortBy }}selected{{ end }}>Reverse Alphabetical</option>
</select>
<input type="submit" value="sort" />
</form>
</header>
{{ template "renderSearch" . }}
<input type="checkbox" id="sidebar-toggle" class="sidebar-toggle">
<label for="sidebar-toggle" class="sidebar-toggle-label">Notes</label>
<div class="sidebar-content">
<header>
<h1 class="main-logo"><a href="{{ .BasePath }}/">Donnie Marko</a></h1>
<form method="GET" action="{{ .BasePath }}/" class="search-form">
<input type="text" name="search" class="search-bar" placeholder="Search notes or tags... (empty query to clear)">
{{ if ne .LastActive "" }}<input type="hidden" name="active" value="{{ .LastActive }}">{{ end }}
<input type="submit" value="ok" class="search-submit"/>
</form>
<form method="GET" action="{{ .BasePath }}/" class="sort-form">
<select name="sort" value="sort" class="sort-dropdown">
<option value="" disabled {{ if eq "" .SortBy }}selected{{ end }}>Sort by</option>
<option value="recent" {{ if eq "recent" .SortBy }}selected{{ end }}>Recent</option>
<option value="oldest" {{ if eq "oldest" .SortBy }}selected{{ end }}>Oldest</option>
<option value="alpha" {{ if eq "alpha" .SortBy }}selected{{ end }}>Alphabetical</option>
<option value="ralpha" {{ if eq "ralpha" .SortBy }}selected{{ end }}>Reverse Alphabetical</option>
</select>
{{ if ne .LastActive "" }}<input type="hidden" name="active" value="{{ .LastActive }}">{{ end }}
<input type="submit" value="sort" class="sort-submit"/>
</form>
</header>
{{ template "renderSearch" . }}
</div>
</aside>
{{ end }}
{{ define "renderSearch" }}
{{ if ne .SearchTerm "" }}<h2>Matching results for query '{{ .SearchTerm }}' (notes or tags)</h2>{{ end }}
{{ if ne .TagFilter "" }}<h2>Filtered by tag '{{ .TagFilter }}'</h2>{{ end }}
{{ if eq (len .Groups) 0 }}
<p class="meta-empty">No notes match your filters.</p>
{{ end }}
{{ range .Groups }}
<h3 class="note-group">{{ .Name }}</h3>
<ul class="search-results">
{{ range .Notes }}
<li {{ if eq .ID $.LastActive }}class="active-note"{{ end }}>
<div class="note-title">
<a href="/notes/{{ .ID }}" data-hash="{{ .ID }}">{{ if ge (len .Title) 30 }}{{printf "%.30s" .Title }}[...]{{ else }} {{ .Title }}{{ end }}</a>
<a href="{{ $.BasePath }}/notes/{{ .ID }}" data-hash="{{ .ID }}">{{ if ge (len .Title) 30 }}{{printf "%.30s" .Title }}[...]{{ else }} {{ .Title }}{{ end }}</a>
</div>
<span class="last-modified">{{ .GetUpdateDateRep }}</span>
</li>
{{ end }}
</ul>
{{ end }}
{{ end }}