Skip to content

Textchum v0.0.11

Choose a tag to compare

@github-actions github-actions released this 27 Aug 19:58
· 82 commits to main since this release
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.