Skip to content

Tifroz/attributed text - #146

Merged
tifroz merged 5 commits into
skiptools:mainfrom
tifroz:tifroz/attributed-text
Nov 5, 2026
Merged

tifroz merged 5 commits into
skiptools:mainfrom
tifroz:tifroz/attributed-text

Conversation

@tifroz

@tifroz tifroz commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Thank you for contributing to the Skip project! Please use this space to describe your change and add any labels (bug, enhancement, documentation, etc.) to help categorize your contribution.

Please review the contribution guide at https://skip.dev/docs/contributing/ for advice and guidance on making high-quality PRs.

Skip Pull Request Checklist:

  • REQUIRED: I have signed the Contributor Agreement
  • REQUIRED: I have tested my change locally with swift test
  • OPTIONAL: I have tested my change on an iOS simulator or device
  • OPTIONAL: I have tested my change on an Android emulator or device

  • AI was used to generate or assist with generating this PR. Please specify below how you used AI to help you, and what steps you have taken to manually verify the changes.

Codex generated the code, I tested manually


Summary

Add editable attributed-text examples to the Text playground using the same Swift code in Lite, Fuse, and SwiftUI. The examples cover range fonts and colors, case-insensitive search, composed/decomposed Unicode matching, links, underline and strikethrough, baseline offsets, inherited styles, and edits after inline Markdown parsing.

var text = AttributedString("Search highlighting in Skip")
if let range = text.range(of: "skip", options: .caseInsensitive) {
    text[range].foregroundColor = .accentColor
}
Text(text)

Preserve the existing Text interpolation examples and add README links to the Foundation search limitations and SkipUI rendering limitations.

Source files: Sources/Showcase/TextPlayground.swift, README.md.

Use merged upstream dependencies for both modes. Lite uses SkipUI 55c7b41, which requires SkipFoundation ba10460. Fuse uses SkipFuseUI 3c884de.

Source files: Package.swift.

Tests: Existing Lite and Fuse CI build workflows in .github/workflows/showcase-lite.yml and .github/workflows/showcase-fuse.yml cover dependency integration. Local validation is listed below.

Split the Alert playground's long view expression into controls, buttonAlerts, and body. The unchanged upstream expression times out in Swift 6.4 during the iOS build; this small refactor allows the app to compile.

Source files: Sources/Showcase/AlertPlayground.swift.

Limitations

  • Text matching options and rendering remain limited to the supported subsets documented in SkipFoundation and SkipUI.

Notes

Depends on merged SkipFoundation #143, SkipUI #597, and SkipFuseUI #164.

@cla-bot cla-bot Bot added the cla-signed label Nov 5, 2026
@tifroz
tifroz merged commit dc4a434 into skiptools:main Nov 5, 2026
3 checks passed
@tifroz
tifroz deleted the tifroz/attributed-text branch November 5, 2026 03:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant