Documentation

Shipped Features

Checklist of shipped features as of v0.22.0 (AI Integration added), grouped by area. Only shipped items are listed; open work is in the roadmap and bugs in known-bugs.md.

activeUpdated 2026-10-09Edit on GitHub ↗

As of v0.22.0 (Windows, macOS and Linux). The WPF app is deprecated; v0.17.3 was its last release. Release notes are in CHANGELOG.md; open work is in todos/future-roadmap.md and open bugs in known-bugs.md. This file lists shipped features only: when something ships, add it here and delete it from the roadmap. Unless a line says otherwise, a feature is in the Avalonia app, the app on every platform. Lines marked (WPF) shipped only in the WPF app (last release v0.17.3) and are not in the Avalonia app. The Avalonia app does not have the Source Control and Dictionary panels yet; its Translation panel is the Machine Translation panel.

#Core Editor

  • Done: Load/save JSON (flat + namespaced)
  • Done: Tree view + List view toggle
  • Done: Add / Remove / Rename / Duplicate translation IDs
  • Done: Add / Remove languages
  • Done: Undo / Redo (Ctrl+Z / Ctrl+Y)
  • Done: Comment field per translation
  • Done: Approved flag (toggle per row)
  • Done: Spell checking (WPF)
  • Done: Word-wrapping for long IDs
  • Done: Plain text keys mode (no dot-splitting)
  • Done: Auto-select newly added ID
  • Done: Pagination with compact controls
  • Done: Infinite scroll toggle (paginated vs continuous)
  • Done: Cut / Copy / Paste translation values
  • Done: Copy as template (1–5 configurable patterns)
  • Done: Convert case (lower / upper / sentence / title)
  • Done: Remove whitespace (trim / line-by-line / simplify)
  • Done: Tab between edit fields
  • Done: Filter expression history (last 15)
  • Done: Statistics dialog (visual grid, per-language)
  • Done: Custom language codes (alias mapping)
  • Done: Better font for RTL languages

#Editor Modes

  • Done: Focused Editor mode (single-key form, prev/next navigation)
  • Done: Zen mode (hides toolbar/statusbar/sidepanel, F11)
  • Done: PanelService for centralized panel state
  • Done: Focused Editor: language subset selector
  • Done: Zen mode: keyboard-only navigation (j/k)

#File I/O

  • Done: JSON (flat), JSON (namespaced/i18next)
  • Done: Atomic file replacement on save (temporary file, flush, swap); failed saves leave the original untouched
  • Done: Journaled multi-file saves: rollback on failure, restore after an interrupted save, previous version kept
  • Done: Save never blocked by validation findings; findings shown in the Issues panel
  • Done: Saving refuses to overwrite files edited outside Toucan without confirmation
  • Done: Recovery drafts of unsaved edits, offered after a crash without overwriting newer disk content
  • Done: YAML, TOML, INI
  • Done: PO / Gettext
  • Done: RESX (.NET), Android XML, iOS .strings
  • Done: XLIFF, ARB (Flutter), CSV
  • Done: Import / Export menu (all formats)
  • Done: Project manifest (toucan.tproj, JSON)
  • Done: Excel (.xlsx) import/export
  • Done: Export/Import approved flags + comments in Excel
  • Done: Java .properties (ISO-8859-1)
  • Done: Laravel PHP file support
  • Done: Auto-detect framework on folder drop
  • Done: File watcher (reload changed files from disk)
  • Done: Skip unchanged files on reload

#Machine Translation

  • Done: Google Translate, DeepL, Microsoft and AI providers (AI goes through AI Integration)
  • Done: Provider settings dialog
  • Done: Translation context passed to providers
  • Done: Formality setting (formal / informal)
  • Done: Remember last translation service
  • Done: Preserve parameters ({{var}}, {0}, %s, :param)
  • Done: Keep uppercase first letter
  • Done: Per-language / per-namespace / per-key pre-translate
  • Done: Preview before apply
  • Done: Suggestions panel (fuzzy-match existing translations)
  • Done: Pre-translate plural forms (i18next/ICU)
  • Done: Translation memory (reuse across projects)
  • Done: Custom webhook provider (your own endpoint, optional auth header)
  • Done: Provider keys kept in an encrypted secret store, never in providers.json or a project folder

#AI Integration (since v0.20.0)

  • Done: One app-wide AI switch, off by default; first-run onboarding asks whether to use it
  • Done: AI services: Claude, OpenAI or a compatible server (Ollama, LM Studio), Gemini; per-service endpoint, model and key; test connection
  • Done: Translate with AI (the AI provider: Translation panel, Pre-translate, toucan translate -p ai)
  • Done: Analyze with AI: wrong terms, tone and meaning in translations, findings in the Issues panel with an Apply fix
  • Done: Clarity: source strings a translator could misread, with a clearer wording and a note for translators
  • Done: Editable prompts for every AI feature, app-wide or per project (.toucan/prompts), with variables and a reset to default
  • Done: Per-feature switches and model overrides
  • Done: Settings → Data & privacy lists and removes stored secrets
  • Done: Migration of the 0.19 Claude, OpenAI and Gemini provider settings and keys

#UI / UX

  • Done: Fluent theme with system light/dark (Mica backdrop in WPF)
  • Done: Design system tokens (shared ResourceDictionary)
  • Done: Framework tile grid for new projects (16 frameworks)
  • Done: Start screen with quick actions
  • Done: Recent projects flyout (last 10, clear)
  • Done: Pin recent projects; choose how many to remember (1–50) and whether Clear keeps pinned ones
  • Done: Detect preferred source language from recent projects (opt-in)
  • Done: Color schemes: accent presets, custom accent and per-color edits for light and dark, live preview
  • Done: Check for updates against GitHub Releases (Stable or Preview channel; never installs)
  • Done: Auto-open last project on startup
  • Done: Reveal in Explorer
  • Done: Centralized KeybindingService (22+ shortcuts)
  • Done: Keyboard Shortcuts page in Settings (reference only, not editable yet)
  • Done: Settings dialog with 12 pages and two-tier settings (app defaults, per-project overrides)
  • Done: Filter: untranslated / translated / approved
  • Done: Status bar (project, language, cursor, loading, notifications)
  • Done: Title bar with logo, save-state chip and command palette pill
  • Done: Command palette (Cmd/Ctrl+Shift+P) over every menu command
  • Done: Settings search
  • Done: Keyboard shortcut sheet (Cmd/Ctrl+/)
  • Done: Compact pagination controls
  • Done: Editor, Review, and Audit modes; Zen mode (J/K navigation)
  • Done: Activity bar with side panels: Explorer, Source Code, Search, Issues, Source Control, Languages, Inspector, Translation, Memory (Dictionary panel is a placeholder)
  • Done: Panel layout saved between sessions

#Search, Bulk Edits, Validation

  • Done: Search and replace across keys, values, and languages (match case, whole word, regex, scope, preview, history, highlighted matches)
  • Done: Bulk delete, move to namespace, pre-translate, approve, and copy source to target
  • Done: Six built-in validation rules: missing, placeholder mismatch, duplicate keys, untranslated (same as source), empty, whitespace mismatch
  • Done: Per-rule enable/disable and severity
  • Done: Auto-fix suggestions for common issues (trailing spaces, wrong quotes)
  • Done: Custom rules per project: max length, forbidden words, regex, required

#Translation Memory

  • Done: Trigram fuzzy matching with configurable threshold and scope (global or project)
  • Done: TMX import and export
  • Done: View, delete, and clear stored entries
  • Done: Inline ghost-text suggestion from TM in empty fields (Tab to accept)

#Advanced Data Model

  • Done: Plural forms support (i18next _one/_other, ICU)
  • Done: Array support in JSON
  • Done: Package support (multiple translation sets)
  • Done: Drag & drop reorder in tree
  • Done: Multi-selection in tree (batch operations)

#Distribution & Platform

  • Done: Avalonia app for macOS (Toucan.app) and Linux (tarball), preview since v0.18.0
  • Done: Windows packaging scripts: portable EXE, Inno Setup installer, MSIX (publish.ps1)
  • Done: File association (.tproj → open app)
  • Done: Git branch and changed-file count in the status bar
  • Done: Translation file locations configurable per language
  • Done: Encoding (UTF-8, UTF-8 BOM) and line endings (LF, CRLF) per project, from the status bar

#Source Code Integration

  • Done: Source code view panel (show where key is used)
  • Done: Extract translation IDs from source (t('key') patterns)
  • Done: Filter: used / unused in source code
  • Done: Double-click opens source in external editor
  • Done: Wire source root configuration
  • Done: Support .tsx, .vue, .svelte, .py scanning

#Plugins (since v0.18.0; Avalonia app and CLI)

  • Done: Plugins add file formats, translation providers, validation rules, and framework profiles from .dll assemblies
  • Done: Trust model: a plugin loads only when enabled and trusted (SHA-256 of its files)
  • Done: Toucan.Plugins.Abstractions contract package (plugin API 1.0) and a sample plugin
  • Done: Built-in formats, providers, rules and profiles load as compiled-in modules, listed in Settings → Plugins and toucan plugins list

#Command Line

  • Done: toucan check (exits 1 on errors, for CI), stats, translate (with --dry-run), export, list-formats, list-keys, get, set

Effort estimates, unfinished work and the order of upcoming work live in todos/future-roadmap.md.

#Website

  • Done: Searchable release history generated from CHANGELOG.md, with expandable notes, version permalinks, and a shared light/dark theme.