• v0.2.8 158b30b634

    SHUFTN 0.2.8 Stable

    Timba released this 2026-09-04 09:03:35 +00:00 | 32 commits to main since this release

    Serverfehler ohne Erklärung sagen jetzt, aus welcher Ecke sie kommen. Meldete der Exchange einen Fehler, ohne einen Grund mitzuschicken, endete der Satz mitten im Nichts: „Der Server meldet einen Fehler (503): Kontakte (FindItem):" — und dahinter kam nichts mehr. Damit sah es aus wie ein fehlendes Recht am Postfach, und dort war nichts zu finden: Eine Antwort ohne SOAP-Rumpf stammt gar nicht von Exchange, sondern von der Web-Ebene davor. Genau das steht jetzt da, samt dem, was der Server tatsächlich geschickt hat.

    Erweiterungen sagen jetzt, wenn es eine andere Fassung gibt. Bisher änderte sich ein Plugin nur, wenn jemand von sich aus die Adresse noch einmal eintrug — wer nie nachsah, blieb für immer auf der Fassung, die er einmal eingespielt hatte. Ein Paket kann im Manifest eine https-Adresse nennen, an der steht, welche Fassung gilt; SHUFTN fragt dort nach und zeigt einen Knopf.

    Gefragt wird beim Öffnen der Seite Erweiterungen, nicht beim Start. Ein Programm, das beim Hochfahren ungefragt ins Netz greift, tut etwas, das niemand verlangt hat — und beim eingebauten Editor wäre es besonders schief: Er ist das Werkzeug, das ausdrücklich nichts nachlädt. Nennt ein Paket keine Adresse, entsteht überhaupt keine Verbindung; das ist die Vorgabe.

    Eingespielt wird nichts von selbst. Der Knopf ruft dasselbe Einspielen auf wie das Feld „Quelle", mit allem, was daran hängt: erst entpacken, dann prüfen, dann umhängen, ältere Fassung bleibt als Rückweg liegen. Ein Paket, das sich unbemerkt austauscht, wäre ein Programm, das seinen eigenen Code hinter dem Rücken seines Besitzers ändert.

    Verglichen wird auf Ungleichheit, nicht auf „grösser": 9.3.4-hotfix.1 ist keine Zahl, und ein Grösser-Vergleich müsste raten, wie so etwas zu ordnen ist. Wer veröffentlicht, sagt, was gilt. Damit wird auch ein Rückschritt angeboten — und das ist gewollt, denn wer zurücknehmen muss, will genau das.

    Downloads
  • v0.2.7 77f5190f6f

    SHUFTN 0.2.7 Stable

    Timba released this 2026-09-04 06:10:30 +00:00 | 34 commits to main since this release

    Anhänge lassen sich in SHUFTN bearbeiten — offline, im eingebauten Editor. Am Anhang sitzt ein Stift; er öffnet .docx, .xlsx, .pptx und .pdf in einem eigenen Fenster mit dem Euro-Office-Editor (dem AGPL-Fork von ONLYOFFICE), ganz ohne Server: Der Editor läuft in der Webansicht, die Umwandlung in sein Format und zurück macht x2t als WebAssembly auf dem Rechner. „Speichern" legt die bearbeitete Fassung im Kern ab; danach hängt ein Knopf sie an eine Antwort auf die Nachricht, aus der sie kam, oder an eine neue Nachricht — über denselben Vorrat, den auch Weiterleitungen benutzen. Nichts davon verlässt den Rechner, und nichts wird in einen Temp-Ordner geschrieben.

    Neue Dokumente und Dateien von der Platte. In der Leiste links stehen unter den Modulen vier Handgriffe: Dokument, Tabelle, Folien und PDF legen ein neues, leeres an und öffnen es gleich im Editor. Und im Dateibaum sitzt an jeder Datei, die der Editor öffnet, ein Stift. Der Dateibaum startet dabei weiterhin nichts: Die Datei wird gelesen und in den eingesperrten Editor gegeben, und die bearbeitete Fassung geht an eine Nachricht — nicht zurück auf die Platte.

    Der Editor ist eingesperrt. Er läuft in einem eigenen Ursprung (editor://localhost) ohne Zugriff auf die Brücke zum Kern; seine Regeln kennen weder http: noch https: — ein Dokument mit einem verknüpften Bild von aussen zeigt einen Platzhalter, wie beim Betrachter. Makros und Erweiterungen sind aus. Dateien über 60 MB nimmt er nicht.

    Und er ist das erste Plugin. Der Editor liegt nicht in SHUFTN, sondern als nachinstallierbares Paket daneben — unter %LOCALAPPDATA%\SHUFTN\plugins\<kennung>\<fassung>\, mit einem Manifest (plugin.json), das sagt, wie es heisst, welche Endungen es bearbeitet, wofür es Vorlagen hat und unter welcher Lizenz es steht, und mit einer Prüfliste über jede Datei. Was SHUFTN anbietet, richtet sich danach: Ohne Paket gibt es keinen Stift und keine „Neu"-Knöpfe, und fehlt es, sagt das Fenster warum, statt leer zu bleiben. Weil der Ursprung eines Plugins an seinem Protokollnamen hängt und Protokolle beim Start angemeldet werden, läuft ein frisch installiertes Paket erst nach einem Neustart — und das steht auch so in der Liste.

    Eingespielt wird aus dem Programm heraus. Einstellungen → Erweiterungen zeigt, was installiert ist (Name, Fassung, Lizenz, welche Dateien es öffnet, wo es liegt) und nimmt unter „Quelle" eine https-Adresse oder den Pfad einer Zip-Datei. Die Reihenfolge dabei ist die Sicherung: erst entpacken, dann prüfen, dann umhängen. Geht das Prüfen schief, bleibt die vorige Fassung unberührt, und die Meldung nennt die Datei. Ältere Fassungen bleiben liegen — sie sind der Rückweg. Prüfen neben einem Paket rechnet jede Prüfsumme noch einmal nach.

    Aus dem Netz nur über https: Die Prüfsummen liegen im Archiv und zeigen, dass nichts auf der Platte verrutscht ist — nicht, von wem das Paket kommt. Dafür sorgt die Verbindung.

    Und es gibt eine Seite „Über". Fassung, Herausgeber, wo Erweiterungen liegen — und für jedes mitgelieferte Paket Lizenz, Quelltextadresse sowie Lizenztext und Änderungsliste im Wortlaut, aus dem Paket gelesen. Beim eingebauten Editor ist das keine Beigabe: Er steht unter der AGPL v3, und die verlangt, dass Lizenztext, Herkunft und die eigenen Änderungen mitgehen.

    Die Schriften im Paket sind ein Grundstock aus sieben Familien — nur, was weitergegeben werden darf. Die Microsoft-Kernschriften (Arial, Times New Roman, Courier New und die übrigen) sind nicht dabei; an ihrer Stelle stehen metrisch gleiche Ersatzschriften: Liberation für Arial, Times und Courier, Carlito für Calibri, Caladea für Cambria, dazu DejaVu für breite Zeichenabdeckung, Open Sans, Asana Math für Formeln und OpenSymbol für Aufzählungszeichen.

    Was das heisst: Ein Dokument in Arial wird mit Liberation Sans gezeichnet, behält aber Zeilen- und Seitenumbrüche, weil die Breiten identisch sind — und es behält den Namen. Wer es zurückschickt, schickt weiter ein Arial-Dokument; wer es in Word öffnet, sieht Arial. Das Paket ist damit von 383 auf 239 MB geschrumpft (66 MB als Archiv), und die Lizenz jeder Familie liegt im Wortlaut dabei.

    Und die Schriften des eigenen Rechners kommen dazu — auf Knopfdruck. Unter Einstellungen → Erweiterungen steht Schriften einlesen. Danach kennt der Editor Arial, Calibri, Cambria und alles andere, was auf diesem Rechner installiert ist — hier waren es 273 Familien aus 415 Dateien, in anderthalb Sekunden gelesen. Der Grundstock bleibt unverändert daneben stehen, die Ersatzsuche für fehlende Zeichen ebenso; es kommt nur etwas dazu.

    Kopiert wird dabei nichts. Ein Windows-Schriftordner ist ein paar hundert Megabyte gross; ihn je Nutzer zu verdoppeln wäre Platzverschwendung. Der Katalog merkt sich, wo eine Schrift liegt, und der Editor bekommt die Datei beim Abruf gereicht. Wird eine Schrift deinstalliert, fehlt sie im Editor — einmal neu einlesen bringt die Liste wieder in Ordnung, und Verwerfen stellt den Grundstock her.

    Erzeugt wird der Katalog von SHUFTN selbst, nicht vom Werkzeug des Herstellers: Dessen allfontsgen ist ein C++-Programm gegen Qt, ICU, FreeType und HarfBuzz — für Windows hiesse das vier weitere native Dateien auszuliefern. Alles, was der Katalog braucht, steht dagegen in den Tabellen name, OS/2 und post jeder Schriftdatei. Geprüft wird gegen das Original: Für die 53 Schriften des Grundstocks erzeugt SHUFTN dieselben 54 Einträge mit denselben Werten in jedem Feld, die auch allfontsgen erzeugt — Panose, Zeichenbereiche, Metriken, Familienzuordnung. Sechs Abweichungen hat dieser Vergleich zutage gefördert, bevor irgendetwas ausgeliefert wurde, darunter eine, die stillschweigend gewirkt hätte: Die Schriftliste beginnt mit ihrer eigenen Länge, und wer nur anhängt, ohne sie hochzuzählen, liefert eine Datei, die vollständig aussieht und beim Lesen nach dem alten Bestand aufhört.

    Wie ein Paket gebaut wird, steht vollständig in PLUGINS.md.

    Downloads
  • v0.2.6 c39aeacf08

    SHUFTN 0.2.6 Stable

    Timba released this 2026-09-03 10:27:52 +00:00 | 35 commits to main since this release

    Vier Zeichen im Programm waren unsichtbar. Die Phosphor-Schrift hat mehrere Stärken, geladen sind aber nur zwei — ph und ph-fill. Wer eine dritte anfordert, bekommt keinen Fehler und kein Kästchen, sondern ein Element von null Punkt Breite: nichts. Genau das stand an vier Stellen, darunter die Pfeilspitzen an mehrtägigen Terminen — das einzige Zeichen dafür, dass ein Balken über die Woche hinausläuft. Der Hinweis in 0.2.4, sie stünden am Rand, war damit falsch; jetzt stimmt er. Ebenso betroffen: das Häkchen an einem angehakten Kalender.

    Aufgefallen ist es beim Einbau des Update-Zeichens, und zwar erst, als eine Messung im laufenden Programm eine Breite von null ergab — angesehen hatte ich die Stelle vorher auch.

    Die Aktualisierung meldet sich, statt sich finden zu lassen. Sie stand unter Einstellungen → Ansicht, wo niemand nachsieht — und wer nie nachsah, erfuhr nie von einer neuen Fassung.

    Jetzt: Liegt etwas bereit, erscheint ein kleiner Punkt am Zahnrad unten links und in den Einstellungen am Fuss der Spalte der Knopf „Update verfügbar". Gibt es nichts, steht dort auch nichts — weg statt ausgegraut. Ein Eintrag, der die meiste Zeit „Alles aktuell" sagt, wird nach der dritten Woche nicht mehr gesehen, und dann auch nicht, wenn er einmal etwas anderes sagt.

    Nachgesehen wird beim Start und danach stündlich. Ein Fehlschlag ist kein „nein": Wer offline ist, bekommt keine Antwort, und dann bleibt der zuletzt bekannte Stand stehen, statt dass der Punkt verschwindet. Punkt und Knopf hängen an derselben Auskunft — zwei Abfragen wären zwei Antworten, die auseinanderlaufen können.

    Downloads
  • v0.2.5 3ece873f84

    SHUFTN 0.2.5 Stable

    Timba released this 2026-09-03 09:38:15 +00:00 | 36 commits to main since this release

    Ein Anhang liess sich nicht öffnen, solange ein Abgleich lief. „Der Kern gleicht gerade ab — gleich noch einmal versuchen." Bei einem gewachsenen Postfach dauert ein Abgleich Minuten; wer in dieser Zeit dreimal auf dieselbe Rechnung klickt, bekommt dreimal dieselbe Ausrede und hält das Programm für kaputt. Jetzt stellt sich das Öffnen an, statt aufzugeben — dieselbe Entscheidung, die der Postausgang schon getroffen hatte. Das Warten kostet nichts: Es läuft auf einem eigenen Faden, das Fenster bleibt bedienbar.

    PDF wird gezeichnet — im Fenster, ohne Acrobat. Rechnungen kommen als PDF, nicht als Word; das war die auffälligste Lücke. Gezeichnet wird mit pdf.js, demselben Auswerter, der in Firefox jedes PDF anzeigt: in JavaScript geschrieben und damit frei von der Sorte Speicherfehler, aus der die PDF-Lücken der letzten zwanzig Jahre bestehen. Er läuft ohne Netz — Schriften und Zeichentabellen werden nicht nachgeladen —, ohne eval und ohne die Anmerkungsschicht: Gezeichnet wird die Seite, Verweise und Formulare bleiben Bild und werden nicht zu Knöpfen, die irgendwohin führen.

    Gezeichnet wird, was in die Nähe des Blickfelds kommt. Ein Bauantrag mit achtzig Seiten soll nicht erst alle achtzig zeichnen, bevor die erste zu sehen ist.

    Videos laufen im Fenster — MP4, WebM und Ogg, mit Bedienelementen und ohne automatisches Abspielen.

    Aus dem Dateibaum ohne Grössengrenze. Eine Datei auf dem Rechner hat einen Pfad; SHUFTN stellt sie über eine eigene Medienausgabe bereit, und der Abspieler holt sie sich stückweise ab. Damit läuft auch ein Baustellenvideo mit dreihundert Megabyte, und man kann darin springen. Bei einem Anhang gibt es keinen Pfad — der geht als Ganzes hinüber, und dort gilt weiter eine Grenze von 64 MB mit einem Hinweis aufs Standardprogramm.

    Die Medienausgabe öffnet einen Port, und das gehört gesagt. Ein Postprogramm, das das tut, muss es sich verdienen; fünf Riegel halten ihn eng:

    • Gebunden nur an 127.0.0.1 — aus dem Netz nicht erreichbar, auch nicht aus demselben WLAN. * Ein zufälliger Port, keine feste Nummer, die jemand anlaufen könnte. * Je Datei ein Geheimnis aus 128 zufälligen Bit des Systemgenerators. Ohne das gibt es 404, und raten lässt es sich nicht. * Kein Pfad aus der Anfrage. Ausgeliefert wird, was hinterlegt wurde — die Anfrage nennt eine Kennung, keinen Dateinamen. Damit gibt es keinen Pfad-Ausbruch, weil es keinen Pfad gibt. * Nur solange das Fenster offen ist. Beim Schliessen wird die Kennung zurückgezogen.

    Wer ein AVI oder ein echtes QuickTime öffnet, bekommt eine Meldung statt eines schwarzen Felds mit einem Abspielknopf, der nichts tut.

    Textdateien und Bilder kommen dazu. .txt zeigt der Betrachter in fester Breite, damit Spalten aus Tabulatoren stehen bleiben — und er sagt oben, welche Kodierung er angenommen hat. Das ist keine Spielerei: Windows hat drei Sorten Textdatei hinterlassen (UTF-8, UTF-16 und ANSI), und wer stur eine davon liest, macht aus „Grüße" ein „Gr??e". Erkannt wird über die Stückliste, dann über die Gültigkeit als UTF-8, sonst Windows-1252. Stehen die Umlaute doch falsch, sieht man wenigstens, wovon der Betrachter ausgegangen ist.

    Bilder — PNG, JPEG, GIF, BMP, WebP. Decodiert werden sie von der Bildmaschine des Browsers, nicht von SHUFTN. Ein Bilddecoder ist eine der ältesten Angriffsflächen überhaupt; einen eigenen einzubauen wäre mehr Arbeit und mehr Risiko. Der Typ kommt aus den ersten Bytes und nicht aus dem Dateinamen: Wer eine HTML-Datei foto.png nennt, bekommt eine Meldung.

    Kein SVG. Ein SVG ist kein Bild, sondern ein Programm — es kann Skripte, Fremdverweise und eingebettete Objekte enthalten. Ein <img> führt davon zwar nichts aus, aber das ist eine Zusicherung des Browsers, und die Zusage dieses Betrachters soll nicht davon abhängen, dass sie eingehalten wird.

    Ein Dateibaum in SHUFTN — „Dateien" in der Leiste links. Desktop, Dokumente, Downloads, OneDrive und die Laufwerke; Ordner mit Grösse und Datum, ein Filter für den offenen Ordner, ein Pfad zum Anklicken. Ein Klick auf eine Word- oder Excel-Datei zeigt sie im Betrachter — es muss also nichts mehr aus dem Explorer heraus geöffnet werden, nur um hineinzusehen.

    Er liest, und sonst nichts. Er verschiebt nicht, löscht nicht, benennt nicht um und startet nichts. Ein Postprogramm, das Dateien ausführen kann, ist genau die Tür, die man in einem Postprogramm nicht haben will — was einen Anhang gefährlich macht, macht auch eine Datei auf der Platte gefährlich, und der Weg vom Anhang zur Platte ist ein Doppelklick. Wer etwas starten will, hat den Windows-Explorer; der Knopf „Im Explorer" führt dorthin, und zwar zum Ordner: Derselbe Aufruf mit einer Datei würde sie ausführen.

    Aus demselben Grund liest SHUFTN von der Platte nur .docx und .xlsx — und prüft die Endung, bevor es die Datei anfasst. Sonst wäre der Befehl ein allgemeines „lies mir irgendeine Datei".

    SHUFTN zeigt Word- und Excel-Dateien selbst. Ein Klick auf einen .docx- oder .xlsx-Anhang öffnet ihn im Programm statt in Word — mit Überschriften, Fettdruck, Tabellen und Listen, bei Mappen mit Blattreitern, Spaltenköpfen und den richtigen Zeilennummern. Der Knopf mit der Lupe oben rechts nimmt dafür auch Dateien vom Rechner. Der Weg nach draussen bleibt: Am Anhang sitzt ein zweiter Knopf, der ihn wie bisher ins Standardprogramm gibt.

    Der Betrachter ist absichtlich misstrauisch gebaut, denn ein Dokument ist eine fremde Datei, die auf dem eigenen Rechner ausgewertet wird — die gleiche Klasse wie ein Mailanhang:

    • Es wird nie HTML erzeugt. Der Kern gibt Absätze, Läufe und Zellen heraus, die Oberfläche baut daraus Elemente. Damit gibt es keine Stelle, an der Text aus einer fremden Datei zu Auszeichnung werden könnte. * Makros werden erkannt, gemeldet und nicht angefasst. Es gibt in der Kiste keinen Weg, der irgendetwas ausführt. * Eine Dokumenttyp-Deklaration wird abgelehnt, nicht ausgewertet. Damit fallen zwei Angriffe auf einmal weg: Dateien vom Rechner in das Dokument zu holen, und aus einer Kilobyte-Datei Gigabytes im Speicher zu machen. * Nichts wird nachgeladen. Verweise nach draussen werden gezählt und übersprungen — ein Betrachter, der beim Öffnen eine Adresse abruft, verrät dem Absender, dass gelesen wurde. * Grenzen werden beim Lesen geprüft, nicht der Datei geglaubt. Ein Zip-Eintrag nennt seine entpackte Grösse selbst; eine Zip-Bombe nennt sie falsch.

    Was übergangen wurde, steht als Hinweis über dem Dokument. Ein Betrachter, der schweigend die Hälfte weglässt, ist schlimmer als keiner — weil man ihm glaubt.

    Was er nicht ist: ein Ersatz für Word. Die Treue reicht zum Lesen; Seitenumbrüche, Kopfzeilen, Bilder und Zeichnungen gibt es nicht, Formeln werden nicht gerechnet. Zum Bearbeiten führt der zweite Knopf hinaus.

    Downloads
  • v0.2.4 76a788124a

    SHUFTN 0.2.4 Stable

    Timba released this 2026-09-03 08:03:15 +00:00 | 37 commits to main since this release

    Mehrtägige Termine sind im Monatsgitter jetzt ein Balken. Eine Messe von Montag bis Mittwoch stand bisher als drei Kästchen in drei Zellen — und drei Kästchen liest man als drei Termine; wo die Messe anfängt und aufhört, musste man abzählen. Jetzt läuft sie als ein Streifen durch, mit Pfeilspitzen an den Rändern, wenn sie über die Woche hinausgeht. Das gilt auch für Zeittermine über mehrere Tage, nicht nur für ganztägige: Das Monatsgitter hat keine Zeitachse, an der ein solcher Termin besser stünde. Die Wochenansicht konnte das schon; gerechnet wird jetzt beides mit derselben Reihenlogik statt mit zwei Fassungen davon.

    Kalender lassen sich nebeneinanderlegen. Der Knopf links neben Monat / Woche / Tag gibt jedem angehakten Kalender eine eigene Spalte mit eigenem Gitter und Namen darüber — statt alle Termine in ein Gitter zu legen. Übereinander bleibt die Vorgabe: Wer zwei Kalender anhakt, sucht meist die Lücke, in der beide frei sind, und die sieht man nur in einem Gitter. Nebeneinander ist die andere Frage — was macht der Kollege am Dienstag? Unter einer Mindestbreite je Spalte wird gerollt statt gequetscht; ein unlesbares Gitter ist schlechter als eine Rollleiste. Der Knopf steht ausgegraut da, solange nur ein Kalender angehakt ist, und sagt im Hinweis, was fehlt.

    Der Streifen an ungelesenen Nachrichten ist doppelt so breit und lässt sich anklicken. Vier Punkt statt zwei — er ist das einzige Zeichen, das bleibt, wenn jemand die Schriftgrade der Listenzeile verstellt, und auf einem hellen Schirm ging er gegen den Rand der Liste verloren. Ein Klick darauf schaltet gelesen und ungelesen um, ohne die Nachricht zu öffnen oder auszuwählen. Getroffen wird eine breitere Fläche, als zu sehen ist: Vier Punkt trifft niemand mit der Maus. Auf einer gelesenen Zeile erscheint der Streifen blass unter dem Zeiger — eine unsichtbare Fläche, die auf Klick etwas tut, findet sonst niemand.

    Trennlinien und Schriftfarbe stehen jetzt im schnellen Ansichts-Menü (die drei Schieberegler oben rechts), nicht mehr nur auf der Einstellungsseite. Beides entscheidet sich am Aussehen der Mailliste — und die ist auf der Einstellungsseite gerade nicht zu sehen. Wer probiert, ob die Linien nun reichen, soll dabei hinsehen können.

    Das Verfassen-Fenster merkt sich das Vollbild. Wer einmal auf die ganze Fläche stellt, schreibt lange Mails; ihn bei jedem neuen Entwurf wieder in die Ecke zu setzen, war derselbe Griff jeden Tag. Gemerkt wird nur, was jemand selbst angefasst hat — die Vorgabe bleibt das kleine Fenster. Lage und Grösse des kleinen Fensters bleiben getrennt davon liegen, damit der zweite Druck wirklich dorthin zurückbringt, wo es stand.

    Downloads
  • v0.2.3 a07ed80b37

    SHUFTN 0.2.3 Stable

    Timba released this 2026-09-03 06:34:21 +00:00 | 38 commits to main since this release

    Strg+Z ging immer noch nicht — und diesmal war der Grund ein anderer. 0.2.2 hat den einen Fall behoben (der Auftrag liegt noch im Postausgang). Darunter lag ein zweiter, älterer Fehler, den der erste verdeckt hatte: Das Zurückschieben ging an ein Postfach ohne Namen.

    Die Oberfläche löst zu jeder Zeile ihr Postfach auf. Bei einem gewöhnlichen Ordner des Hauptpostfachs kommt dabei nichts heraus — und ob daraus unterwegs „nichts" oder „leerer Name" wurde, entschied eine einzige Zeile. Mit dem leeren Namen kehrte im Kern jeder Handgriff still um und meldete Erfolg. Das Verschieben tat nichts, sagte aber, es habe geklappt.

    Ein Postfach ohne Namen gibt es nicht. Leer heisst deshalb jetzt überall dasselbe wie gar nichts — an dreizehn Stellen im Leser, im Kern und in der Oberfläche, damit es nicht an der vierzehnten wieder entsteht.

    Weitergeleitete Mails kamen als nackter Text an. Tabellen, Fettdruck, Bilder, das Layout des Absenders — alles weg. Das Verfassen-Fenster baute das Zitat aus den Absätzen ohne Auszeichnung, obwohl die ausgezeichnete Fassung die ganze Zeit danebenlag; benutzt wurde sie nur beim Weiterschreiben eines Entwurfs. Jetzt geht das Original mit, wie es kam — bei Weiterleitungen und bei Antworten.

    Fremdes HTML kommt dabei entschärft in den Entwurf: Der Lesebereich zeigt es in einem abgeschotteten Rahmen, der Editor ist keiner. Skripte, Stilblöcke und eingebettete Fenster fliegen heraus, ebenso alles, was sich über das Programm legen könnte. Die Auszeichnung selbst bleibt — sie ist ja der Zweck.

    Die Signatur stand unter der ganzen Mail statt unter dem eigenen Text. Sie wurde schlicht angehängt und landete damit unter dem Zitat: Wer antwortete, unterschrieb am Ende fremder Post. Jetzt sitzt sie an derselben Grenze, an der auch der Schreibhelfer aufhört.

    Die vorherige Nachricht lässt sich einklappen. Sie stand offen im Entwurf; wer eine lange Mail weiterleitete, scrollte an fremdem Text vorbei, um an seinen eigenen zu kommen. Jetzt hat sie einen Balken wie die Signatur — beide mit dem Aufklapp-Pfeil vorne und einer Marke, die sagt, was da steht. Eingeklappt heisst nur „nicht angezeigt": Mitgeschickt wird sie trotzdem, und der Balken sagt auch das.

    Die Fenster zum Verfassen haben jetzt Vollbild. Ein Griff, und der Entwurf nimmt die ganze Fläche; der zweite bringt ihn zurück.

    Escape beendet das Verfassen — mit Rückfrage. Wie in Outlook: speichern, verwerfen oder weiterschreiben. Ein leeres Fenster geht ohne Frage zu; eine Rückfrage vor dem Wegwerfen von nichts ist eine Rückfrage zu viel. Gefragt wird nach dem, was oberhalb des Zitats steht — bei einer Antwort steht das Zitat schon da, ohne dass jemand etwas geschrieben hätte.

    Dabei kam heraus, dass Escape das Verfassen-Fenster schon immer geschlossen hat, und zwar aus der Anwendung heraus, ohne zu fragen. Jetzt entscheidet das Fenster selbst, was Escape bedeutet.

    Escape schliesst zuerst die Empfängervorschläge. Wer eine Adresse tippt, die der Bestand kennt, bekommt eine Liste über das halbe Fenster; sie loszuwerden ging nur, indem man woandershin klickte. Erst wenn keine Vorschläge dastehen, meint Escape das Fenster.

    Strg+A markiert alle Mails der Liste. „Sichtbar" und nicht „alles im Ordner": Steht die Liste auf „Ungelesen", meint die Taste die ungelesenen — was man sieht, ist was man greift.

    Die Ordner unter „Favoriten" stehen jetzt hervorgehoben da. Name und Postfachadresse waren gleich laut, obwohl die Adresse nur zur Unterscheidung dasteht.

    Trennlinien und Schriftfarbe lassen sich einstellen. Die Linien in drei Stufen — die Vorgabe ist absichtlich leise, aber auf einem hellen Schirm verschwindet sie ganz, und dann ist „leise" nur ein anderes Wort für „nicht da". Bei der Schrift wird eine Farbe gewählt, die der Hauptschrift; die beiden gedämpften Stufen leiten sich daraus ab. Drei Felder wären drei Gelegenheiten, die Abstufung zu zerstören.

    Aufgaben und Notizen werden jetzt abgeglichen — bei Exchange. Bis hierher lagen beide allein auf diesem Rechner: Wer in Outlook ein Häkchen setzte, sah es in SHUFTN nicht, und umgekehrt genauso. Jetzt holt SHUFTN sie aus dem Postfach (IPM.Task und IPM.StickyNote) und schreibt Änderungen zurück — anlegen, ändern, abhaken, löschen.

    Beim Ändern gehen nur die Felder hinaus, die SHUFTN führt: Titel, Fälligkeit, erledigt. Verantwortliche, Fortschritt und Erinnerungen bleiben, wie Outlook sie hält. Was das Programm nicht kennt, fasst es nicht an.

    Bei Microsoft 365 gilt das nur für Aufgaben. Dort schreibt SHUFTN jetzt auch in Microsoft To Do zurück — Notizen aber kann Graph nicht: Für die Outlook-Notizen gibt es dort keinen Zugang. Sie bleiben auf dem Rechner liegen, und die Rückfrage vor dem Trennen sagt es.

    Senden dauerte manchmal Minuten. Nicht das Senden selbst — die Nachricht lag im Postausgang und wartete. Nach dem Abschicken stösst SHUFTN den Postausgang an, und dieser Anstoss gab auf, wenn der Kern gerade abglich. Dann ging die Mail erst mit dem Ende dieses Abgleichs hinaus, bei einem gewachsenen Postfach also bis zu einer Minute später — und wenn gar kein Abgleich lief und die Sperre nur knapp verfehlt wurde, erst mit dem nächsten Takt. Fünf Minuten für eine Mail, die man abgeschickt hat.

    Jetzt stellt sich der Anstoss an, statt aufzugeben. Das kostet nichts: Der Befehl ist längst zurück, gewartet wird nebenher. Dieselbe Ursache wie bei Strg+Z, und dieselbe an acht weiteren Stellen — Löschen, Verschieben, Gelesen, Markieren.

    Trennen nimmt Notizen und Aufgaben mit — und sagt es jetzt vorher. Sie hängen an der lokalen Ablage, und die räumt „Trennen" ganz. Bei Nachrichten, Kontakten und Terminen ist das harmlos: Die holt der nächste Abgleich zurück. Notizen gleicht SHUFTN mit keinem Anbieter ab, und Aufgaben bei Exchange auch nicht — die waren nach einem Klick endgültig weg, ohne ein Wort.

    Jetzt steht vorher da, was es kostet, und zwar mit Zahlen: „demo@…: 2 Notizen und 1 Aufgabe". Gibt es nichts zu verlieren, wird auch nicht gefragt — eine Rückfrage, die immer kommt, liest nach dem dritten Mal niemand mehr. Was wiederkommt, steht bewusst nicht in der Aufzählung.

    Beim Zurücknehmen eines Stapels kam nur die erste Nachricht wieder. Zwanzig gelöschte Mails auf einmal zurückzuholen heisst zwanzig Züge und danach eine Runde zum Ordner — nicht zwanzig. Die Bremse dafür liess Übersprungene aber einfach fallen, und weil die Züge nacheinander laufen, holte die eine Runde nur die erste zurück. Die anderen neunzehn erschienen erst mit dem nächsten Abgleich, also womöglich fünf Minuten später. Jetzt wird eine Runde vorgemerkt, statt sie fallenzulassen.

    Der Push fällt nicht mehr wegen einer Netzdelle dauerhaft auf den Takt zurück. Lehnte der Server das Lauschen ab, merkte SHUFTN sich das für die ganze Sitzung — richtig bei einem Exchange, der es nicht kann, falsch bei einem Serverfehler 500, der in einer Minute vorbei ist. Entschieden wird das jetzt von derselben Einstufung, die im ganzen Programm gilt: nur was endgültig ist, zählt als „kann er nicht".

    Und Strg+Z stösst den Postausgang nicht mehr an. Ein Zug, der noch liegt, soll gar nicht mehr hinaus; ihn erst loszuschicken, um ihn danach zurückzuholen, wären zwei Wege zum Anbieter für nichts. Der Anstoss wartete ausserdem auf den Kern, und der ist während eines Abgleichs Minuten gesperrt — Strg+Z stand so lange still.

    Downloads
  • v0.2.2 5842ff7d86

    SHUFTN 0.2.2 Stable

    Timba released this 2026-09-02 19:44:53 +00:00 | 39 commits to main since this release

    Strg+Z ging nicht, wenn man es sofort drückte. Wer gleich nach dem Löschen zurücknahm, bekam „Der Auftrag ist noch nicht beim Anbieter — er steht im Postausgang", und die Mail blieb weg. Es gab nur einen Rückweg: warten, bis der Zug beim Anbieter durch ist, und dann zurückschieben. Lag der Auftrag noch, wartete die Oberfläche vier Sekunden auf eine Kennung, die es noch gar nicht gab.

    Dabei ist genau das der einfachere Fall: Solange der Zug im Postausgang liegt, ist beim Anbieter nichts passiert — die Nachricht steht unverändert an ihrem Platz. Jetzt wird der Auftrag weggeworfen und die eine Nachricht zurückgeholt. Kein Zug hin, kein Zug her.

    Zwei Feinheiten, die dazugehören: Der Postausgang wird beim Zurücknehmen angestossen und abgewartet — die Anstösse nebenher geben auf, wenn der Kern gerade abgleicht, und genau daran scheiterte es. Und das Wegwerfen prüft im selben Atemzug, ob der Auftrag noch offen ist: Zwischen „nachsehen" und „wegwerfen" könnte der Versand ihn hinausgeschickt haben, und dann wäre die Zeile weg, während die Nachricht schon gewandert ist.

    Downloads
  • v0.2.1 c17312d23c

    SHUFTN 0.2.1 Stable

    Timba released this 2026-09-02 18:20:59 +00:00 | 41 commits to main since this release

    Der Altbestand automatischer Antworten wird jetzt ganz ausgetragen. In 0.2.0 räumte diese Regel nur dort auf, wo sie ohnehin hinsah: in den neuesten zehntausend Nachrichten je Postfach. Die Abwesenheitsnotizen und Zustellberichte der letzten zehn Jahre liegen aber über den ganzen Bestand verstreut. An einem gewachsenen Postfach nachgezählt: 1 031 stehen in der Warteschlange, davon lagen 299 in Sichtweite — die übrigen 732 wären eingebettet worden, obwohl die Regel dagegen steht.

    Jetzt geht ein eigener Durchgang einmalig durch die ganze Warteschlange und merkt sich, dass er gelaufen ist. Rund 898 000 Token, die nicht gerechnet werden. Gelesen wird dabei nur die erste Zeile je Eintrag — der ganze Text wären 310 Millionen Zeichen.

    Downloads
  • v0.1.9 c3b5cce001

    SHUFTN 0.1.9 Stable

    Timba released this 2026-09-02 13:02:43 +00:00 | 42 commits to main since this release

    Das Einbettungsmodell lässt sich jetzt wirklich einrichten. In 0.1.8 stand das Feld schon da, aber der Knopf lief ins Leere — der Handgriff dahinter war nicht angemeldet. Das ist behoben, und eine Prüfung sorgt dafür, dass so etwas nicht noch einmal bis zur Auslieferung durchkommt.

    Ein Konto hinzufügen geht jetzt über ein Fenster. Unter Einstellungen → Konten stand das Formular dauerhaft aufgeklappt — Protokollwahl, Adresse, Serverfelder, zwei Knöpfe. Ein Postfach hinzuzufügen tut man einmal; jetzt steht dort ein Knopf, und der Weg dahin öffnet sich, wenn man ihn geht. Zur Wahl stehen Exchange, IMAP/SMTP und Microsoft 365 — in dieser Reihenfolge, Exchange vorausgewählt. IMAP und SMTP sind ausgegraut und als „folgt" gekennzeichnet: SHUFTN spricht Exchange und Microsoft 365, und was es nicht gibt, soll auch nicht wie ein Angebot aussehen.

    Die Statusleiste zeigt keine Zahl mehr, die nichts bedeutet. Neben dem Bestand stand „27.479 indiziert" — die Zahl eines Suchindex, den SHUFTN seit dem Umbau nicht mehr liest. Sie sah aus wie ein Rückstand, holte aber nie auf, weil sie es auch nicht soll. Gesucht wird über den Volltext, und der ist vollständig; wenn dort etwas fehlt, steht es weiterhin in einer eigenen Zeile.

    Die Einstellungen sitzen wieder auf einer Kante. Die Schalter waren schmaler als die Karten daneben. Zwei Erklärsätze, die nichts erklärten, sind weg.

    Downloads
  • v0.1.8 566898842d

    SHUFTN 0.1.8 Stable

    Timba released this 2026-09-02 12:05:08 +00:00 | 43 commits to main since this release

    Die Bedeutungssuche kann jetzt Bedeutung. Unter Einstellungen → Assistent lässt sich ein Einbettungsmodell eintragen — derselbe Endpunkt, derselbe Schlüssel, ein anderes Modell. Bisher füllte ein Wort-Streuwert den Vektorindex; der findet Wortüberschneidungen, keine Bedeutung. Was der Aufbau kostet, steht wie jeder andere Modellaufruf in der Verbrauchsliste, unter eigenem Anlass.

    Zwei Dinge sagt SHUFTN dabei von selbst: wie breit die Vektoren des Modells sind (es fragt den Endpunkt, statt eine Zahl eintippen zu lassen), und wie viele vorhandene Vektoren ein Modellwechsel wegwirft — die sind nicht bloss weg, sie werden neu gerechnet und kosten dabei erneut.

    Der Assistent liest die richtige Signatur. Beim Übernehmen eines Kontakts aus einer Antwort kam bisher oft der Kontakt des Vorredners heraus, mit dessen Nummer: Das Abschneiden des Zitats arbeitete zeilenweise, und Mails aus HTML haben keine Zeilenumbrüche. Betroffen war der grösste Teil des Schriftverkehrs. Dasselbe galt für die Erkennung von Du und Sie.

    Der Abgleich braucht keine Minute mehr. Er lief 55 bis 69 Sekunden durch, auch wenn es gar nichts Neues gab — im Protokoll stand das als „0 neu, 0 weg". Die Zeit ging in ein Sicherheitsnetz: SHUFTN suchte bei jedem Lauf nach Nachrichten, denen die Einbettung fehlt, und las dafür zehntausend Zeilen je Postfach mit vollem Inhalt. Gemessen: 47 Sekunden, um nichts zu finden. Das Netz wird jetzt einmal je Programmstart gespannt statt alle fünf Minuten, und es liest nur noch, was es braucht — zwei Sekunden statt siebenundvierzig.

    Das Fenster steht nicht mehr sechzehn Sekunden. Beim Start und nach jedem Abgleich hielt SHUFTN an — im Leistungsprotokoll gemessen: dreizehn bis achtzehn Sekunden, immer wieder. Die Ursache war die Liste der Kategorien: Sie wurde aus dem gesamten Nachrichtenbestand zusammengesucht, 187 000 Zeilen für vier Namen, und das auf dem Thread, der das Fenster zeichnet. Die Namen werden jetzt beim Schreiben mitgeführt. Beim ersten Start nach dem Update dauert es einmalig ein paar Sekunden, bis der vorhandene Bestand nachgetragen ist — danach nie wieder.

    Die Suche sitzt jetzt als Lupe über der Nachrichtenliste. Sie stand kurz als eigener Punkt in der Leiste links; das war eine Spalte zu weit weg. Gesucht wird in Nachrichten, also steht der Schalter dort, wo die Nachrichten stehen — neben der Sortierung. Ein Klick klappt die Suche auf, ein zweiter wieder zu, und dazwischen bleibt sie stehen, während man liest.

    Downloads