Skip to content

Releases: linyp/obsidian-interlinear

0.2.4

20 Jun 00:44

Choose a tag to compare

Interlinear 0.2.4

Maintenance release addressing the Obsidian community-plugin review. No user-facing changes.

Internal

  • authorUrl now points to the author profile
  • Build: use Node's built-in node:module instead of the builtin-modules package
  • Rate limiter: window.setTimeout + a typed results array (lint)
  • Dashed translation style uses text-decoration longhand for broader Obsidian/Electron support
  • Release assets now ship with GitHub build-provenance attestations (verify with gh attestation verify main.js --repo linyp/obsidian-interlinear)

Install

Manual: download main.js, manifest.json, and styles.css below into <vault>/.obsidian/plugins/interlinear/, then enable in Community plugins. Or via BRAT: add linyp/obsidian-interlinear.

0.2.3

19 Jun 14:57

Choose a tag to compare

Interlinear 0.2.3

Added

  • Auto-recover after fixing the translation config. If a wrong key/endpoint made blocks fail (e.g. a config synced in from another device), changing the provider config — in settings or via Obsidian Sync — now clears the stale per-note failures and lets the active note re-attempt them, instead of staying stuck. Opening or switching a note still never translates on its own.

Changed

  • Clearer floating buttons. The primary translate button now uses an accent fill so it stands out from the smaller, neutral display-mode toggle (they previously looked like twin circles on mobile).

Install

Manual: download main.js, manifest.json, and styles.css below into <vault>/.obsidian/plugins/interlinear/, then enable in Community plugins. Or via BRAT: add linyp/obsidian-interlinear.

0.2.2

19 Jun 14:04

Choose a tag to compare

Interlinear 0.2.2

Added

  • Service presets now also tune rate/batch settings, not just the endpoint. Picking DeepSeek / OpenAI / SiliconFlow / Ollama fills the Advanced concurrency, request spacing, retries, and batch sizes with values matched to how that service rate-limits (connection-capped vs RPM/TPM vs local compute). Custom leaves Advanced untouched.

Fixed

  • Re-triggering now retries failed batches. After a partial failure, triggering translation again retries the blocks that failed last time (it previously only toggled translation ↔ original), matching the in-app guidance.
  • No more flicker when peeking at the original. In translation-only mode, hovering a translation to reveal its source no longer causes a flicker/jitter loop on desktop.

Install

Manual: download main.js, manifest.json, and styles.css below into <vault>/.obsidian/plugins/interlinear/, then enable in Community plugins. Or via BRAT: add linyp/obsidian-interlinear.

0.2.1

10 Jun 06:43

Choose a tag to compare

Changed

  • Floating button now defaults to "Mobile only". Desktop keeps the status-bar buttons as the primary entry point; set Floating button to Always in settings if you want the in-view button on desktop too. (On mobile the floating button remains the main entry point — there is no status bar there.)

🤖 Generated with Claude Code

0.2.0

10 Jun 06:28

Choose a tag to compare

New

  • Floating button (FAB) in the reading view — translation entry point on mobile (which has no status bar); configurable: always / mobile only / never.
  • Persistent translation cache: translations survive restarts (cache.json in the plugin folder, LRU-capped). Only content hashes + translations are stored — never your source text. Size readout + one-click clear in settings.
  • Live batch progress ("Translating 3/12…") in the status bar and FAB.
  • Five translation styles: border / quote / muted / dashed underline / learning mask (blur until hover).
  • Peek at the original in translation-only mode: hover a translation (desktop) or tap it (mobile).
  • Service presets (DeepSeek / OpenAI / SiliconFlow / Ollama / custom) and a Test connection button.

Changed

  • No default hotkey anymore (community guideline) — bind your own under Settings → Hotkeys.
  • Settings tab regrouped into Translation service / Display / Advanced.
  • README now includes a network / account / privacy disclosure.

🤖 Generated with Claude Code

0.1.2

09 Jun 14:32

Choose a tag to compare

Two reliability/quality settings.

  • Max segments per request (default 12): caps how many blocks pack into one request, on top of the char budget. A doc of many short blocks (lists, dialogue) no longer crams dozens of segments into one call, which kept the <<<SEG k>>> alignment reliable and avoided the slow per-segment fallback.
  • Custom instructions (optional): free-text appended to the translation system prompt — a glossary, tone, or domain hint. It's appended after the segment contract, so it can't break alignment.

Install: download main.js, manifest.json, and styles.css below into <your-vault>/.obsidian/plugins/interlinear/, then enable (or update via BRAT).

0.1.1

09 Jun 10:20

Choose a tag to compare

English UI.

All user-facing strings (settings, status-bar buttons, runtime notices) are now in English instead of the previous English-title / Chinese-body mix, so the plugin reads consistently regardless of your Obsidian language. No behavior change.

Manual install: download main.js, manifest.json, and styles.css below into <your-vault>/.obsidian/plugins/interlinear/, then enable the plugin (or update via BRAT).

0.1.0

09 Jun 09:40

Choose a tag to compare

First public release.

Reading-mode interlinear translation for Obsidian: open a foreign-language note in reading view, click one button, and Interlinear renders the translation alongside the original — bilingual or translation-only. Never modifies your notes; never auto-translates. BYOK (DeepSeek).

Manual install: download main.js, manifest.json, and styles.css below into <your-vault>/.obsidian/plugins/interlinear/, then enable the plugin.