Skip to content

Releases: perrito666/textchum

Textchum v0.0.14

Choose a tag to compare

@github-actions github-actions released this 31 Aug 11:27

macOS: signed and notarized — download, unzip, and double-click; requires macOS 14+ on Apple Silicon. Linux: the textchum-gtk tarballs need GTK 4.14+, libadwaita 1.5+, GtkSourceView 5, and WebKitGTK 6 at runtime (Ubuntu 24.04+, Fedora 40+); optional extras: hunspell + a dictionary for prose spell check, universal-ctags for the no-server fallback.

What's Changed

  • A status bar under the editor, and the enclosing context pinned at the top by @perrito666 in #112

Full Changelog: v0.0.13...v0.0.14

Textchum v0.0.13

Choose a tag to compare

@github-actions github-actions released this 30 Aug 16:02

macOS: signed and notarized — download, unzip, and double-click; requires macOS 14+ on Apple Silicon. Linux: the textchum-gtk tarballs need GTK 4.14+, libadwaita 1.5+, GtkSourceView 5, and WebKitGTK 6 at runtime (Ubuntu 24.04+, Fedora 40+); optional extras: hunspell + a dictionary for prose spell check, universal-ctags for the no-server fallback.

What's Changed

  • Wrap a selection in the delimiter typed, and keep preview links out of the pane by @perrito666 in #109

Full Changelog: v0.0.12...v0.0.13

Textchum v0.0.12

Choose a tag to compare

@github-actions github-actions released this 30 Aug 12:47

macOS: signed and notarized — download, unzip, and double-click; requires macOS 14+ on Apple Silicon. Linux: the textchum-gtk tarballs need GTK 4.14+, libadwaita 1.5+, GtkSourceView 5, and WebKitGTK 6 at runtime (Ubuntu 24.04+, Fedora 40+); optional extras: hunspell + a dictionary for prose spell check, universal-ctags for the no-server fallback.

What's Changed

  • Give every capture our grammars emit a style of its own by @perrito666 in #39
  • Highlight SQL by @perrito666 in #40
  • Let the Settings window be resized, and its longest tab scroll by @perrito666 in #41
  • Remember how wide the file tree is, and keep every window agreeing by @perrito666 in #43
  • Let a document be told what it is, and give the GTK edit area a background by @perrito666 in #44
  • Walk a snippet's tabstops by @perrito666 in #47
  • Import a theme from VS Code or TextMate by @perrito666 in #50
  • Put the SQL grammar in the Linux lockfile by @perrito666 in #52
  • Go to a line by number by @perrito666 in #55
  • Split Find References into code and tests by @perrito666 in #56
  • Stop listing highlighting features that shipped by @perrito666 in #57
  • Stop repainting the syntax colours on every scroll turn by @perrito666 in #59
  • Mark in the gutter what changed since the last commit by @perrito666 in #61
  • Ask git who last touched the line under the caret by @perrito666 in #63
  • Colour self and cls in Python by @perrito666 in #72
  • Stop the highlight pass moving the text under the caret by @perrito666 in #73
  • Indentation and readable diagnostics, replayed onto main by @perrito666 in #78
  • Stop the pointer crashing the app over the editor by @perrito666 in #82
  • One list panel, and a list of the document's diagnostics by @perrito666 in #80
  • Documents in the shell, columns in the window, and what a file remembers by @perrito666 in #105
  • Do not set SwiftUI state while AppKit is laying out by @perrito666 in #106

Full Changelog: v0.0.11...v0.0.12

Textchum v0.0.11

Choose a tag to compare

@github-actions github-actions released this 27 Aug 19:58
4a413f5

Signed and notarized on macOS. Linux gets packages this time: .deb and
.rpm beside the tarballs, with a PKGBUILD and a Nix flake in the
repository.

Most of this release is a Linux release. Juan Diaz (@nueces) filed
seventeen reports from a GTK desktop, and answering them meant building
a way to actually run the shell on one instead of reading the code and
guessing — a disposable Ubuntu virtual machine, which then found things
nobody had reported.

The editor would not start on Ubuntu 24.04

A locally built textchum-gtk aborted before drawing anything, with a
message about bwrap that pointed nowhere near the cause. Ubuntu 24.04
denies unprivileged user namespaces to programs without an AppArmor
profile granting them; WebKitGTK sandboxes its processes with
bubblewrap and treats the failure as fatal, so the editor died over a
preview pane you might never open.

It now asks bwrap the question at startup and switches that sandbox
off only when the answer is no, saying so once. Asking bwrap is the
only probe that works: an ordinary process on the same machine creates
a user namespace happily, and it is specifically bubblewrap's write to
the uid map that is refused.

Conventions the GTK shell was missing

  • Ctrl+Q quits.
  • Ctrl+Shift+T reopens the last closed tab, caret and scroll
    included, twenty deep. ⇧⌘T does the same on macOS. Only saved
    documents are remembered — an untitled buffer has nothing to reopen
    from, and reopening it empty would be a lie.
  • Ctrl+O takes several files at once.
  • Open Recent lists only files this editor can open. That list
    belongs to the whole desktop session, so a photo viewer's PNGs were
    in it; the test is the file's content rather than its extension,
    since plenty of text has no extension and an extension can lie.
  • Preferences is one window, and an ordinary one. A second copy of
    an application-wide screen was two views of one file that disagree
    the moment either is edited, and being transient for the editor
    window made some window managers keep it above everything else.

Spelling

Several dictionaries can apply at once — write "en_US, es_ES", and a
word any of them knows is spelled correctly. Right-clicking a
misspelling offers replacements, Add to Dictionary and Ignore.
The personal word list lives in editor.spell_words with every other
setting rather than in a second file, and the dictionaries you have
installed are one click away in Preferences.

Change Case now appears only when there is a selection to apply it
to. It is GtkSourceView's, and it does disable its entries without one
— but the submenu holding them still read as available, so an empty
document offered an operation that could do nothing.

Messages that explained the wrong thing

Format Document told people who had just saved to save. All three
ways of failing shared one sentence written for the untitled case; they
are distinguished now, and the middle one names the package to install.
That sentence was also broken across source lines without
continuations, so a newline and its indentation sat inside the string —
five other messages had the same defect and read with a hole in the
middle.

The pyright hint offered python-lsp-server in the same breath, so
it read as a second way to satisfy one request; installing that alone
changed nothing, because the command being looked for is still
pyright-langserver. And none of it was legible anyway: a missing
server arrives as a sentence naming a package, and a toast is one
ellipsized line on a few seconds' clock. Explanations now wrap and wait
to be dismissed.

Settings

Language Servers lists every language the registry knows, filled in
with the built-in command, and says whether that command is actually on
your PATH — the question behind I installed a server and nothing
happened
. Both shells.

Autosave counts from your last keystroke, off until you ask for it.
It never saves a document with no name, and it does not run save
preprocessors: a formatter reflowing the line you are still writing is
not a favour.

Highlighting

Colouring is scoped to the visible viewport rather than the whole
document, so a large file stops paying for lines nobody is looking at,
and the theme's bold and italic flags survive again — comments come
back italic, headings bold.

Packages

sudo apt install ./textchum_0.0.11_amd64.deb
sudo dnf install ./textchum-0.0.11-1.x86_64.rpm
(cd packaging && makepkg -si)
nix profile install github:perrito666/textchum

They depend on the four libraries the shell links against. hunspell,
Universal Ctags and git are recommendations, not requirements: each
switches off exactly one feature and nothing else. Language servers and
formatters are in nobody's dependency list — they are yours, and the
editor runs what is on your PATH.

The Arch PKGBUILD has not been built on an Arch machine, and its
sha256sums still needs updpkgsums before it goes anywhere near the
AUR. The .rpm was built but installed only on a non-RPM distribution,
so its BuildRequires are reasoned rather than exercised.

Documentation

The tour shows both
shells side by side on every screen that exists in both, each following
your light or dark setting.

Thanks

Juan Diaz (@nueces) for seventeen careful reports, several of which
turned out to be deeper than they looked.

Textchum v0.0.10

Choose a tag to compare

@github-actions github-actions released this 27 Aug 07:58

Signed and notarized on macOS; Linux tarballs for x86_64 and arm64.

Hugo posts, without depending on Hugo

Blog posts written for Hugo are Markdown plus two
things the editor used to treat as noise. Both are now read properly,
and Hugo is never invoked:

  • Front matter (TOML between +++, YAML between ---) is
    highlighted as the language it actually is, kept out of the prose the
    spell checker reads — a slug is not a misspelling — and rendered in
    the preview as a metadata block instead of a paragraph of fences.
  • Shortcodes ({{< figure >}}, {{% notice %}}…{{% /notice %}})
    are highlighted as the calls they are, skipped by the spell checker,
    and shown in the preview as a labelled placeholder. Executing one
    would need Hugo's template engine and your site's own layouts, so a
    placeholder is the honest thing to show; a paired {{% … %}} body
    still renders as Markdown, as Hugo does.

A post now outlines itself: ⇧⌘O lists its headings nested by depth
with no language server involved, skipping fenced code and front
matter. Files under layouts/ are treated as Go templates rather
than plain HTML — the directory says so, since the extension cannot.

JSON front matter (the brace form) is not recognised; TOML and YAML
cover what Hugo writes by default.

Your open files stop disappearing

Quitting was a race. The session is recorded when termination begins,
but every window closing afterwards scheduled another save against a
list that was emptying — whether those ran before the process died
decided whether your session survived. That is fixed, and so is a
second cause: any run from a checkout (tests, --fresh launches, a
scratch --config) used to write its own session over the real one.
The session now lives in the configuration's own profile, which is what
the documentation already promised.

Hide lists you can actually read

Hidden-file patterns edit one per line instead of as a
space-separated string, with a menu that adds a named preset in one
click. The presets themselves are editable now — a Presets tab on
macOS, a Hide presets group on Linux — and they start as built-ins:
edit any of them and your list takes over, so a preset you delete
stays deleted until you restore the built-ins.

Documentation with pictures

The site gained a tour of the macOS app
— nineteen screens, from the window to every Settings tab — in
English, Spanish, and French.


macOS: signed and notarized — download, unzip, and double-click;
requires macOS 14+ on Apple Silicon.
Linux: the tarballs need GTK 4.14+, libadwaita 1.5+, GtkSourceView
5, and WebKitGTK 6 at runtime (Ubuntu 24.04+, Fedora 40+). Optional:
hunspell plus a dictionary for prose spell check, universal-ctags
for the no-server definition fallback.

Textchum v0.0.9

Choose a tag to compare

@github-actions github-actions released this 27 Aug 06:01

Signed and notarized on macOS; Linux tarballs for x86_64 and arm64.

The navigator follows your file

The project tree now expands to the document you are editing and
highlights it as you switch tabs — turn it off in Settings ▸ General ▸
"Reveal the current file in the tree". View ▸ Reveal in Tree (⇧⌘J,
rebindable revealInTree, also on a buffer row's right-click) does it
on demand, uncollapsing the navigator if you had closed it.

What the tree hides is now configuration rather than a hardcoded rule:
glob patterns over file names, .* by default, so "show hidden files"
is just an emptier list. The Projects tab edits the default list — with
presets for the usual offenders (target, node_modules,
__pycache__, .DS_Store, VCS directories) — and any project root can
carry its own list, which replaces the defaults. The Linux tree reads
the same section. Closes #4.

Open Quickly stops guessing

Three things were wrong at once, and all three are fixed:

  • Results appeared late, or never. The finder re-walked the whole
    project on every keystroke, so on a real repository each search was
    superseded before it finished. It now walks once per scope and
    matches in memory — typing is instant, and the status line says how
    many of how many files matched.
  • ⏎ could open a file you never saw. ⏎ now searches; ⌘⏎ opens
    (Ctrl+⏎ on Linux). ↑/↓ select, ⎋ closes, double-click still opens,
    and the status strip spells the keys out.
  • The scope could be your home directory. With an untitled window
    in front, the finder used to walk every file you own and rank matches
    across all of them. It now prefers any open document's project, then
    the last scope it used.

Stacked filters work in file search too, the same ones Find in Project
has — every filter refines the matched paths. Closes #3.

Formatting without a language server

Format Document asks the server first and falls back to your
save-preprocessor chain, so formatting works on untitled documents and
on languages nobody serves. When neither can help, Linux says exactly
what would fix it instead of shrugging. Clicking a menu no longer
leaves the selection looking lost: buffer-editing actions hand focus
back to the editor.

Also

The Linux install instructions gained the two packages they were
missing (libwebkitgtk-6.0-dev, libsoup-3.0-dev) — thanks to
@nueces, who also reported the Save As
highlighting bug fixed in v0.0.8.


macOS: signed and notarized — download, unzip, and double-click;
requires macOS 14+ on Apple Silicon.
Linux: the tarballs need GTK 4.14+, libadwaita 1.5+, GtkSourceView
5, and WebKitGTK 6 at runtime (Ubuntu 24.04+, Fedora 40+). Optional:
hunspell plus a dictionary for prose spell check, universal-ctags
for the no-server definition fallback.

Textchum v0.0.8

Choose a tag to compare

@github-actions github-actions released this 26 Aug 07:11

macOS: signed and notarized — download, unzip, and double-click; requires macOS 14+ on Apple Silicon. Linux: the textchum-gtk tarballs need GTK 4.14+, libadwaita 1.5+, GtkSourceView 5, and WebKitGTK 6 at runtime (Ubuntu 24.04+, Fedora 40+); optional extras: hunspell + a dictionary for prose spell check, universal-ctags for the no-server fallback.

What's Changed

  • Add Linux install instructions by @nueces in #1

New Contributors

  • @nueces made their first contribution in #1

Full Changelog: v0.0.7...v0.0.8

Textchum v0.0.7

Choose a tag to compare

@github-actions github-actions released this 25 Aug 09:45

macOS: signed and notarized — download, unzip, and double-click; requires macOS 14+ on Apple Silicon. Linux: the textchum-gtk tarballs need GTK 4.14+, libadwaita 1.5+, GtkSourceView 5, and WebKitGTK 6 at runtime (Ubuntu 24.04+, Fedora 40+); optional extras: hunspell + a dictionary for prose spell check, universal-ctags for the no-server fallback.

Full Changelog: v0.0.6...v0.0.7

Textchum v0.0.6

Choose a tag to compare

@github-actions github-actions released this 25 Aug 08:46

macOS: signed and notarized — download, unzip, and double-click; requires macOS 14+ on Apple Silicon. Linux: the textchum-gtk tarballs need GTK 4.14+, libadwaita 1.5+, GtkSourceView 5, and WebKitGTK 6 at runtime (Ubuntu 24.04+, Fedora 40+); optional extras: hunspell + a dictionary for prose spell check, universal-ctags for the no-server fallback.

Textchum v0.0.5

Choose a tag to compare

@github-actions github-actions released this 25 Aug 07:38

macOS: the app is not code-signed — on first launch, right-click Textchum.app and choose Open (or clear quarantine with xattr -d com.apple.quarantine Textchum.app); requires macOS 14+ on Apple Silicon. Linux: the textchum-gtk tarballs need GTK 4.14+, libadwaita 1.5+, GtkSourceView 5, and WebKitGTK 6 at runtime (Ubuntu 24.04+, Fedora 40+).

Full Changelog: v0.0.4...v0.0.5