Repository navigation
Releases: DailenG/tachyon
Release list
Nightly
Rolling nightly build, MSIX version 1.5.0.48.
Commit: bce5d1f
Build: 48
Commit history: https://github.com/DailenG/tachyon/commits/main
Install: download and open Tachyon.appinstaller.
An already-installed nightly (or a stable 0.1.0.0 install) updates in place on next launch.
Tachyon v1.5.0
Changed
- The What's new window shows every release since the version you updated from, newest first, with
a line saying where the range starts. Updating from 1.3.0 to 1.5.0 used to show only the 1.5.0
notes; it now shows 1.4.0, 1.4.1, 1.4.2 and 1.5.0. A fresh install, an unreadable record, or
opening it from the command palette still shows the current release only.
Added
.json,.jsoncand.json5files now have syntax colour (strings, numbers,true/false/
null, and//and/* */comments), in the same theme colours as fenced code in Markdown (#113).
The file still opens as plain text and edits as before: colour is computed for the part on screen
as it is drawn, never for the whole file. Files over 5 MB stay uncoloured, so the large-file path
is unchanged. Other plain-text files (logs, TOML, YAML and so on) are not coloured.
Tachyon v1.4.2
Changed
- A sticky note shows each line as you typed it. A single Enter used to join the lines into one
paragraph (ABC BCC EAI), as CommonMark says; in a note, where every line is deliberate, each
line now stays on its own line. Documents are unchanged, so hard-wrapped Markdown files still
reflow to the window. Copy as HTML still follows CommonMark.
Added
Shift+Enterinserts a hard line break (a backslash then a newline) inside a paragraph, in
documents and notes, the way Typora and Obsidian do. In a list item the new line stays inside
the item; in plain-text mode, a code block, or on an empty line it is an ordinary newline. In the
find bar it still steps to the previous match.
Tachyon v1.4.1
Added
- View mode, for reading and copying rather than editing (#129).
Ctrl+E, the "Toggle view mode"
row in the command palette, and anEDIT/VIEWbutton in a sticky note's header (next to
MD/TXT) lock the text: no block turns into raw Markdown, no caret is drawn, and typing,
pasting, cutting, undo and find-and-replace change nothing (a one-line notice says "View mode- Ctrl+E to edit"). Dragging or double-clicking still selects rendered text and
Ctrl+Ccopies
it, a click on a link opens it, and task boxes still toggle. A sticky note remembers the
setting across restarts, so a checklist note can reopen locked.
- Ctrl+E to edit"). Dragging or double-clicking still selects rendered text and
- Windows: "Open Default apps settings" in the command palette opens the page where Tachyon can
be chosen as the default app for a file type (#123).
Tachyon v1.4.0
Added
- A
sticky_foldersetting chooses where sticky notes are saved (a plain path; empty, the
default, keeps<Documents>/tachyon/notes). It applies to notes saved from then on: nothing is
moved, an existing note keeps its file, and "Reopen sticky note" lists the folder that is set.
A folder that cannot be written keeps the text in the note and says so. The new command
palette row "Open sticky notes folder" opens the folder in use, so a changed path never hides
your notes. A#inside a quoted setting value (a folder namedC#) is no longer taken for a
comment (#109). - Sticky notes can be plain text: a
MD/TXTbutton in the note header (next to the pin) switches
the note between Markdown and plain text, the same switch asCtrl+Shift+M. Each note
remembers its mode across restarts; its file stays.md(#115). - A
sticky_default_modesetting ("markdown"or"plain", default"markdown") chooses the
mode a new sticky note starts in. It is in Preferences too (#116). - Save As follows the new extension: an untitled Markdown document saved as
server.logor
data.jsonbecomes plain text (no Markdown parsing,#stays literal), and a plain-text
document saved asnotes.mdbecomes Markdown (up to 128 KiB, and never for binary or
garbled text, so it cannot stall a frame;Ctrl+Shift+Mstill switches larger ones). The text,
caret and undo history are kept. Save As suggestsuntitled.txtfor a plain-text document. A
plain Save keeps a mode you chose withCtrl+Shift+M(#123). - "Open with Tachyon" is offered for more text files:
.json,.jsonc,.toml,.yaml,
.yml,.ini,.cfg,.conf,.csv,.tsv,.xml,.env,.gitignoreand
.editorconfigon Windows (next to.txt,.text,.log), and the matching MIME types in
the Linux desktop entry. They open in plain-text mode (#123). - Clicking a task-list checkbox toggles it (
[ ]/[x]) in the source, as its own undo step,
without moving the caret, starting a selection, or turning the block into raw Markdown. Works
in every window, in nested lists, numbered lists and quotes; sticky notes autosave the change
(#129). - Mermaid diagrams: a fenced code block marked
mermaidshows as a diagram when the caret is
elsewhere (click it to edit the source). Rendered in the background by a bundled renderer, so
typing never waits and documents without diagrams cost nothing. A diagram that does not parse
stays code, with the reason underneath. Themermaidsetting turns this off. - Preferences (
Ctrl+,): every setting in one list with its current value and what it does, even
when the settings file is empty or from an older version. Pick a row to flip it, step to its
next value, or type a new one (a value Tachyon does not accept says why and changes nothing).
Changes apply to every window at once and keep the file's comments. "Open settings file" in the
command palette still opens the file. - Reset all settings to defaults, from Preferences or the command palette: asks first, then
rewrites the settings file with every setting and its comment, keeping the old file as
settings.toml.bak. - Website: the orbit ring around the hero screenshot is animated, with four small nods to the
physics of tachyons (escape velocity, arriving before leaving, a reversed jump and a Cherenkov
lap). A picker under the screenshot chooses one (on phones: tap the screenshot) and the site
remembers the choice; otherwise one plays at random. Under reduced motion the ring stays
still. The ring now also shows on phones. - Website: a new page, "What is a tachyon?", explains the particle behind the name at four reading
levels (ELI5, ELI13, Standard, ELI-PhD), with interactive diagrams of energy against speed,
spacetime and simultaneity, the tachyonic antitelephone (3D, drag to turn) and Cherenkov
radiation, plus cited references. It works without JavaScript and under reduced motion; the 3D
library loads only when that diagram scrolls into view.
Changed
- Unsaved documents are marked with
*in the window title (*notes.md - Tachyon), the
Windows convention, instead of a bullet (#112). Ctrl+,opens Preferences instead of the settings file.
Tachyon v1.3.0
Changed
- New app icon, matching the concept artwork: the gradient Tachyon symbol on a navy tile with a
gradient border. Small sizes (taskbar, tray, title bar) use a simplified symbol drawn for each
size, so the icon no longer looks like a "3" at 16-32 px. - Windows: the icon is sharp at every size, including Explorer's large and extra-large views,
the Start menu, Alt+Tab and high display scaling (it previously stopped at 64 px). - The website follows the concept artwork and design system: light by default (dark when your
system is), the real Tachyon logo, "Write faster. Think further.", the Instant / Pure Markdown /
Distraction-free features, and a new screenshot in the hero (heading, table, highlighted code
and tasks around a raw paragraph) inside the concept's orbit ring. The hero fits the first
screen, the header leads with Download, and the page self-hosts its font (Inter) and icons, so
it needs no font or icon service. New favicon and social preview image. The screenshot gallery
is recaptured from the current build, and wide tables and commands show a scroll hint on phones. - Windows (installed package): Markdown and text files get their own document icons in
Explorer instead of the app icon, so a file no longer looks like the app. - The About window follows the concept artwork: the Tachyon logo, a one-line tagline, a
"Faster than light" divider, then version, website, source, support and licence above the
Environment details. On a screen too short for it, such as a 1080p display at 150 %, the
window fits the screen and its details scroll, so Copy details and Close stay visible.
Tachyon v1.2.0
Added
- The command palette also opens with
F1, and with a right-click in the document, when
Ctrl+Shift+Pis taken by another app. - Clicking outside the command palette, Go to heading, or Open recent closes it. That click does
not also move the caret. - Reopen a closed sticky note from the command palette ("Reopen sticky note...") or, on Windows,
the tray. The list is the notes folder, newest first. A note that is already open is focused
instead of opened again. - The command palette shows the global sticky-note hotkey next to "New sticky note" (Windows).
- A setting
start_without_active_block: opening a file, restoring a session, or pasting a
whole document leaves every block rendered. A click or keystroke starts editing. - An overlay scrollbar appears while scrolling or while the pointer is on the right edge, then
hides. It does not reserve layout width.scrollbar = "never"turns it off.
Tachyon v1.1.1
Fixed
- Windows: a sticky note can be dragged by its header again. The header's mouse-down handler
consumed the press, so the OS never started the drag (resizing from the edges was unaffected).
A double-click on the header is still ignored rather than maximizing the note.
Tachyon v1.1.0
Added
- A "What's new" window: after an update, the next launch opens the running version's CHANGELOG
section as an ordinary untitled Markdown document - titled "What's new in Tachyon X.Y.Z",
readable, editable, and closing without a save prompt unless you edit it - once, the first
time that version starts. The command palette's "What's new" row opens it again at any time,
and its "Show what's new after updates" row (whats_new = trueinsettings.toml) turns the
automatic prompt off without stopping the version from being recorded, so it never shows twice
for the same update. The notes are embedded in the binary at build time fromCHANGELOG.md
(the section for the running version, orUnreleasedif there is none yet), so showing them
needs no network access and nothing can fail offline; a build with noCHANGELOG.md(a
crates.io-style package) simply never shows the window. The version last seen lives in a
small file next to hot-exit backups and recent files, checked off the UI thread after the
first window's first frame, so nothing is added to the startup path. content_widthsetting: a CSS-style text column width,"820px"(or a bare820) scaled by
zoom like before, or a percentage of the window like"80%";"100%"is the widest it can get,
with a minimum gap to the window frame always kept, at every width and zoom. Applies live on
settings save, likethemeandtips. Command palette rowsWidth: 680px/820px/1100px/
100%set it through the same path as the theme rows, with a check on the current value.- Windows: a resident instance with hot exit on now registers for an OS restart
(RegisterApplicationRestart), so turning on "Automatically save my restartable apps and
restart them when I sign back in" (Settings > Accounts > Sign-in options) brings Tachyon back
with its unsaved documents after a reboot, a Windows Update install, or signing out and back
in - the same windowless start login autostart already uses. Registered only after the first
window's first frame, never before it, and unregistered the moment hot exit is turned off. A
session end (logoff, sign-out, shutdown or restart) now writes every open window's
unsaved-document backup and the session file before the process ends, closing a gap where text
edited in the last 1.5 s before the session ended could be lost; the shutdown shows a "Tachyon
is saving unsaved documents" reason while it runs. This is a best effort, not an unconditional
guarantee: a document that still could not be backed up is reported to stderr rather than lost
silently. - Session restore, on top of hot exit: Quit now writes a small session file (each open window's
file or backup id, position, size, maximized state, caret, scroll and Markdown/plain-text
mode, before the windows close; also kept current as windows close and files load, so a crash
or power loss restores what was open recently), and the next start with no files on the command
line reopens
everything in the same places - clean files too, not just the unsaved documents hot exit
already restored. A launch with files restores the session first, then opens and focuses the
new files. A missing file is skipped, listed in a one-line notice on the first restored
window; window bounds are clamped to fit the current display, since monitors change between
sessions.restore_session = true(default on) insettings.toml, and a "Restore session on
start" command palette row; off keeps today's hot-exit-only behaviour and deletes the session
file. Each window's position, size and maximized state are recorded as they change while the
window is on screen, so a window minimized when the session is saved comes back as it was. Closing the last window keeps what it showed for next time, as closing an app does
(app::write_session_now,tachyon_editor::session; ADR
0009). - Sticky notes (issue #69):
tachyon --note, the global hotkey insticky_hotkey(Windows only;
default"win+shift+n", empty turns it off), the command palette's "New sticky note" row, or
the tray's "New sticky note" item opens a small, compact (360x360) always-on-top window with its
own drag/pin/close header instead of the native title bar. Each note is a Markdown file,
autosaved with no Save prompt to<Documents>/tachyon/notes/, named from its first heading or
line (a timestamp if there is nothing usable), the name fixed after its first save; an empty
note writes no file, and one emptied out is deleted.sticky_on_top(default on) sets whether a
new note starts always-on-top, toggled per note with its pin button orCtrl+Shift+T; on
Linux, where there is no OS-level always-on-top yet, the pin button does not appear. A note can
fade tosticky_unfocused_opacity(0.3 to 1.0, default 1.0/off) while its window is not
focused. On a resident start, every note that was open reopens where it was, including a
windowless--backgroundstart - kept in its own state file, entirely outside the regular
session and hot exit. Linux has no general global-hotkey API on Wayland, so a compositor
keybinding callingtachyon --notetakes its place (see the README) (ADR
0010).
Fixed
-
Windows: typing straight after a launch now reaches the window that opened. About 100 ms after
the first frame, the resident instance prepares the hidden window that the next launch reuses,
and resizing it activated it, so keystrokes went to an invisible window until you clicked the
visible one. It is now resized without being activated (SWP_NOACTIVATE). -
Undo (or redo) back to exactly the text last saved now clears the title's dirty marker and lets
the window close without asking, instead of staying "modified" as long as any edit had ever
happened since the save. The buffer tracks a stable id for its position in the undo/redo history
(Buffer::history_position) rather than a plain incrementing edit counter, so a save remembers
that position andis_modifiedcompares against it - an O(1) integer check, not a text
comparison, so it stays cheap on a huge document. Retyping the same characters by hand instead
of undoing/redoing back to them is a new edit and still counts as modified. -
The command palette's checked theme row no longer moves to the end of the list and reorders the
other two: the checkmark shown on the current theme was part of the same text the filter ranks
and sorts by, so whichever theme was current sorted after the other two instead of the three
staying in a fixed order. The checkmark is now drawn from a separate flag, never part of the
ranked text. -
New windows no longer open at exactly the same screen position. Each one now offsets about one
title-bar height down and right from the most recently opened window that is still open. On a
screen too short to step down (a window fitted to 1080p at 125 % has under two steps to spare),
it keeps stepping right at the lowest position that still fits; it wraps back to the centred
position only when it would pass the right edge of the display's work area. The very first
window of a run is still centred, with no extra work before its first frame. -
A setting the command palette adds to
settings.toml(one the file did not have yet) is now
written after a blank line under its own comment, instead of directly below whatever comment
the file happened to end with, where it read as belonging to another setting. -
Windows: a secondary instance (
TACHYON_INSTANCE_IDset, as benchmarks and tests use) no longer
overwrites the real taskbar/Start jump list with its own private recent-files list. The jump
list is scoped to the whole app (its AppUserModelID), unlikeOpen recent's list, which is
per-instance; only the default instance updates it now.
Tachyon v1.0.0
Added
-
An About window: the owner's signature artwork (a light-ink variant for the dark theme),
version (and the full MSIX package version, for a packaged install), and an Environment table
(platform, install kind, resident or standalone, update channel derived from the packaged
version, and clickable Settings/Backups paths and project website). Opens from the command
palette's "About Tachyon" row, the Windows tray's "About Tachyon" item above "Quit Tachyon", or
tachyon --abouton the command line (forwarded to a running instance like other launches).
Reused if already open;Escapeor its Close button closes it. The signature is embedded in
the binary (assets/brand/signature.png,signature-light.png) and decoded only when the
window opens, never on the startup path. -
Command palette (
Ctrl+Shift+P/Cmd+Shift+P): every user-facing action (New window, Open,
Save/Save As, Close window, Quit, Find/Replace/Find next/previous, Go to heading, Open recent,
Copy as HTML, Toggle plain-text mode, Zoom in/out/reset, Undo/Redo, Select all, Document
start/end, the frame-time overlay, Open settings file, About Tachyon) plus the theme and hot
exit settings, which apply at once and persist tosettings.tomlwithout disturbing its
comments or other keys. Reuses the picker overlay: type to filter (case-insensitive substring,
then subsequence, closest match first), Up/Down/Enter/Escape as in the other pickers; each row
shows its current keyboard shortcut, read from the real keymap.Ctrl+P/Cmd+Pis a
quick-open shortcut for the same Open recent list. Nothing is built until the palette opens.
The palette, Go to heading and Open recent now open a fifth of the way down the window instead
of against its top edge. -
Markdown mode no longer costs memory and frame time proportional to a whole oversized block:
a fresh open streams the parse back in 4 MiB windows instead of copying the whole file into one
Stringfirst; a run of verbatim text split across parser events (a long fenced code block,
one source-map span per line before) now merges into one span per unbroken run instead of one
per line; the active block's raw source, or a rendered block's line list, above a size
threshold is drawn as a window of segments/lines near the viewport instead of the whole block,
with the rest reserved as plain height so scrolling and the scrollbar stay correct; and an
off-screen block's parsed content is dropped and re-derived on demand when it scrolls back into
view, so a well-structured multi-megabyte document's memory stays close to what is on screen
instead of growing with everything that was ever visible. A 15 MiB Markdown file shaped like a
giant fenced code block, one no-blank-line paragraph, or one unwrapped line - which used to risk
gigabytes of memory and multi-second, unresponsive frames on open - now peaks at 300-480 MB with
no frame over 16.7 ms opening it. -
Plain-text mode: any file that is not Markdown by extension (
.md,.markdown,.mdown,
.mkd,.mkdn,.mdx; anything else) opens as literal text, syntax hidden nowhere -#,*
and the rest stay exactly what you typed.Ctrl+Shift+Mtoggles the current document between
plain and Markdown, keeping its text and undo history; toggling to Markdown is refused, with a
notice, above 16 MiB (a full parse at that size risks a visible stall), and a Markdown file that
large opens as plain text automatically with the same notice. -
Large and unusual files no longer risk crashing or freezing Tachyon. Files are streamed in from
disk in 1 MiB chunks instead of read into oneStringfirst, so opening a huge file no longer
doubles its peak memory; invalid UTF-8 is replaced with U+FFFD instead of failing to open
(Save / Save As then asks "Save Anyway" or "Cancel" first, since saving would replace the
original bytes for good), and files over 2 GiB are refused outright with a message rather than
risking exhausting memory. A single pathologically long line (no\nfor a long stretch, as in
some logs and single-line minified files) is split into ≤ 8 KiB display-only chunks so it never
costs a full layout at once; the caret still moves through it, with arrow keys, exactly as if it
were one continuous line. A document over 64 MiB is backed up (hot exit) only on quit or close,
not after every pause in typing, and both backups and saves build the text to write off the UI
thread from a cloned snapshot of the buffer. Find on a document over 5 MiB runs on the
background executor instead of the keystroke's frame, showing "searching…" until it lands. -
The app icon (tray, windows, taskbar, executable, Linux launcher) is the new Tachyon mark; the
raster icons use the simplified mark (the same art as the website's favicon) at 16–32 px.cargo xtask icons
regenerates the icon fromassets/brand/. -
Windows:
tachyon.execarries its icon and version information (Explorer, Task Manager,
pinned taskbar buttons). -
tachyon --desktop-entry on|off(Linux) adds Tachyon to the application launcher and "Open
with" menus, with its icon, or removes it. -
cargo xtask distpacks a release archive: the binary with the README, changelog and licenses
(.zipon Windows,.tar.gzelsewhere). -
Pushing a
vX.Y.Ztag runs.github/workflows/release.yml: it checks the tag against the
workspace version, buildscargo xtask diston Windows, Linux and macOS, signstachyon.exe
with Azure Trusted Signing before packing it, and publishes a GitHub Release with the three
archives, aSHA256SUMS.txt, and notes from the matching changelog section.workflow_dispatch
runs the same build as a dry run that uploads the archives as workflow artifacts without
creating a release; signing is skipped with a warning when the Azure secrets are not configured. -
Windows: a signed MSIX installer (
cargo xtask msix) and aTachyon.appinstallerpublished
with each GitHub Release, soAdd-AppxPackage -AppInstallerFile(or just opening the
.appinstaller) installs Tachyon and checks for updates on every launch. The package registers
an App Execution Alias (tachyonfrom any terminal),.md/.markdownand (as a separate
plaintextassociation, since plain-text mode opens them too).txt/.text/.logfile
associations, and
disables MSIX's write virtualization so settings, backups and autostart use the same real
locations as the.zipbuild;--autostart ontargets the execution alias instead of the
versioned install path when run from an MSIX install, so it survives updates. The release
workflow signs and verifies the MSIX the same way astachyon.exe. -
Versioning: the MSIX version is now
X.Y.Z.B, with stable releases keepingB = 0and a new
nightly channel (.github/workflows/nightly.yml) using its
own always-increasing build number instead, so every merge tomainproduces a signed MSIX
strictly newer than the last nightly and the current stable release; an installed nightly picks
it up automatically (ADR 0007). -
Local images are shown in rendered text (paths relative to the document, absolute or
file:);
remote images still show their alt text. -
Settings (
Ctrl+,openssettings.toml): theme (system, dark or light), zoom of new windows,
hot exit on or off, and whether the rotating tip (below) shows. Saving the file applies the
theme and the tip setting to open windows. -
A faint "Pro Tip" line (
tips = true, on by default) behind the document, near the bottom of
the window: one tip per window, naming a real bound key (Ctrl+Shift+Popens the command
palette,Ctrl+Shift+Mswitches Markdown and plain text,Escapeleaves editing,Ctrl+R
opens a recent file,Ctrl+Ffinds text,Ctrl+Shift+Ojumps to a heading) orCtrl+click
to open a link, rotating through the list as windows open. It sits behind the document (typed
text paints over it) and never captures clicks or becomes selectable. -
Open recent (
Ctrl+R): pick one of the last 30 files you opened or saved; type to filter by
name or folder. -
Recent files reach two OS-native surfaces, not just
Open recent: on Windows, right-clicking
the taskbar or Start icon shows a "Recent" jump-list category (newest first, up to 10) and a
"New window" task; on Linux and BSD, opened and saved files are added to the freedesktop
recently-used list (~/.local/share/recently-used.xbel), which GTK and Qt file choosers read
as their own "Recent" list. Both update off the UI thread wheneverOpen recent's own list
changes (open, save, or a backup restored). The portable.exesets an explicit
AppUserModelID (DailenG.Tachyon) so the jump list attaches to the right taskbar icon; an
MSIX install already has one from its package identity. -
Files changed by another program reload when you return to the window, unless you have unsaved
changes; saving over such a change asks first. -
Copy as HTML (
Ctrl+Shift+C): the selection, or the whole document, rendered as HTML. On
Windows it is pasted as formatted text in Word, Outlook, Teams and browsers (plain-text targets
get the Markdown); on Linux and macOS the HTML source is copied as text. -
Hot exit: Quit no longer asks about unsaved changes. Unsaved documents (scratch text and edited
files) are backed up as you type and reopen, still unsaved, at the next start. Closing a single
window still asks. -
Syntax highlighting in fenced code blocks (Rust, Python, JavaScript/TypeScript, C-family,
Go, Java, C#, shells, PowerShell, SQL, JSON, TOML, YAML), in both themes, also while editing. -
Go to heading (
Ctrl+Shift+O): type to filter the document's headings,Enteror a click
jumps. -
Lists continue on
Enterwith the next bullet, number or an unchecked task box;Enteron an
empty item moves it up a level or ends the list.Tab/...