Compare commits

...
8 Commits
Author SHA1 Message Date
Timba 8eb13a4e15 SHUFTN 0.3.1 2026-09-04 15:12:39 +00:00
Timba a5fa153de3 SHUFTN 0.3.0 2026-09-04 14:38:10 +00:00
Timba 8d90df34e9 SHUFTN 0.2.9 2026-09-04 09:30:24 +00:00
Timba ddeebbb7ca SHUFTN 0.2.8 2026-09-04 09:03:38 +00:00
Timba 158b30b634 SHUFTN 0.2.7 2026-09-04 06:11:10 +00:00
Timba 95b2ac4003 SHUFTN 0.2.7 2026-09-04 06:10:35 +00:00
Timba 77f5190f6f SHUFTN 0.2.6 2026-09-03 10:27:56 +00:00
Timba c39aeacf08 SHUFTN 0.2.5 2026-09-03 09:38:20 +00:00
+5 -5
View File
@@ -1,11 +1,11 @@
{
"version": "0.2.4",
"notes": "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.\n\nKalender 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.\n\nDer 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.\n\nTrennlinien 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.\n\nDas 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.",
"pub_date": "2026-09-03T08:03:15Z",
"version": "0.3.1",
"notes": "Diktieren braucht keinen Endpunkt mehr — Whisper rechnet auf diesem Rechner. Das Modell dazu kommt als eigenes Paket, das man einspielt oder eben nicht.\n\nDiktieren geht jetzt ohne Endpunkt — auf diesem Rechner. Bisher brauchte das Diktat einen Dienst, der `POST /audio/transcriptions` annimmt. Am eigenen Endpunkt gemessen: `GET /v1/ki/models` antwortete 401 (die Route gibt es), `/audio/transcriptions` antwortete 404. Dort lief das Textmodell, aber keine Spracherkennung — und damit ging Diktieren gar nicht, ohne dass jemand am Server etwas nachrüstet.\n\nJetzt rechnet Whisper hier: Die Aufnahme verlässt den Rechner nicht, nicht einmal ins eigene Rechenzentrum. Wer ein Modell eingespielt hat, bekommt diesen Weg; wer keines hat, weiter den Endpunkt. Der Mikrofonknopf sagt im Zeigerfähnchen, welcher gerade gilt.\n\nAn einer gesprochenen Probe nachgemessen (die Sprachausgabe von Windows las einen Satz vor, 4,9 Sekunden):\n\ngeladen in 232 ms erkannt in 453 ms „Bitte senden Sie mir das Angebot für die Halle süd bis Freitag.\"\n\nGesprochen war „… Halle Süd …\" — bis auf die Grosschreibung Wort für Wort.\n\nDas Modell kommt als Plugin. `whisper-base` wiegt 277 MB, der Installer von SHUFTN 272 MB; beides zusammen hiesse ein halbes Gigabyte für jeden, auch für den, der nie diktiert. Es wird deshalb eingespielt wie der Editor — unter *Einstellungen → Erweiterungen*, mit Prüfsummen und der Möglichkeit, es wieder loszuwerden. Ohne Neustart: Ein Modell meldet kein Schema an, der Kern liest seine Dateien beim nächsten Diktat.\n\nDamit gibt es zwei Arten Plugin. Ein Modell nennt weder `schema` noch `einstieg`, und beides wird abgewiesen: Stünde dort ein Schema, lieferte SHUFTN die 277 MB Gewichte als Webseite aus. Was für Paketbauer gilt, steht in `PLUGINS.md` unter „Modelle\".\n\nGerechnet wird in reinem Rust. `whisper.cpp` wäre der verbreitetere Weg und hätte eine C++-Werkzeugkette in den Bau von SHUFTN gebracht — cmake, ein Compiler, plattformabhängige Schalter. Dann liesse sich SHUFTN nicht mehr mit `cargo build` allein übersetzen. Der Preis steht offen: auf der CPU langsamer als handoptimiertes C. Bei einem Diktat von zwanzig Sekunden ist das eine Frage von Sekunden.\n\nDas Umrechnen der Aufnahme (Opus → 16 kHz Mono) macht die Webansicht, nicht der Kern: Sie hat den Dekodierer eingebaut, und ihn in Rust nachzubauen hiesse wieder eine C-Bibliothek. Was der Kern bekommt, ist ein WAV — und was nicht 16 kHz Mono ist, weist er ab, statt es falsch zu deuten. Eine falsch gedeutete Abtastrate klingt für Whisper wie jemand, der zu schnell spricht, und liefert Text, den niemand als falsch erkennt.",
"pub_date": "2026-09-04T15:12:36Z",
"platforms": {
"windows-x86_64": {
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVRbENEalUzQ3RFRDk5OWRicHJIUVVvWTZwRCtxSkVRTXZXL2hhaDdvdnpuSzI1eVJWTzFyUm9BbTdZVlJPS3IvaDJ6M0UxZyt3SUNuUWlUYUkyQnlXZ0hDYVNhTnMvRUFZPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg4NDIyNDAzCWZpbGU6U0hVRlROXzAuMi40X3g2NC1zZXR1cC5leGUKSVY2YkZkZFRycmpqWFZsK3czQXp0bmZEUXpOTEN2dFVELzJZdnNwVFNOWml0d2drMVNZRXhERkMzdThoenU1aEcyQ3V2amdTdVFJTExUZGVtRk5nQXc9PQo=",
"url": "https://gitea.itm-technologies.de/ITM-GmbH/shuftn-releases/releases/download/v0.2.4/SHUFTN_0.2.4_x64-setup.exe"
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVRbENEalUzQ3RFRHhzUjE0VEd6WDJDK3FCazRieExqMzdQWmQ4T1B3SzNzZERDUUlkTGViNGxET1JlYmxVT0s2V3htNW1BYmxrMjZURkhIbVc4a0phNkdFOVEveHI5T0FNPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg4NTM0NzU1CWZpbGU6U0hVRlROXzAuMy4xX3g2NC1zZXR1cC5leGUKaVVaTjRTSGxwc3pyNGRSODdMWWc4bVgxaFRhMWVhVE5CcWRja0hhaGpla0NIRGEwb0Q1aExJUmxkelZZaUQ4RngwK0FVTXJtWDZ6TDBxNDZORDJnQnc9PQo=",
"url": "https://gitea.itm-technologies.de/ITM-GmbH/shuftn-releases/releases/download/v0.3.1/SHUFTN_0.3.1_x64-setup.exe"
}
}
}