joakim c5a963bfd9 fix: make LoadConfig read-only to prevent panic on read-only filesystems
LoadConfig() tried to create directories and write opal.yml as a side
effect of loading config. On the server (where /etc/opal is in systemd
ReadOnlyPaths), this failed, returning nil. All internal GetConfig()
callers discarded the error, passing nil to BuildUrgencyCoefficients()
which panicked on nil dereference.

Redesign the config system with layered, read-only loading:
- Defaults (always present) → YAML file (if exists) → OPAL_ env vars
- LoadConfig never writes to the filesystem or returns nil
- File creation moved to explicit InitConfig() for CLI first-run/setup
- SaveConfig uses yaml.Marshal instead of manual field-by-field Viper
  calls, eliminating the three-place maintenance burden

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 00:04:54 +01:00
2026-01-01 21:54:36 +01:00

Notr

Simple Go application for organizing and referencing notes. Loosely based on Obsidian.

Implementation: See jade-depo/ directory for the CLI tool.

Workflow

I take notes in two primary ways:

Phone

  • Quick notes, on the go.
  • View and search notes.

Workstation

  • Using NeoVim for notetaking

Other infrastructure

  • I host a VPS with a Nextcloud and Gitea instances.

What I want

  • A Obsidian Vault like structure. A folder where notes live.
  • A file is a note
  • Can also store attachments, such as images. These files can then be referenced in the relevant notes.
  • Directories is the main organization method, although tags and links can seam-lesly cross directories boundries.
  • Markdown syntax (this can be handled by NeoVim and a markdown editor on other devices.)
  • Tags: Syntax +tag
  • Note links for referencing other notes or any other vault files. Syntax uncertain. Obsidian uses ?
  • See reports about the vault. Tag report
  • At some point I would like to have a web-app and host it on my server. This would integrate with my authentik service for auth, and would be a live view of a users vault
  • OCR would be great.

Implementation

I have a tendency to scope creep and never actually getting a usable product, so an important goal here is practicing getting a usable app up and running. This should not have to be the biggest project, so I'll try to predict the process:

Version 0.1

Here I use other tools for the note-taking and accept that any searching is on a directory basis only.

  • I create a directory in Nextcloud. This I will start using immediately.
  • Find a good Markdown editor for android.
  • Adopt any crutial Obsidian notes

Version 1.0 ✓

This is where I can use Notr to find and search notes on my workstation. CLI implementation complete!

  • Process notes. Metadata and diffs
  • Search and Filter by tags
  • Search and Filter by content
  • Add, edit, delete notes
  • List all notes and tags

Version 2.0

Here I can do the same on my phone.

Also:

  • OCR

Metadata approach

Multiple approaches possible.

S
Description
Personal productivity tools
Readme 999 KiB
Languages
Go 75.3%
Svelte 17.5%
JavaScript 5.3%
CSS 1.2%
HTML 0.4%
Other 0.3%