Outerline 1.0-1158
Summary
Build 1158 ships document export and full-library backup export on both platforms using a shared ZIP writer and a consistent archive filename format. Source Code Pro is now bundled in both the macOS and iOS apps so it is always available from the monospaced font list without a system download. On iOS, a new Settings > Editor panel mirrors the Mac editor preferences — font family, text size with haptic tick marks, and completion toggles — and a new Settings > Library > Documents panel adds Previews and Date Display controls wired across all document surfaces. Document export (HTML, PDF, Markdown) is now accessible from document row menus, Starred rows, All Documents and tag views, and the editor ellipsis menu. The iOS library now moves into the skeleton immediately when opening a cloud-backed library instead of blocking behind “Opening vault…”, and a silent CoreText prefetch pre-warms Monaco and Andale Mono after the library has loaded. Fixes address stale iCloud row download states, the native text-selection edit menu being obscured by the Liquid Glass keyboard accessory, PDF export reliability, export temp file cleanup, and a pasteboard URL fallback for Paste URL to Create Link.
macOS
Export
- Added File → Export As for exporting the active document to HTML, PDF, or Markdown.
- Added File → Library → Export Backup for creating a full-library backup archive.
- Moved backup ZIP creation into shared code so macOS and iOS use the same archive writer and filename format (
outerline-backup-YYYYMMDD-HHMMSS.zip). - macOS backup export includes the active library root and
.outerline-data; if the chosen destination is inside the library, the archive is written to a temporary file first to avoid self-inclusion.
Fonts
- Bundled Source Code Pro with the macOS app and registered it at startup so it is always available as a local option in the monospaced editor font list.
iOS
Library
- Opening an existing cloud-backed library now moves into the library skeleton immediately when iCloud or File Provider metadata shows remote or unavailable items, instead of blocking behind “Opening vault…” while waiting on full markdown body reads.
- First-run hydration drives the library progress row and row-level cloud and spinner states, including persisted cloud-backed bookmarks that keep normal bookmark storage semantics.
Export
- Added document export actions (HTML, PDF, Markdown) to document row menus, Starred rows, All Documents, tag views, and the editor ellipsis menu — delivered through the system Files picker.
- Shared iOS document export orchestration keeps the list and vault-browser export flows consistent while preserving editor export from live content.
Settings
- Added Settings > Editor on iOS, mirroring the Mac editor preferences with font family selection, text size controls with haptic tick marks and point value labels, and completion toggles for auto-complete pairs and Paste URL to Create Link.
- Added Settings > Library > Documents on iOS with a Previews toggle and a Date Display selector for Created or Modified dates.
- Wired library document display settings through folder lists, All Documents, tag views, and Starred documents so previews and date labels stay consistent across all document surfaces.
Fonts
- Bundled Source Code Pro for the iOS editor and syntax highlighter so it is available immediately from the monospaced font list.
- Added a silent one-shot CoreText prefetch for downloadable monospaced fonts Monaco and Andale Mono. The prefetch runs after the library has loaded and the initial iCloud progress indicator is gone, so first library sync remains the priority and the font picker still falls back gracefully if a system download is unavailable.
Fixes
- Hydrated and current iCloud documents no longer remain in row download state, so only unavailable, downloading, or failed items show cloud progress indicators.
- The initial hydration refresh now waits for the skeleton load token to clear before attempting the follow-up full refresh, preventing a missed post-skeleton hydration pass.
- The native text-selection edit menu now stays above the iPhone keyboard toolbar instead of being obscured by Outerline’s custom Liquid Glass keyboard accessory.
- Temporary export files are now cleaned up after the document export picker is dismissed.
- PDF export now sets the WebKit navigation delegate before loading HTML, resumes only once, and handles provisional navigation failures correctly.
- Migrated iOS editor preference storage to
OuterlineIOS.Editor.*keys while preserving any existing legacy values on launch. - Paste URL to Create Link now also checks
UIPasteboard.url, fixing pasteboards that expose a URL object without a plain text string.