Bubble [main]

Updated Help with info from release announcements

=> 2b799215db7f7d96320b92e6aad670483a4d1748

diff --git a/50_bubble.py b/50_bubble.py
index e357a9b..bfd7fab 100644
--- a/50_bubble.py
+++ b/50_bubble.py
@@ -524,7 +524,7 @@ Bubble is open source:
             page += """
 ## Posting and Commenting
 
-Posts and comments are composed of "segments". There can be any number of segments, and the order of segments can be freely changed in the composer. There are four types of segments:
+Posts and comments are composed of "segments". There can be any number of segments, and the order of existing segments can be freely changed in the composer. There are four types of segments:
 
 * Text — Gemtext with all the line types supported.
 * Link — A single URI with an optional label. The first link segment will appear in feed previews as a clickable link.
@@ -533,10 +533,18 @@ Posts and comments are composed of "segments". There can be any number of segmen
 
 When viewing the post page, each of these segments are visible in their entirety. In various other places, a shortened "feed preview" is shown instead. The composer shows a preview of both the shortened version and the full page contents before you can publish the post.
 
-The formatting of the post is altered for Tinylogs: all headings are converted to level 3.
-
 When making a new post, what you enter in the "New post" prompt becomes the body text of the post and the title will be left blank. You can then edit the post to add a title, if necessary. However, if you begin the text entered into the prompt with a level 1 heading (#), that first line will be extracted and used as the post title. In issue tracker subspaces, the first line is always used as the issue title.
 
+### Mentioning Users, Issues and Commits
+
+You can use an "@username" mention to notify another user about your post or comment. Multiple users can be notified in the same message. Usernames are case-insensitive, so you don't have to capitalize the @-mention exactly like the user's name is capitalized.
+
+While Bubble does not support private/direct messages, you can make a post in your "u/" subspace, flag it as omitted from All Posts and feeds, and mention one or more users who you wish to communicate with. This way the conversation at least does not clutter the front page or subspace feeds.
+
+In an issue tracker, you can refer to other issues by their ID number, for instance "#123". A link to the mentioned issue appears automatically, and a cross reference will also appear in the mentioned issue's comment history.
+
+If an issue tracker is linked with a Git repository, you can also refer to individual Git commits by their SHA hash simply by writing out (the beginning of) the hash.
+
 ### File Attachments
 
 Because Gemini limits the amount of data per request to 1024 bytes, it is unsuitable for uploading files to the server. Therefore, Bubble supports a protocol called Titan for uploading files.
@@ -566,13 +574,55 @@ Titan uploads always deal with the actual contents of the post/segments, so spec
 
 When editing segments in the draft composer, you may sometimes accidentally submit the input and overwrite the contents, losing some text that you meant to keep in there. While Bubble does not currently keep a history of past edited versions, your client may be able to help you. If you navigate backwards, the old contents of the segment may be found in a cached copy of the page.
 
+## Notifications
+
+In addition to the usual @-mentions, comments and likes, you can be notified about new posts in a thread you were part of, and you can follow users, subspaces, and individual posts to be notified of new comments and/or posts in/by them. There are also notifications for new polls and issues that have been closed. Each of these notification types can be individually enabled or disabled.
+=> /settings/notif Check out the list of options in Settings.
+
+When clicking on a notification in Dashboard or elsewhere, it is automatically hidden.However, the notification "/notif/" links remain valid for up to one week, during which you can access a particular notification multiple times.
+=> /notif/history Past notifications can be viewed in the Notification History.
+
+### Emails and "Do Not Disturb"
+
+Bubble supports email notifications to keep you informed about activity in a timely fashion. Enabling this is optional, but it can be argued that an integral part of a communication tool is proactively keeping people in the loop about noteworthy events.
+
+The emailing frequency is user-configurable, so you can choose how often emails about unseen notifications are sent. Furthermore, to prevent emails from being sent at inconvenient times, you can set an exclusion range. For example, a reasonable night hour range could be "21-03" (inclusive; the first emails would start arriving at 4 in the morning).
+
+### Per-Post Notifications
+
+Feed entries sometimes have a 🔔 icon. This means at least one of your unread notifications is about that post. When viewing such a post, the relevant notifications are listed right there under Actions, so you check them off and/or clear them more conveniently.
+
 ## Thanks, Likes, and Reactions
 
 * "Thanks" are used for showing appreciation privately, in an ephemeral manner. The recipient will see a notification about the thanks. The notification will remain visible in Notification History for a few days, after which all record of it disappears.
 * "Likes" are a way of giving positive feedback in public. The names of people who have liked a post is visible to everyone. Likes can be disabled per-user or site-wide in the Bubble configuration.
 * "Reactions" are Emoji-based and anonymous. The administrator chooses the available set of reaction Emoji, and users can select one of them for any given post. Everyone can see the total number of each type of reaction when viewing a post.
 
-## Filtering Feeds and Content
+## Feeds
+
+The front page's feed can be switched between "All Posts" and "Followed" in your Settings.
+
+Sorting by 🔥 Hotness orders the posts based on how much time has passed since the latest comment in the discussion thread and how many different people have commented. The actual number of comments has no influence. The idea is to keep active discussion threads near the top of the feed.
+
+### Tag Filtering
+
+The front page feed, subspaces, user feeds, and issue trackers can all be filtered based on tags applied on posts.
+
+### Gemlogging with Gemini/Atom Feeds
+
+User subspaces ("u/" prefix) are intended for personal posts. Each individual post can be either included in or omitted from Gemini/Atom feeds using the toggles in the composer. In Settings, you can set which mode is the default. By omitting a post from Gemini/Atom feeds, it effectively becomes a microblog post that only appears in Tinylogs and on Bubble itself. This way, you can publish your "u/" Gemini/Atom feed as a gemlog that contains longer-form posts, while still being able to have short-form posts, too.
+
+You can use tag filtering to have more specialized feeds. You are free to tag your posts however you like.
+
+The post title that is set in the composer will be used as-is in Gemini/Atom feeds. If the title is missing, a truncated version of the post contents are used instead.
+
+A convenient action link is provided to submit your "u/" Gemini feed and your individual posts to the Antenna aggregator. Antenna submission does not happen automatically so you retain control of when and if the submission is done.
+
+### Tinylogs
+
+The formatting of posts is altered when viewing them via Tinylog: all headings are converted to level 3.
+
+## Following and Muting
 
 You can follow and mute posts, subspaces, and users to customize their visibility and notifications about them. In Settings, you can choose whether the front page feed shows all posts — except mutes ones — or just posts from followed subspaces and users.
 
@@ -590,9 +640,51 @@ Muting is private, too. No one can see what you have muted, or who has muted the
 * Muting a subspace hides it in All Posts and disables notifications about activity in the subspace. However, your own posts in that subspace are not affected, nor are @-mentions of you in the subspace. This could be used to prevent a busy subspace from dominating All Posts.
 * Muting a user hides the user's posts in every feed, including in All Posts and the muted user's "u/"-feed, and hides their comments in every post. Notifications from the user are not shown, either. It is as if the user does not exist.
 
-### Tag Filtering
+## Subspaces
 
-The front page feed, subspaces, user feeds, and issue trackers can all be filtered based on tags applied on posts.
+### Moderation
+
+Every subspace must have at least one moderator assigned to it, or otherwise the subspace is locked into read-only mode.
+
+Moderators are able to delete posts and comments, and edit titles of posts. They cannot edit the contents of posts, though.
+
+Posts can be moved between subspaces. Moderators can move any post in their subspace to another subspace, and post authors can always move their own posts elsewhere. Moving a post does not break URLs because post IDs are unique, and a URL that uses the old subspace name will be redirected to the new location. However, issue tracker posts cannot be moved due to per-subspace issue ID numbering.
+
+A moderator of a subspace can assign any other user as an additional moderator of the subspace. Each moderator has the same access rights, regardless of who originally created the subspace.
+
+### Issue Trackers
+
+Individual subspaces can be used as issue trackers instead of regular posting. Issue trackers differ from regular subspaces in that each post will be assigned a unique ID number, and each issue has an open/closed status. One can also reference issues in the same tracker just by writing the ID number preceded by a hash:
+
+> Also see #123.
+
+Subspace moderators can enable or disable issue tracking mode in an empty subspace.
+
+Bubble instance administrators are able to attach a Git repository to an issue tracker. This causes a bare clone of the repository to be fetched and periodically updated. Git commits that reference issues in their log messages will automatically appear in the relevant issue's discussion history, and when Git commit hashes are detected in issues and issue tracker comments, links to the commits are automatically displayed.
+
+Use of tags is recommended in issue trackers, for example to make a distinction between features and bugs. The list of issues can be filtered based on tags for easier navigation.
+
+## Account Recovery
+
+Occasionally people lose their client certificates and thus also lose access to their Bubble account. Contacting the administrator is fine for account recovery but it also has some significant drawbacks. For example, the administrator may not be able to verify that the account actually belongs to you. To facilitate account recovery, there is an automated certificate recovery feature.
+=> /settings/certs You can go to your account settings and set a Recovery URL.
+Then, when disaster has struck and you've lost your registered certificates, you can do the following:
+
+* 1. Make your new certificate available as a PEM file at the previously configured URL. Do NOT include the private key — that is not meant to be published under any conditions.
+* 2. Activate the same certificate in your Gemini client on the Bubble front page.
+* 3. Select the "Recover certificate" option and enter your user name.
+* 4. Bubble downloads the certificate from your recovery URL. If (and only if) it matches the client certificate active in your client, the certificate will be registered to the account.
+* 5. For privacy reasons, remove the certificate at the recovery URL.
+
+If you have a place where you can publish files on Gemini, such as your own capsule, it is recommended to always have the recovery URL configured. It's a good idea to use a directory and/or file name that doesn't currently exist and is unlikely to be easily guessed. In any case, this URL should only point to an existing file while you are recovering your account. You probably don't want to keep your client certificate published otherwise.
+
+## Restricting Access
+
+An important use case for Bubble is providing individuals and small groups of people a personal publishing platform or a private space. For this purpose, user registration can be closed, and there are admin actions to create new users, generate random passwords, and revoke certificates.
+
+The `frontpage` configuration option defines a static Gemtext page that is shown to unregistered visitors. This page is the only thing unregistered visitors are able to see.
+
+The `user.subspaces` configuration option controls whether users can create new subspaces, in case the admin wants the subspaces to remain a fixed set of categories, for example.
 """
             return page
 
diff --git a/composer.py b/composer.py
index 5f7bda7..dd3c10f 100644
--- a/composer.py
+++ b/composer.py
@@ -374,7 +374,7 @@ def make_composer_page(session):
             page += f'=> {segment.url} {segment.content}\n'
             page += f'=> {seg_link}/{segment.id} ✏️ Edit label\n'
 
-        page += f"=> {session.path}move-segment/{segment.id} ↕︎ Move/remove\n"
+        page += f"=> {session.path}move-segment/{segment.id} ↕︎ Move/actions\n"
 
     if len(segments):
         page += f'\n'
Proxy Information
Original URL
gemini://git.skyjake.fi/bubble/main/cdiff/2b799215db7f7d96320b92e6aad670483a4d1748
Status Code
Success (20)
Meta
text/gemini; charset=utf-8
Capsule Response Time
74.715343 milliseconds
Gemini-to-HTML Time
2.6967 milliseconds

This content has been proxied by September (3851b).