{{ message }}
Repository navigation
Linked Markdown and text scripts: re-read on Play, Markdown stripping, page splitting - #130
Open
msevans770 wants to merge 14 commits into
Open
msevans770 wants to merge 14 commits into
msevans770 wants to merge 14 commits into
Conversation
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…n parser Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ferences footer Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…sted-bracket links Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…lways splits Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
veysiemrah
added a commit
to veysiemrah/textream-windows
that referenced
this pull request
Oct 19, 2026
Many presenters keep their talk as Markdown in a notes app. The open dialog now takes .md and .txt as well as .textream: Markdown keeps what is read aloud and drops the formatting (heading marks, emphasis, link URLs, images, code blocks, comments, frontmatter), and a horizontal rule becomes a paragraph break. Plain text is read as it is. Saving still writes .textream. After upstream f/textream#130, without its Obsidian-specific rules and page splitting. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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
Adds linked Markdown / text scripts to the macOS app. You can open (Cmd-O), drag in, or Finder-open a
.md,.markdownor.txtfile, and Textream links to it instead of copying it. Each time you press Play, the file is re-read, stripped to speakable text and split into pages, so you can keep editing the script in Obsidian (or any editor) and just press Play.macOS only. Nothing under
TextreamiOS/is touched.Behaviour
files.user-selected.read-write)..textreamsnapshot, never the source file. If the file goes missing or unreadable, the last good text is kept, a warning is shown, and Play still works..mdand.txtatAlternaterank, so it never takes over as the default app.Markdown handling (
MarkdownScriptParser)Foundation-only, so it is unit-testable.
---rules and#/##headings.###and below stay inside their section. A heading only starts a new page once the current page has 40+ words, so short sections do not become tiny prompter pages.<!-- -->and%% %%comments, images/embeds, footnotes, HTML tags, emphasis markers, list/task/quote/callout markers.[text](url)becomestext,[[Page|Alias]]becomesAlias, tables flatten to rows of cell text.[pause]and[smile]are preserved, since the editor and speech tracker already treat them specially..txtfiles get no Markdown stripping.Opinionated rules, happy to drop any of these
These come from running it over a real Obsidian vault, and are the parts you may not want upstream:
#hashtagsare removed, andTags:/Status:lines are droppedReferencessection (any heading level) is dropped when the note has other pagesEach is a small, isolated rule in
MarkdownScriptParser.swift.Implementation
MarkdownScriptParser.swiftandLinkedScriptStore.swift(bookmarks, UTF-8 / UTF-16 / Latin-1 decoding) are new and import only Foundation.TextreamServicegains the link state andopenScriptFile/linkScript/refreshLinkedScript/unlinkScript/restoreLinkedScript, and routes opens by extension.ContentViewgets the banner, read-only editor, disabled controls and.mddrop handling.HighlightingTextEditorgets anisEditableparameter.Testing
cd Textream && swift test. The Xcode project has no macOS test target, soTextream/Package.swiftis a small SwiftPM harness that compiles just the two Foundation-only files. It is only for tests and is safe to drop if you prefer another setup.TextreammacOS scheme and theTextreamiOSscheme both build.This was built with AI assistance (Claude Code), with automated review passes and unit tests, and manual runs on real notes. Happy to split it up (parser first, then UI) if that is easier to review.
🤖 Generated with Claude Code