- Qualify swift-markdown's Document: SwiftUI now exports its own Document protocol, making the bare name ambiguous.
- Allowlist the Sparkle SUPublicEDKey (an EdDSA public verification key, not a secret) for gitleaks.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The README was the upstream README word for word, so it read as if
KofTwentyTwo shipped the macOS app. Every download, cask and update link
points at darinkelkhoff/markdownViewr, and this fork publishes no
releases. Say so, and point to the upstream printing PRs (#2 merged,
#3 open) and to the Windows port.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add a toggleable raw-Markdown source pane (toolbar button) shown beside the
rendered view in the WKWebView:
- Resizable divider with persisted width (@AppStorage), dynamic max width.
- Find spans both panes, pairing the k-th rendered hit with the k-th source hit
so next/prev moves both.
- Header-anchored scroll-sync both directions (interpolated between headings).
- Option-click a rendered header to anchor/jump (both panes follow).
- Collapsing a section mirrors into the source with a collapsed-section ellipsis.
- Slides open/closed like the TOC (suppressed on load and during drag).
Also render GFM task lists ([ ]/[x]) as real disabled checkboxes, and document
the source-pane and TOC custom-CSS selectors in the shared CSS help (now
scrollable + selectable).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Editing a built-in theme in place saves a same-named user file, but loadThemes
appended both the bundled and user copies, so the built-in (added first) shadowed
the override in every name-based lookup — the editor reopened the bundled copy
(losing edits/customCSS) and rendering used it too.
Drop the shadowed bundled copy when a user theme shares its name, and mark that
override built-in so the UI still shows it as one. deleteTheme now also removes
the override file (so deleting an edited built-in actually clears it).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Settings → General toggle to wrap long TOC entries; default is no-wrap with
ellipsis (hover shows full text via the title attribute).
- 'Depth markers' toggle prefixing each entry with a shape that varies by
heading level (●○◆◇■□), with hanging-indent so wrapped lines align past
the marker.
- Move the divider onto the full-height sticky resizer so it spans the whole
window regardless of TOC content length.
- Animate TOC open/close (width/padding/opacity), suppressed on initial load
and during drag-resize so only deliberate toggles animate.
- Fix the Settings TOC GroupBox not spanning full width.
New settings persist via @AppStorage and inject into the web view on load.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a drag handle on the TOC's right edge (CSS/JS in template.html); on
drag-end the width is posted to Swift via a new tocWidth message handler and
saved to @AppStorage, then injected into every document on load. Also persist
tocVisible and tocDepth (previously per-window @State) so the whole TOC state
survives across documents and launches.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The app does not tokenize/highlight code; code blocks are monospaced and
themed. Fix the claim in the README and landing page.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
A single target can't exclude Sparkle from the MAS build: SwiftPM auto-links
a declared package-product dependency regardless of #if guards, so the
framework is always embedded/linked. App Store rejects Sparkle's non-sandboxed
helpers (error 90296), and the framework can't be stripped post-build (the
binary links it -> dyld launch crash).
Replace the single target + Debug-MAS/Release-MAS configs with two app targets
sharing a targetTemplates base:
- markdownViewr (Developer ID, depends on Sparkle)
- markdownViewr-MAS (App Store, no Sparkle dependency, sandboxed, MAS_BUILD)
Both use plain Debug/Release. Update release-mas, test, and the test runner to
the new scheme names.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Auto-discovers the API Key ID from the AuthKey_<id>.p8 filename and reads
the issuer id from ~/.appstoreconnect/issuer_id (or ASC_ISSUER_ID), so no
credentials live in this public repo and no per-run input is needed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
-allowProvisioningUpdates lets xcodebuild create the Mac App Store
provisioning profile for com.dkelkhoff.markdownViewr on first export.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>