{"id":5140,"date":"2026-01-12T19:42:13","date_gmt":"2026-01-12T10:42:13","guid":{"rendered":"https:\/\/matoken.org\/blog\/?p=5140"},"modified":"2026-01-12T19:43:05","modified_gmt":"2026-01-12T10:43:05","slug":"snac-2-86-2-87","status":"publish","type":"post","link":"https:\/\/matoken.org\/blog\/2026\/01\/12\/snac-2-86-2-87\/","title":{"rendered":"\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u6a5f\u80fd\u306a\u3069\u304c\u8ffd\u52a0\u3055\u308c\u305fsnac 2.86, 2.87"},"content":{"rendered":"<div id=\"preamble\">\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAAQAAAACCEkxzAAAAUUlEQVQoz43R0QkAMQwCUDdw\/y3dwEvsvzlL4X1IoQkAisKmwfAFT3RgJHbQezpSRoXEqeqCL9BJBf7h3QbOCCxV5EVWMEMwG7K1\/WODtlvxAYTtEsDU9F34AAAAAElFTkSuQmCC\" alt=\"snac susie\" width=\"48\"><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>\u30df\u30cb\u30de\u30e0\u3067\u8efd\u91cf\u306aActivityPub Server \u306esnac 2.86, 2.87 \u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\uff0e<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"https:\/\/comam.es\/snac\/grunfink\/p\/1767602109.548711\">The Real Grunfink (@grunfink\\@comam.es)<\/a> 2.86<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/comam.es\/snac\/grunfink\/p\/1767708690.528626\">The Real Grunfink (@grunfink\\@comam.es)<\/a> 2.87<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/codeberg.org\/grunfink\/snac2\/src\/branch\/master\/RELEASE_NOTES.md#2-87\">snac2\/RELEASE_NOTES.md at master &#8211; grunfink\/snac2 &#8211; Codeberg.org<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<p><!--more-->\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_release_notes\">RELEASE NOTES<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>RELEASE_NOTES.md \u3092\u898b\u308b\u3068\u4e3b\u306a\u5909\u66f4\u70b9\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\uff0e<\/p>\n<\/div>\n<div class=\"quoteblock\">\n<blockquote>\n<div class=\"paragraph\">\n<p>2.87<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Hide EmojiReacts from muted actors and blocked instances.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>2.86<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Truncate RSS titles at UTF-8 character boundaries (contributed by lxo).<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Link contacts to single-user people pages. Also, user&#8217;s posts are shown (contributed by lxo).<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Added emoji reactions (contributed by violette).<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Mastodon API: Fix for some client notifications (contributed by violette), fix for a status visibility error (contributed by fruye).<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>If the query variable terse of a public post page is set to anything, no header is shown.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Fixed search failures when the query string has any leading blank.<\/p>\n<\/div>\n<\/blockquote>\n<div class=\"attribution\">\n&#8212; <a href=\"https:\/\/codeberg.org\/grunfink\/snac2\/src\/branch\/master\/RELEASE_NOTES.md#2-87\">snac2\/RELEASE_NOTES.md at master &#8211; grunfink\/snac2 &#8211; Codeberg.org<\/a>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\">\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>\u8208\u5473\u6df1\u3044\u65b0\u6a5f\u80fd\u3068\u3057\u3066\u306f\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u5bfe\u5fdc\u304c\u3042\u308a\u307e\u3059\uff0e\u3053\u308c\u306b\u3088\u308aMastodon \u3084Misskey \u306a\u3069\u306e\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u306b\u5bfe\u5fdc\u3057\u305f\u30b5\u30fc\u30d3\u30b9\u3068\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u3084\u308a\u53d6\u308a\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>\u4ee5\u4e0b\u306fsnac \u3068Misskey \u3067\u305d\u308c\u305e\u308c\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u884c\u3063\u305f\u3068\u304d\u306e\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u3067\u3059\uff0esnac \u304b\u3089\u306e\u9001\u4fe1\u6642\u306f\u7d75\u6587\u5b57\u306e\u6587\u5b57\u5217\u3092\u8a18\u8ff0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff0e<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/matoken.org\/blog\/wp-content\/uploads\/2026\/01\/snac-emoji_react-send1.webp\" alt=\"snac\u304b\u3089\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u9001\u4fe1\"><\/span><br \/>\n<span class=\"image\"><img decoding=\"async\" src=\"https:\/\/matoken.org\/blog\/wp-content\/uploads\/2026\/01\/snac-emoji_react-send2.webp\" alt=\"Misskey\u3078\u306e\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u9001\u4fe1\"><\/span><br \/>\n<span class=\"image\"><img decoding=\"async\" src=\"https:\/\/matoken.org\/blog\/wp-content\/uploads\/2026\/01\/snac-emoji_react-recive.webp\" alt=\"\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u53d7\u4fe1\"><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>\u4ee5\u4e0b\u306f\u5b9f\u969b\u306e\u6295\u7a3f\uff0e<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"https:\/\/snac.matoken.org\/matoken\/p\/1767646622.266044\">matoken (@matoken\\@snac.matoken.org)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/misskey.io\/notes\/ah59dkmghxwc03hp\">\u30ce\u30fc\u30c8 | Misskey.io<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<div class=\"paragraph\">\n<p>\u3069\u3046\u3082\u3053\u306e<a href=\"https:\/\/comam.es\/snac\/grunfink\/p\/1767708690.528626\">\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u4f7f\u3063\u305f\u5acc\u304c\u3089\u305b\u304c\u767a\u751f\u3057\u305f\u3088\u3046<\/a>\u3067\u305d\u308c\u306e\u5bfe\u7b56\u3068\u3057\u3066\u30df\u30e5\u30fc\u30c8\u3057\u305f\u30a2\u30af\u30bf\u30fc\u3068\u30d6\u30ed\u30c3\u30af\u3057\u305f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304b\u3089\u306e\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u975e\u8868\u793a\u306b\u3059\u308b\u6a5f\u80fd\u304c 2.87 \u3068\u3057\u3066\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\uff0e<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>\u3082\u3057\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u6a5f\u80fd\u3092\u4f7f\u3044\u305f\u304f\u306a\u3044\u5834\u5408\u306f 2.86, 2.87 \u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3066<a href=\"https:\/\/codeberg.org\/grunfink\/snac2\/issues\/516\">\u7d75\u6587\u5b57\u30ea\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3067\u7121\u52b9\u306b\u3067\u304d\u308b\u5909\u66f4<\/a>\u3092\u542b\u3093\u3060\u30ea\u30ea\u30fc\u30b9\u3092\u5f85\u3064\u306e\u304c\u826f\u3055\u305d\u3046\u3067\u3059\uff0e<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"https:\/\/codeberg.org\/grunfink\/snac2\/issues\/516\">#516 &#8211; FR: add a toggle to users&#8217; settings to hide emoji reactions (and the ability to emoji react)? &#8211; grunfink\/snac2 &#8211; Codeberg.org<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<div class=\"paragraph\">\n<p>\u30ab\u30b9\u30bf\u30e0\u7d75\u6587\u5b57\u306e\u767b\u9332\u306b\u3064\u3044\u3066\u306f\u4ee5\u4e0b\u306e\u8a18\u4e8b\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\uff0e<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"https:\/\/matoken.org\/blog\/2025\/12\/10\/snac-emoji\/\">snac \u3067\u30ab\u30b9\u30bf\u30e0\u7d75\u6587\u5b57\u3092\u5229\u7528 \u2013 matoken&#8217;s blog<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_rrs_\u30bf\u30a4\u30c8\u30eb\u3092utf_8_\u306e\u5883\u754c\u3067\u5207\u308a\u6368\u3066\u308b\">RRS \u30bf\u30a4\u30c8\u30eb\u3092UTF-8 \u306e\u5883\u754c\u3067\u5207\u308a\u6368\u3066\u308b<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>RSS \u306etitle \u3092UTF-8 \u5883\u754c\u3067\u5207\u308a\u6368\u3066\u308b\u306e\u306f\u65e5\u672c\u8a9e\u3067\u6587\u5b57\u5316\u3051\u3059\u308b\u3053\u3068\u304c\u7121\u304f\u306a\u308a\u305d\u3046\u3067\u3059\uff0e\u4ee5\u4e0b\u3088\u3046\u306b\u3057\u3066\u78ba\u8a8d\u3067\u304d\u305d\u3046\u3067\u3059\u304c\u4fee\u6b63\u524d\u306e2.85 \u3067\u78ba\u8a8d\u3057\u305f\u3068\u3053\u308d\u4e01\u5ea6\u554f\u984c\u306e\u306a\u3044\u30bf\u30a4\u30df\u30f3\u30b0\u3060\u3063\u305f\u3088\u3046\u3067\u3053\u306e\u3068\u304d\u306f\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u3067\u3057\u305f\uff0e<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre>$ curl -s https:\/\/snac.kagolug.org\/matoken.rss | nkf | xmllint --format - | grep title | head<\/pre>\n<\/div>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"https:\/\/codeberg.org\/grunfink\/snac2\/issues\/514\">#514 &#8211; rss.c (rss_from_timeliine) cuts multi-byte characters from item titles &#8211; grunfink\/snac2 &#8211; Codeberg.org<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_snac_\u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\">snac \u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>\u7279\u306b\u554f\u984c\u306a\u304f\u3044\u3064\u3082\u306e\u624b\u9806\u3067\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3067\u304d\u307e\u3057\u305f\uff0e<\/p>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_snac_\u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u4f8bsource\">snac \u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u4f8b(source)<\/h3>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre>$ cd $SNAC-SRC\n$ git pull\n$ git checkout 2.87\nPrevious HEAD position was b84b92d Version 2.86 RELEASED.\nHEAD is now at c2b050c Version 2.87 RELEASED.\n$ make\n$ .\/snac | head -2\nsnac 2.87 - A simple, minimalistic ActivityPub instance\nCopyright (c) 2022 - 2026 grunfink et al. \/ MIT license\n$ sudo service snac2 stop\n$ sudo -u snac tar cvf snac2-`date +%F_%T-$$`.tar ~snac\/snac-data\n$ sudo -u snac \/home\/snac\/snac2\/snac upgrade ~snac\/snac-data\n05:52:38 OK\n$ sudo service snac2 start<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_snac_\u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u4f8bdebian_package\">snac \u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u4f8b(Debian package)<\/h3>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre>$ snac | head -2\nsnac 2.85 - A simple, minimalistic ActivityPub instance\nCopyright (c) 2022 - 2025 grunfink et al. \/ MIT license\n$ sudo apt update\n$ sudo apt upgrade\n$ snac | head -2\nsnac 2.87 - A simple, minimalistic ActivityPub instance\nCopyright (c) 2022 - 2026 grunfink et al. \/ MIT license\n$ sudo service snac2 stop\n$ sudo -u debian-snac tar cvf snac2-`date +%F_%T-$$`.tar \/var\/lib\/snac2\n$ sudo -u debian-snac snac upgrade \/var\/lib\/snac2\n18:56:22 Linux sandbox not compiled in\n18:56:22 OK\n$ sudo service snac2 start<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u30df\u30cb\u30de\u30e0\u3067\u8efd\u91cf\u306aActivityPub Server \u306esnac 2.86, 2.87 \u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\uff0e The Real Grunfink (@grunfink\\@comam.es) 2.86 The Real  [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"webmentions_disabled_pings":false,"webmentions_disabled":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":""},"categories":[739,7,6],"tags":[493,1243],"class_list":["post-5140","post","type-post","status-publish","format-standard","hentry","category-bookworm","category-debian-linux","category-linux","tag-activitypub","tag-snac"],"_links":{"self":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts\/5140","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/comments?post=5140"}],"version-history":[{"count":1,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts\/5140\/revisions"}],"predecessor-version":[{"id":5141,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts\/5140\/revisions\/5141"}],"wp:attachment":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/media?parent=5140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/categories?post=5140"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/tags?post=5140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}