Skip to content

Commit ebff048

Browse files
committed
docs: add v3.2.0 changelog
Semantic HTML, SEO, admin redesign, public compose, CSRF hardening.
1 parent d8d6942 commit ebff048

1 file changed

Lines changed: 49 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,55 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
---
1111

12+
## [3.2.0] - 2026-02-13
13+
14+
Semantic HTML, SEO, admin redesign, and security hardening. Web standards compliance across the board.
15+
16+
### Added
17+
18+
**SEO & Structured Data**
19+
- Canonical URLs on all public pages with conditional rendering (empty on 404/admin/compose)
20+
- Visible breadcrumb navigation with JSON-LD BreadcrumbList schema
21+
- JSON-LD structured data: BlogPosting (articles), CollectionPage (listings), WebSite (home)
22+
- Open Graph and meta description on all page types
23+
24+
**Admin Dashboard**
25+
- Redesigned admin dashboard consistent with blog UX (card-based layout)
26+
- Admin popover in header with Dashboard, Drafts, Sign out
27+
- Auth-aware UI across all pages (login/admin popover based on session state)
28+
- Sample articles section with one-click creation
29+
30+
**Public Compose**
31+
- Compose page accessible without authentication (login deferred to publish)
32+
- Compose link in header nav when admin is configured
33+
- FAB (floating action button) visible for all users when admin configured
34+
- Dynamic CTA: "Publish" / "Save Draft" / "Update" based on draft checkbox and edit state
35+
- Fetch-based form submit with 401/403 handling (toast + login popover trigger)
36+
37+
**PWA**
38+
- Share target in web manifest for receiving shared content
39+
40+
### Changed
41+
42+
- Semantic HTML: single `<h1>` per page, proper heading hierarchy, `<section>`/`<article>` elements
43+
- 404/offline page CSS class renamed from `error-page` to `error-content` (fixes layout collision with body class)
44+
- SessionAware middleware generates CSRF tokens for unauthenticated visitors (enables login popover on all pages)
45+
- SPA router syncs CSRF meta tag and hidden inputs after content swap (prevents SPA desync)
46+
- Compose error responses shown via toast instead of DOM swap (preserves event listeners)
47+
48+
### Security
49+
50+
- CSRF cookie reuse validates token format (64-char hex) before accepting
51+
- CSRF cookie max-age refreshed on reuse to prevent silent expiry
52+
- `isValidCSRFToken()` rejects corrupted, truncated, or injected cookie values
53+
54+
### Removed
55+
56+
- Editorial and bold theme stubs (unused CSS)
57+
- Stale CDN references in design docs
58+
59+
---
60+
1261
## [3.1.0] - 2026-02-12
1362

1463
MarkGo reimagined as a blogging companion app. SPA navigation, installable PWA, mobile-native UX, quick capture, offline compose. Single binary with embedded web assets — no filesystem setup required.

0 commit comments

Comments
 (0)