feat(release): v0.1.0

commit 06ed2c3cbe
Author: adminoo <git@kadath.corp>
Date:   Tue Feb 3 11:34:24 2026 +0100

    fix: changed detected by scanner but no updated by render layer

commit 01dcaf882a
Author: adminoo <git@kadath.corp>
Date:   Tue Feb 3 10:19:05 2026 +0100

    feat: VERSION bumb

commit 229223f77a
Author: adminoo <git@kadath.corp>
Date:   Tue Feb 3 09:53:08 2026 +0100

    feat: filter and search by tag

commit cb11e34798
Author: adminoo <git@kadath.corp>
Date:   Tue Feb 3 09:41:03 2026 +0100

    feat: tag system

commit 3f5cf0d673
Author: adminoo <git@kadath.corp>
Date:   Tue Feb 3 09:15:29 2026 +0100

    feat: sqlite storage draft

commit d6617cec02
Author: adminoo <git@kadath.corp>
Date:   Tue Feb 3 09:04:11 2026 +0100

    feat: metadata draft

commit 7238d02a13
Author: adminoo <git@kadath.corp>
Date:   Mon Feb 2 10:18:42 2026 +0100

    fix: body overflowing

commit 16ff836274
Author: adminoo <git@kadath.corp>
Date:   Mon Feb 2 10:09:01 2026 +0100

    feat: tests for http handlers and render package

commit 36ac3f03aa
Author: adminoo <git@kadath.corp>
Date:   Mon Feb 2 09:45:29 2026 +0100

    feat: Dark theme, placeholder metadata panel

commit e6923fa4f5
Author: adminoo <git@kadath.corp>
Date:   Sun Feb 1 18:26:59 2026 +0100

    fix: uneeded func + uneeded bogus note creation logic

commit 4458ba2d15
Author: adminoo <git@kadath.corp>
Date:   Sun Feb 1 18:26:21 2026 +0100

    feat: log when changing note states

commit 92a6f84540
Author: adminoo <git@kadath.corp>
Date:   Sun Feb 1 16:55:40 2026 +0100

    possibly first working draft

commit e27aadc603
Author: adminoo <git@kadath.corp>
Date:   Sun Feb 1 11:55:16 2026 +0100

    draft shits
This commit is contained in:
2026-02-03 12:01:17 +01:00
parent d17ed8c650
commit 9d1254244f
27 changed files with 2940 additions and 0 deletions

View File

@ -0,0 +1,14 @@
{{ define "base" }}
<!doctype html>
<html class="no-js" lang="en">
<head>
<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">
</head>
<body>
{{ template "content" . }}
</body>
</html>
{{ end }}

View File

@ -0,0 +1,9 @@
{{ define "content" }}
{{/* List of notes and searching utilities */}}
{{ template "noteList" . }}
{{/* Markdown notes rendering area */}}
<main>
{{ .RenderedNote }}
</main>
{{ template "metadata" . }}
{{ end }}

View File

@ -0,0 +1,52 @@
{{ define "metadata" }}
{{ if .RenderedNote }}
<aside class="metadata-panel">
<section class="meta-block">
<h3>Tags</h3>
<form method="POST" action="/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">
<button type="submit" class="tag-remove" aria-label="Remove tag {{ . }}">×</button>
</form>
</span>
{{ end }}
</div>
</section>
<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>Hash:</strong> {{ .Note.ID }}</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

@ -0,0 +1,55 @@
{{ 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" . }}
</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 }}
<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>
</div>
<span class="last-modified">{{ .GetUpdateDateRep }}</span>
</li>
{{ end }}
</ul>
{{ end }}
{{/* not used for now, the opposition between flat list from hashmap and tree structure is confusing */}}
{{ define "renderTree" }}
<ul>
{{ range . }}
{{ if .IsEnd }}
<li><input type="checkbox"/><a href="/notes/{{ .Hash }}" data-hash="{{ .Hash }}">{{ .Title }}</a><span class="last-modified">{{ .LastModified }}</span></li>
{{ else }}
{{ if .Children }}
<li><div class="folder"><input type="checkbox"/><span class="folder">{{ .Path }}</span></folder>
{{ template "renderTree" .Children }}
</li>
{{ end }}
{{ end }}
{{ end }}
</ul>
{{ end }}