feat(app): Workbench-Dock statt Zoom-Landkarte + bedienbare VNC-Konsole (0.2.2.0)

Cockpit neu gedacht — das Pinch-Zoom-Landkarten-Konzept war auf 5 Zoll fummelig:
- WorkspaceDeck + WorkspaceDock: Taskleiste unten (Chat · Code · Desktop),
  Ein-Tap-Panelwechsel im Daumenbereich, animierter Indikator, Aktivitaets-
  Badges (Code blau / Desktop gruen), Safe-Area, blendet bei offener Tastatur
  aus. Panels bildschirmfuellend + immer gemountet (kein Remount).
- noVNC bedienbar: novncHtml bekommt Tastatur-Bridge (verstecktes Input-Feld →
  rfb.sendKey inkl. Enter/Backspace/Pfeile), Strg-Alt-Entf, Fit↔1:1. VncTile
  zeigt eine Steuerungs-Leiste (⌨ / Strg+Alt+Entf / ⤢).
- Entfernt: WorkspaceCanvas, Tile, PreviewTile, CockpitOverviewButton,
  cockpitNav (Pinch-Canvas + Uebersichts-Button obsolet). layout.ts auf
  Panel-Metadaten geschlankt. Header nur noch mit Kompakt/Cockpit-Umschalter.

tsc clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 21:44:32 +02:00
co-authored by Claude Opus 4.8
parent 7d46d8e531
commit 0110526622
14 changed files with 317 additions and 551 deletions
@@ -1,48 +0,0 @@
/**
* CockpitOverviewButton — Header-Button (links) für „⤢ Übersicht".
*
* Nur sichtbar im Cockpit-Modus, wenn gerade eine Kachel fokussiert ist. Sitzt
* im Navigations-Header, kollidiert also mit nichts im Chat (früher hing er über
* dem Abbrechen-Button der „ARIA denkt"-Leiste).
*/
import React, { useEffect, useState } from 'react';
import { StyleSheet, Text, TouchableOpacity } from 'react-native';
import cockpitNav from '../services/cockpitNav';
import viewMode, { ViewModeValue } from '../services/viewMode';
const CockpitOverviewButton: React.FC = () => {
const [mode, setMode] = useState<ViewModeValue>(viewMode.get());
const [focused, setFocused] = useState<boolean>(cockpitNav.isFocused());
useEffect(() => viewMode.subscribe(setMode), []);
useEffect(() => cockpitNav.subscribe(setFocused), []);
if (mode !== 'cockpit' || !focused) return null;
return (
<TouchableOpacity
onPress={() => cockpitNav.requestOverview()}
style={styles.pill}
hitSlop={{ top: 10, bottom: 10, left: 10, right: 10 }}
activeOpacity={0.75}
>
<Text style={styles.text}> Übersicht</Text>
</TouchableOpacity>
);
};
const styles = StyleSheet.create({
pill: {
marginLeft: 12,
paddingHorizontal: 12,
paddingVertical: 6,
borderRadius: 16,
borderWidth: 1,
borderColor: '#0096FF',
backgroundColor: '#0A1F33',
},
text: { color: '#0096FF', fontSize: 13, fontWeight: '700' },
});
export default CockpitOverviewButton;