Skip to content

Add Apple UI new views - #59

Merged
zaerl merged 12 commits into
mainfrom
add/apple-ui-new-views
Jul 30, 2026
Merged

Add Apple UI new views#59
zaerl merged 12 commits into
mainfrom
add/apple-ui-new-views

Conversation

@zaerl

@zaerl zaerl commented Jul 30, 2026

Copy link
Copy Markdown
Owner

No description provided.

@zaerl
zaerl requested a review from Copilot July 30, 2026 22:09
@zaerl zaerl self-assigned this Jul 30, 2026
@zaerl zaerl changed the title Add/apple UI new views Add Apple UI new views Jul 30, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR expands the macOS SwiftUI “Mojibake” developer-tools app with several new analysis views (Security/UTS #39, IDNA/UTS #46, Collation/DUCET, Caseless matching, Encoding inspector, Characters list) and refactors shared UI/formatting utilities to reduce duplication across tools. It also updates some IDNA documentation/examples and tests to use the reserved .example domain.

Changes:

  • Add new SwiftUI tool views (Security, IDNA, Collation, Caseless Matching, Encoding Inspector, Characters) and wire them into the app navigation.
  • Introduce shared SwiftUI/support utilities (ToolHeader, ToolTextEditor, MojibakeFormatting, MojibakeBytes/MojibakeString) and refactor existing views to use them.
  • Update IDNA examples/tests/docs from .de to .example in selected locations.

Reviewed changes

Copilot reviewed 24 out of 24 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
utils/generate/functions.ts Updates generated API metadata example for mjb_idna_to_unicode to use .example.
tests/example.c Updates the IDNA-to-Unicode example/assertion to use .example.
src/ui/Mojibake/Mojibake/TerminalWidthView.swift Refactors header and error/codepoint formatting to shared helpers.
src/ui/Mojibake/Mojibake/SecurityView.swift Adds a new Security (UTS #39) analysis view.
src/ui/Mojibake/Mojibake/NormalizationView.swift Refactors header and normalization transform to shared helpers.
src/ui/Mojibake/Mojibake/MojibakeSupport.swift Adds shared SwiftUI components and common formatting/transform helpers.
src/ui/Mojibake/Mojibake/Info.plist Adds an (currently empty) Info.plist file.
src/ui/Mojibake/Mojibake/IDNAView.swift Adds a new IDNA (UTS #46) conversion/validation view.
src/ui/Mojibake/Mojibake/FilterView.swift Refactors header and filter transform to shared helpers.
src/ui/Mojibake/Mojibake/EncodingInspectorView.swift Adds a new encoding inspector view (detect/validate/decode/convert).
src/ui/Mojibake/Mojibake/EmojiView.swift Refactors emoji detail rendering to shared DetailSectionView / formatting helpers.
src/ui/Mojibake/Mojibake/ContentView.swift Extends navigation to include new tool sections and codepoint deep-linking.
src/ui/Mojibake/Mojibake/CollationView.swift Adds a new collation comparison/sort-key view.
src/ui/Mojibake/Mojibake/CodepointView.swift Adds support for programmatic codepoint requests from other views.
src/ui/Mojibake/Mojibake/CharactersView.swift Adds a new view listing a string’s Unicode scalars and enabling navigation to codepoints.
src/ui/Mojibake/Mojibake/CharacterDetailsView.swift Makes DetailSectionView reusable and adds optional codepoint-link behavior.
src/ui/Mojibake/Mojibake/CharacterDetails.swift Refactors character display/formatting helpers and uses shared formatting/transform utilities.
src/ui/Mojibake/Mojibake/CaseView.swift Refactors header and case-mapping transform to shared helpers.
src/ui/Mojibake/Mojibake/CaselessMatchingView.swift Adds a new caseless matching comparison view across supported modes.
src/ui/Mojibake/Mojibake/BreaksView.swift Refactors header and codepoint formatting to shared helpers.
src/ui/Mojibake/Mojibake/BidiView.swift Refactors header and status/codepoint formatting to shared helpers.
src/ui/Mojibake/Mojibake.xcodeproj/project.pbxproj Updates the human-readable copyright build setting.
src/api/tests/index.ts Updates IDNA API tests to use .example inputs/outputs.
API.md Updates the mjb_idna_to_unicode documentation example to use .example.
Comments suppressed due to low confidence (2)

utils/generate/functions.ts:726

  • The IDNA example was updated to use the reserved .example domain here, but the earlier mjb_idna_to_ascii example in the same generator file still uses bücher.de/xn--bcher-kva.de. Keeping the examples consistent (preferably using .example everywhere) will reduce confusion and avoids mixing a real TLD with a reserved one.
    example: `const char *domain = "xn--bcher-kva.example";
mjb_idna_info info;
mjb_result result;

if(mjb_idna_to_unicode(domain, strlen(domain), MJB_ENC_UTF_8, MJB_ENC_UTF_8,

API.md:928

  • This mjb_idna_to_unicode example now uses .example, but the mjb_idna_to_ascii example earlier in API.md still uses .de. It would be clearer to use the same reserved domain in both examples so readers can round-trip the same input and so the documentation doesn’t mix a real TLD with a reserved one.
const char *domain = "xn--bcher-kva.example";
mjb_idna_info info;
mjb_result result;

if(mjb_idna_to_unicode(domain, strlen(domain), MJB_ENC_UTF_8, MJB_ENC_UTF_8,

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tests/example.c
Comment thread src/ui/Mojibake/Mojibake/Info.plist Outdated
@zaerl
zaerl merged commit 92bd4c2 into main Jul 30, 2026
30 checks passed
@zaerl
zaerl deleted the add/apple-ui-new-views branch July 30, 2026 22:40
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.

2 participants