Tags give the ability to mark specific points in history as being important
-
v1.27.0
18f29f2a · ·Tp-Note's built-in viewer serves your note over a `localhost` HTTP server so your browser can live-preview it. On a shared machine that port is reachable by every logged-in user. This release adds two **on-by-default** protections, applied in the order a connection meets them — first *who* is connecting, then binding the session to *your* browser — plus routine dependency and toolchain updates. **New — OS-user isolation (`viewer.same_user_policy`, default `"Reject"`).** When a connection arrives while the viewer is establishing the session, it checks the OS user owning the connecting process and refuses one it cannot prove belongs to you — keeping other logged-in users out from the start. Trade-off: a client the viewer cannot attribute — some sandboxed Flatpak/Snap browsers — is also refused by default and shown a page telling it to set `same_user_policy = "Off"`. **New — session-cookie binding + `Host` check (`viewer.session_binding_cookie`, default `true`).** Once your browser is the first to load the note, the viewer binds the session to it with a random `HttpOnly; SameSite=Lax` cookie; from then on every request must present that cookie, and requests carrying a foreign `Host` header are refused (DNS-rebinding defense). This blocks a hostile web page open in your own browser from reading the note. A browser configured to refuse `localhost` cookies is refused and shown a page explaining the fix — or set `session_binding_cookie = false`. **New Cargo feature `same-user-policy`** (in the default set). Build `--no-default-features` without it to drop the peer-UID check and its `netstat2` / `sysinfo` dependencies. **On upgrade:** both options ship enabled. The config-file version is tied to the release version, so your existing config is backed up and regenerated with the new defaults on first run — the protections take effect automatically. If a sandboxed or cookie-averse browser is refused, the page it is shown names the option to relax. **Build requirement:** the minimum supported Rust version is now **1.95** (raised from 1.91.1), pulled in by updated dependencies (`sysinfo` 0.39, `netstat2` 0.11.2, `tera` 2.1, `clap` 4.6.4, …). Building from source or `cargo install` now needs rustc ≥ 1.95. Both controls concern only *local* users; Tp-Note never exposes anything to the network or the Internet. **Flatpak / Snap browser users — please note.** If your browser runs in a Flatpak or Snap sandbox and the viewer shows a "403 — access refused" page instead of your note, that is the OS-user check: the sandbox hides the browser's process from the viewer, so it cannot confirm the connection belongs to you and refuses it by default. Allow it by adding this to your configuration file and restarting Tp-Note: ```toml [viewer] same_user_policy = "Off" ``` Trade-off: with `"Off"` the viewer no longer verifies the connecting OS user. Session-cookie binding stays on, though, so another local user could read your note only by winning the race to claim the session **before your browser does**, in the brief start-up window — and even then you would notice, because your own browser would be locked out and shown an error page instead of the note. Once your browser has bound the session and the note is displayed, the cookie keeps other users out. This trade-off is a concern only if you set `same_user_policy = "Off"`; with the default (`"Reject"`) you are protected anyway.
-
v1.26.7
c3a23561 · ·Tp-Note v1.26.7 A feature release adding inline Mermaid diagrams and LaTeX math to the HTML rendition, governed by a new embedded-content error policy, plus routine dependency upgrades. - Mermaid code blocks are now rendered to inline SVG in both the viewer and the exporter (new `mermaid` build feature, listed in `tpnote --version`). - LaTeX math formulas are rendered to MathML behind a new `latex` build feature. - New embedded-content error policy (`Inline` / `HardError`) controls how a failed Mermaid diagram or LaTeX formula is handled: rendered inline as an error box (viewer default), or aborting the export in batch mode (`tpnote -x . -b`, which always uses `HardError`), so a broken embed can never slip silently into an exported HTML or PDF. - Worked around a label auto-wrapping defect in the Mermaid renderer so multi-line node labels are sized and their edges routed correctly. - Added vertical spacing to rendered content tables for readability. - Upgraded compatible dependencies. - Published crates: tpnote-lib 0.46.6, tpnote 1.26.7 (tpnote-html2md unchanged at 0.3.9). Installers and standalone binaries for Windows, macOS, Linux and Debian/Ubuntu are attached below.
-
v1.26.6
ff3de1ea · ·Tp-Note v1.26.6 A bugfix release centred on the file-annotation templates, plus routine dependency upgrades. - Piped front matter now passes through when annotating a file: a YAML header supplied on stdin or the clipboard can override title, subtitle/keywords, author, date and sort_tag, and any extra fields are preserved in the new note's header (default and zettel schemes). - Fixed a crash ("value must be a string") when annotating files whose stem contains no '--' subtitle separator: out-of-bounds nth() returns None, which default() now substitutes (boolean=true). - Removed fragile trunc calls from pipelines whose values are not guaranteed to be strings. - Fixed a whitespace-trim bug in the zettel scheme that glued the closing '---' header marker to the last field when no front matter was piped, leaving the YAML header unterminated. - Upgraded compatible dependencies. - Published crates: tpnote-html2md 0.3.9, tpnote-lib 0.46.5, tpnote 1.26.6. Installers and standalone binaries for Windows, macOS, Linux and Debian/Ubuntu are attached below. -
v1.26.5
ed3008e7 · ·Tp-Note v1.26.5 This is a maintenance and infrastructure release focused on improving the build system and distribution process. - Added unified complete-build CI pipeline with flat, standard-named release assets - Hardened build scripts with robust artifact copy and documentation cleanup - Updated MSI download URL in winget package script to point to GitHub releases - Refactored distribution section and consolidated documentation - Moved winget distribution guide into script preamble for better maintainability Available as installers and standalone binaries for Windows, macOS, Linux, and Debian/Ubuntu at https://github.com/getreu/tp-note/releases/tag/v1.26.5
-
v1.26.4
2c7ef3bc · ·Clipboard front matter carries over when annotating files - New: input YAML header overrides the note header in file-annotation mode — when annotating a non-Tp-Note file (e.g. `tpnote report.pdf`), a YAML header supplied through the clipboard or stdin now populates the new note's `title:`, `author:` and `date:` fields (and `keywords:` under the `zettel` scheme) instead of always deriving them from the filename, the username and the current date. Missing fields fall back to those previous defaults, so behaviour is unchanged when no header is supplied. Because the title is taken from the header, the new note's filename follows it as well. - Maintenance: upgraded compatible dependencies (clipboard-rs 0.3.5, time 0.3.53, html-escape 0.2.14); bumped tpnote-lib to v0.46.3.
-
v1.26.3
1b5c14e5 · ·Graceful clipboard handling and timezone-correct dates - Fix: invalid YAML header in clipboard/stdin treated as body — when the clipboard or stdin stream contains syntactically invalid YAML between --- delimiters, Tp-Note no longer aborts with an error. Instead a warning is logged and the entire input is treated as plain body text, so note creation continues normally. - Fix: note filenames use local date instead of UTC — the date filter previously computed dates from the Unix epoch in UTC, causing wrong dates in filenames for users in timezones east of UTC (e.g. a note created at 02:00 EEST was dated the previous day). Dates now reflect the local timezone. This regression was introduced with v1.26.2.
-
v1.26.2
821b5646 · ·New feature: Plain Markdown Viewer and Editor Tp-Note is now a versatile viewer and editor for **any Markdown file**, not just Tp-Note-formatted files with YAML headers. This makes Tp-Note a practical tool for working with standard Markdown documents across your file system. **Key capability:** By default, when you open a plain Markdown file without a YAML front matter header, Tp-Note opens it directly for viewing and editing **without modifying the file**. No automatic header injection, no filename changes—just clean viewing and editing. **Usage:** - **View only:** `tpnote --view myfile.md` - **Edit and view:** `tpnote myfile.md` - **Convert to Tp-Note file:** `tpnote --add-header myfile.md` (prepends YAML header, enables filename synchronization) The `--add-header` flag now defaults to **disabled** (`arg_default.add_header = false`). This means: - Plain Markdown files are opened as-is without automatic header prepending - To convert a plain Markdown file into a full Tp-Note note with YAML metadata, explicitly pass `--add-header` - Existing Tp-Note files (with YAML headers) continue to work unchanged—header synchronization and filename updates happen automatically
-
v1.26.0
d33c5c01 · ·This release ships a fix for a "too many headers" regression The regression appeared when notes were viewed with some recent versions of Firefox/LibreWolf. The SSE view updating code failed because the browser sent too many HTTP headers for Tp-Note's internal buffer. This buffer has been increased in this release. The HTML to Markdown filter now parses language tags for programming languages in code listings in some circumstances.
-
v1.25.19
90c03908 · ·Enable more languages for language detection The `lingua` crate v1.8.0 detects language much faster than before, but requires 3 times as much disk space in the Tp-Note binary. Therefor, this release: * Ships approximately the language detection data for only half of the 77 available languages (see `features` for the `lingua` crate in `Cargo.toml`). * Enables by default all available languages as search candidates. (Can be configured with `filter.get_lang.language_candidates`, e.g. `filter.get_lang.language_candidates = [ "en", "fr", "de" ]`).
-
v1.25.17
ebc1818f · ·Reduce false positives in natural language detection. This release filters URLs in texts with markup before passing it to the Lingua crate. Before, URLs were often recognized as one of the configure natural languages. There are no changes in the configuration or the templates. Just the `get_lang()` filter got a little smarter. Now, it can even launch multiple threads from a thread pool with the help of the Rayon crate. This reduces Tp-Note's startup time when creating new, very large notes.
-
v1.25.15
8ccd5bbd · ·Publish a Tp-Note installer package for Windows 11 This release upgrades the Windows installer tool chain. The published Windows installer package (`tpnote-1.25.15-x86_64.msi`) is tested with Windows 11 and is probably the first working Tp-Note installer package for this Windows version. The new installer also sets sub-entries to the context menu that appears when you right-click on a file, a directory, the desktop or on the file explorer's background. First, click on "Show more options" and then on one of the following: "New Tp-Note", "Open", "View Tp-Note" or "Export Tp-Note".
-
v1.25.13
88839719 · ·Improve interchangeability between operating systems This release filters the Windows `\r` (carriage return) of all input streams for internal processing. Under Windows, new notes are still written with `\r\n` as newline characters. The Git configuration of Tp-Note's repository is adjusted to use exclusively `\n` for all platforms. This fixes a minor bug introduced with v1.25.12 (commit 3b5564e, upgrade of the `toml` crate). This bug only concerned Windows builds.
-
v1.25.11
22faf3ae · ·Weasyprint: render checkboxes with `tpnote -x . <FILE.md>` Newer versions of `weasyprint` require some additional CSS to render checkboxes correctly. This release adds CSS to the default configuration variable `exporter_doc_css`. Render `*.pdf` with: tpnote --export=- mydoc.md | weasyprint - mydoc.md.pdf -
v1.25.10
f9f884c9 · ·Command line API: minor change of some sentinal values This release comes with some minor command line option changes: | before | now | |--------------------|-----------------| | --export '' | --export . | | -x '' | -x . | | --force-lang '' | --force-lang - | | -l '' | -l - | * The new template variable `force_lang` reflects the command line option `--force-lang` and shows its influence in templates explicitly. * The template filter `replace empty` now recognizes empty arrays and the `Null` type as empty. Its option `with` accepts now any type.