Skip to content

Releases: DailenG/tachyon

Nightly

Nightly Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 28 Sep 14:26
bce5d1f

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

Choose a tag to compare

@github-actions github-actions released this 13 Oct 02:46
2246eab

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, .jsonc and .json5 files 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

Choose a tag to compare

@github-actions github-actions released this 12 Oct 16:02
9e8953a

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+Enter inserts 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

Choose a tag to compare

@github-actions github-actions released this 12 Oct 12:00
26694d6

Added

  • View mode, for reading and copying rather than editing (#129). Ctrl+E, the "Toggle view mode"
    row in the command palette, and an EDIT/VIEW button 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+C copies
      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.
  • 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

Choose a tag to compare

@github-actions github-actions released this 12 Oct 01:40
edd3e34

Added

  • A sticky_folder setting 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 named C#) is no longer taken for a
    comment (#109).
  • Sticky notes can be plain text: a MD/TXT button in the note header (next to the pin) switches
    the note between Markdown and plain text, the same switch as Ctrl+Shift+M. Each note
    remembers its mode across restarts; its file stays .md (#115).
  • A sticky_default_mode setting ("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.log or
    data.json becomes plain text (no Markdown parsing, # stays literal), and a plain-text
    document saved as notes.md becomes Markdown (up to 128 KiB, and never for binary or
    garbled text, so it cannot stall a frame; Ctrl+Shift+M still switches larger ones). The text,
    caret and undo history are kept. Save As suggests untitled.txt for a plain-text document. A
    plain Save keeps a mode you chose with Ctrl+Shift+M (#123).
  • "Open with Tachyon" is offered for more text files: .json, .jsonc, .toml, .yaml,
    .yml, .ini, .cfg, .conf, .csv, .tsv, .xml, .env, .gitignore and
    .editorconfig on 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 mermaid shows 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. The mermaid setting 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

Choose a tag to compare

@github-actions github-actions released this 04 Oct 15:33
cb8c28f

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

Choose a tag to compare

@github-actions github-actions released this 30 Sep 19:59
425b94f

Added

  • The command palette also opens with F1, and with a right-click in the document, when
    Ctrl+Shift+P is 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

Choose a tag to compare

@github-actions github-actions released this 29 Sep 18:11
50aa62c

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

Choose a tag to compare

@github-actions github-actions released this 29 Sep 11:44
d8f957d

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 = true in settings.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 from CHANGELOG.md
    (the section for the running version, or Unreleased if there is none yet), so showing them
    needs no network access and nothing can fail offline; a build with no CHANGELOG.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_width setting: a CSS-style text column width, "820px" (or a bare 820) 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, like theme and tips. Command palette rows Width: 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) in settings.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 in sticky_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 or Ctrl+Shift+T; on
    Linux, where there is no OS-level always-on-top yet, the pin button does not appear. A note can
    fade to sticky_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 --background start - 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 calling tachyon --note takes 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 and is_modified compares 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_ID set, 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), unlike Open recent's list, which is
    per-instance; only the default instance updates it now.

Tachyon v1.0.0

Choose a tag to compare

@github-actions github-actions released this 28 Sep 18:07
eb66385

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 --about on the command line (forwarded to a running instance like other launches).
    Reused if already open; Escape or 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 to settings.toml without 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+P is 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
    String first; 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+M toggles 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 one String first, 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 \n for 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 from assets/brand/.

  • Windows: tachyon.exe carries 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 dist packs a release archive: the binary with the README, changelog and licenses
    (.zip on Windows, .tar.gz elsewhere).

  • Pushing a vX.Y.Z tag runs .github/workflows/release.yml: it checks the tag against the
    workspace version, builds cargo xtask dist on Windows, Linux and macOS, signs tachyon.exe
    with Azure Trusted Signing before packing it, and publishes a GitHub Release with the three
    archives, a SHA256SUMS.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 a Tachyon.appinstaller published
    with each GitHub Release, so Add-AppxPackage -AppInstallerFile (or just opening the
    .appinstaller) installs Tachyon and checks for updates on every launch. The package registers
    an App Execution Alias (tachyon from any terminal), .md/.markdown and (as a separate
    plaintext association, since plain-text mode opens them too) .txt/.text/.log file
    associations, and
    disables MSIX's write virtualization so settings, backups and autostart use the same real
    locations as the .zip build; --autostart on targets 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 as tachyon.exe.

  • Versioning: the MSIX version is now X.Y.Z.B, with stable releases keeping B = 0 and a new
    nightly channel (.github/workflows/nightly.yml) using its
    own always-increasing build number instead, so every merge to main produces 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+, opens settings.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+P opens the command
    palette, Ctrl+Shift+M switches Markdown and plain text, Escape leaves editing, Ctrl+R
    opens a recent file, Ctrl+F finds text, Ctrl+Shift+O jumps to a heading) or Ctrl+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 whenever Open recent's own list
    changes (open, save, or a backup restored). The portable .exe sets 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, Enter or a click
    jumps.

  • Lists continue on Enter with the next bullet, number or an unchecked task box; Enter on an
    empty item moves it up a level or ends the list. Tab /...

Read more