Documentation

Known Issues & Unfinished Features

Open issues for v0.22.0: no tracked format bugs (limits per format are in formats.md), release gaps, missing panels, and verification limits. Fixed bugs live in CHANGELOG.md.

activeUpdated 2026-10-09Edit on GitHub ↗

Current release: v0.22.0 (preview). Last audited 2026-10-09 against the code on release/v0.22.0.

This file lists what is wrong now. Fixed bugs are not kept here: they are in CHANGELOG.md (see Where the old fixes went). When a bug is fixed, delete its row and section here and add a ### Fixed line to the changelog [Unreleased] section. Planned work for an ID is linked from the roadmap (REL, APP, QA); the roadmap does not describe it again. The WPF app is gone from main (source: branch legacy/wpf), so nothing here is about WPF.

How each issue was checked. "Reproduced" means I ran the case through the real load and save strategies and the output is quoted. "From code" means the cause is visible in the source but I did not run it. Run the same cases again before fixing, and turn each repro into a test in tests/Toucan.Core.Tests/Formats/.

#Open issues

IDSeverityAreaProblemChecked
REL-01MediumReleaseNo release pipeline; every release is built by hand (CI for pull requests exists)Reproduced
REL-02MediumReleasemacOS app is ad-hoc signed and not notarizedFrom docs and script
REL-03LowReleaseUpdate check is manual only: no check on startup, no download or installFrom code
REL-04LowReleaseWindows ships as a portable zip; no installer or MSIX in releasesFrom docs
APP-01LowAppSource Control and Dictionary panels do not existReproduced
APP-02LowAppKeyboard shortcuts cannot be changedReproduced
APP-03LowAppNo notification history; the status-bar badge only shows a count of empty translationsReproduced
APP-04LowAppBulk operations (copy to language, replace all, pre-translate, move, delete) cannot be undoneFrom code
QA-02InfoPerfLarge-project performance has never been profiledNot checked

Severity: High loses or corrupts user data; Medium gives wrong results or blocks a release goal; Low is a gap or a cosmetic problem; Info is a known unknown.

Suggested order: release work first (REL-01), then the rest.


#Format bugs

None are tracked. What each format keeps and drops on save is in formats.md; the tests that guard it are FormatFidelityFixtureTests, FormatStabilityTests, FormatBugRegressionTests and YamlFidelityTests in tests/Toucan.Core.Tests/Formats/.


#Release and distribution

#REL-01 — No CI or release pipeline

  • Severity: Medium · Checked: .github/workflows/ci.yml builds and tests on Windows, macOS and Linux for pull requests and pushes. There is no release workflow.
  • State: release builds come from publish.ps1, packaging/build-macos-app.sh and dotnet publish run by hand. v0.18.0 Linux tarballs were made by hand too.
  • Impact: no gate on regressions, and releases are only as reproducible as one machine.
  • Fix direction: FG-01 and FG-16 in docs/todos/future-roadmap.md: a PR workflow (build and test on macOS, Linux, Windows with Toucan.CrossPlatform.slnx) first, then a tag-triggered release workflow that builds all packages and attaches them to the GitHub release.

#REL-02 — macOS app is not notarized

  • Severity: Medium · Checked: README and packaging/build-macos-app.sh.
  • State: the build is ad-hoc signed. The script already signs with a Developer ID and notarizes when SIGN_IDENTITY and NOTARY_PROFILE are set, but no such identity is configured.
  • Impact: Gatekeeper blocks the first launch ("could not verify"). Users must use Open Anyway or clear the quarantine flag. This is documented in the README but costs installs.
  • Fix direction: an Apple Developer ID and a notary profile stored as CI secrets (needs REL-01).

#REL-03 — No auto-updater; the update check is manual

  • Severity: Low · Checked: since v0.20.0, Settings → About has a release channel (Stable or Preview) and a Check for updates button (UpdateService, GitHub Releases API). Nothing checks on startup, and nothing downloads or installs.
  • Impact: users who never open About stay on old builds, which matters while the formats above lose data.
  • Fix direction: FG-02, planned for v0.24: check on startup (off / notify / auto-install), then download and apply. Depends on REL-01 and signing (REL-02).

#REL-04 — Windows has no installer

  • Severity: Low · Checked: README says "portable x64 zip; no installer yet".
  • State: installer.iss (Inno Setup) and packaging/Build-Msix.ps1 exist and refer to Toucan.exe, which is the Avalonia app's assembly name. I did not check whether they still work with the Avalonia build since the switch from WPF.
  • Fix direction: run both against the current build, fix what breaks, then publish an installer with each release (part of REL-01).

#App gaps

#APP-01 — Source Control and Dictionary panels do not exist

  • Severity: Low · Checked: App.RegisterSidePanels registers Explorer, Search, Issues, Source Code, Languages, Inspector, Translation, Memory. No panel for Git or glossary.
  • Correction: the old text also listed "Translation" as missing. It exists (machine-translation, titled Translation).
  • Plan: Git integration is FG-06 (v0.23), the glossary is FG-15 (v0.21).

#APP-02 — Shortcuts cannot be changed

  • Severity: Low · Checked: Settings → Shortcuts lists KeybindingService.GetDefinitions() with no edit control and nothing is stored.
  • Fix direction: per-user overrides in settings.json, a conflict check, a reset button, and the command palette showing the active shortcut (it already reads the definitions).

#APP-03 — No notification history

  • Severity: Low · Checked: StatusBarService.ShowNotificationBadge is only fed the number of empty translations (MainWindowViewModel.cs:266). There is no NotificationService and nothing opens when the badge is clicked.
  • Fix direction: a small service holding title, message, severity and time, a flyout anchored to the badge, and producers: save failures, validation summaries, plugin load errors, and (later) update availability.

#APP-04 — Bulk operations cannot be undone

  • Severity: Low · Checked: UndoRedoService records single value edits (Record(ns, language, old, new)); NotifyBulkValueChanges and the bulk commands never record anything, so Undo after "copy to language" does nothing.
  • Fix direction: group the edits of one bulk operation into a single undo step. Planned in v0.24.

#Quality

#QA-02 — Performance not profiled

  • Severity: Info · Checked: no. Loading depth, paging and MaxItems exist as mitigations, but there are no measurements for projects with tens of thousands of keys. Profile open, search and save before 1.0.

#Where the old fixes went

The earlier version of this file kept tables of fixed bugs (B1 to B11 and the v0.14 to v0.16 sets). All of them are already in CHANGELOG.md, so the tables were removed here.

Old IDWhat was fixedChangelog entry
B1DiffMergeEngine merged items stayed dirty0.17.1
B2AutoSaveService crash when disposed during a save0.17.1
B3Double DirtyStateChanged (TOCTOU)0.17.1
B4External reload updated UI collections off the UI thread0.17.1
B5iOS .strings \\n corrupted0.17.1
B6Java .properties line continuations truncated values0.17.1
B7 to B11WPF-only UI fixes (Issues grouping, Search panel sizing, Source Code panel, Explorer foreground, status bar clicks)0.17.2
QA-01Missing regression tests for B1 to B6 and the format edge casesUnreleased (Qa01RegressionTests, FormatFidelityFixtureTests, FormatStabilityTests)
FMT-05 to FMT-09RESX language detection, XLIFF save losing source/notes/state, ARB metadata and region locales, YAML flat keys and __selfUnreleased
v0.14.1 to v0.16.1Earlier bug batches0.14.1, 0.14.2, 0.15.0, 0.16.1

B7 to B11 were fixed in the WPF app. Whether the Avalonia app has the same problems was not checked in this audit.