fix(ui): align sentence case and bump to 0.9.1

This commit is contained in:
mssoftjp 2025-11-11 23:48:38 +09:00
parent a4b7c7ddd7
commit 085f41ef4b
6 changed files with 31 additions and 30 deletions

View file

@ -1,11 +1,11 @@
{
"id": "voice-input",
"name": "Voice Input",
"version": "0.9.0",
"minAppVersion": "1.8.0",
"description": "AI-powered high-accuracy voice input using OpenAI Speech to text API",
"author": "Musashino Software",
"authorUrl": "https://github.com/mssoftjp",
"fundingUrl": "https://buymeacoffee.com/mssoft",
"isDesktopOnly": true
}
"id": "voice-input",
"name": "Voice Input",
"version": "0.9.1",
"minAppVersion": "1.8.0",
"description": "AI-powered high-accuracy voice input using OpenAI Speech to text API",
"author": "Musashino Software",
"authorUrl": "https://github.com/mssoftjp",
"fundingUrl": "https://buymeacoffee.com/mssoft",
"isDesktopOnly": true
}

4
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "voice-input",
"version": "0.9.0",
"version": "0.9.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "voice-input",
"version": "0.9.0",
"version": "0.9.1",
"license": "MIT",
"dependencies": {
"@echogarden/fvad-wasm": "^0.2.0",

View file

@ -1,6 +1,6 @@
{
"name": "voice-input",
"version": "0.9.0",
"version": "0.9.1",
"description": "Voice input plugin for Obsidian with accurate transcription",
"main": "main.js",
"scripts": {

View file

@ -145,8 +145,8 @@ export const en: TranslationResource = {
},
placeholders: {
textarea: 'Voice transcription will appear here...',
apiKey: 'sk-...',
language: 'en'
apiKey: 'Starts with sk-...',
language: 'Example: en'
},
titles: {
main: 'Voice input',
@ -183,21 +183,21 @@ export const en: TranslationResource = {
vadModeDesc: 'Off (default) keeps the raw audio for maximum accuracy. Server VAD can trim silence upstream for quicker turnaround but may slightly affect segmentation accuracy. Local VAD (requires fvad.wasm/fvad.js) stops recording automatically on the desktop.',
vadModeLocalMissing: 'Local VAD requires fvad.wasm and fvad.js under {path}. Install them before switching.',
vadModeLocalAvailable: 'Local VAD files found in {path}. Recording will auto-stop on silence.',
vadModeDisabledDesc: 'VAD disabled audio is recorded continuously and sent untouched.',
vadModeDisabledDesc: 'Voice activity detection is disabled audio is recorded continuously and sent untouched.',
vadModeSummaryServer: 'Cuts silence on the server for faster turnaround (cloud processing).',
vadModeSummaryLocal: 'Detects silence locally and auto-stops on desktop (requires fvad.wasm/fvad.js).',
vadModeInstallButton: 'Choose fvad.wasm / fvad.js…',
vadModeInstallDesc: 'Download fvad.wasm (and fvad.js) from the official WebRTC VAD port, then choose the wasm file to copy it into the plugin folder (desktop only).',
vadModeInstallLinkLabel: 'fvad-wasm project',
vadModeInstallLinkLabel: 'Visit the fvad-wasm project',
vadModeInstallInvalidName: 'Please select a file named fvad.wasm.',
vadModeInstallInvalidType: 'The selected file does not appear to be a WebAssembly module.',
vadModeInstallSuccess: 'fvad.wasm installed. Local VAD will be attempted the next time you record.',
vadModeInstallSuccess: 'The fvad.wasm file is installed. Local VAD will be attempted the next time you record.',
vadModeInstallWriteError: 'Failed to install VAD assets: {error}',
vadModeInstallJsMissing: 'Local VAD also needs fvad.js in the same plugin folder. Please copy it manually if it is not present.'
},
options: {
modelMini: 'GPT-4o mini Transcribe',
modelFull: 'GPT-4o Transcribe',
modelMini: 'GPT-4o mini transcribe',
modelFull: 'GPT-4o transcribe',
languageAuto: 'Auto',
languageJa: 'Japanese',
languageEn: 'English',
@ -216,14 +216,14 @@ export const en: TranslationResource = {
settingsButton: 'Open settings'
},
units: {
seconds: 's',
minutes: 'min'
seconds: 'Seconds',
minutes: 'Minutes'
},
labels: {
from: 'From',
fromMultiple: 'From (comma-separated)',
to: 'To',
context: 'Context Keywords'
context: 'Context keywords'
}
}
};

View file

@ -582,14 +582,14 @@ export class VoiceInputSettingTab extends PluginSettingTab {
*/
private formatDuration(seconds: number): string {
if (seconds < 60) {
return `${seconds}${this.i18n.t('ui.units.seconds')}`;
return `${seconds} ${this.i18n.t('ui.units.seconds')}`;
}
const minutes = Math.floor(seconds / 60);
const remainingSeconds = seconds % 60;
if (remainingSeconds === 0) {
return `${minutes}${this.i18n.t('ui.units.minutes')}`;
return `${minutes} ${this.i18n.t('ui.units.minutes')}`;
}
return `${minutes}${this.i18n.t('ui.units.minutes')} ${remainingSeconds}${this.i18n.t('ui.units.seconds')}`;
return `${minutes} ${this.i18n.t('ui.units.minutes')} ${remainingSeconds} ${this.i18n.t('ui.units.seconds')}`;
}
/**
@ -598,9 +598,9 @@ export class VoiceInputSettingTab extends PluginSettingTab {
private formatDurationMs(milliseconds: number): string {
const seconds = milliseconds / 1000;
if (seconds < 1) {
return `${(Math.round(seconds * 10) / 10).toFixed(1)}${this.i18n.t('ui.units.seconds')}`;
return `${(Math.round(seconds * 10) / 10).toFixed(1)} ${this.i18n.t('ui.units.seconds')}`;
}
return `${seconds.toFixed(1)}${this.i18n.t('ui.units.seconds')}`;
return `${seconds.toFixed(1)} ${this.i18n.t('ui.units.seconds')}`;
}
/**

View file

@ -1,4 +1,5 @@
{
"0.8.0": "1.8.0",
"0.9.0": "1.8.0"
}
"0.9.0": "1.8.0",
"0.9.1": "1.8.0"
}