Kante

One style for the web and for apps: the same palette, type, shapes and roles on landing pages and in Qt Quick, Kirigami and Plasma. Every box has its top-right corner cut, the edge (Kante) that gives the system its name.

Ein Stil für Web und Apps: dieselbe Palette, Schrift, Formen und Rollen auf Landing Pages und in Qt Quick, Kirigami und Plasma. Jede Fläche hat ihre obere rechte Ecke abgeschnitten, die Kante, nach der das System heißt.

<link rel="stylesheet" href="https://shrippen.github.io/v1/shrippen.css">

Plus shrippen.js for the language switch, copy buttons and tabs. Apps copy the QML module qml/Kante unchanged.

Dazu shrippen.js für Sprachumschalter, Kopierknöpfe und Tabs. Apps kopieren das QML-Modul qml/Kante unverändert.

1palette.json for web and appspalette.json für Web und Apps
92QML componentsQML-Komponenten
3variants: Kante, Light, GoldVarianten: Kante, Light, Gold
0raw colours outside the tokensfeste Farben außerhalb der Tokens
Web

Landing pages and web apps

Landing Pages und Web-Apps

One built stylesheet with tokens, base styles and components: hero, feature boxes, tabs, dialogs, tables, conversations. Every shrippen landing page links it, so a change here reaches all of them.

Ein gebautes Stylesheet mit Tokens, Grundstilen und Komponenten: Hero, Funktionskästen, Tabs, Dialoge, Tabellen, Gespräche. Jede shrippen-Landing-Page bindet es ein, eine Änderung hier erreicht also alle.

Qt Quick · Kirigami · Plasma

Apps and widgets

Apps und Widgets

The QML module Kante brings the same shapes, sizes and motion to apps, KantePlasma wraps the Plasma components for widgets. Tested with qmltestrunner on every build.

Das QML-Modul Kante bringt dieselben Formen, Größen und Bewegungen in Apps, KantePlasma umhüllt die Plasma-Komponenten für Widgets. Bei jedem Build mit qmltestrunner getestet.

Tokens

One source of truth

Eine Quelle

tokens/palette.json feeds the CSS, the QML palette and Knust's Kimai palette. A check fails the build on any raw colour or font outside the tokens.

tokens/palette.json speist das CSS, die QML-Palette und Knusts Kimai-Palette. Eine Prüfung bricht den Build bei jeder festen Farbe oder Schrift außerhalb der Tokens ab.

Variants

Varianten

Same components, classes and roles; only the values underneath change.

Gleiche Komponenten, Klassen und Rollen; nur die Werte darunter ändern sich.

WhereWoCharacterCharakter
KanteDefault, dark (Gruvbox), light “Leinen” for appsStandard, dunkel (Gruvbox), hell „Leinen“ für AppsWarm neutrals, yellow for action, cyan for focus and linksWarme Neutraltöne, Gelb für Aktionen, Cyan für Fokus und Links
Kante LightApps next to Breeze / KirigamiApps neben Breeze / KirigamiAll colours from the platform, Kante brings shape and typeAlle Farben von der Plattform, Kante bringt Form und Schrift
Kante Golddata-kante="gold", Kintsugi onlydata-kante="gold", nur KintsugiLacquer and gold leaf: gilded cut edges, Spectral titles, gliding motionLack und Blattgold: vergoldete Schnittkanten, Spectral-Titel, gleitende Bewegung

Use it

Einbinden

  1. Landing page: start from templates/landing.html, it links the stylesheet.
  2. Offline web app: vendor shrippen.css, shrippen.js, fonts.css and fonts/ from https://shrippen.github.io/v1/ unchanged.
  3. Qt Quick / Kirigami app: copy qml/Kante; Plasma widget: also qml/KantePlasma.
  4. Missing something? It goes into Kante first, then into the project.
  1. Landing Page: mit templates/landing.html anfangen, sie bindet das Stylesheet ein.
  2. Web-App ohne Netz: shrippen.css, shrippen.js, fonts.css und fonts/ von https://shrippen.github.io/v1/ unverändert übernehmen.
  3. Qt-Quick-/Kirigami-App: qml/Kante kopieren; Plasma-Widget: zusätzlich qml/KantePlasma.
  4. Fehlt etwas? Es kommt zuerst in Kante, dann ins Projekt.

For Kimai: Knust and the plugin kit

Für Kimai: Knust und das Plugin-Kit

Knust is Kante's spinoff for Kimai, a theme plugin on top of Tabler with its palette generated from Kante. The plugin kit (kpu-* macros, CSS and JS) says what an element is; Knust decides how it looks. Both live in this repository.

Knust ist Kantes Ableger für Kimai, ein Theme-Plugin auf Tabler, dessen Palette aus Kante erzeugt wird. Das Plugin-Kit (kpu-*-Makros, CSS und JS) sagt, was ein Element ist; Knust entscheidet, wie es aussieht. Beide liegen in diesem Repository.

Knust

Changes

Änderungen

  1. 1.75.1

    Calendars with many days open faster and follow a new width at once.

    Kalender mit vielen Tagen öffnen schneller und folgen einer neuen Breite sofort.

    ImprovedVerbessert

    • KanteCalendarHeatmap: each day was an item of its own with its name for screen readers, 1800 of them on Mitori's page of five years. The days are now drawn as one shape, and a screen reader hears a week at a time, every day of it with its date and tip. The page opened in 744 ms, now in about 525 ms with this alone; a new width moves no items any more, which made a calendar that fits its weeks to the width slow. It looks the same.
    • KanteCalendarHeatmap: Jeder Tag war ein eigenes Element mit eigenem Namen für Screenreader, 1800 davon auf Mitoris Seite mit fünf Jahren. Die Tage werden jetzt als eine Form gezeichnet, und ein Screenreader hört eine Woche auf einmal, jeden Tag darin mit Datum und Tooltip-Text. Die Seite öffnete in 744 ms, jetzt allein dadurch in etwa 525 ms; eine neue Breite verschiebt keine Elemente mehr, das machte einen Kalender langsam, der seine Wochen an die Breite anpasst. Er sieht gleich aus.
    All changesAlle Änderungen
  2. 1.75.0

    A document can show where the fields' values stand.

    Ein Dokument kann zeigen, wo die Werte der Felder stehen.

    NewNeu

    • .doc-reader, .doc-pages, .doc-page: the page a .doc-view frame shows, a bar and the pages to scroll, for apps that draw a document themselves.
    • .doc-mark: a mark on a page in the theme's primary colour, so what a field holds can be found in the document at a glance.
    • .doc-reader, .doc-pages, .doc-page: die Seite, die ein .doc-view-Rahmen zeigt, eine Leiste und die Seiten zum Scrollen, für Apps, die ein Dokument selbst zeichnen.
    • .doc-mark: eine Markierung auf einer Seite in der Primärfarbe des Themes, damit sich der Wert eines Felds im Dokument auf einen Blick findet.
    A receipt in its frame with a bar on top, amount and date marked
    All changesAlle Änderungen
  3. 1.74.3

    Tiles answer to Enter, and long hints stay readable.

    Kacheln reagieren auf Enter, lange Hinweise bleiben lesbar.

    FixedBehoben

    • KanteOptionTile: Return and Enter did nothing, only Space chose a tile. KanteTile also takes the keypad's Enter now.
    • KanteOptionTile: title and hint were cut after one line. They now show in up to two lines.
    • KanteOptionTile: Return und Enter taten nichts, nur die Leertaste wählte eine Kachel. KanteTile nimmt jetzt auch Enter vom Ziffernblock.
    • KanteOptionTile: Titel und Hinweis wurden nach einer Zeile abgeschnitten. Sie zeigen jetzt bis zu zwei Zeilen.
    All changesAlle Änderungen
Older releasesÄltere Versionen
  1. 1.74.2

    Calendars with many days open twice as fast.

    Kalender mit vielen Tagen öffnen doppelt so schnell.

    ImprovedVerbessert

    • KanteCalendarHeatmap: a year of days took about 95 ms to create, each day with its own handlers, tooltip and date calculations. The days now share one tooltip and one pair of handlers and read their dates from one list: about 47 ms. A page with several years opens noticeably sooner on a phone. It looks and behaves as before, and screen readers still hear each day.
    • KanteCalendarHeatmap: Ein Jahr Tage brauchte beim Erstellen etwa 95 ms, jeder Tag mit eigenen Handlern, eigenem Tooltip und eigenen Datumsrechnungen. Die Tage teilen sich jetzt einen Tooltip und ein Paar Handler und lesen ihr Datum aus einer Liste: etwa 47 ms. Eine Seite mit mehreren Jahren öffnet auf dem Telefon spürbar früher. Aussehen und Verhalten bleiben gleich, Screenreader hören weiter jeden Tag.
    All changesAlle Änderungen
  2. 1.74.1

    Symbols sharp again on Plasma, and buttons with a margin under the desktop style.

    Symbole auf Plasma wieder scharf, und Knöpfe mit Rand unter dem Desktop-Stil.

    FixedBehoben

    • Icons drawn by KanteIcon came out grey and soft in a layout on Plasma: 1.73.0 asked the theme for the file before the size was known and scaled the wrong one. It now picks after the size is set, and again at a new size.
    • KanteButton: icon and label ran to the edge under the desktop style (Plasma, plasmoids), whose padding is 0. A button with a label now keeps at least 8 px on each side, a lone symbol stays in the middle even on a narrow button; styles with at least that much padding look as before, Fusion (4 px) gets a little wider.
    • Symbole aus KanteIcon wurden in einem Layout auf Plasma grau und weich: 1.73.0 fragte das Thema nach der Datei, bevor die Größe feststand, und skalierte die falsche. Es wählt jetzt, nachdem die Größe gesetzt ist, und bei einer neuen Größe erneut.
    • KanteButton: Symbol und Text liefen unter dem Desktop-Stil (Plasma, Plasmoids), dessen Polster 0 ist, bis an den Rand. Ein Knopf mit Text behält jetzt mindestens 8 px je Seite, ein einzelnes Symbol bleibt auch im schmalen Knopf mittig; Stile mit mindestens so viel Polster sehen aus wie vorher, Fusion (4 px) wird etwas breiter.
    Buttons with an icon and label, the upper row with 1.73.0: a grey, soft floppy disk and text against the edge; the lower row with 1.74.1: sharp symbols and a margin
    All changes in 1.74.1 →Alle Änderungen in 1.74.1 →
  3. 1.74

    A workbench that keeps the receipt in view, with each field's sources side by side.

    Eine Werkbank, die den Beleg im Blick behält, mit den Quellen jedes Felds nebeneinander.

    NewNeu

    • The workbench's desk can hold a document beside its fields. The document stays in view while the fields scroll, so the fields can be checked against the paper at any time.
    • A comparison table shows one row per field: what each source says, then the value it will hold. A click on a value takes it, and a source that differs from the others stands out.
    • Der Arbeitsbereich der Werkbank kann ein Dokument neben seinen Feldern zeigen. Es bleibt stehen, während die Felder scrollen, sodass sich jedes Feld jederzeit am Papier prüfen lässt.
    • Eine Vergleichstabelle zeigt je Feld eine Zeile: was jede Quelle sagt, dann den Wert, den das Feld bekommt. Ein Klick auf einen Wert übernimmt ihn, und eine abweichende Quelle fällt auf.
    A workbench in dark Kante: a list of bank lines, a comparison table with date and category from bank, receipt and suggestion, and a document area on the right
    All changes in 1.74 →Alle Änderungen in 1.74 →
  4. 1.73

    Everything sits where it should: buttons centred, icons in their colour on every platform, placeholders inside the field.

    Alles sitzt, wo es soll: Knöpfe mittig, Symbole auf jeder Plattform in ihrer Farbe, Platzhalter im Feld.

    NewNeu

    • KanteSliderSkin.trackColor: the colour of the track, for a slider on a dark stage where the sunken default does not show.
    • KanteSliderSkin.trackColor: die Farbe der Spur, für einen Schieber auf einer dunklen Bühne, auf der die vertiefte Vorgabe nicht zu sehen ist.

    FixedBehoben

    • KanteButton: icon and label sat 2 px too low under the Material controls (Android, AppImage), because the content followed the style's uneven padding. They now stand in the middle.
    • Icons in buttons, chips, tabs, menus and tiles stayed dark on the dark ground on Android and in an AppImage: Kirigami.Icon colours a mask only with the Plasma theme. The new KanteIcon colours them on every platform.
    • KanteTextField: Material floated the placeholder above a focused field, across the frame and cut off at the edge of a bar. It now stays inside the box, and a long one is shortened. This also holds for KanteDateField.
    • KanteButton: Symbol und Text saßen unter den Material-Controls (Android, AppImage) 2 px zu tief, weil der Inhalt dem ungleichen Polster des Stils folgte. Sie stehen jetzt in der Mitte.
    • Symbole in Knöpfen, Chips, Tabs, Menüs und Kacheln blieben auf Android und im AppImage dunkel auf dem dunklen Grund: Kirigami.Icon färbt eine Maske nur mit dem Plasma-Thema. Das neue KanteIcon färbt sie auf jeder Plattform.
    • KanteTextField: Material ließ den Platzhalter im fokussierten Feld über den Rahmen schweben, am Rand einer Leiste abgeschnitten. Er bleibt jetzt im Feld, ein langer wird gekürzt. Das gilt auch für KanteDateField.
    Controls in Leinen: transport bar with centred symbols and label, a note line with its placeholder in the field, a search field
    All changes in 1.73 →Alle Änderungen in 1.73 →
  5. 1.72

    A suggestion under a field: the app offers values, the user picks one with a click.

    Ein Vorschlag unter einem Feld: Die App bietet Werte an, der Nutzer nimmt einen mit einem Klick.

    NewNeu

    • A field can show a second line with suggestions, small below it (“Vorschlag: Hosting, Software”), as Paperless-ngx does. A click on a value puts it into the field, and the app hears it as if the user had chosen it. Nothing is filled in on its own: what a learned model guesses stays a suggestion until the user takes it. Built for Andon's VAT check.
    • Ein Feld kann eine zweite Zeile mit Vorschlägen zeigen, klein darunter („Vorschlag: Hosting, Software“), wie Paperless-ngx. Ein Klick auf einen Wert setzt ihn ins Feld, und die App erfährt es, als hätte der Nutzer ihn gewählt. Nichts wird von selbst ausgefüllt: Was ein gelerntes Modell rät, bleibt ein Vorschlag, bis der Nutzer ihn nimmt. Gebaut für Andons USt-Prüfung.
    Three fields in dark Kante, each with a small grey line below it: Kategorie, an empty select, Vorschlag: Hosting as a cyan link; EÜR-Zeile with Arbeitsmittel chosen, Vorschlag: Arbeitsmittel in plain text, then Telekommunikation and Miete as cyan links; Lieferant, an empty input, Vorschlag: Kabelwerk Studiobedarf, Netzhafen Hosting GmbH
    Suggestions under three fields; Arbeitsmittel is takenVorschläge unter drei Feldern; Arbeitsmittel ist übernommen
    All changes in 1.72 →Alle Änderungen in 1.72 →
  6. 1.71

    A dialog with a wrapping text no longer reports a binding loop while it is built.

    Ein Dialog mit umbrechendem Text meldet beim Aufbau keine Bindungsschleife mehr.

    FixedBehoben

    • KanteDialog (1.70 measured its content): the content height follows once the dialog is built. While Qt built it, Kante's header and colours arrived and a wrapping text changed its height inside the dialog's own height: Mitori's question before deleting a notebook reported a binding loop.
    • KanteDialog (1.70 misst seinen Inhalt): Die Inhaltshöhe folgt, sobald der Dialog aufgebaut ist. Während Qt ihn aufbaute, kamen Kantes Kopf und Farben an, und ein umbrechender Text änderte seine Höhe mitten in der Höhe des Dialogs: Mitoris Frage vor dem Löschen eines Notizbuchs meldete eine Bindungsschleife.
    All changes in 1.71 →Alle Änderungen in 1.71 →
  7. 1.70

    A dialog of its content's size measures its content.

    Ein Dialog in der Größe seines Inhalts misst seinen Inhalt.

    FixedBehoben

    • KanteDialog with size Fit: the dialog takes its content's width and height. Its colour scope is a second child of the content, and Qt measures a popup's content only from a single child: the dialog was 0 wide, and a text without contentHeight ran into the buttons. The dialog now takes the size from the app's item; the scope stays where it is (it themes disabled items, 1.51). Found in Mitori (its own Shinki dialog had the same pattern).
    • KanteDialog mit Größe Fit: Der Dialog nimmt Breite und Höhe seines Inhalts. Sein Farb-Scope ist ein zweites Kind im Inhalt, und Qt misst den Inhalt eines Popups nur bei einem einzigen Kind: Der Dialog war 0 breit, und ein Text ohne contentHeight lief in die Knöpfe. Jetzt nimmt der Dialog die Größe vom Element der App; der Scope bleibt, wo er ist (er färbt deaktivierte Elemente, 1.51). Gefunden in Mitori (dessen Shinki-Dialog hatte dasselbe Muster).
    All changes in 1.70 →Alle Änderungen in 1.70 →
  8. 1.69

    A chip that is one choice of a set keeps the app's choice.

    Ein Chip, der eine Wahl aus einer Reihe ist, behält die Wahl der App.

    FixedBehoben

    • KanteChip with choice: a tap only reports (clicked), checked stays the app's binding. Before, a tap toggled the chip itself and broke the binding: an old choice stayed marked, and a second tap on the chosen chip cleared it. Found in Mitori (grade chips).
    • KanteChip mit choice: Ein Tipp meldet nur (clicked), checked bleibt die Bindung der App. Bisher schaltete ein Tipp den Chip selbst um und brach die Bindung: Eine alte Wahl blieb markiert, und ein zweiter Tipp auf den gewählten Chip hob sie auf. Gefunden in Mitori (Grad-Chips).
    All changes in 1.69 →Alle Änderungen in 1.69 →
  9. 1.68

    A heading that may wrap shows its whole text in Kante too.

    Eine Überschrift, die umbrechen darf, zeigt auch in Kante ihren ganzen Text.

    FixedBehoben

    • KanteHeading with wrapMode breaks a long title into lines in Kante and Kante Light; before, Kante drew it on one line and cut it off with “…”. Found in Mitori (long comment titles).
    • KanteHeading mit wrapMode bricht einen langen Titel in Kante und Kante Light in Zeilen um; bisher zeichnete Kante ihn einzeilig und schnitt ihn mit „…“ ab. Gefunden in Mitori (lange Titel der Kommentare).
    All changes in 1.68 →Alle Änderungen in 1.68 →
  10. 1.67

    An app can offer Leinen as a choice of its own: Kante's light palette no longer depends on a light platform theme.

    Eine App kann Leinen als eigene Wahl anbieten: Kantes helle Palette hängt nicht mehr am hellen Plattform-Thema.

    NewNeu

    • KanteStyle.preferLight forces Leinen whatever the platform theme says, as preferDark forces dark (preferDark wins when both are set). For Mitori's style setting, which offers Kante and Leinen side by side.
    • KanteStyle.preferLight erzwingt Leinen, gleich was das Plattform-Thema sagt, so wie preferDark dunkel erzwingt (preferDark gewinnt, wenn beide gesetzt sind). Für Mitoris Stilwahl, die Kante und Leinen nebeneinander anbietet.
    All changes in 1.67 →Alle Änderungen in 1.67 →
  11. 1.66

    A window with a Kante dialog or page scope that the garbage collector takes leaves no errors in the log.

    Ein Fenster mit einem Kante-Dialog oder Seiten-Scope, das der Garbage Collector nimmt, hinterlässt keine Fehler im Log.

    FixedBehoben

    • When the garbage collector took a window, a pending step of KanteScope or KanteDialog ran on it and wrote a TypeError to the log, up to 14 times in a test. Found in Mitori.
    • Nahm der Garbage Collector ein Fenster, lief ein ausstehender Schritt von KanteScope oder KanteDialog darauf und schrieb einen TypeError ins Log, im Test bis zu 14-mal. Gefunden in Mitori.
    All changes in 1.66 →Alle Änderungen in 1.66 →
  12. 1.65

    A window that holds a Kante dialog goes down without a crash.

    Ein Fenster mit einem Kante-Dialog darin geht ohne Absturz zu.

    FixedBehoben

    • An app crashed when a window with a KanteDialog, or a dialog with KanteDialogSkin, in it went down and the garbage collector took it: the dialog gave its old background back while Qt was already deleting it. lmix had to take its page windows down by hand for it.
    • Eine App stürzte ab, wenn ein Fenster mit einem KanteDialog oder einem Dialog mit KanteDialogSkin darin abgebaut wurde und der Garbage Collector es nahm: Der Dialog gab seinen alten Hintergrund zurück, während Qt ihn schon löschte. lmix musste seine Seitenfenster dafür von Hand abbauen.
    All changes in 1.65 →Alle Änderungen in 1.65 →
  13. 1.64

    The heat grid keeps the focus where it was and fills a width; bar charts can start their scale above zero.

    Das Wärmeraster behält den Fokus, wo er war, und füllt eine Breite; Balkendiagramme können ihre Skala über null beginnen.

    NewNeu

    • Heat grids can fill their width: a fixed number of columns shares the room, with square cells as large as it allows. Built for Mitori's forms, eight a row on a phone and eleven on a tablet.
    • Bar charts can start their scale above zero, so an average from 1 to 4 has an axis from 1 to 4. A bar on the lowest value can keep a small height, so it still shows; the read-out says its real value. Built for Mitori's exam mode.
    • The row names of a heat grid can take another font, so long technique names stay readable on a phone.
    • Wärmeraster können ihre Breite füllen: Eine feste Zahl von Spalten teilt sich den Platz, mit quadratischen Zellen, so groß er es erlaubt. Gebaut für Mitoris Formen, acht je Reihe auf dem Handy und elf auf dem Tablet.
    • Balkendiagramme können ihre Skala über null beginnen, so hat ein Schnitt von 1 bis 4 eine Achse von 1 bis 4. Ein Balken auf dem kleinsten Wert kann eine kleine Höhe behalten und bleibt so sichtbar; die Ablesung nennt seinen echten Wert. Gebaut für Mitoris Prüfungsmodus.
    • Die Zeilennamen eines Wärmerasters können eine andere Schrift nehmen, so bleiben lange Technik-Namen auf dem Handy lesbar.

    ImprovedVerbessert

    • Level 0 of a heat grid and its legend key have the same, clearer frame, so level 0 stands apart from the page and from a blank place.
    • Stufe 0 eines Wärmerasters und ihr Legenden-Schlüssel haben denselben, deutlicheren Rahmen, so hebt sich Stufe 0 von der Seite und von einem leeren Platz ab.

    FixedBehoben

    • When the focused cell of a heat grid turned into a blank place, the focus jumped to the first cell and the view to the start; now it moves to the nearest cell.
    • When all cells turned blank while one had the focus, Tab went backwards and the app logged a warning; now Tab goes on.
    • A cell the app chose in two steps (first the row, then the column) was moved to the first cell in between when the grid did not have the focus; now it stays.
    • Wurde die Zelle mit dem Fokus zu einem leeren Platz, sprang der Fokus auf die erste Zelle und die Ansicht an den Anfang; jetzt geht er zur nächstgelegenen Zelle.
    • Wurden alle Zellen leer, während eine den Fokus hatte, ging Tab rückwärts und die App schrieb eine Warnung; jetzt geht Tab weiter.
    • Eine Zelle, die die App in zwei Schritten wählte (erst die Zeile, dann die Spalte), wurde dazwischen auf die erste Zelle gesetzt, wenn das Raster keinen Fokus hatte; jetzt bleibt sie.
    A narrow heat grid in dark Kante: technique names Ikkyo to Kote-gaeshi in a plain font down the side, attack names standing upright above the columns, cells with levels 1 to 4 in cyan shades, level 0 as a dark cell with a clear frame, blank places between them, a focused cell with its ring, a scroll bar; below the legend 0 nicht bewertet to 4 prüfungsreif and keine Kombination
    Techniques by attack: readable names, level 0 in the legendTechniken je Angriff: lesbare Namen, Stufe 0 in der Legende
    Left: twelve numbered square cells in two rows, eight in the first, filling the width, in cyan shades with level 0 framed, the legend Formen 0 to 4 below; right: a bar chart Schnitt with an axis from 1 to 4 and five bars, the first one on 1 a thin line
    Forms filling the width; the average per round from 1 to 4Formen, die die Breite füllen; der Schnitt je Runde von 1 bis 4
    All changes in 1.64 →Alle Änderungen in 1.64 →
  14. 1.63

    A heat grid with labels: rows, columns, a number in every cell and a legend, also for wide grids on a phone.

    Ein Wärmeraster mit Beschriftung: Zeilen, Spalten, eine Zahl in jeder Zelle und eine Legende, auch für breite Raster auf dem Handy.

    NewNeu

    • KanteHeatGrid: rows × columns on the heat scale, with row and column labels, the value as a number in each cell, a legend with the value of each level, a tooltip per cell and keyboard focus (arrows, Enter). Screen readers hear each cell by name. Built for Kontra's fretboard quiz (hits per string and fret); KanteHeatmap stays the unlabelled grid of days.
    • Wide grids fit a phone: the cells scroll sideways while the row names stay, with a scroll bar, and the focused cell stays in sight. Column names can stand upright, so long names allow narrow columns; long row names are cut to a width with the full name as a tooltip. Built for Mitori's technique map (techniques × attacks).
    • Levels 0 to 4 as steps, with a word per level in the legend, and blank places where there is nothing to show; level 0 keeps a fine frame, so it stays apart from a blank place. The focus ring stands out on every level, also on the strongest, which is filled with the focus colour.
    • KanteHeatGrid: Zeilen × Spalten auf der Wärmeskala, mit Zeilen- und Spaltenbeschriftung, dem Wert als Zahl in jeder Zelle, einer Legende mit dem Wert jeder Stufe, einem Tooltip je Zelle und Tastaturfokus (Pfeile, Enter). Screenreader lesen jede Zelle mit Namen vor. Gebaut für Kontras Griffbrett-Quiz (Treffer je Saite und Bund); KanteHeatmap bleibt das unbeschriftete Raster der Tage.
    • Breite Raster passen aufs Handy: Die Zellen scrollen waagerecht, die Zeilennamen bleiben stehen, eine Scrollleiste zeigt die Stelle, und die Zelle mit dem Fokus bleibt im Blick. Spaltennamen können hochkant stehen, so erlauben lange Namen schmale Spalten; lange Zeilennamen werden auf eine Breite gekürzt, der ganze Name steht im Tooltip. Gebaut für Mitoris Technik-Landkarte (Techniken × Angriffe).
    • Stufen 0 bis 4 als Schritte, mit einem Wort je Stufe in der Legende, und leere Plätze, wo es nichts zu zeigen gibt; Stufe 0 behält einen feinen Rahmen und bleibt so von einem leeren Platz zu unterscheiden. Der Fokusrahmen ist auf jeder Stufe zu sehen, auch auf der stärksten, die in der Fokusfarbe gefüllt ist.
    A heat grid in dark Kante: rows G, D, A, E under the title Saite, columns 0 to 7 under Bund, each cell a cyan shade with its percentage written in it, empty cells framed with a dash; below the legend Treffer from 0 % to 100 % and Keine Daten
    Hits per string and fret, a number in every cell, the legend belowTreffer je Saite und Bund, eine Zahl in jeder Zelle, darunter die Legende
    A narrow heat grid in dark Kante: techniques Ikkyo to Kote-gaeshi down the side, attack names standing upright above the columns, cells with levels 1 to 4 in cyan shades, level 0 as a framed dark cell and blank places between them, a scroll bar under the cells, one cell framed by the focus ring; below the legend 1 gesehen to 4 prüfungsreif and keine Kombination
    Techniques by attack on a phone: upright names, blank places, a scroll barTechniken je Angriff auf dem Handy: hochkante Namen, leere Plätze, eine Scrollleiste
    All changes in 1.63 →Alle Änderungen in 1.63 →
  15. 1.62.1

    The practice calendar sits right also in a wide layout, and a single week names its own month.

    Der Übungskalender steht auch in einem breiten Layout richtig, und eine einzelne Woche nennt ihren eigenen Monat.

    FixedBehoben

    • Right to left, KanteCalendarHeatmap stayed at the left edge when a layout gave it more width than it needs.
    • A calendar of one week ending on 30 November was labelled December.
    • Von rechts nach links blieb KanteCalendarHeatmap am linken Rand, wenn ein Layout ihr mehr Breite gab, als sie braucht.
    • Ein Kalender von einer Woche, die am 30. November endet, war mit Dezember beschriftet.
    All changes in 1.62.1 →Alle Änderungen in 1.62.1 →
  16. 1.62

    Practice days on a calendar, with weekdays, months and a tooltip per day.

    Übungstage auf einem Kalender, mit Wochentagen, Monaten und einem Tooltip je Tag.

    NewNeu

    • KanteCalendarHeatmap shows days on a calendar grid: a column per week, weekday names at the side, the month's name above the week it begins in. Each day is coloured by its level like the heatmap; hovering or tapping it shows the date and a text, screen readers hear the date in full. Right to left, the newest week is on the left.
    • KanteCalendarHeatmap zeigt Tage auf einem Kalenderraster: eine Spalte je Woche, Wochentage an der Seite, der Monatsname über der Woche, in der er beginnt. Jeder Tag hat die Farbe seiner Stufe wie in der Heatmap; beim Darüberfahren oder Antippen zeigt er Datum und Text, Bildschirmleser hören das volle Datum. Von rechts nach links steht die neueste Woche links.
    Kante in its light (Leinen) palette: the label ÜBUNGSTAGE · 26 WOCHEN, a grid of 26 week columns in four shades of teal with Di., Do., Sa. at the left and Mai to Nov above, below it the legend 1–2 Techniken, 3–5, 6–9, 10 und mehr
    Practice days on a calendarÜbungstage auf einem Kalender
    All changes in 1.62 →Alle Änderungen in 1.62 →
  17. 1.61.1

    A tap in a sheet stays in the sheet.

    Ein Tipp in einem Blatt bleibt im Blatt.

    FixedBehoben

    • A KanteListRow under a modal sheet or dialog took taps meant for it, when the tap landed on a TapHandler such as the buttons of KanteLevelPicker. In Mitori a rating in the technique sheet also opened the row underneath.
    • Eine KanteListRow unter einem modalen Blatt oder Dialog nahm Tipps an, die ihm galten, wenn der Tipp auf einem TapHandler landete, etwa den Knöpfen von KanteLevelPicker. In Mitori öffnete eine Einschätzung im Technik-Blatt zugleich die Zeile darunter.
    All changes in 1.61.1 →Alle Änderungen in 1.61.1 →
  18. 1.61

    Shares by level get colours from one scale and a legend that explains them.

    Anteile je Stufe bekommen Farben aus einer Skala und eine Legende, die sie erklärt.

    NewNeu

    • KanteLegend explains a chart: a key and a word per item, wrapping when narrow.
    • KanteStyle.levelColor gives the colour of a level on a scale, the same as the heatmap's, for shares by level.
    • Parts of a stacked KanteProgressBar show their text as a tooltip and name it for screen readers.
    • KanteLegend erklärt ein Diagramm: ein Farbfeld und ein Wort je Eintrag, bei wenig Platz umbrochen.
    • KanteStyle.levelColor liefert die Farbe einer Stufe auf einer Skala, dieselbe wie in der Heatmap, für Anteile je Stufe.
    • Teile einer gestapelten KanteProgressBar zeigen ihren text als Tooltip und nennen ihn Bildschirmlesern.
    Kante in its light (Leinen) palette: the label AIKIDO · 5. KYU · 20 TECHNIKEN, a bar in four shades of teal from dark to pale and the rest sunken, below it the legend 2 prüfungsreif, 5 sicher, 3 mit Hilfe, 4 gesehen, 6 offen with square keys
    Shares by level and their legendAnteile je Stufe und ihre Legende
    All changes in 1.61 →Alle Änderungen in 1.61 →
  19. 1.60

    Kante can show and pick a level of four, for ratings such as how well a technique sits.

    Kante kann eine Stufe von vier zeigen und wählen lassen, für Einschätzungen wie die, wie sicher eine Technik sitzt.

    NewNeu

    • KanteLevelDots shows a level as dots, such as how well a technique sits (3 of 4), small enough for a list row.
    • KanteLevelPicker picks a level 1 to 4 with large buttons, number and word; a tap on the chosen level counts again. Mitori rates its techniques with it.
    • KanteLevelDots zeigt eine Stufe als Punkte, etwa wie sicher eine Technik sitzt (3 von 4), klein genug für eine Listenzeile.
    • KanteLevelPicker wählt eine Stufe von 1 bis 4 mit großen Knöpfen, Zahl und Wort; ein Tipp auf die gewählte Stufe zählt erneut. Mitori schätzt damit seine Techniken ein.
    Kante in its light (Leinen) palette: three techniques, Ikkyo with three of four yellow squares, Shiho-nage with one, Kote-gaeshi with none; below the question Wie sitzt Ikkyo? and four buttons 1 GESEHEN, 2 MIT HILFE, 3 SICHER in yellow, 4 PRÜFUNGSREIF
    Dots per technique, and the picker for a new ratingPunkte je Technik und die Auswahl für eine neue Einschätzung
    All changes in 1.60 →Alle Änderungen in 1.60 →
  20. 1.59

    Kante gets the pieces for a video player and a start menu of tiles.

    Kante bekommt die Bausteine für einen Videoplayer und ein Startmenü aus Kacheln.

    NewNeu

    • KanteTransportBar for video: fixed tempi as segments (25, 50, 75, 100 %), buttons for single frames back and on (keys , and .), and the metronome and count-in can be hidden. Mitori's player uses it for the exam videos.
    • KanteOptionTile as a launch tile: with checkable: false it opens something and is never chosen; glyph shows a character such as a kanji in place of the icon.
    • KanteTransportBar für Video: feste Tempi als Segmente (25, 50, 75, 100 %), Knöpfe für einzelne Bilder zurück und vor (Tasten , und .), Metronom und Einzählen lassen sich ausblenden. Der Player von Mitori nutzt sie für die Prüfungsvideos.
    • KanteOptionTile als Startkachel: mit checkable: false öffnet sie etwas und wird nie gewählt; glyph zeigt statt des Symbols ein Zeichen, etwa ein Kanji.

    ImprovedVerbessert

    • Right to left, the transport bar keeps its order: it runs along time like a timeline, and its marks point the right way.
    • Von rechts nach links behält die Transportleiste ihre Reihenfolge: Sie folgt der Zeit wie eine Zeitleiste, und ihre Marken zeigen in die richtige Richtung.
    Light Kante: three tiles with the kanji 技, 稽 and 試 above the names Programm, Heute and Prüfung; below a transport bar with rewind, a hollow frame-back mark, the yellow PAUSE button, a frame-on mark, Schleife, the tempi 25, 50, 75 and 100 % with 50 % chosen, and 0:03 / 0:28
    Launch tiles with kanji, a transport bar with single frames and four tempiStartkacheln mit Kanji, eine Transportleiste mit Einzelbildern und vier Tempi
    All changes in 1.59 →Alle Änderungen in 1.59 →
  21. 1.58

    A dialog can have buttons of its own at the start of its footer.

    Ein Dialog kann eigene Knöpfe am Anfang seines Fußes haben.

    NewNeu

    • KanteDialog gets footerStart: the app's own buttons at the start of the footer, before Close or Ok and apart from them, in every style; right to left they stand at the right. lmix puts "Shortcuts…" there in its keys overview; before, it had to rename the Help button.
    • KanteDialog bekommt footerStart: die eigenen Knöpfe der App am Anfang des Fußes, vor Schließen oder Ok und abgesetzt davon, in jedem Stil; von rechts nach links stehen sie rechts. lmix setzt dort „Belegungen…“ in seine Tastenübersicht; vorher musste es den Hilfe-Knopf umbenennen.
    A dialog in dark Kante titled KEYS with the keycaps Ctrl and K and the word Shortcuts; in the footer the quiet button SHORTCUTS… on the left and CLOSE on the right
    An own button at the start of the footer, Close at its endEin eigener Knopf am Anfang des Fußes, Schließen am Ende
    All changes in 1.58 →Alle Änderungen in 1.58 →
  22. 1.57

    A menu row gets room at its end.

    Eine Menüzeile bekommt Platz an ihrem Ende.

    NewNeu

    • KanteMenuItem gets trailing: items after the value, such as ◀ ▶ of a direction or the lengths as segments; they take their own clicks.
    • KanteMenuItem bekommt trailing: Inhalt hinter dem Wert, etwa ◀ ▶ einer Richtung oder die Dauern als Segmente; er nimmt seine Klicks selbst an.
    A menu in light Kante: the heading TASTE 1 · EFFEKT, the effects Cut, Blende and Schieben, Schieben ticked with the buttons ◀ and ▶ at its end, ▶ chosen; under DAUER the segments 250, 500 and 1000 with 500 chosen, then ms
    An effect menu: the direction as ◀ ▶ and the lengths as segments at the row's endEin Effektmenü: die Richtung als ◀ ▶ und die Dauern als Segmente am Zeilenende
    All changes in 1.57 →Alle Änderungen in 1.57 →
  23. 1.56

    Line weights, markers, tint levels and the sizes of an hour grid are Kante roles now, so an app that draws a timeline or a board by hand needs no sizes of its own.

    Linienstärken, Marker, Tönungsstufen und die Maße eines Stundenrasters sind jetzt Rollen von Kante, damit eine App, die eine Zeitleiste oder ein Brett selbst zeichnet, keine eigenen Größen braucht.

    NewNeu

    • KanteStyle gets line weights for borders (1), marking lines (2) and the colour edge of an entry (3), in every style.
    • Markers, meters and swatches have a size: day dots and legend keys square in the Kante style, a thin meter for a day's load, a colour key for a legend.
    • Four tint levels (wash, fill, strong fill, edge) for a colour that is data, such as a project's, and opacities for something done or out of range.
    • An hour grid and a month cell get their sizes: the height of a minute and of an entry line.
    • The web gets the same weights and levels as tokens (--line-*, --level-*).
    • KanteStyle bekommt Linienstärken für Ränder (1), markierende Linien (2) und die Farbkante eines Eintrags (3), in jedem Stil.
    • Marker, Messbalken und Farbfelder haben eine Größe: Tagespunkte und Legendenzeichen im Stil Kante eckig, ein schmaler Balken für die Auslastung eines Tages, ein Farbfeld für eine Legende.
    • Vier Tönungsstufen (Hauch, Fläche, starke Fläche, Rand) für eine Farbe, die Daten zeigt, etwa die eines Projekts, und Deckkräfte für Erledigtes und für das, was außerhalb liegt.
    • Stundenraster und Monatszelle bekommen ihre Maße: die Höhe einer Minute und einer Eintragszeile.
    • Das Web bekommt dieselben Stärken und Stufen als Tokens (--line-*, --level-*).

    FixedBehoben

    • A combo box in the Kante style no longer cuts its value short when the platform style sizes it („Erledigu…“ in Kurrent's heatmap): it is as wide as its widest entry, at least KanteStyle.comboMinimumWidth, and follows the font.
    • Ein Auswahlfeld im Stil Kante schneidet seinen Wert nicht mehr ab, wenn der Plattformstil seine Breite bestimmt („Erledigu…“ in Kurrents Heatmap): Es ist so breit wie sein längster Eintrag, mindestens KanteStyle.comboMinimumWidth, und folgt der Schrift.
    A small hour grid in dark Kante: thin grid lines with fainter half-hour lines, a green tinted free stretch labelled FREI 1,5 H, a blue tinted block Schnitt exportieren with a blue edge on its left, a red now line; beside it square dots for Termin, Aufgabe and Überfällig, a yellow load meter at three quarters, four yellow swatches from faint to strong, and Erledigt struck through and faded
    An hour grid drawn from the roles onlyEin Stundenraster nur aus den Rollen
    All changes in 1.56 →Alle Änderungen in 1.56 →
  24. 1.55

    Dialogs come in three widths, and a destructive question is red.

    Dialoge gibt es in drei Breiten, und eine destruktive Frage ist rot.

    NewNeu

    • KanteDialog gets size: Small, Medium and Large, at most 90 % of the window.
    • KanteDialog gets destructive: the bar and the accept button (Ok, or Yes of a yes/no question) in the negative colour, Cancel before it.
    • KanteButton gets destructive: a Normal or Quiet button with red text in the Kante style, for a removal that should not outweigh the actions beside it.
    • KanteDialog bekommt size: Small, Medium und Large, höchstens 90 % des Fensters.
    • KanteDialog bekommt destructive: Balken und Bestätigungsknopf (Ok, oder Ja einer Ja/Nein-Frage) in der Warnfarbe, Abbrechen davor.
    • KanteButton bekommt destructive: ein Normal- oder Quiet-Knopf mit roter Schrift im Stil Kante, für ein Entfernen, das die Aktionen daneben nicht überragen soll.

    FixedBehoben

    • KanteDialog's acceptText holds in every language: in German the button read „OK“, because the button box sets its standard texts again once the translations are in.
    • acceptText von KanteDialog hält in jeder Sprache: Auf Deutsch hieß der Knopf „OK“, weil die Knopfleiste ihre Standardtexte neu setzt, sobald die Übersetzungen geladen sind.
    A dialog in dark Kante with a red bar on top, the title BUS „BÜHNE“ ENTFERNEN?, the sentence 3 Inputs senden nicht mehr dorthin, and in the footer ABBRECHEN, then the red button BUS ENTFERNEN
    A destructive question: red bar, the button names what goes, Cancel firstEine destruktive Frage: roter Balken, der Knopf nennt, was geht, Abbrechen zuerst
    All changes in 1.55 →Alle Änderungen in 1.55 →
  25. 1.54

    The page bar can be lower, down to a coloured strip, and the month grid marks its days.

    Die Seitenleiste kann niedriger sein, bis hin zu einem Farbband, und das Monatsraster markiert seine Tage.

    NewNeu

    • KantePageBar gets density: Compact (lower, smaller labels; it grows for a small button at its end) and Band (one segment per page, the others half as high; the name as tooltip). lmix's operators want the room for their inputs.
    • KanteCalendarGrid marks days with up to three dots (dots) and tints a range of days (rangeFrom, rangeTo), as Kurrent's Agenda needs for appointments, tasks and the days a view shows.
    • KantePageBar bekommt density: Compact (niedriger, kleinere Schrift; wächst für einen kleinen Knopf am Ende) und Band (ein Abschnitt je Seite, die übrigen halb so hoch; der Name als Tooltip). Wer lmix bedient, braucht den Platz für die Inputs.
    • KanteCalendarGrid markiert Tage mit bis zu drei Punkten (dots) und tönt einen Zeitraum (rangeFrom, rangeTo), wie ihn Kurrents Agenda für Termine, Aufgaben und die gezeigten Tage braucht.
    Three page bars in dark Kante with the pages Mix, Show, Ton, Ausgänge and Setup and a Panik button: Normal; Compact, lower with smaller labels, the button as high as before; Band, a thin strip of segments, Mix in cyan and Ton in orange at full height, the other pages half as high in grey
    The page bar in Normal, Compact and BandDie Seitenleiste in Normal, Compact und Band
    Two month grids of October 2026 in dark Kante: on the left square dots in the top right of the 5th, 12th, 20th and 27th, up to three per day; on the right the days 19 to 25 tinted as a range
    Day dots and a range in the month gridTagespunkte und ein Zeitraum im Monatsraster
    All changes in 1.54 →Alle Änderungen in 1.54 →
  26. 1.53

    Every row of a list takes a click again.

    Jede Zeile einer Liste nimmt wieder einen Klick an.

    FixedBehoben

    • KanteListRow in a scrolling list reacted only on its first row; a click on any other row did nothing (Qt 6.11).
    • KanteScope no longer logs a script error when a page or dialog closes right after its content changed.
    • KanteListRow in einer scrollbaren Liste reagierte nur in der ersten Zeile; ein Klick auf jede andere Zeile blieb ohne Wirkung (Qt 6.11).
    • KanteScope meldet keinen Skriptfehler mehr, wenn eine Seite oder ein Dialog gleich nach einer Änderung ihres Inhalts schließt.
    All changes in 1.53 →Alle Änderungen in 1.53 →
  27. 1.52

    The workbench desk stays in view beside a long list.

    Die Arbeitsfläche der Werkbank bleibt neben einer langen Liste im Blick.

    FixedBehoben

    • .bench-desk moves along while the list scrolls. Before, a click on an entry far down showed its desk at the top of the page, out of view. A desk taller than the window scrolls itself; on a phone nothing changes.
    • .bench-desk wandert mit, während die Liste scrollt. Vorher stand die Arbeitsfläche nach einem Klick auf einen Eintrag weit unten oben auf der Seite, außer Sicht. Ist sie höher als das Fenster, scrollt sie selbst; am Telefon ändert sich nichts.
    All changes in 1.52 →Alle Änderungen in 1.52 →
  28. 1.51

    Kontra's QA of 28 October: a sidebar that stays dark in Kante on a light system, sheets that keep the keyboard, string colours that read at the beamer and tell apart with deuteranopia, and histogram bars a screen reader can read. For players at 200 % with a keyboard and a screen reader, for the teacher at the beamer and for beginners on a light desktop.

    Kontras QA vom 28. Oktober: eine Seitenleiste, die in Kante auf hellem System dunkel bleibt, Blätter, die die Tastatur behalten, Saitenfarben, die am Beamer lesbar und mit Deuteranopie unterscheidbar sind, und Histogramm-Balken, die ein Screenreader vorliest. Für alle, die bei 200 % mit Tastatur und Screenreader spielen, für die Lehrkraft am Beamer und für Einsteiger auf einem hellen Desktop.

    NewNeu

    • KanteFocusTrap: while a sheet in the page is open, Tab and Shift+Tab stay inside it and the page behind takes no focus (or is hidden from screen readers too); closed, the focus goes back to the control the app names. Kontra's run summary let Tab run on into the sidebar.
    • KanteScope.popup: a drawer's ground takes the Kante colours with its entries. A Kirigami sidebar was white below its entries, "close sidebar" at 1.4:1.
    • KanteFocusTrap: Solange ein Blatt in der Seite offen ist, bleiben Tab und Umschalt+Tab darin, und die Seite dahinter nimmt keinen Fokus (oder ist auch für Screenreader ausgeblendet); geschlossen, geht der Fokus zu dem Bedienelement, das die App nennt. In Kontras Auswertung lief Tab weiter in die Seitenleiste.
    • KanteScope.popup: Der Grund einer Seitenleiste nimmt mit ihren Einträgen die Kante-Farben. Eine Kirigami-Seitenleiste war unter den Einträgen weiß, „Seitenleiste schließen“ stand bei 1,4:1.

    ImprovedVerbessert

    • String colours on a light ground (Leinen and Kante Light): raspberry, blue, ochre and strong text for the four bass strings, at least 4.5:1 and apart from each other with deuteranopia. The A string was 1.7:1 at the beamer, purple and cyan looked alike with deuteranopia. The tab draws its string lines in full colour there. Dark Kante keeps its colours; Kante Light on a dark system now takes the dark palette's string colours instead of the platform's.
    • Screen readers hear every bar of the timing histogram with its range and count: "−20 bis −10 ms: 3 Noten" (binText, translatable). Before they heard only "early" and "late".
    • Saitenfarben auf hellem Grund (Leinen und Kante Light): Himbeere, Blau, Ocker und starke Schrift für die vier Basssaiten, mindestens 4,5:1 und auch mit Deuteranopie voneinander unterscheidbar. Die A-Saite stand am Beamer bei 1,7:1, Lila und Cyan sahen mit Deuteranopie gleich aus. Die Tabulatur zeichnet ihre Saitenlinien dort in voller Farbe. Dunkles Kante behält seine Farben; Kante Light auf dunklem System nimmt jetzt die Saitenfarben der dunklen Palette statt der Plattform.
    • Screenreader nennen jeden Balken des Timing-Histogramms mit Bereich und Anzahl: „−20 bis −10 ms: 3 Noten“ (binText, übersetzbar). Vorher hörten sie nur „früh“ und „spät“.

    FixedBehoben

    • KanteScope reaches disabled items: Kirigami gave them the platform's colours, so in Kante on a light system a disabled sidebar entry stood at 1.7:1 and separators white. Kante Light and System keep the platform's look, and an item with colours of its own keeps them.
    • KanteCallout with a title only draws no empty line under it (it was about 40 px too tall).
    • KanteListRow with a "?" at its end: Tab reaches the row and then the "?", Shift+Tab from the "?" goes to its row. Once the "?" had the focus, the row was skipped both ways.
    • KanteScope erreicht gesperrte Elemente: Kirigami gab ihnen die Farben der Plattform, so stand in Kante auf hellem System ein gesperrter Eintrag der Seitenleiste bei 1,7:1 und Trennlinien weiß. Kante Light und System behalten das Aussehen der Plattform, und ein Element mit eigenen Farben behält sie.
    • KanteCallout mit nur einem Titel zeichnet keine leere Zeile darunter (er war etwa 40 px zu hoch).
    • KanteListRow mit einem „?“ am Ende: Tab erreicht die Zeile und dann das „?“, Umschalt+Tab vom „?“ geht zu seiner Zeile. Hatte das „?“ einmal den Fokus, wurde die Zeile in beide Richtungen übersprungen.

    NoteHinweis

    • Apps that theme a drawer pass it as popup: KanteScope { target: drawer.contentItem; popup: drawer }. Leinen's string colours change for every app that shows strings.
    • Apps, die eine Seitenleiste einfärben, geben sie als popup mit: KanteScope { target: drawer.contentItem; popup: drawer }. Die Saitenfarben in Leinen ändern sich für jede App, die Saiten zeigt.
    Before and after, side by side. Top, dark Kante on a light system: before, a white sidebar with pale entries; after, a dark sidebar with readable entries and the disabled entry Üben dimmed; the callout Gespeichert without its empty line; a tab staff. Bottom, Kante Light: before, pale string lines and a light blue A string; after, string lines in raspberry, blue, ochre and black
    Before (left) and after (right): sidebar in Kante on a light system, callout with a title only, string colours in Kante LightVorher (links) und nachher (rechts): Seitenleiste in Kante auf hellem System, Hinweis nur mit Titel, Saitenfarben in Kante Light
    All changes in 1.51 →Alle Änderungen in 1.51 →
  29. 1.50

    Rehearsal marks: tab, notation and the lanes show where Intro, verse, chorus or part B begin, in a framed box over the first bar of each part. For players who find their way in a song by its parts, and for a teacher at the beamer saying "from the chorus".

    Probenzeichen: Tabulatur, Noten und die Lanes zeigen, wo Intro, Strophe, Refrain oder Teil B beginnen, in einem gerahmten Kasten über dem ersten Takt jedes Teils. Für alle, die sich in einem Stück an seinen Teilen orientieren, und für die Lehrkraft am Beamer, die „ab dem Refrain“ sagt.

    NewNeu

    • KanteRehearsalMark: the name of a part in a framed box, with the small cut in Kante and Kante Light, square in System. A long name is cut short with "…" instead of running into the next mark; screen readers hear all of it ("Teil Refrain · B").
    • A bar's section in KanteTabStaff, KanteBassStaff, KanteTabLane and KanteKeyLane puts the mark over that bar. Several names of one bar are joined: "Refrain · B" (KanteStyle.rehearsalText).
    • Screen readers hear the part being played along with the bar.
    • KanteRehearsalMark: der Name eines Teils in einem gerahmten Kasten, mit der kleinen Schnittecke in Kante und Kante Light, eckig in System. Ein langer Name wird mit „…“ gekürzt, statt in das nächste Zeichen zu laufen; Screenreader hören ihn ganz („Teil Refrain · B“).
    • Das Feld section eines Takts in KanteTabStaff, KanteBassStaff, KanteTabLane und KanteKeyLane setzt das Zeichen über diesen Takt. Mehrere Namen eines Takts werden zusammengefasst: „Refrain · B“ (KanteStyle.rehearsalText).
    • Screenreader nennen mit dem Takt den Teil, der gerade läuft.

    NoteHinweis

    • Only songs with sections change: tab, notation and the tab lane move down by the row of the marks (in the key lane the mark sits right of the bar number, nothing moves). Without section the layout stays as it was.
    • Nur Stücke mit Teilen ändern sich: Tabulatur, Noten und die Tab-Lane rücken um die Zeile der Zeichen nach unten (in der Tasten-Lane steht das Zeichen rechts neben der Taktnummer, dort rückt nichts). Ohne section bleibt das Layout, wie es war.
    Tab and bass staff with the rehearsal marks Intro, Strophe mit… (cut short), Refrain · B and Outro over bars 1 to 4, and a tab lane with the marks Refrain · B and Outro above their bar numbers, in dark Kante above and Leinen below
    Rehearsal marks in tab, notation and lane, in Kante and LeinenProbenzeichen in Tabulatur, Noten und Lane, in Kante und Leinen
    All changes in 1.50 →Alle Änderungen in 1.50 →
  30. 1.49

    For players on the keyboard alone, at 200 % and with deuteranopia: Return presses buttons, the focus stays in view, a wrong note has a frame.

    Für alle, die nur mit der Tastatur arbeiten, bei 200 % und mit Deuteranopie: Return drückt Knöpfe, der Fokus bleibt sichtbar, ein falscher Ton hat einen Rahmen.

    NewNeu

    • KanteFocusFollow scrolls a long page so the focused control is in view.
    • KanteSteps.skipped: a skipped step shows a dash, not the done check. Bar charts and the timing histogram name their value axis.
    • KanteFocusFollow scrollt eine lange Seite, sodass das fokussierte Element sichtbar ist.
    • KanteSteps.skipped: Ein übersprungener Schritt zeigt einen Strich statt des Hakens. Balkendiagramme und das Timing-Histogramm beschriften ihre Werteachse.

    FixedBehoben

    • Return and Enter press a focused KanteButton or KanteToolButton; before, only Space did.
    • A wrong note in the tab and key lanes is framed; with deuteranopia its red looked like the D string's ochre.
    • Return und Enter drücken einen fokussierten KanteButton oder KanteToolButton; vorher ging nur die Leertaste.
    • Ein falscher Ton in Tab- und Tasten-Lane hat einen Rahmen; mit Deuteranopie sah sein Rot wie das Ocker der D-Saite aus.
    Setup steps whose skipped Latenz step shows a dash, a tab lane whose wrong note 5 has a frame, and a timing histogram with the axis title Noten, in dark Kante above and Leinen below
    Skipped step, framed wrong note, axis title, in Kante and LeinenÜbersprungener Schritt, gerahmter falscher Ton, Achsentitel, in Kante und Leinen
    All changes in 1.49 →Alle Änderungen in 1.49 →
  31. 1.48

    A workbench: a list to scan beside a desk for one entry, receipts to pick, and a bar that shows what is left of an amount.

    Eine Werkbank: eine Liste zum Überfliegen neben einer Arbeitsfläche für einen Eintrag, Belege zum Auswählen und ein Balken, der zeigt, was von einem Betrag übrig ist.

    NewNeu

    • .bench with .bench-list and .bench-desk. Each entry shows in two lines and a bar how complete it is; the current one is cyan. On a phone the desk goes under the list.
    • .pick: a receipt card with a preview, a radio or check box and a score. .field-origin says where a value came from, dl.kv lists what was read.
    • .sumbar: parts of an amount in their colours, the rest hatched, the rest in red or green.
    • .bench mit .bench-list und .bench-desk. Jeder Eintrag zeigt in zwei Zeilen und einem Balken, wie vollständig er ist; der aktuelle ist cyan. Am Telefon steht die Arbeitsfläche unter der Liste.
    • .pick: eine Belegkarte mit Vorschau, Radio oder Häkchen und Wertung. .field-origin sagt, woher ein Wert kommt, dl.kv listet, was gelesen wurde.
    • .sumbar: die Teile eines Betrags in ihren Farben, der Rest schraffiert, der Rest in Rot oder Grün.
    A list of open bank lines with completeness bars, the first selected in cyan, beside a desk with a receipt choice, facts read from it and the expense fields with their origin
    List and deskListe und Arbeitsfläche
    Three receipt cards with check boxes, the first checked; two sum bars, one with a hatched rest of 14.87 euros in red, one with a rest of 0.00 euros in green
    Pick and sum bar, in Kante and LeinenBelegwahl und Summenbalken, in Kante und Leinen
    All changes in 1.48 →Alle Änderungen in 1.48 →
  32. 1.47

    Waiting gets one look: a bar on top, the clicked link runs a light, old content dims.

    Warten sieht überall gleich aus: ein Balken oben, ein Lauflicht um den geklickten Link, alter Inhalt wird blass.

    NewNeu

    • .page-load, .is-pending and aria-busy regions. They show only after 150 ms, so fast answers stay calm.
    • .loading (squares plus a word), .btn-status (a reserved line under buttons) and .step-time for live steps.
    • .page-load, .is-pending und Bereiche mit aria-busy. Sie erscheinen erst nach 150 ms, schnelle Antworten bleiben ruhig.
    • .loading (Quadrate und ein Wort), .btn-status (eine freigehaltene Zeile unter Knöpfen) und .step-time für laufende Schritte.
    A striped bar along the top edge and a tab bar whose clicked tab Boards runs a light along its edge
    Page load bar and pending link, in Kante and LeinenLadebalken und wartender Link, in Kante und Leinen
    Dimmed old content, the loading word with squares, a busy Save button with the lines Taking longer and Loading failed below it, and steps with their elapsed times
    Busy region, loading word, button status and step timeWartender Bereich, Ladewort, Knopfstatus und Schrittzeit
    All changes in 1.47 →Alle Änderungen in 1.47 →
  33. 1.46

    Status cards can be a choice: a period picked by its state.

    Statuskarten können eine Auswahl sein: ein Zeitraum, gewählt nach seinem Stand.

    NewNeu

    • a.status with aria-current: the chosen card is tinted with a yellow bar at the bottom; its state keeps the bar on top. .status-row lines the cards up and wraps them on a phone.
    • a.status mit aria-current: Die gewählte Karte ist getönt und hat unten einen gelben Balken; ihr Stand behält den Balken oben. .status-row reiht die Karten auf und bricht sie am Telefon um.

    FixedBehoben

    • A busy outlined button showed its stripes in one small tile that jumped back; they now fill the whole button and march through it.
    • Ein beschäftigter umrandeter Knopf zeigte seine Streifen in einer kleinen Kachel, die zurücksprang; jetzt füllen sie den ganzen Knopf und wandern durch.
    Four status cards Q1 to Q4 in a row; Q3 is chosen: tinted, with a yellow bar at the bottom and its orange state bar on top
    Status cards as a choice, in Kante and LeinenStatuskarten als Auswahl, in Kante und Leinen
    Three busy buttons: the primary one in yellow stripes, an outlined and a data button in quiet stripes across the whole button
    Busy buttons: stripes across the whole buttonBeschäftigte Knöpfe: Streifen über den ganzen Knopf
    All changes in 1.46 →Alle Änderungen in 1.46 →
  34. 1.45

    The audio meter no longer hides its size factor.

    Der Pegelmesser verdeckt seinen Größenfaktor nicht mehr.

    BreakingInkompatibel

    • KanteAudioMeter: the labels' switch is showScale; scale is the item's size factor again, as on every Item. Old code: a literal scale: true or scale: false no longer loads (number expected), nor does the page that holds it; a binding loads and goes wrong silently, at 0 the meter shrinks to nothing. Search for scale: on every KanteAudioMeter.
    • KanteAudioMeter: Die Beschriftung schaltet jetzt showScale; scale ist wieder der Größenfaktor, wie bei jedem Item. Alter Code: Ein Literal scale: true oder scale: false lädt nicht mehr (Zahl erwartet), und mit ihm die ganze Seite; eine Bindung lädt und läuft still falsch, bei 0 schrumpft der Messer auf nichts. Nach scale: an jedem KanteAudioMeter suchen.
    All changes in 1.45 →Alle Änderungen in 1.45 →
  35. 1.44

    The timing histogram shows the target band.

    Das Timing-Histogramm zeigt das Ziel-Band.

    NewNeu

    • KanteTimingHistogram: a target band (for example laid-back, +10 to +30 ms) as a shaded range with dashed edges and a label, so you see where your notes sit against the aim.
    • KanteBarChart: ranges shade any span behind the bars.
    • KanteTimingHistogram: ein Ziel-Band (etwa laid-back, +10 bis +30 ms) als getönter Bereich mit gestrichelten Rändern und Beschriftung; so siehst du, wo deine Töne gegenüber dem Ziel liegen.
    • KanteBarChart: ranges tönen beliebige Bereiche hinter den Balken.
    Timing histogram with bars from −20 to +40 ms, a solid zero line, a dashed mean line at +14 ms and a shaded band with dashed edges from +10 to +30 ms labelled 'Ziel laid-back +10…+30 ms'
    Laid-back aim: the band from +10 to +30 ms (demo data)Ziel laid-back: das Band von +10 bis +30 ms (Demodaten)
    All changes in 1.44 →Alle Änderungen in 1.44 →
  36. 1.43

    Parts for a mixing desk: drag a pane's size, menus with sections and shortcuts, a popover, swatches, option tiles.

    Bausteine für ein Mischpult: Größen ziehen, Menüs mit Abschnitten und Kürzeln, ein Popover, Farbfelder, Auswahlkacheln.

    NewNeu

    • KanteSplitHandle: the grip between two panes; drag, arrows or a double click to the default.
    • KanteMenuItem and KanteMenuSection: menu items with icon, value and shortcut as KanteKeycap; headings that group them.
    • KantePopover: a card at a button for settings that apply at once.
    • KanteSwatchPicker, KanteTableHeader, KanteOptionTile; KanteToast gets an action (Undo); KanteDialog names its accept button (acceptText).
    • KanteSplitHandle: der Griff zwischen zwei Bereichen; ziehen, Pfeiltasten oder Doppelklick zurück zum Standard.
    • KanteMenuItem und KanteMenuSection: Menüeinträge mit Icon, Wert und Kürzel als KanteKeycap; Überschriften, die sie gruppieren.
    • KantePopover: eine Karte am Knopf für Einstellungen, die sofort gelten.
    • KanteSwatchPicker, KanteTableHeader, KanteOptionTile; KanteToast bekommt eine Aktion (Rückgängig); KanteDialog benennt seinen Bestätigen-Knopf (acceptText).

    FixedBehoben

    • KanteSheetSkin, KanteMessageSkin: after leaving Kante a sheet or inline message kept a hidden platform background, as menus did before 1.42.
    • KanteToast stays while the pointer is over it, then gets its full time again.
    • KanteSheetSkin, KanteMessageSkin: Nach dem Verlassen von Kante blieb der Plattform-Hintergrund eines Sheets oder einer Meldung verborgen, wie bei Menüs vor 1.42.
    • KanteToast bleibt stehen, solange der Zeiger darauf liegt, und bekommt danach wieder seine volle Zeit.
    The new parts in Kante and Kante Light: split handle under a monitor, keycaps, swatch picker with none, table header with two rows, three option tiles with Camera chosen, a toast with Undo and Ctrl+Z, a File menu with sections Show and Input, icons, keycaps and a value, and a View popover with two switches
    The new parts in Kante (top) and Kante LightDie neuen Teile in Kante (oben) und Kante Light
    All changes in 1.43 →Alle Änderungen in 1.43 →
  37. 1.42

    Menus stay opaque after leaving Kante.

    Menüs bleiben deckend, nachdem Kante verlassen wurde.

    FixedBehoben

    • KantePopupSkin: switching from Kante to Kante Light or System left menus see-through, their items straight over what lay below. The skin now keeps the platform background and draws its card behind the content; a popup without a background gets the card too.
    • KantePopupSkin: Nach dem Wechsel von Kante zu Kante Light oder System waren Menüs durchsichtig, die Einträge lagen direkt über dem Inhalt darunter. Der Skin behält jetzt den Plattform-Hintergrund und zeichnet seine Karte hinter den Inhalt; auch ein Popup ohne Hintergrund bekommt sie.

    BreakingInkompatibel

    • KantePopupSkin: the property kanteBackground is gone, and in Kante popup.background is the hidden platform background; the card is kanteCard.
    • KantePopupSkin: Die Property kanteBackground entfällt, und in Kante ist popup.background der ausgeblendete Plattform-Hintergrund; die Karte heißt kanteCard.
    A menu after switching from Kante: before, only one row of background with the other items over the colored content; after, the whole menu on an opaque background
    The same menu after leaving Kante, before and afterDasselbe Menü nach dem Verlassen von Kante, vorher und nachher
    All changes in 1.42 →Alle Änderungen in 1.42 →
  38. 1.40

    Staves without notes stay quiet.

    Notenzeilen ohne Noten bleiben still.

    FixedBehoben

    • KanteTabStaff, KanteBassStaff: emptying the notes during playback logged a TypeError; the description for screen readers now waits for the current note.
    • KanteTabStaff, KanteBassStaff: Wurden die Noten während der Wiedergabe geleert, meldete die Konsole einen TypeError; die Beschreibung für Screenreader wartet jetzt auf den aktuellen Ton.
    All changes in 1.40 →Alle Änderungen in 1.40 →
  39. 1.39

    Wizard steps fit narrow windows.

    Schritte eines Assistenten passen auch in schmale Fenster.

    ImprovedVerbessert

    • KanteSteps: when the labels no longer fit, only the current step keeps its label; the others show their number or check. Screen readers still hear every step by name.
    • KanteSteps: passen die Beschriftungen nicht mehr, behält nur der aktuelle Schritt seine; die anderen zeigen Nummer oder Haken. Screenreader hören weiter jeden Schritt mit Namen.

    NoteHinweis

    • KanteSteps is now an Item with the steps in a Row (it was the Row itself); model, current and spacing stay. Its own width is always the width with every label, also when it is created asynchronously (a Loader), so it turns compact only under a width set by a layout.
    • KanteSteps ist jetzt ein Item mit den Schritten in einer Row (bisher die Row selbst); model, current und spacing bleiben. Seine eigene Breite ist immer die mit allen Beschriftungen, auch wenn es asynchron entsteht (ein Loader); kompakt wird es nur unter einer Breite, die ein Layout setzt.
    Five wizard steps, step 3 current: wide with every label, narrow with only the current step's label and the others by check mark or number
    The same steps wide and narrow (demo data)Dieselben Schritte breit und schmal (Demodaten)
    All changes in 1.39 →Alle Änderungen in 1.39 →
  40. 1.38

    One main button in the transport: play.

    Ein Hauptknopf in der Wiedergabe: Abspielen.

    ImprovedVerbessert

    • KanteTransportBar: loop, metronome and count-in show on or off by the square before the word alone, no longer as filled buttons next to play. Screen readers hear them as check boxes.
    • KanteTransportBar: Schleife, Metronom und Einzähler zeigen an oder aus nur noch am Kästchen vor dem Wort, nicht mehr als gefüllte Knöpfe neben „Abspielen“. Screenreader lesen sie als Kontrollkästchen.
    Transport bar in Kante and Leinen: play button filled, loop off with an empty lamp, metronome and count-in on with a filled lamp, none of them filled as a button
    Metronome and count-in on, loop off: the lamp tells the state (Kante and Leinen)Metronom und Einzähler an, Schleife aus: das Kästchen zeigt den Zustand (Kante und Leinen)
    All changes in 1.38 →Alle Änderungen in 1.38 →
  41. 1.37

    Ghost notes in tab as printed: the fret in parentheses, nothing more.

    Ghost Notes in der Tabulatur wie gedruckt: der Bund in Klammern, sonst nichts.

    ImprovedVerbessert

    • KanteTabLane and KanteTabStaff no longer draw "( )" above a ghost note's parenthesized fret; in sixteenths the two ran together. A technique result frames the fret instead.
    • KanteTabLane und KanteTabStaff zeichnen über dem geklammerten Bund einer Ghost Note kein „( )“ mehr; bei Sechzehnteln lief beides ineinander. Ein Technik-Ergebnis rahmt stattdessen den Bund.
    Tab lane and tablature with ghost notes as a fret in parentheses and no sign above; one ghost note framed as played, one framed dashed and struck as unheard
    Ghost notes in lane and tab: the fret in parentheses; a result frames it (demo data)Ghost Notes in Lane und Tab: der Bund in Klammern; ein Ergebnis rahmt ihn (Demodaten)
    All changes in 1.37 →Alle Änderungen in 1.37 →
  42. 1.36

    Key figures read as one: screen readers hear "Practised: 7 min".

    Kennzahlen am Stück: Screenreader hören „Geübt: 7 min“.

    FixedBehoben

    • KanteKpi has one accessible name of label and value, the change as description. Before, figure and label were read as two loose texts.
    • KanteKpi hat einen Namen aus Beschriftung und Wert, die Änderung als Beschreibung. Bisher wurden Zahl und Beschriftung als zwei lose Texte vorgelesen.
    All changes in 1.36 →Alle Änderungen in 1.36 →
  43. 1.35

    Loops in tab and notes: tablature and bass staff show the loop range the tab lane already showed. From lmix: a page bar, dark picture areas and vertical sliders.

    Schleifen in Tab und Noten: Tabulatur und Bassnoten zeigen den Loop-Bereich, den bisher nur die Tab-Lane zeigte. Aus lmix: eine Seitenleiste, dunkle Bildflächen und senkrechte Schieberegler.

    NewNeu

    • KanteTabStaff and KanteBassStaff: loopStart and loopEnd as on the tab lane, a tint with bracket edges, so a looped passage is visible in every view, not only by colour.
    • A loop across a line break continues on the next line; brackets only where it really starts and ends.
    • KantePageBar: the bar at the foot of an app window that switches between a few large pages. The current page is raised with a marker line; a dot on a tab says something runs there, Warning and Error as a diamond, so the kind is not colour alone. Keyboard and screen readers included.
    • KanteStyle.stageColor and stageTextColor: the ground of monitors and video previews, dark in every kind and in Leinen too, as the web .stage.
    • KanteSliderSkin draws vertical sliders (faders): the track runs along the height, filled from the bottom.
    • KanteTabStaff und KanteBassStaff: loopStart und loopEnd wie in der Tab-Lane, eine Tönung mit Klammerkanten, damit eine Schleife in jeder Ansicht zu sehen ist, nicht nur an der Farbe.
    • Eine Schleife über einen Zeilenumbruch geht in der nächsten Zeile weiter; Klammern nur, wo sie wirklich beginnt und endet.
    • KantePageBar: die Leiste am Fuß eines App-Fensters, die zwischen wenigen großen Seiten umschaltet. Die aktuelle Seite ist hervorgehoben und hat eine Markierungslinie; ein Punkt auf einem Reiter zeigt, dass dort etwas läuft, Warnung und Fehler als Raute, damit die Art nicht nur an der Farbe hängt. Mit Tastatur und Screenreader.
    • KanteStyle.stageColor und stageTextColor: der Grund von Monitoren und Videovorschauen, dunkel in jeder Art und auch in Leinen, wie .stage im Web.
    • KanteSliderSkin zeichnet senkrechte Schieberegler (Fader): Die Spur läuft entlang der Höhe und füllt sich von unten.

    NoteHinweis

    • Additions only: existing calls keep working; without a loop nothing changes, horizontal sliders look as before.
    • Nur Ergänzungen: bestehende Aufrufe funktionieren weiter; ohne Schleife ändert sich nichts, waagerechte Schieberegler sehen aus wie bisher.
    Tab lane, tablature and bass staff with bars 3 and 4 as a loop across the line break
    Bars 3 and 4 looped in lane, tab and staff (demo data)Takte 3 und 4 als Schleife in Lane, Tab und Noten (Demodaten)
    A dark picture area with two vertical faders beside it, and below a page bar with the pages Mix, Audio, Outputs and Setup; Audio is current, Outputs carries a warning diamond
    Page bar, picture area and vertical sliders, in Kante and LeinenSeitenleiste, Bildfläche und senkrechte Schieberegler, in Kante und Leinen
    All changes in 1.35 →Alle Änderungen in 1.35 →
  44. 1.34.1

    A date field with a two-digit year keeps the year it shows.

    Ein Datumsfeld mit zweistelliger Jahreszahl behält das Jahr, das es zeigt.

    FixedBehoben

    • KanteDateField with a short format such as dd.MM.yy or M/d/yy: the field shows "26" and read it back as 1926 when it was entered and left. Two-digit years now lie in the century around today, at most 20 years ahead. In Plasmai a running entry started 100 years back, and Kimai refused a stopped one as too long.
    • KanteDateField mit einem Kurzformat wie dd.MM.yy oder M/d/yy: Das Feld zeigt „26“ und las das beim Betreten und Verlassen als 1926 zurück. Zweistellige Jahre liegen jetzt im Jahrhundert um heute, höchstens 20 Jahre voraus. In Plasmai begann ein laufender Eintrag 100 Jahre früher, und Kimai lehnte einen beendeten als zu lang ab.

    NoteHinweis

    • Fields with a four-digit year (the default dd.MM.yyyy) were not affected.
    • Felder mit vierstelligem Jahr (der Standard dd.MM.yyyy) waren nicht betroffen.
    KanteDateField showing 13.10.26 and 10/13/26; version 1.34 reads them back as 1926-10-13, version 1.34.1 as 2026-10-13
    What the field reads back from its own text, German and US formatWas das Feld aus seinem eigenen Text zurückliest, deutsches und US-Format
    All changes in 1.34.1 →Alle Änderungen in 1.34.1 →
  45. 1.34

    Japanese in pieces gets a Japanese face, not a Chinese one.

    Japanisch in Stücken bekommt eine japanische Schrift statt einer chinesischen.

    NewNeu

    • KanteStyle.japaneseFamily and japaneseFont(): the first installed Japanese face of a preference list.
    • KanteStyle.japaneseFamily und japaneseFont(): die erste installierte japanische Schrift einer Vorzugsliste.

    FixedBehoben

    • Ruby text, pitch curve and correction diff draw Japanese in a Japanese face. Under a German or English locale single kanji fell back to a Chinese face: other glyph forms, a lower baseline, a centred 。.
    • Ruby-Text, Pitch-Kurve und Korrektur-Diff zeigen Japanisch in einer japanischen Schrift. Unter deutscher oder englischer Locale fielen einzelne Kanji auf eine chinesische Schrift zurück: andere Zeichenformen, tiefere Grundlinie, mittiges 。.
    All changes in 1.34 →Alle Änderungen in 1.34 →
  46. 1.33

    Words to look up in Japanese text: a click on a word, for Kaiwa's dictionary.

    Wörter zum Nachschlagen in japanischem Text: ein Klick auf ein Wort, für Kaiwas Wörterbuch.

    NewNeu

    • KanteRubyText: segments form words; with interactive a word underlines on hover and opens with a click, or with Tab, the arrow keys and Enter. Screen readers hear the focused word.
    • KanteRubyText: Segmente bilden Wörter; mit interactive unterstreicht sich ein Wort beim Darüberfahren und öffnet sich per Klick oder mit Tab, Pfeiltasten und Eingabe. Screenreader lesen das gewählte Wort vor.

    NoteHinweis

    • Additions only: existing calls keep working.
    • Nur Ergänzungen: bestehende Aufrufe funktionieren weiter.
    All changes in 1.33 →Alle Änderungen in 1.33 →
  47. 1.32

    Dead notes for Kontra: a note muted without pitch gets its own sign.

    Dead Notes für Kontra: ein gedämpfter Ton ohne Tonhöhe bekommt ein eigenes Zeichen.

    NewNeu

    • KanteTechniqueMark: the dead note "x", with played, another technique or not heard as for every technique.
    • Tab lane and tablature write a dead note's fret as x, as in printed tab.
    • KanteTechniqueMark: die Dead Note „x“, mit gespielt, andere Technik oder nicht gehört wie bei jeder Technik.
    • Tab-Lane und Tabulatur schreiben den Bund einer Dead Note als x, wie in gedruckter Tabulatur.

    NoteHinweis

    • Additions only: existing calls keep working.
    • Nur Ergänzungen: bestehende Aufrufe funktionieren weiter.
    All changes in 1.32 →Alle Änderungen in 1.32 →
  48. 1.31

    Technique marks for Kontra: tab, lane and staff show how a note is to be played, and whether it was.

    Technik-Zeichen für Kontra: Tab, Lane und Noten zeigen, wie eine Note zu spielen ist und ob sie so gespielt wurde.

    NewNeu

    • KanteTechniqueMark: the tab signs for slide, hammer-on, pull-off, slap, pop and ghost note; played, another technique or not heard show by frame and strike, not by colour alone.
    • Tab lane, tablature and bass staff take a technique and its result per note; a ghost note's fret reads in parentheses.
    • KanteTechniqueMark: die Tab-Zeichen für Slide, Hammer-on, Pull-off, Slap, Pop und Ghost Note; gespielt, andere Technik oder nicht gehört zeigen Rahmen und Durchstreichung, nicht nur die Farbe.
    • Tab-Lane, Tabulatur und Bassnoten nehmen je Note eine Technik und ihr Ergebnis; der Bund einer Ghost Note steht in Klammern.

    NoteHinweis

    • Additions only: existing calls keep working.
    • Nur Ergänzungen: bestehende Aufrufe funktionieren weiter.
    Technique signs in a tab lane, a tablature and a bass staff, with played, other and unheard results
    Technique signs in lane, tab and staff (demo data)Technik-Zeichen in Lane, Tab und Noten (Demodaten)
    All changes in 1.31 →Alle Änderungen in 1.31 →
  49. 1.30

    A keyboard for Kontra's bass over MIDI: players who play bass lines on keys see the notes fall onto the keys they play.

    Eine Klaviatur für Kontras Bass über MIDI: wer Basslinien auf Tasten spielt, sieht die Noten auf die Tasten fallen, die zu spielen sind.

    NewNeu

    • KanteKeyboard: piano keys for a MIDI range with markers by shape (current, next, root, scale) and the note state signs; key names from the app; optionally usable by keyboard and click.
    • KanteKeyLane: falling notes over the keys, with the tab lane's notes, timing and state signs, so an app feeds both the same data.
    • KanteKeyLayout: the key geometry both share, with piano proportions.
    • KanteKeyboard: Klaviertasten für einen MIDI-Bereich mit Markierungen nach Form (aktuell, nächste, Grundton, Tonleiter) und den Zeichen der Notenzustände; Tastennamen von der App; auf Wunsch mit Tastatur und Klick bedienbar.
    • KanteKeyLane: fallende Noten über den Tasten, mit Noten, Zeitachse und Zustandszeichen der Tab-Lane, so dass eine App beiden dieselben Daten gibt.
    • KanteKeyLayout: die gemeinsame Tastengeometrie, in Klavierproportionen.

    NoteHinweis

    • Additions only: existing calls keep working.
    • Nur Ergänzungen: bestehende Aufrufe funktionieren weiter.
    Falling notes over a piano keyboard with note state signs and markers
    Key lane over the keyboard (demo data)Notenspur über der Klaviatur (Demodaten)
    All changes in 1.30 →Alle Änderungen in 1.30 →
  50. 1.29

    Colour labels in apps and an audio meter for mixers, for lmix's Qt Console.

    Farblabels in Apps und ein Audio-Meter für Mischpulte, für die Qt-Konsole von lmix.

    NewNeu

    • Seven colour labels, the same on the web and in apps: red, orange, yellow, green, cyan, blue, purple. A label keeps its colour in every theme; its name stands beside it.
    • KanteAudioMeter: a level in dBFS with three zones, peak hold and a scale, also vertical.
    • Sieben Farblabels, im Web und in Apps gleich: Rot, Orange, Gelb, Grün, Cyan, Blau, Lila. Ein Label behält seine Farbe in jedem Theme; sein Name steht daneben.
    • KanteAudioMeter: ein Pegel in dBFS mit drei Zonen, Spitzenwert-Halten und Skala, auch senkrecht.

    NoteHinweis

    • Web: data-label also takes orange and cyan. KanteLevelMeter stays the input check with zones in words.
    • Web: data-label kennt auch orange und cyan. KanteLevelMeter bleibt die Eingangsprüfung mit Zonen in Worten.
    All changes in 1.29 →Alle Änderungen in 1.29 →
  51. 1.28

    More wishes from Kontra, the bass trainer: choices that are not available yet, help next to a term, a Kante number field and alternate endings in the tablature.

    Weitere Wünsche aus Kontra, dem Basstrainer: Auswahlen, die es noch nicht gibt, Hilfe neben einem Begriff, ein Zahlenfeld in Kante und Wiederholungsklammern in der Tabulatur.

    NewNeu

    • KanteInfoTip: a “?” next to a term that explains it on hover, focus or click; its name for screen readers is plain text the app sets.
    • KanteSpinBox: a spin box in Kante, with the same API as the Qt one (units via textFromValue, typing, keys).
    • KanteTabStaff: volta brackets over the bars of an ending (“1.”, “2.”), from endings in the bar data; also across a line break.
    • KanteInfoTip: ein „?“ neben einem Begriff, das ihn bei Zeigen, Fokus oder Klick erklärt; seinen Namen für Screenreader setzt die App als einfachen Text.
    • KanteSpinBox: ein Zahlenfeld in Kante, mit derselben API wie das von Qt (Einheiten über textFromValue, Eintippen, Tasten).
    • KanteTabStaff: Wiederholungsklammern (Volta) über den Takten eines Schlusses („1.“, „2.“), aus endings in den Taktdaten; auch über einen Zeilenumbruch.

    ImprovedVerbessert

    • KanteSegmented and .seg: single segments can be disabled. They are faded and struck through, take no click, arrow keys skip them, and their tooltip can say why.
    • KanteFieldSkin: on a spin box, + or − fades when the value is at its limit.
    • KanteTabStaff, KanteBassStaff, KanteTabLane: bars show the number the app sends (bars[i].number), so repeats played out read 5, 6, 5, 6 as in the score.
    • String colours: the palette moves into KanteStyle with the presets “kante”, “mono” and “bright”; lane, tablature and fretboard share it (stringColors). Strings keep their names, so colour is never the only sign.
    • KanteSegmented und .seg: einzelne Segmente lassen sich abschalten. Sie sind blass und durchgestrichen, nehmen keinen Klick an, die Pfeiltasten überspringen sie, und ihr Tooltip kann sagen, warum.
    • KanteFieldSkin: an einem Zahlenfeld wird + oder − blass, wenn der Wert an seiner Grenze ist.
    • KanteTabStaff, KanteBassStaff, KanteTabLane: Takte zeigen die Nummer, die die App schickt (bars[i].number), ausgespielte Wiederholungen lesen sich so wie in den Noten: 5, 6, 5, 6.
    • Saitenfarben: die Palette zieht nach KanteStyle, mit den Vorgaben „kante“, „mono“ (einfarbig) und „bright“ (kräftig); Spur, Tabulatur und Griffbrett teilen sie (stringColors). Saiten behalten ihre Namen, die Farbe ist nie das einzige Zeichen.

    NoteHinweis

    • Additions only: existing calls keep working. A tablature without endings keeps its layout. Tablature and fretboard now draw their strings in the string palette instead of muted; stringPalette: "mono" comes closest to the old look.
    • Nur Ergänzungen: bestehende Aufrufe funktionieren weiter. Eine Tabulatur ohne endings behält ihr Layout. Tabulatur und Griffbrett zeichnen ihre Saiten jetzt in der Saitenpalette statt gedämpft; stringPalette: "mono" kommt dem alten Bild am nächsten.
    Segmented controls with struck-through disabled segments, an open info tip and five spin boxes in Kante
    Disabled segments, info tip and spin boxes (demo data)Abgeschaltete Segmente, Info-Tipp und Zahlenfelder (Demodaten)
    Lane, tablature and fretboard in the string palettes kante, mono and bright
    String palettes kante, mono, bright (demo data)Saitenpaletten kante, mono, bright (Demodaten)
    Tablature with a first ending across a line break, closed after the repeat sign, and an open second ending
    Volta brackets in the tablature (demo data)Wiederholungsklammern in der Tabulatur (Demodaten)
    All changes in 1.28 →Alle Änderungen in 1.28 →
  52. 1.27

    Wishes from a QA round of Kontra, the bass trainer: Kante controls instead of light platform ones, a primary action that stands out in Kante Light, steps that differ by shape, and more for the bass staff.

    Wünsche aus einer QA-Runde von Kontra, dem Basstrainer: Kante-Bedienelemente statt heller Plattform-Elemente, eine Hauptaktion, die in Kante Light heraussticht, Schritte, die sich in der Form unterscheiden, und mehr für das Bass-Notensystem.

    NewNeu

    • KanteSwitch and KanteComboBox: a switch and a combo box in Kante, the combo box's open list included.
    • Note state offpitch: the right note, its pitch off by more than the app's limit. A wave as its sign, the deviation beside it (“+32 ct”).
    • KanteBassStaff: chord symbols per bar or at a time, and a key per bar (naturals only when the key returns to C).
    • KanteSwitch und KanteComboBox: Schalter und Auswahlfeld in Kante, die offene Liste des Auswahlfelds eingeschlossen.
    • Notenzustand offpitch („unsauber“): der richtige Ton, aber mehr als die Grenze der App verstimmt. Eine Welle als Zeichen, die Abweichung daneben („+32 ct“).
    • KanteBassStaff: Akkordsymbole pro Takt oder an einer Zeit und eine Tonart pro Takt, Auflösungszeichen nur bei der Rückkehr nach C.

    ImprovedVerbessert

    • KanteSteps: done shows a check, the current step a filled number and an outline, upcoming steps a hollow number, so colour is never the only difference (WCAG 1.4.1).
    • KanteSteps: erledigt zeigt einen Haken, der aktuelle Schritt eine gefüllte Nummer und einen Rahmen, kommende eine hohle Nummer; die Farbe ist nie der einzige Unterschied (WCAG 1.4.1).

    FixedBehoben

    • Kante Light: the primary button looked like any other. It is now filled in the platform highlight, darkened until its label reads at 4.5:1.
    • KanteFieldSkin: the combo box arrow is drawn, so it shows without an icon theme.
    • Kante Light: der Hauptknopf sah aus wie jeder andere. Er ist jetzt in der Hervorhebungsfarbe der Plattform gefüllt, abgedunkelt, bis seine Beschriftung 4,5:1 erreicht.
    • KanteFieldSkin: der Pfeil des Auswahlfelds wird gezeichnet und erscheint so auch ohne Symbolthema.

    NoteHinweis

    • Additions only: existing calls keep working. A plain combo box with KanteFieldSkin keeps the style's list; use KanteComboBox for a Kante list.
    • Nur Ergänzungen: bestehende Aufrufe funktionieren weiter. Ein einfaches Auswahlfeld mit KanteFieldSkin behält die Liste des Stils; für eine Kante-Liste KanteComboBox nehmen.
    Primary button, steps with check, filled and hollow signs, switches and an open combo box in Kante
    Primary action, steps, switch and combo box (demo data)Hauptaktion, Schritte, Schalter und Auswahlfeld (Demodaten)
    Legend of note states, lane, tablature and bass staff with offpitch notes and their cents
    The offpitch state with cents (demo data)Der Zustand „unsauber“ mit Cent (Demodaten)
    Bass staff with chord symbols and key changes with naturals
    Chord symbols and key changes (demo data)Akkordsymbole und Tonartwechsel (Demodaten)
    All changes in 1.27 →Alle Änderungen in 1.27 →

Earlier releases are listed in the README, one section per version.

Frühere Versionen stehen im README, ein Abschnitt pro Version.