Add multilingual Privacy Filter v1.4.0 release#51
Merged
Conversation
Track the specific v1.4.0 release notes file while keeping ad hoc release drafts ignored.
Summarize the multilingual Privacy Filter release across Python, MLX, Swift, demos, and tests.
Update the main README for v1.4.0 and the three Privacy Filter families.
Describe the multilingual family, MLX artifact names, and family-aware fallback in the anonymization guide.
Update Apple recipe copy to include multilingual Privacy Filter support.
Promote the v1.4.0 Apple and Privacy Filter family highlights in the docs landing page.
Add the multilingual Privacy Filter family to the MLX backend coverage notes.
Refresh Swift package version guidance and list multilingual Privacy Filter support.
Update homepage metadata and hero copy for the multilingual Privacy Filter release.
Set the package version surface for the multilingual Privacy Filter release.
Map multilingual MLX-only Privacy Filter requests to the matching PyTorch checkpoint off MLX hosts.
Add full and 8-bit multilingual Privacy Filter MLX model IDs to the MLX routing table.
Route multilingual Privacy Filter artifact families through the existing OpenAI Privacy Filter runtime.
Update the demo project marketing version to 1.4.0.
Expose 1.4.0 as the OpenMedDemo short bundle version.
Update the scan demo project marketing version to 1.4.0.
Give the multilingual Privacy Filter artifact its own download row symbol.
Rework the engine picker so OpenMed, Nemotron, and multilingual models fit cleanly on iPhone.
Trigger all cached PII engines and compare against the multilingual result when available.
Expose 1.4.0 as the scan demo short bundle version.
Register the multilingual Privacy Filter model identity, size, and UI tag in the scan demo.
Render all Privacy Filter outputs and generalize comparison copy for the third engine.
Add compact EN, FR, and AR sample controls and matching sample thumbnails.
Provide English, French, and Arabic synthetic clinical notes for the scan demo.
Enable comparison when at least two PII engine outputs are available.
Label comparison rows using the selected engines instead of fixed OpenMed/OpenAI names.
Point the scan demo downloader at the multilingual 8-bit MLX artifact and update size estimates.
Store multilingual redaction results and invalidate stale PII runs when inputs change.
Remove stale cached error bodies and retry manifest downloads before failing.
Update scan demo instructions for the multilingual Privacy Filter option.
Test that multilingual Privacy Filter aliases use the OpenAI Privacy Filter MLX pipeline.
Test multilingual MLX backend selection and family-aware PyTorch fallback.
Document the multilingual Privacy Filter release, upgrade notes, and validation summary.
Add setup and usage notes for the multilingual Privacy Filter comparison studio.
Make the multilingual Privacy Filter studio importable as an examples package.
Serve examples and side-by-side Privacy Filter runs for the multilingual studio.
Provide synthetic examples across the 16 supported multilingual Privacy Filter languages.
Drive language tabs, example selection, scan animation, and result rendering in the studio.
Include the OpenMed mark used by the multilingual Privacy Filter studio.
Define the studio UI shell for language selection and side-by-side redaction results.
Add responsive light and dark styling for the multilingual studio experience.
Register the Arabic scanned document asset with the Xcode asset catalog.
Include the Arabic scanned clinical document image for demo flows.
Register the French scanned document asset with the Xcode asset catalog.
Include the French scanned clinical document image for demo flows.
Add the Swift helper used to regenerate English, French, and Arabic sample document images.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR prepares the OpenMed v1.4.0 multilingual Privacy Filter release.
It adds first-class routing for the OpenMed Multilingual Privacy Filter family across Python MLX and Torch fallback paths, documents the three Privacy Filter families, and updates version surfaces for 1.4.0. It also adds a multilingual Privacy Filter Studio example, expands the iOS Scan Demo to support OpenMed, Nemotron, and multilingual redaction engines, and includes French and Arabic scanned sample assets for demo flows.
Why
The multilingual Privacy Filter artifacts need to behave like the existing Privacy Filter families: MLX on Apple Silicon, matching PyTorch fallback elsewhere, and a consistent OpenMed API surface through
extract_pii()anddeidentify(). The Swift demo and docs now make that release story visible and testable.Fixes
The scan demo downloader now handles stale cached HTTP error bodies for
openmed-mlx.json. A previous private or gated model request could leave a 401/404 response body in the manifest path, which then failed JSON decoding even after the public artifact became available. The downloader now removes the invalid manifest, refetches once, and reports a clear manifest error only if the retry still fails.Impact
Developers can use:
OpenMed/privacy-filter-multilingualOpenMed/privacy-filter-multilingual-mlxOpenMed/privacy-filter-multilingual-mlx-8bitThe iOS Scan Demo can cache and compare the multilingual 8-bit model alongside the existing OpenMed and Nemotron engines, and the new web studio gives a side-by-side multilingual comparison flow.
Validation
uv run pytest tests/unit/mlx/test_privacy_filter_mlx.py tests/unit/test_privacy_filter_routing.py