0.7.0
Added
- The five
daymark/*blocks (Timeline, Images, Videos, Audio, Notes) now expose how many recent Marks they show as a setting in the block editor, instead of requiring a hand-edit of the block markup. The count control appears under Block tab → "Number of Marks" (1–50) and the editor preview updates as you drag it. (#56)
Fixed
- The app now only ever lives at
/daymark(or/daymark-appwhen that slug is already taken by real site content), even on an install migrated from Moment. Since 0.6.1, a migrated install kept serving the app at its old/momentURL, with/daymarkmerely redirecting there — now it's the other way around:/daymarkis the real app, and/moment(and any home-screen icon already pointing at it) 301s to it instead. (#62) - Search and a notification's reply box now dismiss the same way the per-item menu and the "+ New Mark" launcher already do: tapping outside them, or pressing Escape, closes them and returns keyboard focus to their own toggle. Escape now works no matter which control inside search has focus, not only the text field itself. (#63)
- The composer's title-field "ⓘ" hint follows suit too: an outside tap or Escape closes it and returns focus to the ⓘ button. (#65)
Security
- Editing a Mark's alt text is now scoped to that Mark's own media — an ID-mapped alt edit can no longer be aimed at an image that belongs to a different post.
- Expensive actions are now rate limited per user: AI Assist requests, publishing, and manual response syncs. Over the limit, Daymark asks you to wait a moment instead of processing (limits are configurable via the
daymark_rate_limitsfilter). - Uploads are now capped per request as well as per file, so many files can't be combined to bypass the 50 MB per-file cap (itself now filterable via
daymark_upload_max_bytes). The combined upload limit is 200 MB, filterable viadaymark_upload_total_max_bytes. - Manual response syncs for real connector references now honor the same per-post cooldown as automatic backflow (with an atomic lock so overlapping syncs can't double-poll), while mocked demo syncs stay instant and repeat-safe.
- The app shell now sends a conservative Content-Security-Policy header, filterable via
daymark_app_content_security_policy. Its inline bootstrap script is nonce-scoped rather than relying on'unsafe-inline', so an injected<script>tag has no way to execute even if something else on the page were compromised. (#60) - Imported social replies can be routed through moderation: the
daymark_comment_import_approvedfilter decides whether an imported reply is approved. - AI Assist now treats your draft text strictly as data — instructions hidden inside a caption or filename can't redirect the model. Draft text and filenames are wrapped in an explicit data boundary in the prompt itself, and AI-generated captions, titles, and alt text are now hard-capped server-side rather than only requested via the prompt. (#60)
Changed
- Tapping "+ New Mark" now fans out into Image/Video/Audio/Note bubbles, Path-app style, instead of always landing on a generic composer — pick a type and the composer opens pre-set to it. The button itself shrank to a plain "+" circle, and Timeline moved from the bottom nav up into the header as a combined icon + "Daymark" home-link, freeing a slot for the new launcher among the remaining Images/Video/Audio/Notes icons. Every public view now also carries a small "← Daymark" link back into the app, since section pages render inside your theme with no app chrome of their own. The animation respects
prefers-reduced-motion, and every icon — the launcher and its four bubbles — has a real accessible name. (#53) - For developers: the coding-standards suite now covers the test files (
composer phpcs-tests) and checks PHP 8.1+ compatibility with the PHPCompatibility standard (composer phpcompat); CI runs both.
Full Changelog: 0.6.1...0.7.0