54 Commits
Author SHA1 Message Date
ZASENJC 2353d8a9a1 docs(readme): 重写 Apple 风格产品文案,优化章节层次与核心特性呈现 2026-10-16 19:38:05 +08:00
ZASENJC 4215c9e768 Add faster TTREE promo v2 showcasing translation OCR and model settings 2026-10-16 19:31:43 +08:00
ZASENJC 0a1c8f1f97 Add 30-second looping TTREE promo with Mac renders and original music 2026-10-16 19:14:20 +08:00
ZASENJC db1a28da00 fix(macos): 修复 Release 优化下动态 NSColor 闭包提前释放导致启动崩溃
- 在 pale_ink 动态提供器闭包中使用 Retained::autorelease_ptr(color) 将 NSColor 放入自动释放池后再返回裸指针,避免 Release 模式下 objc_retainAutoreleasedReturnValue 优化导致函数返回前即被 drop 释放
- 升级版本至 0.2.4
2026-10-16 18:53:08 +08:00
ZASENJC 0df6e9859d fix(macos): 翻译面板根据底层窗口背景亮度动态平滑切换文字对比色
- 将 pale_ink 改为基于 NSColor::colorWithName_dynamicProvider 的动态颜色提供器,并在浅色背景上适度增强低透明度层级的对比度
- 按钮背景改用 NSButtonCell 动态背景色以跟随文字色调切换
- 通过 CGWindowListCreateImage(OnScreenBelowWindow) 采样窗口底层中心区域亮度,结合迟滞阈值(0.44/0.56)与指数平滑过渡(step_ink_tone)实现亮/暗背景间的自然渐变
- 同步更新窗口 NSAppearance 并触发视图树重绘,升级版本至 0.2.3
2026-10-16 18:05:14 +08:00
ZASENJC b0671bbf73 fix(translate): follow Bing geo redirects and surface both provider errors (#3)
- Follow 301/302/303/307/308 redirects within *.bing.com when fetching the Bing translator token and posting to /ttranslatev3, preserving the POST method/form body and caching the resolved origin on BingToken.
- Combine primary and secondary provider error messages when hedged free translation fails on both channels instead of discarding the first error.
- Fix debug-mode objc2 type encoding check in macOS make_button by using typed NSColor::CGColor and CALayer::setBackgroundColor methods.
- Bump workspace version to 0.2.2.
2026-10-16 17:34:59 +08:00
samwong 54b0bea86a Merge pull request #1 from lingr25/shortcut-recorder-and-window-fixes
feat(hotkeys): 原生按键录入快捷键,并修复 Windows 窗口启动与闪烁
2026-10-16 02:29:35 -07:00
lingr25 1fde401b3a feat(windows): add a normal window mode switch
Add a 普通窗口模式 switch to the general settings section. When enabled the
window is created with WS_EX_APPWINDOW instead of WS_EX_TOOLWINDOW, so it
appears in the taskbar and Alt+Tab, and losing focus no longer hides it. The
extended style switches live without a restart; a failed save rolls the
checkbox back and reports the error, and the general section now reports
save failures instead of discarding them.

The switch is drawn anti-aliased. GDI's RoundRect has no smoothing, and at
22 logical pixels tall the staircase on the pill and the knob read as a
low-resolution control, so both shapes are rasterized together at 4x and
halftone-downscaled. The off track uses p.faint: p.line is the card border
and p.pill is the card fill, so the previous colours made the switch
disappear into the card it sits on.
2026-10-16 14:09:40 +09:00
lingr25 6b59eb12e5 feat(hotkeys): record shortcuts from native key presses 2026-10-16 12:46:28 +09:00
lingr25 b7f1839d9b fix(hotkeys): use platform modifiers and preserve bindings on failure 2026-10-16 12:07:05 +09:00
lingr25 63e111f171 fix(windows): prevent input-triggered window flicker
Update source input geometry only when text emptiness changes and preserve overflow scrolling. Add native input repaint regression coverage and require sessions to commit verified changes in AGENTS.md.
2026-10-16 12:06:20 +09:00
lingr25 f37722f321 fix(windows): show window on launch and reuse running instance 2026-10-16 12:00:30 +09:00
ZASENJC a4ddb522af feat: add signed native updates for macOS and Windows 2026-10-16 02:06:09 +08:00
ZASENJC 7d424f059e fix(release): isolate signing material from the preflight compiler 2026-10-16 00:31:22 +08:00
ZASENJC 823ba44d78 fix: register signing keychain and verify signing before universal builds 2026-10-16 00:29:48 +08:00
ZASENJC 63fd5c97f3 feat: use transparent adaptive tray marks on both native apps 2026-10-16 00:20:07 +08:00
ZASENJC ca7b7ad7ba design: shorten E bars for a compact mark 2026-10-16 00:14:01 +08:00
ZASENJC f5fab7ecde fix(release): preserve published releases after ambiguous API responses 2026-10-16 00:12:17 +08:00
ZASENJC a6d14bf5d3 design: tighten horizontal strokes in the monochrome E mark 2026-10-16 00:10:53 +08:00
ZASENJC 3e874c4c94 design: simplify logo to an E with an extended top stroke 2026-10-16 00:09:01 +08:00
ZASENJC 8d4628aeed refactor: separate native platforms and automate signed dual-platform releases 2026-10-16 00:05:02 +08:00
ZASENJC 8e14266c18 feat(windows): align native UI and manage built-in model service
Align the pure-Rust Windows translation, chat, settings, and toolbar design with macOS using shared Lucide icons. Fix hover and scrolling repaint artifacts, dropdown alignment, and native model download folder selection.

Persist manual service stops, cancel active built-in requests, and add confirmed cleanup of built-in models and managed runtime dependencies. Cover lifecycle behavior with Rust tests and add a native Windows repaint regression harness.

Validation: native Windows release build and installed UI verification; isolated Windows service lifecycle checks; six model manager tests; macOS cargo check; git diff --check.
2026-10-15 23:39:28 +08:00
ZASENJC d16722fdf4 feat: add native Windows app and OCR, remove legacy Tauri frontend 2026-10-15 20:29:44 +08:00
ZASENJC 46c2f3664b feat(ai,ui): add built-in HY-MT1.5-1.8B GGUF engine, unified settings UI, translation line spacing, and OCR newline toggle 2026-10-15 02:50:57 +08:00
ZASENJC e77b364750 feat(ai): support local MLX HY-MT1.5 prompt template, sampling params, and API key auth in LocalServer mode 2026-10-14 23:09:03 +08:00
ZASENJC d5de76938b feat(ui): share window dimensions between Translate and AI tabs, default opacity to 100%, and increase top bar margins 2026-10-14 22:53:53 +08:00
ZASENJC cbf0e1a4cc feat(ui): add left/right chat bubbles, history bar, and adaptive settings layout 2026-10-14 21:58:45 +08:00
ZASENJC 8c0140c45d fix(app): pass (source, target, text) in correct order to resolve_language_pair 2026-10-14 20:12:16 +08:00
ZASENJC cb605a5e8e feat(app): add per-pane draggable height splitters, min/max bounds, persistent layout memory, and pale color palette 2026-10-14 20:01:29 +08:00
ZASENJC 618fcc6239 feat(app): redesign pure-Rust AppKit UI into vertical 4-tier stacked layout 2026-10-14 19:36:36 +08:00
ZASENJC 2c47dfc79e refactor(storage): remove macOS Keychain runtime calls and persist config directly in 0600 settings.json 2026-10-14 19:17:38 +08:00
ZASENJC 0f04fefbcc feat: rewrite TTREE into 100% pure-Rust modular workspace with native AppKit UI, fast hedged translation, reliable OCR, and Ollama/LMStudio/GGUF AI backends 2026-10-14 19:07:43 +08:00
Codex fd8c685baa ci: test macOS 27 OCR whenever an accurate profile is available 2026-10-12 12:55:16 +00:00
Codex 8bf2790ef8 ci: distinguish unsupported macOS VM OCR from app regressions 2026-10-12 12:53:34 +00:00
Codex ff576ad166 fix: provide a software image context for OCR compatibility 2026-10-12 12:41:09 +00:00
Codex b22eaf9715 fix: retain typed Vision compute device references 2026-10-12 12:32:36 +00:00
Codex baa6cb22c9 fix: select supported CPU compute devices for modern Vision OCR 2026-10-12 12:25:46 +00:00
Codex 96255a37df fix: quote OCR namespace filter in workflow command 2026-10-12 12:11:24 +00:00
Codex fa84da59b8 ci: verify native OCR on current macOS before packaging 2026-10-12 12:10:18 +00:00
Codex bf75be270a fix: normalize OCR images and validate native text recognition 2026-10-12 12:03:43 +00:00
Codex 2561db83a7 fix: stabilize macOS OCR and balance free translation services 2026-10-12 11:23:17 +00:00
ZASENJC 902abb9159 release: prepare v0.1.3 2026-07-13 18:18:51 +08:00
ZASENJC 6dc1e25f26 feat: improve OCR language detection 2026-07-13 18:18:51 +08:00
ZASENJC 5ee697cadc feat: run macOS app from menu bar only 2026-07-12 18:30:07 +08:00
ZASENJC c9e7ca0f9d test: enforce menu bar only macOS mode 2026-07-12 18:29:36 +08:00
ZASENJC f18407e8ac release: prepare v0.1.2 2026-07-10 23:04:00 +08:00
ZASENJC 8021cb995f fix: parse real codesign requirement output 2026-07-10 23:01:45 +08:00
ZASENJC 9327333c2e test: reproduce real codesign requirement output 2026-07-10 23:00:51 +08:00
ZASENJC ca66b75208 release: prepare v0.1.1 2026-07-10 22:46:24 +08:00
ZASENJC a361ca01f7 chore: update CLAUDE.md and gitignore stale lock file
- CLAUDE.md: sync docs with current implementation (Bing engine, Keychain, chat history, updater)
- .gitignore: add .claude/scheduled_tasks.lock
2026-06-27 04:15:54 +08:00