Repository navigation
TrailMark v0.5.2
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).textand
txtblocks 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.
- 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
- 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+0zoom 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'sRangerequests, 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,.wavand 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,
andposterfiles 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 asassets,images,media,audio,video,sounds,moviesorclips, 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+-andCtrl+0zoom 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+Nand 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+Bworks 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.