Skip to content

Releases: rundax/SwitchFix

v0.0.4

28 Feb 21:26

Choose a tag to compare

Main logo changed.

v0.0.3

28 Feb 19:15

Choose a tag to compare

SwitchFix v0.0.3

Highlights

  • Introduced a new dictionary architecture with binary-format support and mmap loading.
  • Added dictionary abstraction layer (DictionaryIndex) so validation logic is storage-agnostic.
  • Implemented partitioned exact lookup and lazy trigram-based candidate retrieval for suggestions.
  • Replaced per-call full-matrix Damerau-Levenshtein with an optimized rolling-row workspace.
  • Updated startup behavior to avoid eager heavy prewarm on low-end machines.

Ukrainian Dictionary Size (vs v0.0.2)

  • Single-word entries (uk_UA.txt): 320,3072,958,567
  • Increase: +2,638,260 words
  • Growth: +823.67% (9.24x)

Word Combinations (multi-word phrases)

  • In runtime uk_UA.txt: 00 (phrases are intentionally excluded)
  • During merge processing, 16,764 phrase lines from uk_full.txt were detected and filtered out from runtime dictionary.

Build and Packaging

  • Added dictionary tooling:
    • scripts/merge_uk_dictionaries.py
    • scripts/compile_dictionary.swift
  • Build pipeline now compiles dictionary binaries and packages them into app resources.
  • SwitchFix.app now includes:
    • en_US.bin
    • ru_RU.bin
    • uk_UA.bin
      inside SwitchFix_Dictionary.bundle.

Quality and Benchmarking

  • Added performance test suite:
    • Sources/TestRunner/DictionaryPerformanceTests.swift
  • Added baseline benchmark document:
    • plan/benchmarks/baseline_320k.md
  • Validation status:
    • swift build passed
    • swift run TestRunner passed (105 passed, 0 failed)

Notes

  • App bundle size increased due the expanded Ukrainian dictionary dataset.
  • uk_full.txt remains source-only input for merge tooling and is not packaged as runtime dictionary.

v0.0.2

25 Feb 19:09

Choose a tag to compare

Full Changelog: v0.0.1...v0.0.2