Skip to content

TrailMark v0.5.2

Choose a tag to compare

@github-actions github-actions released this 16 Oct 08:52

TrailMark is a free, open-source Markdown app: read what your AI writes, write what it reads. It opens any .md
file as a clean page, keeps notes that save themselves, and turns a project folder into an IDE for following your
agents. It works with any AI tool, or none: it only relies on your files and git.

Pictures, audio and video open in the pane, code blocks are highlighted for about 190 languages, and Notes is simpler to start with.

Added

  • Code blocks in every mode, for about 190 languages. A fenced block (```python) is now highlighted for every language highlight.js
    ships, loaded one language at a time, so reading does not carry them all. Usual short names work (js, ts, tsx, py, sh, zsh, ps1,
    pwsh, yml, c#, c++, kt, rb, rs, golang, make, jsonc, json5, svelte, vue...), in any case, and so do the forms docs tools
    write after the backticks: rust title="main.rs", rust,ignore, {python}, {.python .numberLines}, js:app.js.
    • Reading: each block has its language in the corner, next to the copy button ("Python", "C++", "TOML"). A block that names no language, or one
      that highlight.js does not have, is colored only when the code gives its language away (a #! line, JSON that parses, an XML or HTML prolog,
      a diff, a clearly Python script) or when highlight.js's guess is strong and clearly ahead of the runner-up; it is then labelled "auto: Python",
      with a tooltip that says it is a guess. Anything less certain stays plain (directory trees, terminal output, ASCII drawings, prose). text and
      txt blocks are never colored or guessed at. A name highlight.js lacks (terraform) is shown as written, uncolored.
    • Visual: code blocks are colored while you edit, with the same colors as in Reading, and carry the language in their corner. The language
      button of the toolbar opens a picker that searches every language by name or alias; text that no language is named by is offered as it is, and
      what you type goes into the fence exactly as typed. Changing the language rewrites only that block's opening fence line (a ~~~ fence or a
      four-backtick fence stays as it was written).
    • Source: the code inside a fence is highlighted with CodeMirror's own language support, loaded when a fence asks for it.
  • Pictures open in the pane instead of "looks like a binary file". PNG, JPEG, GIF (animated), WebP, AVIF, BMP, ICO and SVG, from the Explorer,
    Quick open, search, a link or the feed. A picture is fitted to the window; a click or the button shows it at 100%, Ctrl+=, Ctrl+- and
    Ctrl+0 zoom it (and the status bar says how far), a checkerboard sits behind transparency in light and dark, and the header gives the size in
    pixels and on disk. A picture that changes on disk reloads by itself. An SVG is drawn as an <img>, never inline, so nothing in it runs.
  • Audio and video play in the pane. MP3, WAV, OGG, Opus, FLAC, M4A, AAC and WebM audio, and MP4, M4V, WebM, OGV and MOV video, in the native
    player, with the length (and the pixels of a video) in the header. Files are served in parts to the player's Range requests, at most 4 MiB
    at a time, so a long file starts at once, seeks, and is never read whole. A format or codec the window cannot play says so, with Open with
    default app
    .
  • <video> and <audio> in documents, and links to media. Players in a document play in place, with their files resolved next to the
    document (also in the Visual editor's read-only blocks and in a loose file's folder). A link to an .mp4, .wav and so on opens in the pane.
    autoplay, event handlers and inline data are dropped, a player always has controls and reads only the length of its file until you play it,
    and poster files follow a move like any other link.
  • Open with default app. Any file of the project can go to the program the system has for it: a button on the pane of a file TrailMark cannot
    show, an item in the Explorer's context menu (for every file but a Markdown document), an item in the header's menu, and a command. It is separate
    from Open in external editor, which uses your editor command. Programs and scripts (.exe, .msi, .bat, .cmd, .ps1, .vbs, .js,
    .lnk, .url, .sh, .app, .pkg, .deb, .rpm, .appimage, .website, .rdp, Access databases, macro documents and the older Office
    formats that can hold macros (.doc, .xls, .ppt), every type of %PATHEXT% on Windows, anything with an execute permission on macOS and Linux
    and the like) are refused with a message that names the kind of file; the check is on the real file, after links are followed, and a name that
    ends in a dot or a space is no document on macOS and Linux.
  • An Audio and video category in the Explorer filter. Docs and assets includes it under the rules images have (next to a document, in a
    folder such as assets, images, media, audio, video, sounds, movies or clips, or linked from a document), and the hint says so. The tree
    has an icon each for images, sound and video.
  • Quick open and Search everywhere list pictures and media by name, even when the filter hides them (a hidden folder still hides its files),
    and folders: the folders whose path has the words come after the files, with Reveal in Explorer. Picking one opens the folders above
    it, scrolls to it, opens it and puts the keyboard focus in the Explorer.
  • "Open with TrailMark" on folders in the Microsoft Store version. Right-click a folder, or the background of a folder, and choose
    Open with TrailMark; on Windows 11 it is in the main menu, not under Show more options. The Store package now carries a small
    Explorer component for it (the one thing a package cannot do with the registry), worded in your Windows display language
    (English, Português, Español or Deutsch). Select several folders and each opens in its own window. Settings → File manager says
    that the entry comes from the Store package.

Changed

  • Code block labels are easier to read. The language label of a code block is muted instead of faint (it was below the contrast the design
    asks for), and the light theme's comment color is a little darker, for AA contrast on the code block's background. The reading view's code
    language also keeps the punctuation authors write after it (rust,ignore, {python}, js:app.js), which was dropped together with the language.
  • Ctrl+=, Ctrl+- and Ctrl+0 zoom the picture while a picture is on screen (and the zoom in the status bar is the picture's); for anything
    else they still zoom the text.
  • Open in external editor on a sound or a video hands it to the system's application, as it already did for pictures and PDF files.
  • A new note is a note at once. +, Ctrl+Shift+N and New note now always make a new note, even when the one on screen is still empty,
    like the + of any editor. The note is a real (empty) file as soon as it exists, so it is in the list as "Untitled note", is still there after
    a restart, and nothing removes it for you: you delete empty notes yourself, with Delete and Undo like any other note. Several empty notes can
    exist at the same time. Pin, Rename, Share, Move to project and Delete work on a note with no text.
  • Notes folder wording. The message about a missing notes folder now says the folder you chose is not there, and why TrailMark does not
    make an empty one in its place.
  • Bring the right panel back from the corner it left. While the right panel is collapsed, a Show right panel button («) sits in the
    top-right corner of the document header, where the collapse button (») was, so the pointer that just collapsed the panel is already over
    the button that brings it back, at the width it had. It carries the same dot as the activity bar's panel toggle when something new
    arrived while the panel was collapsed. Ctrl+Alt+B works as before; Simple mode has no panel and shows nothing.

Fixed

  • Live changes: an edited block is no longer also shown as removed. When a save changed a table (an edited cell and a new row) and the
    paragraph after it (a reworded sentence), both blocks glowed, but a "2 blocks removed" marker also appeared below them for their old
    versions, although nothing had been removed. An edited block is now matched with its old version and only glows. A block that moved glows
    where it landed, with no marker. The marker stays for blocks that were really deleted, so a deletion next to a change shows exactly one.
    A block rewritten beyond recognition is still shown as removed and added.
  • No question about the default notes folder. TrailMark makes Documents/TrailMark Notes (and the folders above it) by itself the first
    time notes are needed, instead of asking whether to create it. A notes folder you chose in Settings → Notes that has gone missing (an
    unplugged drive, a renamed folder) is still reported, with Locate... and Create it, and is never created quietly.
  • One window, not two. New note or Notes on the welcome screen, Ctrl+Shift+N, Ctrl+Shift+D, and a file opened from the welcome
    screen used to leave the welcome window behind and open the Notes window on top of it. The welcome window now turns into the Notes window, in
    the same place and size; when a Notes window is already open, it comes forward and the welcome window closes. A window with a project open
    does not change.
  • Visual mode: a block that refers to a footnote no longer carries the footnote. A paragraph, list or table with a footnote reference was
    drawn with the footnote's text and a rule under it inside the same block, with a large empty gap. The reference is now a small marker
    (with the footnote's label), the footnote stays a block of its own where the file has it, and nothing is repeated. Saving is unchanged:
    these blocks keep their exact text, and so do the footnote definitions.

Install

Platform Download
Windows the -setup.exe installer (or the .msi)
macOS the universal .dmg (Apple silicon and Intel)
Linux the .AppImage, .deb or .rpm

TrailMark updates itself: when a new version is out, it offers a one-click "Restart to update".

The app is not code-signed yet

The installers are unsigned, so your system warns you the first time. They are built by GitHub Actions
from the tagged commit, and the in-app updates are verified with a signature.

Windows (SmartScreen). If you see "Windows protected your PC", click More info, then Run anyway.

macOS (Gatekeeper). If macOS says it can't verify TrailMark, open System Settings, Privacy & Security,
scroll to the Security section and click Open Anyway. On older macOS versions you can right-click the
app and choose Open instead. From a terminal: xattr -dr com.apple.quarantine /Applications/TrailMark.app.

Linux. Make the AppImage executable (chmod +x TrailMark_*.AppImage) and run it, or install the .deb / .rpm.