Skip to content

feat: add preferences import and export - #18

Merged
zefutoff merged 1 commit into
mainfrom
feat/preferences-import-export
Oct 7, 2026
Merged

zefutoff merged 1 commit into
mainfrom
feat/preferences-import-export

Conversation

@zefutoff

@zefutoff zefutoff commented Oct 7, 2026

Copy link
Copy Markdown
Owner

Summary

  • add versioned JSON export/import for non-sensitive correction preferences
  • export selected dictionary and Grammalecte rule overrides
  • intentionally exclude the personal dictionary
  • validate format, version, dictionary values and rule override types
  • reject unknown rule IDs before modifying current settings
  • persist imported preferences across engine restarts
  • preserve the personal dictionary during imports
  • use Android's system document picker for import/export
  • require no storage permission
  • mark non-sensitive preference import/export complete in the roadmap

Format

Current export format version: 1

Exported data:

  • selected bundled dictionary
  • Grammalecte rule overrides

Intentionally excluded:

  • personal dictionary
  • Android/device state
  • identifiers
  • usage data
  • any other application data

Validation

  • JSON round-trip tests
  • invalid format/version/dictionary/rule-value tests
  • unknown rule IDs rejected before state changes
  • real QuickJS / Grammalecte import/export tests
  • Android instrumentation verifies persistence across engine restart
  • personal dictionary remains untouched
  • manual export/import validation on Samsung Galaxy S21 / Android 15
  • Android Storage Access Framework used without storage permissions
  • make check
  • make assemble
  • git diff --check
  • final APK does not request android.permission.INTERNET

@zefutoff
zefutoff merged commit 20d9d52 into main Oct 7, 2026
5 checks passed
@zefutoff
zefutoff deleted the feat/preferences-import-export branch October 7, 2026 20:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant