release: bump version to 0.0.1.9
This commit is contained in:
parent
8281131432
commit
ff03d8ce62
|
|
@ -79,8 +79,8 @@ android {
|
||||||
applicationId "com.ariacockpit"
|
applicationId "com.ariacockpit"
|
||||||
minSdkVersion rootProject.ext.minSdkVersion
|
minSdkVersion rootProject.ext.minSdkVersion
|
||||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||||
versionCode 108
|
versionCode 109
|
||||||
versionName "0.0.1.8"
|
versionName "0.0.1.9"
|
||||||
// Fallback fuer Libraries mit Product Flavors
|
// Fallback fuer Libraries mit Product Flavors
|
||||||
missingDimensionStrategy 'react-native-camera', 'general'
|
missingDimensionStrategy 'react-native-camera', 'general'
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "aria-cockpit",
|
"name": "aria-cockpit",
|
||||||
"version": "0.0.1.8",
|
"version": "0.0.1.9",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"android": "react-native run-android",
|
"android": "react-native run-android",
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,9 @@ const SettingsScreen: React.FC = () => {
|
||||||
const [storagePath, setStoragePath] = useState(DEFAULT_STORAGE_PATH);
|
const [storagePath, setStoragePath] = useState(DEFAULT_STORAGE_PATH);
|
||||||
const [autoDownload, setAutoDownload] = useState(true);
|
const [autoDownload, setAutoDownload] = useState(true);
|
||||||
const [storageSize, setStorageSize] = useState('...');
|
const [storageSize, setStorageSize] = useState('...');
|
||||||
|
const [ttsEnabled, setTtsEnabled] = useState(true);
|
||||||
|
const [defaultVoice, setDefaultVoice] = useState('ramona');
|
||||||
|
const [highlightVoice, setHighlightVoice] = useState('thorsten');
|
||||||
const [editingPath, setEditingPath] = useState(false);
|
const [editingPath, setEditingPath] = useState(false);
|
||||||
const [tempPath, setTempPath] = useState('');
|
const [tempPath, setTempPath] = useState('');
|
||||||
|
|
||||||
|
|
@ -91,6 +94,15 @@ const SettingsScreen: React.FC = () => {
|
||||||
AsyncStorage.getItem('aria_auto_download').then(saved => {
|
AsyncStorage.getItem('aria_auto_download').then(saved => {
|
||||||
if (saved !== null) setAutoDownload(saved === 'true');
|
if (saved !== null) setAutoDownload(saved === 'true');
|
||||||
});
|
});
|
||||||
|
AsyncStorage.getItem('aria_tts_enabled').then(saved => {
|
||||||
|
if (saved !== null) setTtsEnabled(saved === 'true');
|
||||||
|
});
|
||||||
|
AsyncStorage.getItem('aria_default_voice').then(saved => {
|
||||||
|
if (saved) setDefaultVoice(saved);
|
||||||
|
});
|
||||||
|
AsyncStorage.getItem('aria_highlight_voice').then(saved => {
|
||||||
|
if (saved) setHighlightVoice(saved);
|
||||||
|
});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
// Speichergroesse berechnen
|
// Speichergroesse berechnen
|
||||||
|
|
@ -442,6 +454,83 @@ const SettingsScreen: React.FC = () => {
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
|
{/* === Sprachausgabe === */}
|
||||||
|
<Text style={styles.sectionTitle}>Sprachausgabe</Text>
|
||||||
|
<View style={styles.card}>
|
||||||
|
{/* TTS An/Aus */}
|
||||||
|
<View style={styles.toggleRow}>
|
||||||
|
<View style={styles.toggleInfo}>
|
||||||
|
<Text style={styles.toggleLabel}>Sprachausgabe</Text>
|
||||||
|
<Text style={styles.toggleHint}>ARIA antwortet per Sprache (TTS)</Text>
|
||||||
|
</View>
|
||||||
|
<Switch
|
||||||
|
value={ttsEnabled}
|
||||||
|
onValueChange={(val) => {
|
||||||
|
setTtsEnabled(val);
|
||||||
|
AsyncStorage.setItem('aria_tts_enabled', String(val));
|
||||||
|
rvs.send('config' as any, { ttsEnabled: val });
|
||||||
|
}}
|
||||||
|
trackColor={{ false: '#2A2A3E', true: '#0096FF' }}
|
||||||
|
thumbColor={ttsEnabled ? '#FFFFFF' : '#666680'}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
{/* Standard-Stimme */}
|
||||||
|
<View style={{marginTop: 16}}>
|
||||||
|
<Text style={styles.toggleLabel}>Standard-Stimme</Text>
|
||||||
|
<Text style={styles.toggleHint}>Fuer normale Antworten und Gespraeche</Text>
|
||||||
|
<View style={{flexDirection: 'row', gap: 8, marginTop: 8}}>
|
||||||
|
<TouchableOpacity
|
||||||
|
style={[styles.voiceBtn, defaultVoice === 'ramona' && styles.voiceBtnActive]}
|
||||||
|
onPress={() => { setDefaultVoice('ramona'); AsyncStorage.setItem('aria_default_voice', 'ramona'); }}
|
||||||
|
>
|
||||||
|
<Text style={styles.voiceBtnIcon}>{'\uD83D\uDE4E\u200D\u2640\uFE0F'}</Text>
|
||||||
|
<Text style={[styles.voiceBtnText, defaultVoice === 'ramona' && styles.voiceBtnTextActive]}>Ramona</Text>
|
||||||
|
<Text style={styles.voiceBtnHint}>Weiblich, warm</Text>
|
||||||
|
</TouchableOpacity>
|
||||||
|
<TouchableOpacity
|
||||||
|
style={[styles.voiceBtn, defaultVoice === 'thorsten' && styles.voiceBtnActive]}
|
||||||
|
onPress={() => { setDefaultVoice('thorsten'); AsyncStorage.setItem('aria_default_voice', 'thorsten'); }}
|
||||||
|
>
|
||||||
|
<Text style={styles.voiceBtnIcon}>{'\uD83E\uDDD4'}</Text>
|
||||||
|
<Text style={[styles.voiceBtnText, defaultVoice === 'thorsten' && styles.voiceBtnTextActive]}>Thorsten</Text>
|
||||||
|
<Text style={styles.voiceBtnHint}>Maennlich, tief</Text>
|
||||||
|
</TouchableOpacity>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
{/* Highlight-Stimme */}
|
||||||
|
<View style={{marginTop: 16}}>
|
||||||
|
<Text style={styles.toggleLabel}>Highlight-Stimme</Text>
|
||||||
|
<Text style={styles.toggleHint}>Fuer besondere Ereignisse (Deploy, Alarm, Erfolg)</Text>
|
||||||
|
<View style={{flexDirection: 'row', gap: 8, marginTop: 8}}>
|
||||||
|
<TouchableOpacity
|
||||||
|
style={[styles.voiceBtn, highlightVoice === 'thorsten' && styles.voiceBtnActive]}
|
||||||
|
onPress={() => { setHighlightVoice('thorsten'); AsyncStorage.setItem('aria_highlight_voice', 'thorsten'); }}
|
||||||
|
>
|
||||||
|
<Text style={styles.voiceBtnIcon}>{'\uD83E\uDDD4'}</Text>
|
||||||
|
<Text style={[styles.voiceBtnText, highlightVoice === 'thorsten' && styles.voiceBtnTextActive]}>Thorsten</Text>
|
||||||
|
</TouchableOpacity>
|
||||||
|
<TouchableOpacity
|
||||||
|
style={[styles.voiceBtn, highlightVoice === 'ramona' && styles.voiceBtnActive]}
|
||||||
|
onPress={() => { setHighlightVoice('ramona'); AsyncStorage.setItem('aria_highlight_voice', 'ramona'); }}
|
||||||
|
>
|
||||||
|
<Text style={styles.voiceBtnIcon}>{'\uD83D\uDE4E\u200D\u2640\uFE0F'}</Text>
|
||||||
|
<Text style={[styles.voiceBtnText, highlightVoice === 'ramona' && styles.voiceBtnTextActive]}>Ramona</Text>
|
||||||
|
</TouchableOpacity>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
{/* Highlight-Trigger Info */}
|
||||||
|
<View style={{marginTop: 16, padding: 10, backgroundColor: '#1E1E2E', borderRadius: 8}}>
|
||||||
|
<Text style={styles.toggleLabel}>{'\u26A1'} Highlight-Trigger</Text>
|
||||||
|
<Text style={[styles.toggleHint, {marginTop: 4}]}>
|
||||||
|
Die Highlight-Stimme wird automatisch bei diesen Woertern verwendet:{'\n'}
|
||||||
|
deploy, erfolgreich, alarm, so soll es sein, kritisch, server down, sicherheitswarnung, ticket geloest, aufgabe abgeschlossen
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
|
||||||
{/* === Speicher === */}
|
{/* === Speicher === */}
|
||||||
<Text style={styles.sectionTitle}>Anhang-Speicher</Text>
|
<Text style={styles.sectionTitle}>Anhang-Speicher</Text>
|
||||||
<View style={styles.card}>
|
<View style={styles.card}>
|
||||||
|
|
@ -601,7 +690,7 @@ const SettingsScreen: React.FC = () => {
|
||||||
<Text style={styles.sectionTitle}>{'\u00DC'}ber</Text>
|
<Text style={styles.sectionTitle}>{'\u00DC'}ber</Text>
|
||||||
<View style={styles.card}>
|
<View style={styles.card}>
|
||||||
<Text style={styles.aboutTitle}>ARIA Cockpit</Text>
|
<Text style={styles.aboutTitle}>ARIA Cockpit</Text>
|
||||||
<Text style={styles.aboutVersion}>Version 0.0.1.8 </Text>
|
<Text style={styles.aboutVersion}>Version 0.0.1.9 </Text>
|
||||||
<Text style={styles.aboutInfo}>
|
<Text style={styles.aboutInfo}>
|
||||||
Stefans Kommandozentrale f{'\u00FC'}r ARIA.{'\n'}
|
Stefans Kommandozentrale f{'\u00FC'}r ARIA.{'\n'}
|
||||||
Gebaut mit React Native + TypeScript.
|
Gebaut mit React Native + TypeScript.
|
||||||
|
|
@ -744,6 +833,38 @@ const styles = StyleSheet.create({
|
||||||
marginTop: 2,
|
marginTop: 2,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Stimmen
|
||||||
|
voiceBtn: {
|
||||||
|
flex: 1,
|
||||||
|
padding: 12,
|
||||||
|
borderRadius: 10,
|
||||||
|
backgroundColor: '#1E1E2E',
|
||||||
|
alignItems: 'center',
|
||||||
|
borderWidth: 2,
|
||||||
|
borderColor: 'transparent',
|
||||||
|
},
|
||||||
|
voiceBtnActive: {
|
||||||
|
borderColor: '#0096FF',
|
||||||
|
backgroundColor: '#0D1A2E',
|
||||||
|
},
|
||||||
|
voiceBtnIcon: {
|
||||||
|
fontSize: 28,
|
||||||
|
marginBottom: 4,
|
||||||
|
},
|
||||||
|
voiceBtnText: {
|
||||||
|
color: '#8888AA',
|
||||||
|
fontSize: 14,
|
||||||
|
fontWeight: '600',
|
||||||
|
},
|
||||||
|
voiceBtnTextActive: {
|
||||||
|
color: '#FFFFFF',
|
||||||
|
},
|
||||||
|
voiceBtnHint: {
|
||||||
|
color: '#555570',
|
||||||
|
fontSize: 11,
|
||||||
|
marginTop: 2,
|
||||||
|
},
|
||||||
|
|
||||||
// Speicher
|
// Speicher
|
||||||
storagePathText: {
|
storagePathText: {
|
||||||
color: '#0096FF',
|
color: '#0096FF',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue