Skip to content

Add multilingual Privacy Filter v1.4.0 release#51

Merged
maziyarpanahi merged 46 commits into
masterfrom
feature/multilingual-pii-model
May 11, 2026
Merged

Add multilingual Privacy Filter v1.4.0 release#51
maziyarpanahi merged 46 commits into
masterfrom
feature/multilingual-pii-model

Conversation

@maziyarpanahi

Copy link
Copy Markdown
Owner

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() and deidentify(). 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-multilingual
  • OpenMed/privacy-filter-multilingual-mlx
  • OpenMed/privacy-filter-multilingual-mlx-8bit

The 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
  • Result: 32 passed, 1 skipped

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.
@maziyarpanahi maziyarpanahi changed the title [codex] Add multilingual Privacy Filter v1.4.0 release Add multilingual Privacy Filter v1.4.0 release May 4, 2026
@maziyarpanahi maziyarpanahi self-assigned this May 4, 2026
@maziyarpanahi maziyarpanahi marked this pull request as ready for review May 5, 2026 11:00
@maziyarpanahi maziyarpanahi merged commit a7d4b51 into master May 11, 2026
14 checks passed
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