[V3][Blog][Milestone][Collections] Mention circle component

This commit is contained in:
Diogo Peralta Cordeiro 2022-01-18 14:15:23 +00:00
parent b7199fbe35
commit 3b466fd58d
Signed by: diogo
GPG Key ID: 18D2D35001FBFAB0
25 changed files with 236 additions and 381 deletions

View File

@ -2,8 +2,8 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel><title>GNU social V3</title><link>https://gnusocial.rocks/v3/index.html</link>
<description>Development blog where we announce our progress.</description><language>en</language>
<lastBuildDate>Tue, 18 Jan 2022 13:56:41 +0000</lastBuildDate>
<pubDate>Tue, 18 Jan 2022 13:56:41 +0000</pubDate>
<lastBuildDate>Tue, 18 Jan 2022 14:15:03 +0000</lastBuildDate>
<pubDate>Tue, 18 Jan 2022 14:15:03 +0000</pubDate>
<atom:link href="https://gnusocial.rocks/v3/feed.rss" rel="self" type="application/rss+xml" />
<item><title>
Milestone: Automatic Accesibility (A11Y) testing
@ -38,141 +38,212 @@ ImageMagik's <code>compare</code>, to generate a report on visual changes.</p>
clear from the really low number of violations found, but there's
always room for improvement :)</p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-automatic-accesibility-a11y-testing.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-automatic-accesibility-a11y-testing.html</guid>
<dc:creator>GNU social development team</dc:creator>
<pubDate>Tue, 18 Jan 2022 13:56:33 +0000</pubDate></item>
<item><title>
Milestone: ActivityStreams 2.0 and WebFinger
Milestone: Collections
</title><description><![CDATA[
<p>The primary use of GNU social is to access the <a href="https://blog.diogo.site/what-is-the-fediverse">free network</a>, be it ActivityWeb (ActivityPub) or Fediverse (OStatus).</p>
<p>Contrary to the original plan, we have merged <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/nightly/modules/TheFreeNetwork">The Free Network Module</a>, <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/nightly/plugins/WebFinger">WebFinger</a> and <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/nightly/plugins/LRDD">LRDD</a> into a single component named <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/components/FreeNetwork">FreeNetwork</a>. Likewise, ActivityPub and ActivityStreams 2.0 was kept the same plugin instead of separated.</p>
<h2>Understanding the organisation chosen</h2>
<p>The FreeNetwork component adds WebFinger (RFC7033) lookup and implements Link-based Resource Descriptor Discovery (LRDD) based on RFC6415, Web Host Metadata. It takes and produces both Extensible Resource Descriptor (XRD) and JSON (JavaSript Object Notation). Furthermore, and different from v2, every federation protocol will use the same distribution queue maintained by this component instead of holding its own.</p>
<p>We originally intended to have data modelling plugins that would extend the GS's "language". We then understood that it added more complexity than we wanted without any considerable advantage because we cannot dissociate data reception handling of the protocol itself.</p>
<h2>Situation Report</h2>
<p><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/ActivityPub">ActivityPub</a> already translates between activity and entity and allows plugins to extend it (thus serving a similar purpose to data modelling and representation plugins).</p>
<p>GNU social v3 now supports <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/src/Util/Formatting.php#L292">mentions</a>, which is a process that starts in the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/components/Posting/Posting.php#L197">Posting component</a>. The processing of local mentions naturally finds its entire handling here.</p>
<p>For remote ActivityPub mentions, <a href="(https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/ActivityPub/Entity/ActivitypubActor.php#L179">ActivityPub handles it aided by the FreeNetwork component</a>).</p>
<h2>Next steps</h2>
<p>We still have to port OStatus (and ActivityStreams 1.0) and implement the distribution by FreeNetwork, although the base work is done. Regarding ActivityPub, although some of it already works, expanding the existing plugins to supplement ActivityPub, and full validation isn't ready yet. We will most likely finish the implementation of the whole federation stack in the next week.</p>
<p>We have generalized collections around our search engine. For that introducing
the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/components/Collection">Collection component</a>.</p>
<p>This structure has the following implication:</p>
<pre><code>Collection -&gt; OrderedCollection
|-&gt; Notes (known as Feed)
|-&gt; Actors (known as Circle)
|-&gt; Other Object (known as Collection of ...)
|-&gt; Attachments: AttachmentCollection
|-&gt; Tags: TagCollection
</code></pre>
<p>And it allow us to centralise the scope system in the core, ensuring that no
actor will have access to notes or other objects that shouldn't be able to see.</p>
<p>Finally, with this, a plugin such as <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/NoteTypeFeedFilter">Note Type Feed Filter</a> can be useful in
every note collection (feed).</p>
<p>It also allows plugins such as ActivityPub to <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/ActivityPub/Util/OrderedCollectionController.php">translate every collection
automatically</a>.</p>
<p>We also introduced the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/components/Circle">Circle component</a>, which has a UI similar to the
<a href="https://www.gnusocial.rocks/v3/milestone-albums.html">Attachments Collections</a>,
and enables circle mentions with <code>@#circle_name</code>.</p>
<h2>Notes Filter and Sorting Options</h2>
<p><img src="assets/filters/feed.png" alt="" title="" /></p>
<h2>Actors Filter and Sorting Options</h2>
<p><img src="assets/filters/circle.png" alt="" title="" /></p>
<h2>The Search Component</h2>
<h3>Results</h3>
<p><img src="assets/search/results.png" alt="" title="" /></p>
<h3>Note Options</h3>
<p><img src="assets/search/note_options.png" alt="" title="" /></p>
<h3>Actor Options</h3>
<p><img src="assets/search/actor_options.png" alt="" title="" /></p>
<h2>ActivityPub Examples</h2>
<p><img src="assets/activitypub/collection/circle.jpg" alt="" title="" />
<img src="assets/activitypub/collection/favourites.jpg" alt="" title="" />
<img src="assets/activitypub/collection/outbox.jpg" alt="" title="" /></p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-activitystreams-20-and-webfinger.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-activitystreams-20-and-webfinger.html</guid>
]]></description><link>https://gnusocial.rocks/v3/milestone-collections.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-collections.html</guid>
<dc:creator>GNU social development team</dc:creator>
<pubDate>Tue, 18 Jan 2022 13:56:12 +0000</pubDate></item>
<item><title>
Milestone: Actor colour theme plugin
Updates: Local Groups
</title><description><![CDATA[
<p>Actors are now able to set their own colours, through a brand new plugin: "Oomox".
Those accustomed to customising their own desktop should know where the name comes from ;)</p>
<p><img src="assets/groups/profile.png" alt="" title="" /></p>
<h2>Here's how it works!</h2>
<p>We haven't implemented federation of Groups yet, but group tags and <a href="https://socialhub.activitypub.rocks/t/decentralised-group/2200/17?u=diogo">discussion
on how unbounded groups can be federated via ActivityPub</a> has already started.</p>
<p>The Oomox plugin main class catches the "PopulateProfileSettingsTabs" event upon visiting user panel.</p>
<p>Concerning federation of traditional groups, we will port our logic from v2 and
translate following the same rules as AndStatus <a href="https://github.com/andstatus/andstatus/issues/248#issuecomment-558703558">because they work</a>, as yvolk beautifully stated :)</p>
<pre><code>public function onPopulateProfileSettingsTabs(Request $request, array &amp;$tabs): bool
{
$tabs[] = [
'title' =&gt; 'Light theme colours',
'desc' =&gt; 'Change the theme colours.',
'controller' =&gt; C\Oomox::oomoxSettingsLight($request),
];
<p>Finally, also note that the group actors now have "self-tags", as the other actors, which was a milestone.</p>
$tabs[] = [
'title' =&gt; 'Dark theme colours',
'desc' =&gt; 'Change the theme colours.',
'controller' =&gt; C\Oomox::oomoxSettingsDark($request),
];
return Event::next;
}
</code></pre>
<p>As made evident by the code, two new tabs are added to profile settings, light and dark theme colours.
Since the page styling follows the system theme, actors may want to style each theme differently, therefore they are treated separately.</p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/updates-local-groups.html</link>
<guid>https://gnusocial.rocks/v3/./updates-local-groups.html</guid>
<dc:creator>GNU social development team</dc:creator>
<pubDate>Tue, 18 Jan 2022 13:13:38 +0000</pubDate></item>
<item><title>
Milestone: Pinned Notes
</title><description><![CDATA[
You can now pin notes in your profile! Given you have suficient permissions to do so (e.g. you created the note), an additional action is represented, allowing you to highlight your favourite notes.</p>
<p>The actor's defined colours are then saved in the respective entity and cached.
Finally, the colour preferences are used to render the corresponding CSS file which defines the various colour variables used:</p>
<p>With this feature, an actor has more ways to express itself to the community as a whole. This activity is federated using <a href="https://docs.joinmastodon.org/spec/activitypub/#featured">Mastodon's featured collection extension</a>.</p>
<pre><code>public function oomoxCSS(): Response
{
$user = Common::ensureLoggedIn();
$oomox_table = PluginOomox::getEntity($user);
if (is_null($oomox_table)) {
throw new ClientException(_m('No custom colours defined', 404));
}
$content = Formatting::twigRenderFile('/oomox/root_override.css.twig', ['oomox' =&gt; $oomox_table]);
return new Response($content, status: 200, headers: ['content-type' =&gt; 'text/css']);
}
</code></pre>
<p>Please note, upon rendering for the first time, page render may be blocked until the resulting file is served. Nonetheless, subsequent page renders
won't experience the issue again. That is, if the file is cached by the browser.</p>
<h2>How it looks</h2>
<p>Tabs added using the "PopulateProfileSettingsTabs" event:
<img src="assets/actor_colour_theme_plugin/settings_change_theme_colours.png" alt="User panel Oomox sections" title="" /></p>
<p>Changing the dark theme colours!
<img src="assets/actor_colour_theme_plugin/settings_change_theme_colours3.png" alt="Dark theme colours selection" title="" /></p>
<p>The result of given changes, please note it's no longer a 'dark' theme.
Given a valid colour, it's the actor's responsibility whether or not the colours make sense. So, go wild!
<img src="assets/actor_colour_theme_plugin/settings_change_theme_colours4.png" alt="The resulting colours in action!" title="" /></p>
<p><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/PinnedNotes">Source</a>
<img src="assets/profile/pin_note.png" alt="Default view of the actor profile, showing the 'Pin this note' action, and its respective representation" title="" /></p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-pinned-notes.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-pinned-notes.html</guid>
<dc:creator>GNU social development team</dc:creator>
<pubDate>Tue, 18 Jan 2022 12:36:14 +0000</pubDate></item>
<item><title>
Milestone: Notes with LaTeX
</title><description><![CDATA[
<p>LaTeX content types is now supported.</p>
<p><img src="assets/notes/content_type.png" alt="" title="" /></p>
<h2>latex</h2>
<p><img src="assets/notes/latex_content.png" alt="" title="" />
<img src="assets/notes/latex_rendered.png" alt="" title="" /></p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-notes-with-latex.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-notes-with-latex.html</guid>
<dc:creator>GNU social development team</dc:creator>
<pubDate>Tue, 18 Jan 2022 11:41:47 +0000</pubDate></item>
<item><title>
Milestone: Notes with Markdown
</title><description><![CDATA[
<p>Markdown content types is now supported.</p>
<p><img src="assets/notes/content_type.png" alt="" title="" /></p>
<h2>Markdown</h2>
<p><img src="assets/notes/markdown_content.png" alt="" title="" />
<img src="assets/notes/markdown_rendered.png" alt="" title="" /></p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-notes-with-markdown.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-notes-with-markdown.html</guid>
<dc:creator>GNU social development team</dc:creator>
<pubDate>Tue, 18 Jan 2022 11:40:49 +0000</pubDate></item>
<item><title>
Milestone: Web Monetization
</title><description><![CDATA[
<p><a href="https://webmonetization.org/">Web Monetization</a> is being proposed as a W3C
standard at the Web Platform Incubator Community Group.</p>
<p>GNU social now supports that initiative with the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/WebMonetization">Web Monetization plugin</a>.</p>
<p>With this, we also introduce an ActivityPub (FEP pending) GS extension
<code>gs:webmonetizationWallet</code>. This enables actors to support other actors with Web
Monetization in the fediverse.</p>
<p>It looks like this:</p>
<h2>Own profile</h2>
<p><img src="assets/web_monetization/address.png" alt="" title="" /></p>
<h2>In the profile of other actors</h2>
<p><img src="assets/web_monetization/donate.png" alt="" title="" /></p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-web-monetization.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-web-monetization.html</guid>
<dc:creator>GNU social development team</dc:creator>
<pubDate>Tue, 18 Jan 2022 01:57:40 +0000</pubDate></item>
<item><title>
Milestone: Mute notifications from a conversation
</title><description><![CDATA[
<p>If a conversation in which you have interacted becomes very active and you wish
to stop receiving notifications derived from that, it is now possible:
<img src="assets/conversation/mute.png" alt="" title="" /></p>
@ -185,10 +256,10 @@ Given a valid colour, it's the actor's responsibility whether or not the colours
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-actor-colour-theme-plugin.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-actor-colour-theme-plugin.html</guid>
]]></description><link>https://gnusocial.rocks/v3/milestone-mute-notifications-from-a-conversation.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-mute-notifications-from-a-conversation.html</guid>
<dc:creator>GNU social development team</dc:creator>
<pubDate>Tue, 18 Jan 2022 13:56:12 +0000</pubDate></item>
<pubDate>Tue, 18 Jan 2022 01:39:10 +0000</pubDate></item>
<item><title>
Milestone: Albums
</title><description><![CDATA[
@ -225,144 +296,26 @@ specialisation of a collection.</p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-albums.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-albums.html</guid>
<dc:creator>GNU social development team</dc:creator>
<pubDate>Tue, 18 Jan 2022 13:56:12 +0000</pubDate></item>
<pubDate>Tue, 18 Jan 2022 01:23:27 +0000</pubDate></item>
<item><title>
Milestone: Collections
Milestone: ActivityPub
</title><description><![CDATA[
<p>We have generalized collections around our search engine. For that introducing
the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/components/Collection">Collection component</a>.</p>
<p>This structure has the following implication:</p>
<pre><code>Collection -&gt; OrderedCollection
|-&gt; Notes (known as Feed)
|-&gt; Actors (known as Circle)
|-&gt; Other Object (known as Collection of ...)
|-&gt; Attachments: AttachmentCollection
|-&gt; Tags: TagCollection
</code></pre>
<p>And it allow us to centralise the scope system in the core, ensuring that no
actor will have access to notes or other objects that shouldn't be able to see.</p>
<p>Finally, with this, a plugin such as <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/NoteTypeFeedFilter">Note Type Feed Filter</a> can be useful in
every note collection (feed).</p>
<p>It also allows plugins such as ActivityPub to <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/ActivityPub/Util/OrderedCollectionController.php">translate every collection
automatically</a>.</p>
<h2>Notes Filter and Sorting Options</h2>
<p><img src="assets/filters/feed.png" alt="" title="" /></p>
<h2>Actors Filter and Sorting Options</h2>
<p><img src="assets/filters/circle.png" alt="" title="" /></p>
<h2>The Search Component</h2>
<h3>Results</h3>
<p><img src="assets/search/results.png" alt="" title="" /></p>
<h3>Note Options</h3>
<p><img src="assets/search/note_options.png" alt="" title="" /></p>
<h3>Actor Options</h3>
<p><img src="assets/search/actor_options.png" alt="" title="" /></p>
<h2>ActivityPub Examples</h2>
<p><img src="assets/activitypub/collection/circle.jpg" alt="" title="" />
<img src="assets/activitypub/collection/favourites.jpg" alt="" title="" />
<img src="assets/activitypub/collection/outbox.jpg" alt="" title="" /></p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-collections.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-collections.html</guid>
<dc:creator>GNU social development team</dc:creator>
<pubDate>Tue, 18 Jan 2022 13:56:12 +0000</pubDate></item>
<item><title>
Milestone: Documentation and Tests Infrastructure
</title><description><![CDATA[
<p><strong><a href="https://agile.gnusocial.rocks/doku.php?id=milestones:initial_test_documentation_infrastructure">>WIKI Milestone entry</a></strong></p>
<p>GNU social now has its documentation available in
<a href="https://docs.gnusocial.rocks/">https://docs.gnusocial.rocks/</a>. It features four
different books. These are automatically generated from the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/docs">source</a> using <a href="https://rust-lang.github.io/mdBook/">mdBook</a>.</p>
<blockquote>
<p>Only the development book is in an elaborated state, the other books are
holding for more ready code.</p>
</blockquote>
<p>And two of them are new:</p>
<ul>
<li>The <a href="https://docs.gnusocial.rocks/developer">Developer</a> is both intended to guide third-party plugin developers and to make it easier of contributing to the code.</li>
<li>The <a href="https://docs.gnusocial.rocks/designer">Designer</a> is the most recent of the four and came from a necessity of keeping some standardization between templates and ensuring the same principles are kept in mind when designing new themes.</li>
</ul>
<p>And two of them are updates from existing documentation:</p>
<ul>
<li>The <a href="https://docs.gnusocial.rocks/user">User</a> one is adapted
from the existing GNU social documentation for users that was provided in v2.</li>
<li>The <a href="https://docs.gnusocial.rocks/administrator">Administrator</a> one is adapted
from the "Unofficial GNU social docs" by Thomask who <a href="https://notabug.org/diogo/gnu-social/issues/246">asked us to make it official</a>.</li>
</ul>
<p>Together with the documentation we've introduced a
<a href="https://agile.gnusocial.rocks/">wiki</a>. Its purpose is to walk-through decisions,
convention, terminology. It's where we document the reasoning the development team went
through before implementing more sophisticated functionalities.</p>
<p>Finally, when the documentation doesn't explain, and to ensure the whole code
is properly tested, we have the
<a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/tests">tests</a>. And the coverage is available <a href="https://coverage.gnusocial.rocks/">here</a>. At the time of writing the coverage has 98.76% code lines tested.</p>
<p><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/ActivityPub">ActivityPub Plugin source</a>.</p>
<p>This milestone could be just this, what's different from any other ActivityPub
plugin? How is it better than v2's?</p>
<p>It's better in how it's organised and extensible, check the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/ActivityPub/EVENTS.md">EVENTS.md</a> for examples.</p>
<h2>Video of GNU social v3 exchanging notes with GNU social v2.</h2>
<iframe width="560" height="315" sandbox="allow-same-origin allow-scripts allow-popups" title="GNU social v3 federating with GNU social v2 via ActivityPub" src="https://tube.tchncs.de/videos/embed/ca778b22-1af2-4b6f-af3d-f24aac7af9f4" frameborder="0" allowfullscreen></iframe>
@ -380,143 +333,8 @@ is properly tested, we have the
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-documentation-and-tests-infrastructure.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-documentation-and-tests-infrastructure.html</guid>
]]></description><link>https://gnusocial.rocks/v3/milestone-activitypub.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-activitypub.html</guid>
<dc:creator>GNU social development team</dc:creator>
<pubDate>Tue, 18 Jan 2022 13:56:12 +0000</pubDate></item>
<item><title>
Milestone: Mute notifications from a conversation
</title><description><![CDATA[
<p>If a conversation in which you have interacted becomes very active and you wish
to stop receiving notifications derived from that, it is now possible:
<img src="assets/conversation/mute.png" alt="" title="" /></p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-mute-notifications-from-a-conversation.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-mute-notifications-from-a-conversation.html</guid>
<dc:creator>GNU social development team</dc:creator>
<pubDate>Tue, 18 Jan 2022 13:56:12 +0000</pubDate></item>
<item><title>
Milestone: Notes and Actors with languages
</title><description><![CDATA[
<p>Well, it's that, our notes now have a language attribute.</p>
<p>... All right, all right, it's not <em>just</em> it.</p>
<h2>Here's what comes with it:</h2>
<ul>
<li><a href="">Filter the streams with only the languages you know</a></li>
<li><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/components/Tag/Tag.php#L135-L146">Make Tag Wrangling possible and transversal to languages</a></li>
<li><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/ActivityPub/Util/Model/Note.php#L123">Federate the language for a more inclusive free network</a></li>
</ul>
<h2>Here's how it looks</h2>
<p>First, the user panel section where the desired preferences are selected:
<img src="assets/notes_and_actors_with_languages/settings_language.png" alt="User panel language settings section" title="" /></p>
<p>Upon sending the previous form, the user is redirected to order their selection:
<img src="assets/notes_and_actors_with_languages/settings_language_order.png" alt="Ordering the selections made in previous page" title="" /></p>
<p>Finally, when posting the language with the highest priority is selected by default.</p>
<p>However, by accessing "Additional options", another language may be selected. The resulting
note will have the html <code>lang</code> attribute according to it.</p>
<p>The posting widget itself:
<img src="assets/notes_and_actors_with_languages/posting_language_options.png" alt="Selecting the language of a note when posting" title="" /></p>
<h2>What does this mean?</h2>
<p>We can now show you the notes you can read, but for groups, this mean that you
can access umbrella groups and filter the feeds to see what's in your language
and even region.</p>
<p>For too long the fediverse struggled with languages, this step makes it easier
for actual internationalization of the free network.</p>
<h2>A marvellous feed filtered by note language</h2>
<p><img src="assets/notes_and_actors_with_languages/feed-note-lang-pt.png" alt="" title="" /></p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-notes-and-actors-with-languages.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-notes-and-actors-with-languages.html</guid>
<dc:creator>GNU social development team</dc:creator>
<pubDate>Tue, 18 Jan 2022 13:56:12 +0000</pubDate></item>
<item><title>
Milestone: Notes with LaTeX
</title><description><![CDATA[
<p>LaTeX content types is now supported.</p>
<p><img src="assets/notes/content_type.png" alt="" title="" /></p>
<h2>latex</h2>
<p><img src="assets/notes/latex_content.png" alt="" title="" />
<img src="assets/notes/latex_rendered.png" alt="" title="" /></p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-notes-with-latex.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-notes-with-latex.html</guid>
<dc:creator>GNU social development team</dc:creator>
<pubDate>Tue, 18 Jan 2022 13:56:12 +0000</pubDate></item>
<item><title>
Milestone: Notes with Markdown
</title><description><![CDATA[
<p>Markdown content types is now supported.</p>
<p><img src="assets/notes/content_type.png" alt="" title="" /></p>
<h2>Markdown</h2>
<p><img src="assets/notes/markdown_content.png" alt="" title="" />
<img src="assets/notes/markdown_rendered.png" alt="" title="" /></p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-notes-with-markdown.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-notes-with-markdown.html</guid>
<dc:creator>GNU social development team</dc:creator>
<pubDate>Tue, 18 Jan 2022 13:56:12 +0000</pubDate></item>
<pubDate>Fri, 10 Dec 2021 16:34:39 +0000</pubDate></item>
</channel></rss>

View File

@ -46,27 +46,42 @@ Our objective is to further differentiate GNU social from the alternative softwa
<h4 class='allposts_header'>January 2022</h4>
<ul>
<li><a href="./milestone-automatic-accesibility-a11y-testing.html">Milestone: Automatic Accesibility (A11Y) testing</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-activitystreams-20-and-webfinger.html">Milestone: ActivityStreams 2.0 and WebFinger</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-actor-colour-theme-plugin.html">Milestone: Actor colour theme plugin</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-albums.html">Milestone: Albums</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-collections.html">Milestone: Collections</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-documentation-and-tests-infrastructure.html">Milestone: Documentation and Tests Infrastructure</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-mute-notifications-from-a-conversation.html">Milestone: Mute notifications from a conversation</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-notes-and-actors-with-languages.html">Milestone: Notes and Actors with languages</a> &mdash; January 18, 2022</li>
<li><a href="./updates-local-groups.html">Updates: Local Groups</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-pinned-notes.html">Milestone: Pinned Notes</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-notes-with-latex.html">Milestone: Notes with LaTeX</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-notes-with-markdown.html">Milestone: Notes with Markdown</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-pinned-notes.html">Milestone: Pinned Notes</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-port-media-handling-from-v2.html">Milestone: Port Media handling from v2</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-tags.html">Milestone: Tags</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-web-monetization.html">Milestone: Web Monetization</a> &mdash; January 18, 2022</li>
<li><a href="./updates-finish-the-avatar-component.html">Updates: Finish the Avatar component</a> &mdash; January 18, 2022</li>
<li><a href="./updates-implement-storeremotemedia-for-v3-and-port-embed.html">Updates: Implement StoreRemoteMedia for v3 and port Embed</a> &mdash; January 18, 2022</li>
<li><a href="./updates-improve-the-attachments-system.html">Updates: Improve the Attachments system</a> &mdash; January 18, 2022</li>
<li><a href="./updates-interface-and-accessibility.html">Updates: Interface and accessibility</a> &mdash; January 18, 2022</li>
<li><a href="./updates-interface-structure-and-flexibility-improved.html">Updates: Interface Structure and Flexibility improved</a> &mdash; January 18, 2022</li>
<li><a href="./updates-local-groups.html">Updates: Local Groups</a> &mdash; January 18, 2022</li>
<li><a href="./updates-v3-blog.html">Updates: V3 blog</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-activitypub.html">Milestone: ActivityPub</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-mute-notifications-from-a-conversation.html">Milestone: Mute notifications from a conversation</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-albums.html">Milestone: Albums</a> &mdash; January 18, 2022</li>
</ul>
<h4 class='allposts_header'>December 2021</h4>
<ul>
<li><a href="./milestone-activitypub.html">Milestone: ActivityPub</a> &mdash; December 10, 2021</li>
<li><a href="./milestone-tags.html">Milestone: Tags</a> &mdash; December 09, 2021</li>
<li><a href="./milestone-actor-colour-theme-plugin.html">Milestone: Actor colour theme plugin</a> &mdash; December 09, 2021</li>
<li><a href="./updates-interface-structure-and-flexibility-improved.html">Updates: Interface Structure and Flexibility improved</a> &mdash; December 09, 2021</li>
<li><a href="./milestone-notes-and-actors-with-languages.html">Milestone: Notes and Actors with languages</a> &mdash; December 09, 2021</li>
</ul>
<h4 class='allposts_header'>November 2021</h4>
<ul>
<li><a href="./milestone-activitystreams-20-and-webfinger.html">Milestone: ActivityStreams 2.0 and WebFinger</a> &mdash; November 03, 2021</li>
</ul>
<h4 class='allposts_header'>September 2021</h4>
<ul>
<li><a href="./updates-interface-and-accessibility.html">Updates: Interface and accessibility</a> &mdash; September 13, 2021</li>
</ul>
<h4 class='allposts_header'>August 2021</h4>
<ul>
<li><a href="./updates-v3-blog.html">Updates: V3 blog</a> &mdash; August 16, 2021</li>
<li><a href="./updates-implement-storeremotemedia-for-v3-and-port-embed.html">Updates: Implement StoreRemoteMedia for v3 and port Embed</a> &mdash; August 13, 2021</li>
<li><a href="./updates-improve-the-attachments-system.html">Updates: Improve the Attachments system</a> &mdash; August 05, 2021</li>
<li><a href="./updates-finish-the-avatar-component.html">Updates: Finish the Avatar component</a> &mdash; August 04, 2021</li>
<li><a href="./milestone-documentation-and-tests-infrastructure.html">Milestone: Documentation and Tests Infrastructure</a> &mdash; August 04, 2021</li>
</ul>
<h4 class='allposts_header'>May 2021</h4>
<ul>
<li><a href="./milestone-port-media-handling-from-v2.html">Milestone: Port Media handling from v2</a> &mdash; May 03, 2021</li>
</ul>
<div id="all_posts"><a href="all_tags.html">All tags</a> &mdash; <a href="feed.rss">Subscribe</a></div>
</div>

View File

@ -67,6 +67,7 @@ plugin? How is it better than v2's?</p>
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -92,6 +92,7 @@ GNU social development team
<!-- text end -->

View File

@ -118,6 +118,7 @@ Given a valid colour, it's the actor's responsibility whether or not the colours
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -74,6 +74,7 @@ specialisation of a collection.</p>
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -71,6 +71,7 @@ ImageMagik's <code>compare</code>, to generate a report on visual changes.</p>
clear from the really low number of violations found, but there's
always room for improvement :)</p>
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -36,7 +36,7 @@
<h3><a class="ablack" href="milestone-collections.html">
Milestone: Collections
</a></h3>
<!-- bashblog_timestamp: #202201180021.29# -->
<!-- bashblog_timestamp: #202201181356.12# -->
<div class="subtitle">January 18, 2022 &mdash;
GNU social development team
</div>
@ -64,6 +64,10 @@ every note collection (feed).</p>
<p>It also allows plugins such as ActivityPub to <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/ActivityPub/Util/OrderedCollectionController.php">translate every collection
automatically</a>.</p>
<p>We also introduced the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/components/Circle">Circle component</a>, which has a UI similar to the
<a href="https://www.gnusocial.rocks/v3/milestone-albums.html">Attachments Collections</a>,
and enables circle mentions with <code>@#circle_name</code>.</p>
<h2>Notes Filter and Sorting Options</h2>
<p><img src="assets/filters/feed.png" alt="" title="" /></p>
@ -93,13 +97,6 @@ automatically</a>.</p>
<img src="assets/activitypub/collection/outbox.jpg" alt="" title="" /></p>
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -21,6 +21,10 @@ every note collection (feed).
It also allows plugins such as ActivityPub to [translate every collection
automatically](https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/ActivityPub/Util/OrderedCollectionController.php).
We also introduced the [Circle component](https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/components/Circle), which has a UI similar to the
[Attachments Collections](https://www.gnusocial.rocks/v3/milestone-albums.html),
and enables circle mentions with `@#circle_name`.
## Notes Filter and Sorting Options
![](assets/filters/feed.png)

View File

@ -118,6 +118,7 @@ is properly tested, we have the
<!-- text end -->

View File

@ -56,6 +56,7 @@ to stop receiving notifications derived from that, it is now possible:
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -98,6 +98,7 @@ for actual internationalization of the free network.</p>
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -56,6 +56,7 @@ GNU social development team
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -57,6 +57,7 @@ GNU social development team
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -52,6 +52,7 @@ You can now pin notes in your profile! Given you have suficient permissions to d
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -122,6 +122,7 @@ The key ones are:</p>
<!-- text end -->

View File

@ -146,6 +146,7 @@ tag.</p>
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -70,6 +70,7 @@ Monetization in the fediverse.</p>
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -154,6 +154,7 @@ GNU social development team
<!-- text end -->

View File

@ -90,6 +90,7 @@ attempts to generate a page preview from open graph and oembed. I.e., acts when
<!-- text end -->

View File

@ -123,6 +123,7 @@ any remote URL being shared in a note.</li>
<!-- text end -->

View File

@ -155,6 +155,7 @@ markup, we hope to achieve an accessible, fast and polished structure by which a
<!-- text end -->

View File

@ -66,6 +66,7 @@ GNU social development team
<!-- text end -->

View File

@ -53,6 +53,7 @@ translate following the same rules as AndStatus <a href="https://github.com/ands
<p>Finally, also note that the group actors now have "self-tags", as the other actors, which was a milestone.</p>
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -98,6 +98,7 @@ forget to subscribe!</p>
<!-- text end -->