Tags

Tags give the ability to mark specific points in history as being important
  • v1.27.0

    18f29f2a · Publish Tp-Note v1.27.0 ·
    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 · Publish Tp-Note v1.26.7 ·
    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 · Publish Tp-Note v1.26.6 ·
    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 · Publish Tp-Note v1.26.5 ·
    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 · Publish Tp-Note v1.26.4 ·
    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 · Publish Tp-Note v1.26.3 ·
    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 · Publish Tp-Note v1.26.2 ·
    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.1

    0e00184d · Publish `tpnote` v1.26.1 ·
    Bug fix for Wayland clipboard support
  • v1.26.0

    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.20

    34c1578a · Update version number ·
    Update dependencies
    
    This release ships Wayland support as a new feature of the `clipboard-rs` crate
    v0.3.4 which allows dropping our own Wayland code in `tpnote/src/clipboard.rs`.
  • v1.25.19

    90c03908 · Publish `tpnote` v1.25.19 ·
    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 · Publish `tpnote` v1.25.17 ·
    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.16

    537943c7 · Publish `tpnote` v1.25.16 ·
    Add `gnome-text-editor` to default search list
  • v1.25.15

    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.14

    Change browser search order: local Firefox ESR first
    
    Change in the default configuration (can be overwritten with a custom
    configuration file). This release changes the search order for installed
    browsers and privileges Firefox ESR.
  • v1.25.13

    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.12

    Maintenance release, no new features
    
    * Update documentation
    * Update dependencies
    * Minor refactoring of two templates
  • v1.25.11

    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

    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.
  • v1.25.9

    Maintenance release: migrate to Rust 2024 edition
    
    * Upgrade dependencies
    * `tpnote-lib` API: restrict the visibility of `context` and its state.
    * Upgrade the tool chain to `rustc` v1.86