0.8.0
Added
- Home is now the merged Timeline feed: the user's own Marks interleaved with cached posts from subscribed sites, replacing what was a Recent Marks list of only their own Marks. Opening a subscribed post fetches and shows its full content in place; pulling down from the top of the list refreshes every active subscription. (#102, part of #78)
- Search now covers the whole Timeline (Marks and subscription posts) instead of only the user's own Marks, with a new Source filter next to the existing type chips to narrow it back down to "My Marks" or one specific subscribed site. (#103, part of #78)
- A Settings → Daymark screen for managing subscriptions: subscribe to a site by URL, see its status and when it was last fetched, refresh it on demand, and unsubscribe. Also reachable via a new "Subscriptions" action link on the Plugins list screen. The Subscribe button shows a loading state while the request is in flight. (#104, part of #78)
- Home's Recent Marks list now shows the same comment/like stat row as the public Timeline card — a zero count stays a dimmed icon-only, a real count shows next to a bolder icon. Resolves the compactness side of #42 in favor of the shared visual language. (#72)
- A Mark's own permalink page now carries outbound POSSE-quality microformats2 markup:
h-entry(withe-content,p-name/p-summary,dt-published,u-url, andu-photo/u-video/u-audiofor attached media) and an authorh-card(p-author,p-name,u-photo). A newrel=mefield on the native Users → Your Profile screen renders as arel="me"link next to the h-card when set. Deliberately leaves outu-email— a WordPress account email isn't meant to be public, and it's optional in the h-card spec. (part of #78)
Removed
- The public
/timelinepage, thedaymark/timelineblock, and the[daymark_timeline]shortcode. Timeline is now an interleaved, multi-source view (your own Marks plus subscribed sites' posts, via Home) that only makes sense inside the authenticated app — a public page under the same name showing something narrower was confusing and redundant. An existing install's/timelinepage is hard-deleted on upgrade (real 404, no redirect); individual Mark permalinks, your site's RSS/Atom feed, and the other four section pages (/images,/videos,/audio,/notes) are unaffected. (part of #78)
Changed
- For developers:
Requires PHPis now 8.2 (was 8.1) — PHP 8.1 stopped receiving security fixes.phpunit/phpunitstays on^9.6rather than moving to 11.x: WordPress core's own PHPUnit test scaffold still calls a method PHPUnit 10 removed, so every test run under PHPUnit 10+ fails regardless of anything in this plugin. Tracked in #106 for whenever core fixes it. - For developers:
CONTRIBUTING.md's crediting-contributors section now says explicitly that Claude Code gets aCo-Authored-By:trailer too, alongside human contributors, when it wrote or materially helped write a change. (#108) - For developers:
CONTRIBUTING.md's release checklist now opens with a dependency update check (npm/composer outdatedandaudit, patch/minor routinely, majors held for a deliberate compatibility review) and a bundle size/tree-shaking check, before opening the release PR. (#105) - For developers: this release's dependency check found nothing to update —
npm outdatedandcomposer outdated --directare clean apart from the already-trackedphpunit/phpunithold-back (see above).npm auditreports 32 advisories, all inwebpack-dev-server's transitive chain under the@wordpress/scriptsdevDependency (local build/watch tooling only — the plugin ships no npmdependenciesand none of this reaches the distribution zip);composer auditis clean. Bundle size unchanged at 778 bytes.
Fixed
- A subscribed post's fetched full content no longer leaks the raw page's
<script>/<style>source as visible text in the click-through detail view.wp_kses_post()only strips those tags, not their enclosed text, so a fetched page's tracking scripts and print styles were showing up as plain text; the fetch now narrows to the page's<body>and drops script/style elements entirely (tag and content) before sanitizing. (#102) - The app now only ever lives at
/daymarkeven on an install that migrated from Moment before the 0.7.0 fix shipped. That fix only stopped a future migration from carrying the old base forward — a site that had already migrated kept it stuck at e.g./momentforever, since that setting is deliberately never re-checked once resolved. It's now self-corrected on first use: the old value moves to the redirect (same as a fresh migration), and the "Open Daymark" link on the Installed Plugins screen and every other app URL correctly point at/daymark. (#71) - A Mark migrated from Moment (which never set a featured image) now shows its thumbnail in Home's Recent Marks list, the same way it already did on the public Timeline: the list reads the featured image first, then falls back to the Mark's own first image attachment, instead of only ever checking the featured image. (#72)
- A generated title for a long caption with no spaces (e.g. Japanese, which
wp_trim_words()only shortens on a CJK-translated locale) is now trimmed to a character-count backstop instead of used in full. The limit is filterable viadaymark_title_max_chars. (#75, fixes #74) - The "+ New Mark" launcher's Image/Video/Audio/Note bubbles now genuinely burst outward from the button and settle back into it, instead of mostly fading in near their own final position with a slight scale. A scroll that happens while a bubble is still mid fan-out (including one an automated click's own scroll-into-view step can trigger) no longer closes the launcher out from under itself before it's had a chance to become tappable. (#72)
Security
- A cached subscription post could previously be edited or deleted through WordPress's own generic REST API (
wp/v2/subscription-posts), auto-registered because the post type wasshow_in_rest => trueand gated only by ordinary edit/delete-post capabilities — entirely separate from, and bypassing, Daymark's own read-only routes. Nothing in the app ever used that generic endpoint; it's now disabled, so a cached copy of someone else's content can only ever be written by the subscription poller itself. (#103) - For developers: bumped
nanoid, a transitive devDependency of@wordpress/scripts' bundled Lighthouse tooling, to resolve a high-severity advisory. Dev-tooling only — never invoked by this project's own build/test scripts and never shipped in the plugin zip. (#105)
Deprecated
Daymark_Migration(the one-time Moment → Daymark storage conversion) is soft-deprecated ahead of removal in 0.9.0. No behavior change for anyone still upgrading from Moment (≤ 0.5.0) — sites with real legacy data to convert now also get a logged_deprecated_function()notice (visible underWP_DEBUG) at the moment the conversion runs, as a heads-up before it's removed. (#69)
Full Changelog: 0.7.0...0.8.0