Skip to content
Anti2077Public

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Marla Paper Lantern mark

Marla

Translation that stays beside what you are reading.

A native macOS translation layer that appears on intent, stays close to the source, and gets out of the way.

在原文旁点亮翻译,读完即走,不把你带离当前工作。

简体中文 · English · 日本語 · Français · Español · Deutsch · 한국어

Status: incubation Platform: macOS 14 or later Swift 6.2 Rust 1.85

Marla 介绍主页 · 下载(GitHub Releases) · GitHub

Why Marla · Workflows · Privacy · Development · Documentation

Watch the real Marla workflow (MP4)

Real native macOS app capture. GitHub opens the MP4 in its media viewer.

Start here

Marla 的介绍主页在 website/;准备下载时前往 GitHub Releases,源代码和开发记录在 GitHub 仓库。当前仓库仍处于发布前准备阶段,Release 页面可能尚未有可下载资产。

Why Marla

Most translation tools become another destination. Marla keeps the user's current application as the primary surface: invoke it with a shortcut, read a nearby result, dismiss it, and continue from the same place.

  • Stays in place. Selection and screenshot results appear in a nearby native card instead of a main translation window.
  • Shows intent immediately. The stable result surface appears before the network response and grows with streamed content.
  • Preserves structure. Quick Input and supported rich selections keep semantic Markdown through translation and native rendering.
  • Keeps providers replaceable. Named OpenAI-compatible profiles make the text-translation endpoint and model an explicit user choice.

Three ways in

Entry Default shortcut What happens
Selected text ⌃⇧D Marla safely acquires the current selection and streams a result beside the source.
Screen region ⌃⇧S A frozen multi-display frame supports region selection, local Vision OCR, and an explicitly selected GLM-OCR option.
Quick Input ⌃⇧Space A compact editor translates typed or pasted content, including supported Markdown structure.

The shortcuts are configurable. Completed results support comparison, copy, retry, system speech, pinning, language changes, and provider switching without turning Marla into a document workspace.

Native where it matters

Explicit trigger
  → SwiftUI / AppKit acquisition and presentation
  → versioned in-process C ABI
  → embedded Rust core for providers, streaming, normalization, and cancellation
  → nearby native result surface

Marla is a Swift 6 macOS app with SwiftUI for durable surfaces and AppKit for menu-bar, panel, focus, and screen-level behavior. The Rust 2024 core is embedded as a static library: there is no localhost backend or separate always-running service.

Privacy, without hand-waving

Path Current boundary
Selection translation Only an explicitly triggered, protected Copy transaction may provide content. Accessibility is used for permission and positioning, not as a hidden text source.
Vision screenshot OCR The selected screenshot crop remains local for OCR. Text translation may still use the configured cloud provider.
GLM-OCR Screenshot pixels are uploaded only when the user explicitly selects GLM-OCR under the disclosure in Settings.
Storage Screenshots and recent translations are session-only. Persistent translation history and contextual window-text collection are not implemented.

Marla does not claim to be fully offline. The exact provider, OCR, and data boundaries are intentionally visible rather than collapsed into a single privacy slogan.

Supported languages

Marla's current product language set contains seven options:

Language Code
简体中文 / Simplified Chinese zh-Hans
English en
日本語 / Japanese ja
Français / French fr
Español / Spanish es
Deutsch / German de
한국어 / Korean ko

Traditional Chinese is normalized to the Simplified Chinese product option and is not a separate preference. Provider documentation may list more languages; Marla does not claim those languages as product-supported until detection, routing, UI, and provider mapping are verified together.

Project status

Marla remains in Incubation / Unreleased while its public entry points are being prepared. The native application and its core workflows are implemented, but no public Release, assigned product version, notarized package, updater, or selected public license has been declared yet.

Development

Prerequisites

  • macOS 14 or later on Apple Silicon
  • Xcode 26.5 or a compatible full Xcode installation
  • Swift 6.2 or later
  • Rust 1.85 or later

Run the complete repository check:

./scripts/check.sh

The script formats, builds, and tests the Rust core and Swift layer, builds the native Debug app against the Cargo debug library, validates the project structure, and checks the diff. It selects the full Xcode installation only for its own commands and does not change the machine-wide xcode-select setting.

Build the fixed-path, stable-signed Release development app:

./scripts/build-test-app.sh

The verified artifact is written to artifacts/Marla_dev.app with the development-only Marketing Version 0.0.0. This numeric value is bundle metadata, not a public release version.

First local signed build

The packaging script requires a stable local code-signing identity and never silently falls back to ad-hoc signing. Pass an identity name or certificate hash reported by security find-identity -v -p codesigning:

MARLA_CODE_SIGN_IDENTITY="Your Local Code Signing Identity" \
./scripts/build-test-app.sh

Later no-argument builds recover the certificate hash from the existing fixed app and verify that its designated requirement remains stable before replacement. This supports local testing only; it does not provide Developer ID distribution, notarization, or automatic TCC approval.

Repository map

Path Role
Sources/MarlaApp/ SwiftUI/AppKit application, acquisition, settings, sessions, and presentation
Sources/MarlaCore/ Swift-facing bridge models and provider contracts
Sources/MarlaRustFFI/ Versioned C bridge between Swift and Rust
rust/marla-core/ Embedded provider, streaming, OCR normalization, and cancellation core
website/ Independent React/Vite product-homepage prototype
docs/ Product truth, architecture, Tasks, status, and verification evidence
scripts/ Repository checks, packaging, and artifact verification

Start with the documentation map, then read the current status and its active Task before making changes. The repository keeps product ideas, confirmed backlog, active implementation, and verified evidence deliberately separate.


Paper Lantern: a little light beside the reader.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages