mirror of
https://github.com/Melorise/TamaASR.git
synced 2026-11-07 14:39:32 +00:00
feat: rename project to TamaASR 1.0.0
Migrate internal identifiers, installation paths, packaging metadata, and repository references while preserving package upgrades from meloasr. AI-assisted-by: Codex AI-model: gpt-5.6-sol AI-reasoning-effort: medium Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
+10
-10
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
project(meloasr-fcitx5 VERSION 0.1.17 LANGUAGES CXX)
|
||||
project(tama-asr-fcitx5 VERSION 1.0.0 LANGUAGES CXX)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
include(CTest)
|
||||
@@ -8,16 +8,16 @@ find_package(Fcitx5Core 5.0 REQUIRED)
|
||||
find_package(Fcitx5Utils 5.0 REQUIRED)
|
||||
find_package(nlohmann_json 3.2 REQUIRED)
|
||||
|
||||
add_library(meloasr MODULE voiceinput.cpp)
|
||||
target_compile_features(meloasr PRIVATE cxx_std_20)
|
||||
target_compile_options(meloasr PRIVATE -Wall -Wextra -Wpedantic)
|
||||
target_link_libraries(meloasr PRIVATE Fcitx5::Core Fcitx5::Utils nlohmann_json::nlohmann_json)
|
||||
set_target_properties(meloasr PROPERTIES PREFIX "lib")
|
||||
add_library(tama-asr MODULE voiceinput.cpp)
|
||||
target_compile_features(tama-asr PRIVATE cxx_std_20)
|
||||
target_compile_options(tama-asr PRIVATE -Wall -Wextra -Wpedantic)
|
||||
target_link_libraries(tama-asr PRIVATE Fcitx5::Core Fcitx5::Utils nlohmann_json::nlohmann_json)
|
||||
set_target_properties(tama-asr PROPERTIES PREFIX "lib")
|
||||
|
||||
set(MELOASR_LIBRARY_PATH "${FCITX_INSTALL_ADDONDIR}/libmeloasr")
|
||||
configure_file(meloasr.conf.in meloasr.conf @ONLY)
|
||||
install(TARGETS meloasr LIBRARY DESTINATION "${FCITX_INSTALL_ADDONDIR}")
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/meloasr.conf" DESTINATION "${FCITX_INSTALL_PKGDATADIR}/addon")
|
||||
set(TAMA_ASR_LIBRARY_PATH "${FCITX_INSTALL_ADDONDIR}/libtama-asr")
|
||||
configure_file(tama-asr.conf.in tama-asr.conf @ONLY)
|
||||
install(TARGETS tama-asr LIBRARY DESTINATION "${FCITX_INSTALL_ADDONDIR}")
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tama-asr.conf" DESTINATION "${FCITX_INSTALL_PKGDATADIR}/addon")
|
||||
|
||||
if(BUILD_TESTING)
|
||||
add_executable(protocolsession_test protocolsession_test.cpp)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# MeloASR Fcitx5 addon
|
||||
# TamaASR Fcitx5 addon
|
||||
|
||||
该 addon 作为 Fcitx5 常驻 Module 工作,不需要切换到独立输入法。
|
||||
|
||||
@@ -18,8 +18,8 @@ fcitx5 -r
|
||||
安装文件:
|
||||
|
||||
```text
|
||||
~/.local/lib/fcitx5/libmeloasr.so
|
||||
~/.local/share/fcitx5/addon/meloasr.conf
|
||||
~/.local/lib/fcitx5/libtama-asr.so
|
||||
~/.local/share/fcitx5/addon/tama-asr.conf
|
||||
```
|
||||
|
||||
本地协议使用 `$XDG_RUNTIME_DIR/meloasr/fcitx5.sock`,目录权限 `0700`,Socket 权限 `0600`。协议版本为 2,支持 `configure` 动态快捷键和 `activate` 悬浮球启动请求。
|
||||
本地协议使用 `$XDG_RUNTIME_DIR/tama-asr/fcitx5.sock`,目录权限 `0700`,Socket 权限 `0600`。协议版本为 2,支持 `configure` 动态快捷键和 `activate` 悬浮球启动请求。
|
||||
|
||||
@@ -17,4 +17,4 @@ rm -f -- \
|
||||
"${HOME}/.local/lib/fcitx5/libvoiceinput.so" \
|
||||
"${HOME}/.local/share/fcitx5/addon/voiceinput.conf"
|
||||
|
||||
echo "已安装 MeloASR Fcitx5 插件,请重启 Fcitx5。"
|
||||
echo "已安装 TamaASR Fcitx5 插件,请重启 Fcitx5。"
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
[Addon]
|
||||
Name=MeloASR
|
||||
Name[zh_CN]=MeloASR
|
||||
Comment=Connect MeloASR web backends to the active input context
|
||||
Comment[zh_CN]=将 MeloASR 网页后端连接到当前输入上下文
|
||||
Type=SharedLibrary
|
||||
Library=@MELOASR_LIBRARY_PATH@
|
||||
Category=Module
|
||||
Version=0.1.17
|
||||
OnDemand=False
|
||||
Configurable=False
|
||||
|
||||
[Addon/Dependencies]
|
||||
0=core:5.0.0
|
||||
@@ -0,0 +1,14 @@
|
||||
[Addon]
|
||||
Name=TamaASR
|
||||
Name[zh_CN]=TamaASR
|
||||
Comment=Connect TamaASR web backends to the active input context
|
||||
Comment[zh_CN]=将 TamaASR 网页后端连接到当前输入上下文
|
||||
Type=SharedLibrary
|
||||
Library=@TAMA_ASR_LIBRARY_PATH@
|
||||
Category=Module
|
||||
Version=1.0.0
|
||||
OnDemand=False
|
||||
Configurable=False
|
||||
|
||||
[Addon/Dependencies]
|
||||
0=core:5.0.0
|
||||
+17
-17
@@ -35,7 +35,7 @@ namespace {
|
||||
constexpr int kProtocolVersion = 2;
|
||||
constexpr std::size_t kMaxBufferBytes = 1024 * 1024;
|
||||
|
||||
#define MELOASR_DIAGNOSTIC_INFO if (!diagnosticLogging_) {} else FCITX_INFO()
|
||||
#define TAMA_ASR_DIAGNOSTIC_INFO if (!diagnosticLogging_) {} else FCITX_INFO()
|
||||
|
||||
class VoiceInputAddon final : public fcitx::AddonInstance {
|
||||
public:
|
||||
@@ -53,7 +53,7 @@ public:
|
||||
fcitx::EventType::InputContextFocusOut,
|
||||
fcitx::EventWatcherPhase::PostInputMethod,
|
||||
[this](fcitx::Event &event) {
|
||||
MELOASR_DIAGNOSTIC_INFO << "MeloASR:InputContext focusOut,取消当前会话 active="
|
||||
TAMA_ASR_DIAGNOSTIC_INFO << "TamaASR:InputContext focusOut,取消当前会话 active="
|
||||
<< session_.active() << " awaiting=" << awaitingStart_;
|
||||
cancelForContext(static_cast<fcitx::InputContextEvent &>(event).inputContext());
|
||||
});
|
||||
@@ -68,7 +68,7 @@ public:
|
||||
fcitx::EventType::InputContextReset,
|
||||
fcitx::EventWatcherPhase::PostInputMethod,
|
||||
[this](fcitx::Event &event) {
|
||||
MELOASR_DIAGNOSTIC_INFO << "MeloASR:InputContext reset,取消当前会话 active="
|
||||
TAMA_ASR_DIAGNOSTIC_INFO << "TamaASR:InputContext reset,取消当前会话 active="
|
||||
<< session_.active() << " awaiting=" << awaitingStart_;
|
||||
cancelForContext(static_cast<fcitx::InputContextEvent &>(event).inputContext());
|
||||
});
|
||||
@@ -79,7 +79,7 @@ public:
|
||||
auto *context = static_cast<fcitx::InputContextEvent &>(event).inputContext();
|
||||
if (context == focusedInputContext_) focusedInputContext_ = nullptr;
|
||||
if (context == inputContext_) {
|
||||
MELOASR_DIAGNOSTIC_INFO << "MeloASR:InputContext destroyed,取消当前会话";
|
||||
TAMA_ASR_DIAGNOSTIC_INFO << "TamaASR:InputContext destroyed,取消当前会话";
|
||||
sendControl("request-cancel");
|
||||
resetLocalState(false);
|
||||
}
|
||||
@@ -118,7 +118,7 @@ private:
|
||||
|
||||
if (action == VoiceKeyAction::Start) {
|
||||
event.filterAndAccept();
|
||||
MELOASR_DIAGNOSTIC_INFO << "网页语音输入:快捷键按下 held=" << held_
|
||||
TAMA_ASR_DIAGNOSTIC_INFO << "网页语音输入:快捷键按下 held=" << held_
|
||||
<< " awaiting=" << awaitingStart_
|
||||
<< " active=" << session_.active();
|
||||
if (!ensureConnected()) {
|
||||
@@ -132,7 +132,7 @@ private:
|
||||
|
||||
if (action == VoiceKeyAction::Stop) {
|
||||
event.filterAndAccept();
|
||||
MELOASR_DIAGNOSTIC_INFO << "网页语音输入:快捷键松开 awaiting=" << awaitingStart_
|
||||
TAMA_ASR_DIAGNOSTIC_INFO << "网页语音输入:快捷键松开 awaiting=" << awaitingStart_
|
||||
<< " active=" << session_.active();
|
||||
held_ = false;
|
||||
if (awaitingStart_ || session_.active()) sendControl("request-stop");
|
||||
@@ -143,7 +143,7 @@ private:
|
||||
|
||||
if (event.key().check(FcitxKey_Escape)) {
|
||||
event.filterAndAccept();
|
||||
MELOASR_DIAGNOSTIC_INFO << "MeloASR:录音中收到 Escape,取消当前会话";
|
||||
TAMA_ASR_DIAGNOSTIC_INFO << "TamaASR:录音中收到 Escape,取消当前会话";
|
||||
sendControl("request-cancel");
|
||||
clearPreedit();
|
||||
resetLocalState(false);
|
||||
@@ -151,7 +151,7 @@ private:
|
||||
}
|
||||
|
||||
// 用户开始键盘输入时,立即取消语音会话,并让该按键继续交给原输入法。
|
||||
MELOASR_DIAGNOSTIC_INFO << "MeloASR:录音中收到其它按键,取消当前会话 key="
|
||||
TAMA_ASR_DIAGNOSTIC_INFO << "TamaASR:录音中收到其它按键,取消当前会话 key="
|
||||
<< event.key().toString() << " rawKey=" << event.rawKey().toString()
|
||||
<< " repeat=" << event.rawKey().states().test(fcitx::KeyState::Repeat);
|
||||
sendControl("request-cancel");
|
||||
@@ -163,7 +163,7 @@ private:
|
||||
if (!context || !context->hasFocus()) return false;
|
||||
if (!context->inputPanel().clientPreedit().empty() ||
|
||||
!context->inputPanel().preedit().empty()) {
|
||||
FCITX_WARN() << "MeloASR:当前输入法存在未提交文本,本轮未启动";
|
||||
FCITX_WARN() << "TamaASR:当前输入法存在未提交文本,本轮未启动";
|
||||
return false;
|
||||
}
|
||||
inputContext_ = context;
|
||||
@@ -179,12 +179,12 @@ private:
|
||||
if (probe > 0 || (probe < 0 && (errno == EAGAIN || errno == EWOULDBLOCK))) {
|
||||
return true;
|
||||
}
|
||||
MELOASR_DIAGNOSTIC_INFO << "网页语音输入:检测到失效的 Electron Socket,立即重连";
|
||||
TAMA_ASR_DIAGNOSTIC_INFO << "网页语音输入:检测到失效的 Electron Socket,立即重连";
|
||||
handleDisconnect();
|
||||
}
|
||||
const char *runtimeDir = std::getenv("XDG_RUNTIME_DIR");
|
||||
if (!runtimeDir || !*runtimeDir) return false;
|
||||
const std::string socketPath = std::string(runtimeDir) + "/meloasr/fcitx5.sock";
|
||||
const std::string socketPath = std::string(runtimeDir) + "/tama-asr/fcitx5.sock";
|
||||
const int fd = ::socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);
|
||||
if (fd < 0) return false;
|
||||
sockaddr_un address{};
|
||||
@@ -267,11 +267,11 @@ private:
|
||||
awaitingStart_ || session_.active()) return;
|
||||
fcitx::Key candidate(message["shortcut"].get<std::string>());
|
||||
if (!candidate.isValid() || !candidate.hasModifier()) {
|
||||
FCITX_WARN() << "MeloASR:拒绝无效快捷键";
|
||||
FCITX_WARN() << "TamaASR:拒绝无效快捷键";
|
||||
return;
|
||||
}
|
||||
trigger_ = std::move(candidate);
|
||||
MELOASR_DIAGNOSTIC_INFO << "MeloASR:快捷键已更新为 " << trigger_.toString();
|
||||
TAMA_ASR_DIAGNOSTIC_INFO << "TamaASR:快捷键已更新为 " << trigger_.toString();
|
||||
return;
|
||||
}
|
||||
if (type == "activate") {
|
||||
@@ -285,7 +285,7 @@ private:
|
||||
if (!message.contains("sessionId") || !message["sessionId"].is_string()) return;
|
||||
session_.start(message["sessionId"].get<std::string>());
|
||||
awaitingStart_ = false;
|
||||
MELOASR_DIAGNOSTIC_INFO << "网页语音输入:会话开始,clientPreedit="
|
||||
TAMA_ASR_DIAGNOSTIC_INFO << "网页语音输入:会话开始,clientPreedit="
|
||||
<< inputContext_->capabilityFlags().test(fcitx::CapabilityFlag::Preedit);
|
||||
// 新会话尚无文本;重复发布空 preedit 会使部分 frontend 立刻 reset。
|
||||
return;
|
||||
@@ -293,7 +293,7 @@ private:
|
||||
if (type == "cancel") {
|
||||
const std::string incoming = message.value("sessionId", std::string());
|
||||
if (!incoming.empty() && !session_.matches(incoming)) return;
|
||||
MELOASR_DIAGNOSTIC_INFO << "MeloASR:收到 Electron cancel,sessionIdEmpty="
|
||||
TAMA_ASR_DIAGNOSTIC_INFO << "TamaASR:收到 Electron cancel,sessionIdEmpty="
|
||||
<< incoming.empty() << " message="
|
||||
<< message.value("message", std::string());
|
||||
clearPreedit();
|
||||
@@ -306,7 +306,7 @@ private:
|
||||
const std::int64_t incomingRevision = message["revision"].get<std::int64_t>();
|
||||
if (!session_.accept(message.value("sessionId", std::string()), incomingRevision)) return;
|
||||
currentText_ = message["text"].get<std::string>();
|
||||
MELOASR_DIAGNOSTIC_INFO << "网页语音输入:收到 " << type << " revision="
|
||||
TAMA_ASR_DIAGNOSTIC_INFO << "网页语音输入:收到 " << type << " revision="
|
||||
<< incomingRevision << " bytes=" << currentText_.size();
|
||||
setPreedit(currentText_);
|
||||
if (type == "finish") {
|
||||
@@ -374,7 +374,7 @@ private:
|
||||
}
|
||||
|
||||
void handleDisconnect() {
|
||||
MELOASR_DIAGNOSTIC_INFO << "MeloASR:Electron Socket 断开,取消当前会话 active="
|
||||
TAMA_ASR_DIAGNOSTIC_INFO << "TamaASR:Electron Socket 断开,取消当前会话 active="
|
||||
<< session_.active() << " awaiting=" << awaitingStart_;
|
||||
clearPreedit();
|
||||
resetLocalState(false);
|
||||
|
||||
Reference in New Issue
Block a user