Doppelklick: Punkt setzen
Ziehen: Zeit/Wert aendern
+
Audio ziehen: Clip verschieben
Strg+Mausrad: Zoom
Mausrad: horizontal scrollen
Entf: Punkt loeschen
diff --git a/src/splash.html b/src/splash.html
new file mode 100644
index 0000000..d271614
--- /dev/null
+++ b/src/splash.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
Time4Midi startet
+
+
+
+
+
+
+

+

+
+
+
+
Startup
+
Time4Midi startet
+
Die Engine, Treiber und das Projekt-Setup werden vorbereitet. Gleich geht es los.
+
+
+
+
+
+ Bitte kurz warten
+ Renderer wird geladen
+
+
+
+
+
+
diff --git a/src/styles.css b/src/styles.css
index 4bfec97..32ac433 100644
--- a/src/styles.css
+++ b/src/styles.css
@@ -180,6 +180,43 @@ p {
flex-wrap: wrap;
}
+.transport-field {
+ min-width: 132px;
+ max-width: 156px;
+}
+
+.transport-field-small {
+ min-width: 96px;
+ max-width: 112px;
+}
+
+.transport-field input {
+ padding: 0.42rem 0.6rem;
+}
+
+.transport-field select {
+ padding: 0.42rem 0.6rem;
+}
+
+.transport-checkbox {
+ min-width: 90px;
+ align-content: end;
+}
+
+.transport-checkbox input {
+ width: 16px;
+ height: 16px;
+}
+
+.transport-source {
+ min-width: 150px;
+}
+
+.transport-source strong {
+ font-size: 0.78rem;
+ line-height: 1.3;
+}
+
.editor-hints span,
.meta-row span,
.transport-label {
@@ -704,3 +741,163 @@ p {
padding: 14px;
}
}
+
+.diagnostics-shell {
+ display: flex;
+ flex-direction: column;
+ gap: 12px;
+ min-height: 100vh;
+ padding: 12px;
+}
+
+.diagnostics-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-start;
+ gap: 12px;
+}
+
+.diagnostics-header-copy {
+ display: flex;
+ flex-direction: column;
+ gap: 6px;
+}
+
+.diagnostics-summary {
+ display: flex;
+ gap: 8px;
+ flex-wrap: wrap;
+}
+
+.diagnostics-summary-card {
+ min-width: 110px;
+ padding: 10px 12px;
+ border-radius: 14px;
+ border: 1px solid rgba(255, 255, 255, 0.08);
+ background: rgba(255, 255, 255, 0.04);
+}
+
+.diagnostics-summary-card strong {
+ display: block;
+ font-size: 1.1rem;
+ margin-top: 4px;
+}
+
+.diagnostics-grid {
+ display: grid;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ gap: 12px;
+}
+
+.diagnostics-card {
+ display: flex;
+ flex-direction: column;
+ min-height: 240px;
+}
+
+.diagnostics-card.wide {
+ grid-column: 1 / -1;
+}
+
+.diagnostics-card-body {
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+ min-height: 0;
+}
+
+.diagnostics-scroll {
+ overflow: auto;
+ min-height: 0;
+}
+
+.diagnostics-list,
+.diagnostics-history {
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+}
+
+.diagnostics-entry {
+ padding: 10px 12px;
+ border-radius: 14px;
+ border: 1px solid rgba(255, 255, 255, 0.08);
+ background: rgba(255, 255, 255, 0.03);
+}
+
+.diagnostics-entry-header,
+.diagnostics-entry-meta {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ gap: 8px;
+ flex-wrap: wrap;
+}
+
+.diagnostics-entry-meta {
+ margin-top: 6px;
+ color: var(--muted);
+ font-size: 0.76rem;
+}
+
+.diagnostics-channel-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(96px, 1fr));
+ gap: 6px;
+ margin-top: 8px;
+}
+
+.diagnostics-channel-chip {
+ padding: 0.45rem 0.55rem;
+ border-radius: 10px;
+ background: rgba(110, 194, 242, 0.1);
+ border: 1px solid rgba(110, 194, 242, 0.18);
+ font-size: 0.8rem;
+}
+
+.diagnostics-transport-pill {
+ display: inline-flex;
+ align-items: center;
+ padding: 0.22rem 0.5rem;
+ border-radius: 999px;
+ font-size: 0.72rem;
+ text-transform: uppercase;
+ letter-spacing: 0.08em;
+ color: var(--text);
+}
+
+.diagnostics-transport-pill.artnet {
+ background: rgba(255, 179, 92, 0.18);
+ border: 1px solid rgba(255, 179, 92, 0.28);
+}
+
+.diagnostics-transport-pill.sacn {
+ background: rgba(110, 194, 242, 0.18);
+ border: 1px solid rgba(110, 194, 242, 0.28);
+}
+
+.diagnostics-transport-pill.mqtt,
+.diagnostics-transport-pill.knx {
+ background: rgba(255, 255, 255, 0.08);
+ border: 1px solid rgba(255, 255, 255, 0.12);
+}
+
+.diagnostics-empty {
+ color: var(--muted);
+ font-size: 0.82rem;
+ line-height: 1.45;
+}
+
+.diagnostics-mono {
+ font-family: "Consolas", "Cascadia Mono", "Courier New", monospace;
+}
+
+@media (max-width: 980px) {
+ .diagnostics-grid {
+ grid-template-columns: 1fr;
+ }
+
+ .diagnostics-header {
+ flex-direction: column;
+ }
+}