=== DayOneWP ===
Contributors: lijn-b
Tags: day one, journal, import, gutenberg
Requires at least: 7.0
Requires PHP: 8.0
Stable tag: 0.10.4
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Import Day One JSON ZIP exports into WordPress posts or a configurable custom post type.

== Description ==

DayOneWP reads Day One JSON ZIP exports, previews every journal entry separately, converts rich text and embedded photos to Gutenberg blocks, and saves the selected entry as a draft or published post.

Features:

* Preview imports without creating posts or media.
* Process whole-journal exports one entry at a time.
* Use standard posts or a configurable public custom post type.
* Preserve the original Day One local publication date and timezone metadata.
* Choose a featured image from ZIP thumbnails.
* Store Day One UUID, location, photo, and other metadata.
* Prevent or update duplicate Day One UUIDs.
* Optional OpenStreetMap preview without API keys.
* Complete Dutch and English gettext-based admin interface.
* Built-in support button for the plugin author at ko-fi.com/lijnb.
* Optional SEO fields with Yoast SEO, Rank Math, and SEOPress synchronization.
* Built-in SEO meta output when no supported SEO plugin is active.
* Import history, diagnostic logging, and duplicate media prevention.
* Selectable, resumable batch imports for large journals.
* Persistent import sessions with preflight checks and safe undo.
* Self-hosted automatic update checks from the Lijn-B update manifest.
* Automatic linking of URLs in imported paragraph text, opening in a new tab.
* Optional fallback featured image for entries without photos.
* Standalone automated regression tests for parsing, media mapping, dates, and translations.

== Installation ==

1. Upload the `dayonewp` directory to `/wp-content/plugins/`.
2. Activate DayOneWP in WordPress.
3. Configure the plugin under DayOneWP > Settings.
4. Open DayOneWP > Import and select a Day One JSON ZIP export.

== Automated tests ==

Run the standalone regression suite from the plugin directory:

`php tests/run.php`

Run the WordPress integration suite with the official WordPress test library:

`phpunit -c phpunit.xml.dist`

== Automatic updates ==

DayOneWP checks `https://lijn-b.nl/dayonewp/update.json` for new self-hosted releases. The update manifest can be moved later with the `DAYONEWP_UPDATE_MANIFEST_URL` constant or the `dayonewp_update_manifest_url` filter.

== Changelog ==

= 0.10.4 =
* Fix a frontend fatal error when WordPress passes a null translation context through gettext_with_context.
* Make DayOneWP translation filters tolerant of unexpected non-string values from other plugins or themes.

= 0.10.3 =
* Restrict frontend SEO and typography hooks to imported DayOneWP entries only.
* Make the document-title filter defensive against unexpected non-string values.

= 0.10.2 =
* Add a manual update-check link to the WordPress plugins overview.
* Improve richText parsing so adjacent Day One text and autolink fragments stay in the same paragraph.

= 0.10.1 =
* Convert URLs in imported paragraph text to links that open in a new tab.
* Keep URLs in headings and titles as plain text.
* Add a fallback featured image setting for Day One entries without photos.

= 0.10.0 =
* Add self-hosted automatic update checks with a JSON manifest on lijn-b.nl.
* Add plugin information support for WordPress update details.
* Document the update manifest format for future releases.

= 0.9.0 =
* Add a system status page for upload limits, memory, ZIP support, and writable directories.
* Replace the fixed 25 MB ZIP limit with the effective WordPress/PHP upload limit and an optional safety limit.
* Add privacy guidance, prepared-session retention, cleanup tools, and configurable uninstall behavior.
* Add a WordPress integration test suite for settings, CPT registration, database metadata, limits, and uninstall behavior.

= 0.8.0 =
* Keep prepared import sessions available so large journal imports can be resumed later.
* Add a preflight summary for entries, photos, duplicates, missing titles, missing media, and ZIP size.
* Add safe session undo that removes only posts and media newly created by that import session.

= 0.7.2 =
* Improve the readability of third-party WordPress notices inside the settings header.
* Replace product-specific examples in settings descriptions with neutral guidance.

= 0.7.1 =
* Move the Google Fonts source setting from Import Target to Content Styling.

= 0.7.0 =
* Add optional Google Fonts loading for the typography preview and imported DayOneWP entries.
* Keep locally provided and custom CSS fonts supported without external requests.

= 0.6.2 =
* Guarantee forced English output for the DayOneWP text domain, independent of WordPress translation loading order.

= 0.6.1 =
* Fix forced English and Dutch interface languages when WordPress has already loaded another locale.
* Keep the post-type destination choice visible and only hide custom post type details when standard posts are selected.

= 0.6.0 =
* Redesign the settings page with section navigation and a configuration summary.
* Add conditional custom post type settings and a live typography preview.
* Add clearer descriptions, workflow links, and a dedicated save panel.

= 0.5.0 =
* Add selectable batch imports that process large journals one entry per request.
* Add progress reporting, per-entry errors, and retry support.
* Add standalone automated parser, media, timezone, and translation regression tests.

= 0.4.0 =
* Replace the temporary runtime translation map with standard WordPress gettext translations.
* Add a translation template and complete Dutch PO/MO translation files.

= 0.3.0 =
* Add persistent import history and diagnostic logs.
* Reuse previously imported media using the Day One photo identifier or MD5 hash.
* Record newly uploaded, reused, and failed media for each import.

= 0.2.0 =
* Replace the import page with a four-step import wizard.
* Add visual entry selection, review tabs, progress feedback, and a result page.

= 0.1.6 =
* Add SEO title, meta description, focus keyphrase, indexing, and social image fields during import.
* Add automatic or manual synchronization with Yoast SEO, Rank Math, and SEOPress.
* Output SEO title, description, robots, and Open Graph metadata when using DayOneWP-only SEO.

= 0.1.5 =
* Add configurable fonts and typography styles for imported paragraphs and H1-H6 headings.

= 0.1.4 =
* Add a content formatting setting for standard Gutenberg blocks or builder-compatible HTML with explicit spacing.

= 0.1.3 =
* Remove Day One Markdown escape backslashes from suggested titles and imported text.
* Upload photos through the WordPress media API and link them to the imported post.

= 0.1.2 =
* Add a prominent voluntary Ko-fi support card above the save settings button.

= 0.1.1 =
* Fix a recursive translation lookup that could cause a 503 error during activation.

= 0.1.0 =
* Initial development version.
