source: Klonkt/CHANGELOG.md@ 0403187

main
Last change on this file since 0403187 was 0403187, checked in by roboburr <roboburr@…>, 2 months ago

feat(fediverse): host your own polls (federate as AS2 Question)

A post can carry a poll that federates as an AS2 Question so remote (Mastodon)
followers vote from their own app; votes are tallied server-side and the fresh
counts are pushed back as Update(Question). Voting is fediverse-only; the site
shows live, read-only results. Complements the existing inbound poll support.

  • src/config/database.js — posts.poll_json (our poll definition) + poll_votes table (post_id, actor_uri, choice; UNIQUE) backing the tally + per-actor dedupe.
  • src/services/ActivityPubService.js — parseOwnPoll/pollTally/ownPollView helpers; buildNote emits a Question (oneOf/anyOf + replies.totalItems + endTime/closed + votersCount) for a poll post; handleInbox records a ballot (Note with name + inReplyTo our poll) before the reply path, deduped per actor; a debounced Update(Question) pushes fresh counts to followers; votersCount added to AP_CONTEXT.
  • src/services/Scheduler.js — closeExpiredPolls() marks a poll closed once its endTime passes and pushes the final tally; runs on the existing 60s tick.
  • src/routes/posts.js — parsePollForm() turns the editor fields into poll_json on create/save (a poll with votes is frozen), passes poll_json to the federation hooks, and hands the post page a render-ready ownPollView.
  • src/views/pages/post-edit.ejs — poll section (options, multiple-choice, duration); disabled once the poll has votes.
  • src/views/pages/post.ejs — display-only poll with result bars + voter/close meta.
  • src/services/i18n.js — poll.* + pedit.poll_* strings (nl/en/de).
  • test/polls.test.js — Question shape, tally, percentages, closed state, AS2 term.
  • CHANGELOG(.nl/.de).md — "Create your own polls" under Unreleased.

Co-Authored-By: Claude <noreply@…>

  • Property mode set to 100644
File size: 10.0 KB
Line 
1# Changelog — Klonkt
2
3All notable changes to Klonkt. Newest at the top.
4Versions follow [SemVer](https://semver.org/).
5
6## [Unreleased]
7
8### Added
9- **Short videos in the feed autoplay and loop.** An animated cover or a short (≤30s) clip in the
10 News feed now plays automatically and loops muted, like a GIF; longer videos keep their controls.
11- **Vote on fediverse polls.** A poll from an account you follow now shows in the News feed with its
12 options and current results, and you can cast your vote — it federates back like any Mastodon vote.
13- **Create your own polls.** A post can now carry a poll (single or multiple choice, with a set
14 duration). It federates as a real fediverse poll, so your Mastodon followers can vote from their own
15 app; the live results show on the post and the poll closes itself when the time is up.
16
17## [1.2.0] — 2026-07-01
18
19### Added
20- **PeerTube videos in the feed.** A PeerTube link in a post now shows an inline player in the News
21 feed, like YouTube, Spotify and SoundCloud already did.
22- **Light share images.** Sites whose default theme is Light now get a matching light Open Graph card
23 when a page is shared, instead of always a dark one.
24- **Leave your own visits out of the stats.** As the admin you can now exclude your own IP address
25 from your site statistics, for a truer picture of real visitors.
26- **Right-click "Save" is turned off on covers, images and videos** — a light bit of friction so the
27 artwork isn't one click from being saved (it's friction, not protection).
28
29### Fixed
30- **Animated video covers now render correctly everywhere.** In the Circle and the grid they could
31 show up as a broken image or a blank tile; they now display as a proper looping video that fills the
32 square, centred. Right-clicking a cover gives the normal link menu instead of the browser's video controls.
33- **Following someone no longer gets stuck.** A follow whose first delivery fails (the other server
34 briefly unreachable) is now retried automatically with backoff, instead of staying on "pending" forever.
35- **Boosted posts show their real text** in the Circle, instead of a "RE: <link>" prefix.
36- **Hardened fediverse handling** — stricter signature checks on incoming activity, blocks now also
37 cover a boost of a blocked author, and pinned-post syncing no longer races when you save several times quickly.
38
39## [1.1.0] — 2026-06-30
40
41### Added
42- **Animated covers play smoothly everywhere.** Upload an animated WebP as a cover and Klonkt also
43 makes a muted, looping video of it. iOS Safari — where animated WebP is janky — gets the smooth
44 video, every other browser keeps the crisp WebP, and on the fediverse the cover federates as a
45 video that plays in Mastodon and its apps. Shown on the post, the grid, the feed and related posts.
46- **Media library (Admin → Media).** See every uploaded image, where each one is used, copy its URL,
47 and clean up unused files in one click — including the leftover video/poster of an animated cover.
48 Images, Audio and Playlists now share one tab bar.
49- **Share button** at the bottom of every post (native share sheet, or copy link).
50- **Replace a track's audio file** without re-creating the track.
51- **Music on the fediverse (first step).** Audio posts now carry schema.org *MusicRecording* /
52 *MusicAlbum* data, and a per-post toggle can share a hosted track as a real fediverse audio
53 attachment that plays in followers' feeds.
54
55### Changed
56- **Cleaner embeds on Mastodon.** A post with a YouTube/Spotify/SoundCloud link now lets Mastodon
57 show its player card; link-only tracks share their streaming links. The cover still shows in other
58 Klonkt feeds. (On your own site nothing changes — the player and cover render as before.)
59- **Circles stay in sync the fediverse way** — edits and missed posts catch up automatically via
60 standard ActivityPub, so a Circle no longer drifts out of date.
61- **Everything Klonkt federates is now valid AS2 / JSON-LD**, guarded by a test, so stricter servers
62 accept it.
63- The track list is sorted **newest-first**.
64
65### Fixed
66- **Animated WebP covers are no longer frozen to a single frame** (the crop editor and the thumbnailer
67 left them static).
68- **Link-only tracks** (Spotify/YouTube, no uploaded file) can be inserted into a post again.
69- **Link previews** (og:image / Twitter card) now use absolute image URLs, so they show on Signal,
70 WhatsApp and other scrapers.
71- Several **fediverse delivery fixes**: covers/links no longer turn into a black tile on Mastodon,
72 raw audio files don't clutter a post that already has a player, and dead links from a renamed
73 remote post heal themselves.
74- The **mobile feed** loads full-resolution covers; long titles wrap instead of overflowing.
75- **Self-hosting updates** are more reliable: re-running the installer keeps your channel, and the
76 updater no longer restarts or claims an update when you're already up to date.
77
78## [1.0.0] — 2026-06-30
79
80### Added
81- **Klonkt is now on the fediverse (ActivityPub).** Your site is a real fediverse
82 account: people on Mastodon — or another Klonkt — can follow you, and your posts
83 reach their feeds. You can follow accounts and read their posts in a **News** feed,
84 get **notifications**, and **like, boost and reply** to posts. Incoming activity is
85 verified, so fake replies, likes and followers are rejected.
86- **Anyone can reply, like or boost your posts from the fediverse** — visitors interact
87 from their own account (they just enter their server); no account on your site needed.
88- **Circles**: follow other Klonkt sites and show each other's public posts in your
89 Circle — decentralised, with no central platform.
90- **Sensitive (NSFW) posts** with your own content-warning text: blurred with
91 click-to-reveal across the site, and shown as a content warning on the fediverse.
92- **Block** an account or an entire domain you'd rather not hear from.
93- Search now also finds **tracks** (by title, artist and album), playable straight from
94 the results with a link to the post they appear in — and post search matches as you type.
95- **Live theme preview** in Admin → site settings: accent, theme and palette update
96 instantly, before you save.
97- Uploaded images are automatically optimised to **WebP** for faster pages.
98- A roomier **mobile writing experience**: tap to open a distraction-free fullscreen
99 editor, with the formatting toolbar staying in view above the keyboard.
100- **Long posts collapse in the News feed** with a *read more* toggle, so a long post no
101 longer fills the whole screen — tap to expand or collapse it.
102- **See everyone in a Circle**: when a Circle has more than five sites, the member count
103 opens a popup that lists them all, so a big Circle no longer hides its members.
104
105### Changed
106- **Palettes revised to 8**: the neutral **Klonkt** (gold accent) is the new default,
107 plus seven full-colour themes — Forest, Ocean, Teal, Lilac, Sunset, Candy and Amber.
108- **Your profile federates more completely**: the links on your profile, the date you
109 joined and the accounts you follow now travel along to other servers, so your profile
110 looks complete when someone views it from Mastodon or elsewhere.
111- **Cover images and avatars are sharper** — resized on the server instead of being
112 squeezed by the browser.
113
114### Removed
115- **Hub mode** — Klonkt is now **solo or Circles**; you build a collective or label
116 through **Circles** (federated, standalone sites).
117- **Native comments and Google login** — replies, likes and boosts now run entirely
118 through the fediverse.
119- **Local favourites (♥)** — replaced by the ⭐ fediverse like.
120
121### Fixed
122- **Hashtags and mentions now work in every language and script** (e.g. Japanese, Cyrillic,
123 Arabic), both on your site and when federating — not just the Latin alphabet.
124- **Switching a site to solo (federation off) works again.** Turning the fediverse off could
125 make the whole site return “page not found” instead of just disabling federation; it now
126 cleanly switches federation off while the rest of the site keeps working. (Self-hosters:
127 update to pick up the fix.)
128- The Fediverse and Notifications items now disappear from the menu when federation is off,
129 instead of lingering.
130- The mini-player jumps and scrolls to the track that's playing — also from an album or
131 playlist — and keeps it highlighted.
132- Empty album/playlist covers now fall back to the first track's cover.
133- A profile photo that broke in the header after the WebP switch now repairs itself.
134- Many **mobile post-editor** fixes: reliable scrolling, a formatting toolbar that stays
135 put, no page jumps when you tap a button, and a Save bar that sits just above the keyboard.
136- **Boosts now reach the original poster** — their server registers the boost and notifies
137 them, just like a boost from Mastodon — and a boost is retried if a server is briefly
138 unreachable instead of being sent once and forgotten.
139- **Unfollowing an account now takes effect on the other server** (it could previously fail
140 to register, leaving you still following on their side).
141
142## [1.0.0-beta.2] — 2026-06-19
143
144First release where we actively track the version (shown in the footer — click it for
145this page).
146
147### Added
148- Release tracking: the version number in the footer links to this changelog page.
149- Eight premium features (Patreon-gated): newsletter/mailing list, download-for-email,
150 release scheduling + fan-only previews, EPK/press kit, pro statistics, link-in-bio +
151 click stats, embeddable player, and show agenda + notify-me.
152- Newsletter signup field in the footer (on/off in Admin → Settings).
153- SMTP settings configurable in Admin → Settings (no more config-file edit needed), with
154 a test-mail button.
155
156### Changed
157- Tidier settings forms (stacked labels, full-width inputs).
158- EPK/press kit shows the top 10 most-listened tracks.
159- Nicer 404 page (mobile-friendly) and clearer login error messages.
160
161### Fixed
162- The site-wide audio player wasn't loading any tracks.
163- Button text became unreadable on hover.
164- Date pickers now follow the theme.
165- Back/forward navigation no longer shows a doubled header.
Note: See TracBrowser for help on using the repository browser.