release: ship v1.5.0 with on-device writing suggestions
Adds next-sentence suggestions while typing, weekly input insights and a personal phrase memory to the desktop app, and fixes custom instructions so they process the text instead of inserting the instruction's own wording. Local model requests are now bounded and individually cancellable. Bumps the product version to 1.5.0 (Android/iOS build 1050000), refreshes the landing and web download links, and records the new INPUT feature rows and the open verification gaps in the infrastructure map.
This commit is contained in:
parent
99f06c253c
commit
5c11ee2fde
104 changed files with 14410 additions and 174 deletions
|
|
@ -12,6 +12,7 @@ faster-whisper + CTranslate2만 사용. torch/pyannote 비의존으로 슬림
|
|||
POST /download - 모델 다운로드 시작 (백그라운드)
|
||||
GET /download/status - 다운로드 진행률 조회
|
||||
POST /download/cancel - 다운로드 취소
|
||||
GET /uia/focus - 포커스 입력 요소 UIA 스냅샷 (제안/학습용)
|
||||
POST /shutdown - 서버 종료
|
||||
|
||||
주: 화자 구분(diarization)은 Phase 15.5에서 LLM 추정 경로가 primary이며,
|
||||
|
|
@ -21,6 +22,7 @@ pyannote 기반 고정밀 화자 구분은 추후 서버 사이드 API로 제공
|
|||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import asyncio
|
||||
import fnmatch
|
||||
import logging
|
||||
import os
|
||||
|
|
@ -582,11 +584,34 @@ async def download_cancel() -> JSONResponse:
|
|||
return JSONResponse(content={"status": "idle"})
|
||||
|
||||
|
||||
@app.get("/uia/focus")
|
||||
async def uia_focus(timeoutMs: int = 1500) -> JSONResponse:
|
||||
"""포커스된 입력 요소의 UIA 스냅샷 (텍스트/케어렛/비밀번호 여부).
|
||||
|
||||
제안(ghost text)과 이핑 학습이 쓰는 유일한 입력창 읽기 경로다.
|
||||
비밀번호 필드는 브리지 안에서 fail-closed 로 차단한다.
|
||||
"""
|
||||
try:
|
||||
import uia_bridge
|
||||
except Exception as exc: # pragma: no cover - 파일 누락 등
|
||||
return JSONResponse(content={"available": False, "reason": f"bridge-import:{exc}"})
|
||||
|
||||
snapshot = await asyncio.to_thread(uia_bridge.snapshot_focus, timeoutMs)
|
||||
return JSONResponse(content=snapshot)
|
||||
|
||||
|
||||
@app.post("/shutdown")
|
||||
async def shutdown() -> JSONResponse:
|
||||
"""서버를 graceful하게 종료한다."""
|
||||
logger.info("종료 요청 수신")
|
||||
|
||||
try:
|
||||
import uia_bridge
|
||||
|
||||
await asyncio.to_thread(uia_bridge.shutdown)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
if _server is not None:
|
||||
_server.should_exit = True
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue