Files
Daymark/CHANGELOG.md
T

27 KiB
Raw Blame History

Changelog

All notable changes to Daymark are documented here. The format follows Keep a Changelog, and releases use semantic versioning.

[Unreleased]

[1.18.1] - 2026-08-29

Added

  • Automatically prepares a reusable share link when the Share panel opens.
  • Encrypts recoverable share tokens at rest while retaining one-way hashes for public-link validation.

Changed

  • Reuses an active automatic link instead of creating a new link on every visit.
  • Automatically replaces expired or revoked links while preserving manual password-protected link creation.

[1.18.0] - 2026-08-29

Added

  • Expanded entry sharing with native device sharing, copy-link feedback, email, WhatsApp, Facebook, X, and Reddit actions.
  • Added clear link-ready guidance and an active-link count to the sharing panel.

Changed

  • Clarified that creating a public link is the privacy boundary before external sharing options become available.

[1.17.1] - 2026-08-29

Changed

  • Moved archive discovery beneath Journals in the main navigation sidebar.
  • Replaced the oversized archive banner with a compact day count, random-entry action, and "On this day" list.

[1.17.0] - 2026-08-29

Changed

  • Moved the diary name, description, entry count, recording year, and latest-entry date into the main top header.
  • Removed the separate oversized diary masthead to reduce vertical space before the entry list.
  • Preserved custom diary cover images as a subtle background on the new identity header.
  • Kept account and administration routes on the smaller standard header.

[1.16.1] - 2026-08-28

Added

  • Added a paperclip indicator beside Timeline titles when an entry contains attachments.
  • Added an accessible hover label showing the number of attached files.

[1.16.0] - 2026-08-27

Added

  • Added a themed photo-information overlay when hovering or focusing images inside diary entries.
  • Added safe EXIF preservation for camera make and model, lens, aperture, shutter speed, ISO, focal length, dimensions, and capture time.
  • Added file name and size information for existing images that do not contain preserved EXIF data.

Security

  • Excluded GPS coordinates from stored photo hover metadata so the overlay cannot bypass entry location-privacy settings.

[1.15.3] - 2026-08-26

Added

  • Added the amber pin icon and PINNED label beside pinned entry titles in Timeline view.

[1.15.2] - 2026-08-26

Fixed

  • Enforced pinned-first ordering after client-side edits, searches, journal filters, and view changes.
  • Kept unpinned entries ordered by date, time, and entry ID after pinned entries.

[1.15.1] - 2026-08-26

Changed

  • Removed the duplicate uppercase label from deleted-comment tombstones while retaining the message and timestamp.

[1.15.0] - 2026-08-26

Added

  • Added tombstone deletion for comments with replies so the discussion tree remains intact.
  • Added automatic pruning when a deleted parent no longer has any replies beneath it.

Changed

  • Deleted parent comments now hide their text, author identity, reactions, and controls while preserving their replies.
  • Leaf comments continue to be removed completely, and deleted comments are excluded from active counts and moderation queues.
  • Updated the deletion modal to explain whether a comment will become a tombstone or be permanently removed.

[1.14.12] - 2026-08-26

Added

  • Added a designed confirmation modal before permanently deleting a comment.
  • Added a comment preview and an explicit warning that nested replies are deleted with their parent.
  • Added Escape, outside-click, loading, and deletion-error handling to comment confirmation.

[1.14.11] - 2026-08-26

Changed

  • Moved Reply and Delete into a compact row directly beneath each comment timestamp.
  • Simplified comment footers so they are dedicated exclusively to reaction controls and summaries.

[1.14.10] - 2026-08-26

Changed

  • Separated comment footer controls into Like on the left, Reply and Delete on the right, and chosen reactions at the far edge.
  • Added a subtle divider between comment actions and the chosen-reaction stack when reactions exist.

[1.14.9] - 2026-08-26

Fixed

  • Kept comment and reply reaction triggers as thumbs-up icons after choosing another reaction.
  • Removed the duplicate inline selected emoji and count; chosen reactions now appear only in the right-side stack.

[1.14.8] - 2026-08-26

Changed

  • Reorganized comment footers with reaction, Reply, and Delete controls grouped on the left.
  • Added Facebook-style chosen-reaction stacks on the right of every comment and nested reply.
  • Added participant-name tooltips to comment and reply reaction summaries.

[1.14.7] - 2026-08-26

Changed

  • Simplified the discussion header by removing the repeated diary entry title.

[1.14.6] - 2026-08-26

Fixed

  • Rendered discussions as real parent-child trees so replies appear directly beneath the comment they answer.
  • Added progressive indentation for replies of replies, capped at six levels with tighter spacing on mobile.

[1.14.5] - 2026-08-26

Changed

  • Removed the Like and Reacted text labels from reaction controls on nested replies.
  • Kept reply reaction hover, touch, selection, count, and participant behavior consistent with top-level comments.

[1.14.4] - 2026-08-26

Changed

  • Changed reaction-summary badges to use the standard hand pointer instead of the help cursor.

[1.14.3] - 2026-08-26

Changed

  • Simplified the entry reaction tray to show only available emoji choices without selected borders or counts.
  • Kept reaction selections and participant details exclusively in the summary stack on the right.

[1.14.2] - 2026-08-26

Added

  • Added a compact overlapping stack of the reactions chosen for an entry on the right side of its social bar.
  • Added per-reaction hover labels listing the people who selected each emoji.

[1.14.1] - 2026-08-26

Changed

  • Made the left thumbs-up reaction count open the emoji tray on hover or tap.
  • Removed the separate blue reaction button from the right side of the discussion bar.

[1.14.0] - 2026-08-26

Added

  • Added OLED Black, Nord, Dracula, Gruvbox, Solarized Dark, Forest, Rose Pine, and Monochrome themes.

Changed

  • Rebuilt theme support around shared semantic colour tokens so backgrounds, panels, borders, text, controls, and status colours change together.
  • Replaced filter-based light themes with native palettes so images, videos, maps, and charts retain their original colours.

[1.13.3] - 2026-08-26

Changed

  • Reworked entry reactions into a Facebook-style social bar with reaction and comment totals.
  • Replaced the labeled entry reaction control with a single circular Like button aligned to the right.
  • Made reaction trays open on hover for pointer devices while retaining click support for touch screens.

[1.13.2] - 2026-08-26

Changed

  • Replaced permanently visible emoji rows with a compact Facebook-style React control.
  • Added an on-demand reaction picker, existing-reaction summary, selected state, and outside-click dismissal.

[1.13.1] - 2026-08-25

Changed

  • Repositioned comment reactions into a compact footer directly beneath each comment.
  • Kept emoji reactions left-aligned and grouped Reply and Delete actions on the right.
  • Removed the oversized global footer spacing from comment controls.

[1.13.0] - 2026-08-25

Changed

  • Reorganized User Settings from nineteen fragmented destinations into ten task-focused sections.
  • Grouped diary and editor controls, journals and tags, notification tools, privacy tools, and data management into cohesive pages.
  • Preserved old settings links by redirecting their hashes to the appropriate new section.
  • Tightened the settings sidebar and added consistent spacing between grouped panels.

[1.12.4] - 2026-08-25

Added

  • Added a visible pin icon and label beside the title of every pinned diary entry.
  • Added a designed, accessible confirmation modal when moving an entry to Trash.

[1.12.3] - 2026-08-25

Changed

  • Shortened the shared entry visibility option label to "Shared".

[1.12.2] - 2026-08-25

Changed

  • Combined Encrypt Text and Pin Entry into one compact, equally sized composer options row.
  • Removed the oversized encryption container while retaining a focused passphrase area only when encryption is enabled.

[1.12.1] - 2026-08-25

Removed

  • Removed Knowledge Graph from the diary view selector and application view routing.

Fixed

  • Legacy Knowledge Graph URLs and saved default values now fall back safely to Diary instead of rendering an empty view.

[1.12.0] - 2026-08-25

Fixed

  • Corrected personal Statistics totals by normalizing account and entry owner identifiers before comparison.

Added

  • Redesigned Statistics with interactive summary cards, weekly and monthly goal progress, a 12-month activity chart, weekday writing distribution, a visibility donut, and ranked topic bars.
  • Included zero-activity months in the annual chart so trends remain continuous instead of disappearing.

[1.11.2] - 2026-08-25

Added

  • Gallery images now open their original full-size file in an in-page lightbox with background-click, close-button, and Escape-key dismissal.

[1.11.1] - 2026-08-25

Fixed

  • Fixed a strict-mode variable declaration error that caused a blank page when opening the date-grouped Gallery.

[1.11.0] - 2026-08-25

Added

  • Grouped Gallery photos and videos under localized date headings, similar to the Windows Photos timeline.
  • Added per-day media counts and entry-page links to Gallery captions.

[1.10.3] - 2026-08-25

Added

  • Timeline rows now open their corresponding entry pages by mouse click or keyboard activation, with clear hover and focus feedback.

[1.10.2] - 2026-08-25

Changed

  • Replaced wrapping ISO dates in Timeline with compact day and month/year blocks.
  • Added each entry’s time to Timeline using the account’s configured 12- or 24-hour format.

[1.10.1] - 2026-08-25

Fixed

  • Scoped calendar day filtering to Timeline so switching to another diary view automatically restores all dates.
  • Added a visible “Show all dates” action and selected-date heading to filtered Timeline views.

[1.10.0] - 2026-08-25

Added

  • Populated calendar days now open the Timeline filtered to every entry recorded on that exact date.
  • Calendar-to-timeline navigation stores the selected date in the URL so the filtered day can be bookmarked or reloaded.

[1.9.13] - 2026-08-25

Fixed

  • Moved the private-entry lock indicator to immediately after the Delete action.

[1.9.12] - 2026-08-25

Changed

  • Replaced the “PRIVATE” entry metadata text with a compact lock indicator beside the Delete action.

[1.9.11] - 2026-08-25

Fixed

  • Added matching hover and pressed feedback to Take Photo so it behaves consistently with Record Voice.

[1.9.10] - 2026-08-25

Fixed

  • Stopped the Bold toolbar button from appearing selected while hovering the entry editor by separating the editor controls from an invalid shared label relationship.

[1.9.9] - 2026-08-25

Changed

  • Removed collaboration-role suffixes such as “owner” from journal names in the entry composer.

[1.9.8] - 2026-08-25

Changed

  • Removed the Mood field, visible coordinate inputs, and manual weather-loading control from the entry composer.
  • Kept map coordinates internal so location search and mapped entries continue to work without exposing technical fields.

[1.9.7] - 2026-08-25

Fixed

  • Matched the Take Photo and Record Voice composer controls to the same width and height in normal, disabled, and recording states.

[1.9.6] - 2026-08-25

Changed

  • Removed the template-button and rotating-prompt writing aids from the entry composer for a cleaner editing surface.

[1.9.5] - 2026-08-25

Changed

  • Shortened the User Settings sidebar labels by removing “preferences” from Diary, Editor, Notifications, and Privacy.

[1.9.4] - 2026-08-25

Changed

  • Redesigned journal cards with a balanced details-and-controls layout, clearer action hierarchy, larger controls, and compact entry metadata.
  • Tightened the Create Journal area and aligned it with the journal cards across desktop and mobile layouts.

[1.9.3] - 2026-08-25

Fixed

  • Prevented the Journals settings page from rendering blank on its first visit by replacing its legacy modal lifecycle with a stable page panel and defensively handling incomplete journal records.

[1.9.2] - 2026-08-25

Changed

  • Reworked Journal settings into clean full-width rows with separated metadata and actions, plus a labelled full-width creation area.
  • Improved Journal settings alignment and responsive behaviour on narrow screens.

[1.9.1] - 2026-08-25

Changed

  • Removed category headings from the User Settings sidebar for a cleaner uninterrupted navigation list.

[1.9.0] - 2026-08-25

Changed

  • Replaced nested User Settings tabs with direct, grouped sidebar destinations for every profile, diary, writing, interface, notification, privacy, security, and data panel.
  • Each settings subsection now has its own stable URL fragment for direct links and bookmarks.

[1.8.1] - 2026-08-25

Changed

  • Simplified Profile settings by removing the Pronouns and Home Location fields.

[1.8.0] - 2026-08-25

Added

  • Self-service temporary account deactivation and credential-based reactivation from the sign-in page.
  • Journal ownership transfer to another active user while retaining editor access.
  • Recoverable account deletion with a 30-day cancellation window and automatic removal of database records, media, and personal backup files.
  • Downloadable CSV account-security activity alongside existing device-session controls.

[1.7.0] - 2026-08-25

Added

  • Personal storage analytics with category graphs, quota progress, a largest-file browser, and exact duplicate detection.
  • Safe attachment cleanup that removes selected originals and thumbnails from included object storage and every referencing entry.
  • On-demand personal backup history with complete account data, readable Markdown entries, original media, and download or deletion controls.

[1.6.0] - 2026-08-25

Added

  • Independent in-app, native browser, and verified-email notification channels with quiet hours and instant, daily, or weekly email delivery.
  • Shared-entry creation/update notifications and security alerts for failed sign-ins and new devices.
  • Background email delivery with retry tracking and grouped digest messages through the included SMTP service.

Changed

  • Notification event preferences now govern comments, replies, mentions, shared journal activity, and account security across enabled delivery channels.

[1.5.0] - 2026-08-25

Added

  • Direct profile-image and diary-cover uploads to included object storage, with controlled public avatar delivery for public author pages.
  • Personal tag inventory with account-wide rename, merge, and removal actions.
  • Custom composer templates and prompts, scheduled browser writing prompts, and configurable weekly-entry and monthly-word goals.
  • Live writing-goal progress within personal diary statistics.

Changed

  • Composer templates and random prompts now include each user's saved writing tools, and statistics isolate personal authorship within collaborative journals.

[1.4.0] - 2026-08-25

Added

  • Optional public author pages with profile image, pronouns, biography, personal website, join date, and public entries.
  • Account-wide public-link management, held-comment review and approval, and blocked-user management inside Privacy settings.
  • Database-backed comment approval and mutual interaction blocking for comments, reactions, and mentions.

Changed

  • Privacy settings now control public-profile availability and whether new comments require owner approval.

[1.3.0] - 2026-08-25

Added

  • Functional date, time, timezone, temperature, distance, week-start, map-zoom, image-quality, remembered-entry, accent-colour, diary-cover, and expanded identity preferences.
  • Client-side image resizing and JPEG quality selection for new uploads while retaining an original-file option.

Changed

  • Calendar alignment, entry timestamps, weather units, single-location map zoom, composer defaults, remembered entry choices, interface accents, and masthead covers now follow each account's saved preferences.

[1.2.0] - 2026-08-25

Added

  • Profile editing and a dedicated Privacy page for location precision, comment access, and default public-link expiry.
  • Comment and reply inbox notifications that respect each recipient's saved notification preferences.

Changed

  • Consolidated User Settings into exactly seven full-page sections: Profile, Diary, Editor, Appearance, Notifications, Privacy, and Security & Data.
  • Moved journals, inbox activity, sessions, exports, account lifecycle, and trash into focused sub-navigation within their related settings pages.
  • Applied saved preferences to the opening diary view, entry-list size, composer journal and visibility defaults, autosave, spellcheck, interface theme/scale/density/motion, location precision, comments, and public-link expiry.

[1.1.0] - 2026-08-25

Added

  • Account-synchronized user preferences backed by PostgreSQL and authenticated preference APIs.
  • New full-page Diary, Editor, Appearance, and Notification preference sections with responsive controls and saved-state feedback.

[1.0.6] - 2026-08-25

Changed

  • Flattened the Maintenance page into a full-width layout without the nested modal container, with tighter status, schedule, message, behavior, and action sections.

[1.0.5] - 2026-08-25

Changed

  • Administrator account creation now uses the same focused modal as user editing for a consistent Users workflow.

[1.0.4] - 2026-08-25

Changed

  • User editing now opens the existing administrator editor in a focused modal while preserving its established appearance and controls.

[1.0.3] - 2026-08-25

Changed

  • Simplified Operational Alerts with a compact health strip, full-width threshold layout, evenly aligned setting cards, and a cleaner action row.

[1.0.2] - 2026-08-25

Changed

  • Compacted the seven Admin Overview headline metrics into one complete desktop row, with balanced full-width wrapping on small screens.

[1.0.1] - 2026-08-25

Changed

  • Reflowed Admin Overview metrics so incomplete rows expand to the available width without leaving empty colored grid cells.

[1.0.0] - 2026-08-25

Added

  • Scheduled maintenance mode with optional immediate start/open-ended duration, visitor messaging, HTTP 503 API enforcement, automatic expiry, administrator bypass, and audit events.
  • Date-ranged administrator analytics exports in spreadsheet-ready CSV and formatted PDF, with report generation audit events.
  • Configurable operational alerts for memory, PostgreSQL connections, failed sign-ins, backup age/completeness, and per-user storage utilization.
  • Configurable per-user storage quotas with live usage in account administration and enforcement during uploads.
  • Unified administrator moderation for recent comments and public links with search, context links, removal/revocation actions, and audit events.
  • Admin backup history with matched database/media status, total sizes, one-click creation, authenticated downloads, deletion, and audit events.
  • Persistent administrator audit logging with actor, action, target, details, IP address, and a dedicated Admin Audit page.
  • Live Admin Overview charts for 30-day content and sign-in activity, entry visibility, and top contributors using lightweight native SVG and CSS.
  • Administrator Website settings for the live site name, masthead description, top notice, browser title, and footer signature.
  • Full administrator account creation and editing, password resets, verification controls, guarded account deletion, and detailed host/container and PostgreSQL resource statistics.
  • Expanded administration with overview metrics, searchable account management, session revocation, registration-code history and revocation, sign-in auditing, and system/storage status.
  • Repository README with feature, setup, Portainer, migration, backup, configuration, and security guidance.
  • Permission-checked standalone entry pages at /entries/:id for durable diary permalinks.
  • Editable entry times, displayed alongside each diary date and backfilled from original creation timestamps for existing entries.
  • Dedicated /settings and /admin pages with section navigation, replacing account and administration popups.

Changed

  • Removed the manually maintained revision label from System status to prevent stale deployment information.
  • Removed the inherited modal form container from Website settings so its fields use the full page content area.
  • Removed the redundant nested Identity card from the single-section Website settings page.
  • Rebuilt registration administration as two clearly labeled cards for access policy and invitation-code creation.
  • Added consistent pointer, hover, pressed, and keyboard-focus feedback to interactive controls and popup close buttons across the site.
  • Reorganized administrator user rows into aligned account details, status controls, and grouped actions with a responsive stacked layout.
  • Limited Admin Dashboard status messages to their current section and made them dismiss automatically.
  • Rebuilt the Admin Dashboard as a full-page, sectioned interface matching the User Settings navigation pattern.
  • Increased the complete interface scale by 10%, including typography, controls, icons, spacing, and panels.
  • Flattened form panels by removing their offset 3D shadows while retaining clear borders.
  • Hid the redundant Discuss link when viewing an entry's already-open discussion page.
  • Renamed the user-facing application from Daymark to Daymark while preserving its existing Docker and storage identifiers.
  • Replaced the oversized static hero with a compact masthead showing the live entry count, earliest recorded year, and latest entry date.
  • Renamed Permalink to an icon-labeled Discuss link and embedded reactions, comments, replies, and comment creation directly beneath standalone entries.
  • Removed the Latest badge and moved entry discussions from the heading actions to a dedicated control beneath each entry.
  • Made diary entry titles link directly to their standalone entry pages.
  • Made entry tags navigable filters that reopen the diary at the matching tag and year.
  • Removed automatic tag-based Related Entry links from diary cards to reduce visual clutter; manual links and the Knowledge Graph remain available.
  • Expanded entry headings into a two-column date/content layout with title and actions on top and metadata/location spanning the full row below.
  • Reordered entry headings with the title first, metadata beneath it, and location aligned across the metadata row.
  • Replaced the crowded seven-button view switcher with a compact View selector and separated Search, Filters, and entry count controls.
  • Positioned New Entry beside User Settings in the simplified diary header.
  • Opt-in live voice transcription through supported browser speech services and on-demand in-browser Tesseract OCR that inserts extracted image text into drafts.
  • SSRF-protected web link metadata previews with bounded fetches, redirect validation, image cards, and privacy-enhanced YouTube/Vimeo embeds.
  • OpenStreetMap/Nominatim place search, client-side photo EXIF date/GPS extraction, and date/location-specific historical or forecast weather from Open-Meteo.
  • Mobile rear-camera capture, browser microphone voice-note recording, stored entry reminder times, and PWA/browser reminder notifications.
  • Installable Daymark PWA with an offline application shell, locally persistent drafts, an auto-retrying offline entry outbox, app shortcuts, and operating-system text/link sharing into the composer.
  • Optional browser-side AES-256-GCM entry encryption using a 310,000-round PBKDF2 passphrase key, opaque server storage, locked entry placeholders, and explicit unlock controls.
  • Complete account JSON/ZIP exports spanning profile, journals, entries, revisions, collaboration, activity, security metadata, and original media, plus verified permanent account deletion.
  • WebP image thumbnails with original-file links, attachment captions and removal, live upload progress, and an enforced 5 GB per-user storage quota.
  • Multiple journals per account with automatic migration, entry assignment, colors, descriptions, defaults, visibility, sorting, filtering, and management.
  • Expiring journal invitation links, email targeting, member management, and server-enforced owner, editor, contributor, and viewer roles.
  • Entry comments and replies, emoji reactions, member mentions with an inbox, and per-journal activity history.
  • Revocable public entry links with expiration, optional password protection, isolated media access grants, and view counts.
  • Structured entry links and backlinks, reusable people, journal collections, and an interactive relationship graph.
  • Email verification and expiring password-reset links delivered through an included persistent Mailpit SMTP inbox.
  • Encrypted TOTP two-factor authentication with QR setup, login challenges, and single-use recovery codes.
  • WebAuthn passkey registration, device management, and phishing-resistant passwordless login.
  • Active-device management with individual/global session revocation, last-seen metadata, and successful/failed login history.
  • Double-submit CSRF protection for authenticated mutations and layered rate limits for authentication, recovery, public access, uploads, and API writes.
  • Administrator dashboard with site totals, open/invitation/closed registration modes, expiring multi-use codes, admin promotion, and account disabling.
  • Markdown authoring and safe rendering with a formatting toolbar, checklists, and live preview.
  • Locally autosaved and recovered entry drafts, word and character counts, full-screen writing, and keyboard shortcuts.
  • Reusable reflection, gratitude, travel, and project templates with rotating writing prompts.
  • Calendar, compact timeline, mixed-media gallery, and interactive global OpenStreetMap discovery views.
  • Indexed PostgreSQL full-text search with date, mood, visibility, media, location, ownership, and tag filters.
  • Tag-ranked related entries, random archive discovery, and date-matched “On this day” memories.
  • Writing statistics with word, entry, attachment, and topic totals, monthly activity, and current/longest streaks.
  • MinIO object storage for new media attachments, with authenticated media delivery and 50 MB per-file uploads.
  • Recoverable entry deletion with an owner-only trash, restore, and permanent-delete workflow.
  • Automatic revision snapshots before entry edits.
  • Owner-only revision history browser with one-click restoration and preservation of the replaced version.
  • Included daily PostgreSQL and MinIO media backups with 14-day retention and persistent backup storage.
  • Whole-journal JSON, printable PDF, and Markdown/media ZIP exports plus validated JSON import.
  • Initial multi-user chronological diary application.
  • PostgreSQL persistence with automatic migrations.
  • Secure cookie sessions and password hashing.
  • Private and shared entries.
  • Mixed-media attachments, maps, moods, tags, pinning, search, and archives.
  • Owner-only entry editing.

Fixed

  • Prevented shared-network database DNS collisions.
  • Normalized PostgreSQL dates to ISO format.
  • Replaced placeholder archive navigation with working year and month navigation.