Reactions: fast replies grouped as emoji chips #129

Merged
littlefox merged 3 commits from issue-101-reactions into main 2026-10-18 21:08:45 +00:00
Owner

Closes #101

  • kom_client::reactions: six reactions (👍 ❤️ 😄 😮 😢 🎉) stored as classic Latin-1 emoticons (+1, <3, :-D, :-O, :'(, \o/). The Emacs client decodes aux data as Latin-1 (lyskom-aux-item-decode-data), so UTF-8 emoji would be mojibake there; emoticons read fine in every client. Fast replies holding the emoji itself count as the same reaction.
  • Chips under each post and on thread cards ("👍 3", yours highlighted): tap adds yours or takes it back (Kom::remove_fast_reply); who reacted on hover, after a tap and on long press. "Reaktion" opens the six emoji plus free text; text fast replies are listed as before.
  • Reacting sets no status line; on a card it reloads that card instead of moving the reader there.
  • Seed: other people's reactions on 256 and the fan root (aux items only; no numbers move).

Verified: unit test for the mapping (all codes Latin-1); new reactions.spec.ts on desktop/Android/iPhone (grouping of +1 and UTF-8 👍, text fast reply kept as text, add/remove yours, picker, stored data +1 and \o/ in the aux table, persists over a new login, reacting on a card keeps your place); full e2e 199/199; clippy native/wasm/desktop clean.

🤖 Generated with Claude Code

https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8

Closes #101 - `kom_client::reactions`: six reactions (👍 ❤️ 😄 😮 😢 🎉) stored as classic Latin-1 emoticons (`+1`, `<3`, `:-D`, `:-O`, `:'(`, `\o/`). The Emacs client decodes aux data as Latin-1 (`lyskom-aux-item-decode-data`), so UTF-8 emoji would be mojibake there; emoticons read fine in every client. Fast replies holding the emoji itself count as the same reaction. - Chips under each post and on thread cards ("👍 3", yours highlighted): tap adds yours or takes it back (`Kom::remove_fast_reply`); who reacted on hover, after a tap and on long press. "Reaktion" opens the six emoji plus free text; text fast replies are listed as before. - Reacting sets no status line; on a card it reloads that card instead of moving the reader there. - Seed: other people's reactions on 256 and the fan root (aux items only; no numbers move). Verified: unit test for the mapping (all codes Latin-1); new `reactions.spec.ts` on desktop/Android/iPhone (grouping of `+1` and UTF-8 👍, text fast reply kept as text, add/remove yours, picker, stored data `+1` and `\o/` in the aux table, persists over a new login, reacting on a card keeps your place); full e2e 199/199; clippy native/wasm/desktop clean. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
Fast replies were a list of lines. Now the ones that are reactions show
as chips under the post ("👍 3", yours highlighted), in thread cards too;
tapping adds yours or takes it back, and who reacted shows on hover, a
tap or a long press. 'Reaktion' opens six emoji plus the free text.

Stored as classic emoticons in Latin-1 (+1, <3, :-D, ...): the Emacs
client decodes aux data as Latin-1, so UTF-8 emoji would be mojibake
there. Emoji from other clients count as the same reaction.

Refs #101

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
Merge remote-tracking branch 'origin/main' into issue-101-reactions
Some checks failed
ci / check (push) Failing after 6m43s
ci / desktop (push) Successful in 11m4s
ci / e2e (push) Successful in 21m17s
be0c1edd22
# Conflicts:
#	app/assets/main.css
#	app/src/i18n.rs
Re-run CI: cargo deny couldn't fetch the advisory database
All checks were successful
ci / check (push) Successful in 7m0s
ci / desktop (push) Successful in 11m47s
ci / e2e (push) Successful in 19m31s
82c1fa1634
Run #215's check job failed cloning RustSec/advisory-db from GitHub (a
network failure on the runner); e2e and desktop passed. Forgejo has no
API to re-run a run, so this empty commit starts a new one.

Refs #101

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
littlefox referenced this pull request from a commit 2026-10-19 05:23:04 +00:00
Sign in to join this conversation.
No description provided.