Mycorrhiza Wiki (recent changes)https://mycorrhiza.wiki2024-03-29T11:10:41ZList of 30 recent changes on the wikiEdit ‘community’ by bouncepaw2024-02-27T22:33:09Z7d68753
<p><b>Edit ‘community’</b> (by bouncepaw at 27 Feb 24 22:33 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/community">community</a>
</p>
<pre><code>diff --git a/community.myco b/community.myco
index c82c444..4913766 100644
--- a/community.myco
+++ b/community.myco
@@ -10,2 +10,4 @@ Consider supporting the development on [[https://boosty.to/bouncepaw | Boosty]].
-See some [[instances]] for a list of publicly hosted wikis running Mycorrhiza Wiki.
\ No newline at end of file
+See some [[instances]] for a list of publicly hosted wikis running Mycorrhiza Wiki.
+
+There is also a related project, a federated bookmark manager [[https://betula.mycorrhiza.wiki | Betula]].
\ No newline at end of file
</code></pre>
bouncepawEdit ‘mycorrhiza_wiki’ by bouncepaw2024-02-27T22:32:21Zd52ca4c
<p><b>Edit ‘mycorrhiza_wiki’</b> (by bouncepaw at 27 Feb 24 22:32 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/mycorrhiza_wiki">mycorrhiza_wiki</a>
</p>
<pre><code>diff --git a/mycorrhiza_wiki.myco b/mycorrhiza_wiki.myco
index cc99f0d..99fd8a6 100644
--- a/mycorrhiza_wiki.myco
+++ b/mycorrhiza_wiki.myco
@@ -1,2 +1,2 @@
-**Mycorrhiza Wiki** is an open-source wiki engine for the independent web developed by [[u/bouncepaw | Bouncepaw]], who is assisted by other open-source contributors. Use Mycorrhiza for personal wikis, digital gardens and wikis for small teams or communitie
+**Mycorrhiza Wiki** is an open-source wiki engine for the independent web developed by [[u/bouncepaw | Bouncepaw]], who is assisted by other open-source contributors. Use Mycorrhiza for personal wikis, digital gardens and wikis for small teams or communities.
</code></pre>
bouncepawEdit ‘mycorrhiza_wiki’ by testmushroom2024-01-31T04:11:17Z023661a
<p><b>Edit ‘mycorrhiza_wiki’</b> (by testmushroom at 31 Jan 24 04:11 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/mycorrhiza_wiki">mycorrhiza_wiki</a>
</p>
<pre><code>diff --git a/mycorrhiza_wiki.myco b/mycorrhiza_wiki.myco
index 99fd8a6..cc99f0d 100644
--- a/mycorrhiza_wiki.myco
+++ b/mycorrhiza_wiki.myco
@@ -1,2 +1,2 @@
-**Mycorrhiza Wiki** is an open-source wiki engine for the independent web developed by [[u/bouncepaw | Bouncepaw]], who is assisted by other open-source contributors. Use Mycorrhiza for personal wikis, digital gardens and wikis for small teams or communities.
+**Mycorrhiza Wiki** is an open-source wiki engine for the independent web developed by [[u/bouncepaw | Bouncepaw]], who is assisted by other open-source contributors. Use Mycorrhiza for personal wikis, digital gardens and wikis for small teams or communitie
</code></pre>
testmushroomDelete ‘systemd_101’ by bouncepaw2023-12-09T09:54:15Zbdfa6dc
<p><b>Delete ‘systemd_101’</b> (by bouncepaw at 09 Dec 23 09:54 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/systemd_101">systemd_101</a>
</p>
<pre><code>diff --git a/systemd_101.myco b/systemd_101.myco
deleted file mode 100644
index 12c6132..0000000
--- a/systemd_101.myco
+++ /dev/null
@@ -1,151 +0,0 @@
-or **The Definitive Guide to Setting Up Systemd for Mycorrhizal Affairs**
-
-//**Disclaimer:** I hate systemd.//
-
-= Introduction
-
-Okay, so you got your systemd-based distro on a server and Mycorrhiza running in a tmux. But with experience you realize that running software without persistent logging, no crash reporting and unreliable shell scripts for restarting (if you even have any) is not how you roll in production. Good news—I got your back. We'll walk through setting up a user service for systemd from scratch, with auto-restart, failure notifications and no root access for manipulating service state.
-
-//A hash symbol (`#`) in the beginning means you need to run the command as root. Similarly, a dollar sign (`$`) means you need to run the command as a normal user.//
-
-= Setting up
-
-First, we need to create a separate user for the wiki. Using your own profile (or even worse, the superuser) is very insecure; you're not protected from hack attempts or vulnerabilities in the software, and you really don't want to compromise some of your more secure stuff. Creating a new user is as simple as running one command:
-
-```sh
-# useradd -m myco
-```
-
-If you're not planning to give anyone access to the server via this user, you could use `-s /usr/sbin/nologin` to disable shell access and prevent anyone from logging in. Then you would need to add `-s /bin/bash` to every `su` command that logs into the account in order to get a working shell.
-
-Now, let's login into our newly created account:
-
-```sh
-# su - myco
-```
-
-At this point, you can add some SSH keys to `.ssh/authorized_keys` in order to be able to login using SSH directly into `myco` user without additional `su` hop.
-
-`systemd` has two modes:
-* System mode (`--system`) is assumed automatically when systemd is running with PID 1. It acts as the global init system and automatically runs system services.
-* User mode (`--user`) is used when, well, it's not running in system mode. One systemd instance is automatically started for every user logged in (not per-session, but rather per-user) and killed after the last session is closed. The major advantage is that you can run `systemctl` without root access.
-
-Sounds great! But, we need systemd to not automatically exit when we log out. We want our wiki to be running even without us logged in, right? For that to work we can enable systemd linger:
-
-```sh
-$ loginctl enable-linger $USER
-```
-
-Great! Now we have our own systemd user instance running and even automatically starting at boot. Let's test if it works:
-
-```sh
-$ systemctl --user
-```
-
-If this command fails with a "failed to connect to bus" error, that means we don't have required environment variables set because we logged in "brutally" using `su`. You see, when you login via SSH or a login prompt in the console, your authentication request is processed by PAM, and if your credentials are correct, the very same service also runs pam_env and sets proper environment variables. But it doesn't run when you change the user by running `su`, because practically what you're doing is that you're just running an interactive shell as that user, not even properly logging in.
-
-As a workaround, you can just disconnect right now and login via SSH instead, or run the following command:
-
-```sh
-export XDG_RUNTIME_DIR=/run/user/$UID
-```
-
-Now the previous `systemctl` command should work fine! If it's not, try logging in via SSH. If it still doesn't work, well, you're on your own :)
-
-= Service file
-
-Let's create some directories:
-
-```
-mkdir -p .config/systemd/user
-```
-
-Open up an editor for `.config/systemd/user/mycorrhiza.service`. This service config will be pretty simple:
-
-```
-[Unit]
-Description=Mycorrhiza Wiki
-
-[Service]
-ExecStart=/usr/bin/mycorrhiza -listen-addr 127.0.0.1:8080 %h/wiki
-Restart=on-failure
-
-[Install]
-WantedBy=default.target
-```
-
-Replace the path to the executable if yours is not in `/usr/bin`. This service configuration will start the wiki from `$HOME/wiki` directory and listen on `127.0.0.1:8080`.
-
-Now let's enable the service and start it:
-
-```sh
-$ systemctl --user enable mycorrhiza
-$ systemctl --user start mycorrhiza
-```
-
-Check the logs:
-
-```sh
-$ journalctl --user -u mycorrhiza
-```
-
-Your wiki should be running and be accessible at `127.0.0.1:8080` at the moment. It should also automatically start on boot, if your server gets rebooted or shut down.
-
-= Failure notifications in Telegram
-
-Now let's setup some sort of a notification if the wiki crashes anyway. It's not really comfortable to learn about your website being down from your users.
-
-It'll be quite simple. First, create a Telegram bot in [[https://t.me/BotFather | @BotFather]] and get its API token. Then, create a shell script at `~/notify.sh` with the following contents:
-
-```sh
-#!/bin/sh
-TOKEN=
-CHAT_ID=
-TEXT="❌ Wiki *crashed*"
-
-curl -s "https://api.telegram.org/bot$TOKEN/sendMessage" \
- -d "chat_id=$CHAT_ID" \
- -d "text=$TEXT" \
- -d "parse_mode=markdown"
-```
-
-Paste in your Bot API token and chat ID in the corresponding variables. You can get the chat ID using @myidbot. Don't forget to run chmod on the script:
-
-```sh
-$ chmod +x notify.sh
-```
-
-Now let's create a service at `.config/systemd/user/failure-notification@.service`:
-
-```
-[Unit]
-Description=Failure notification sender
-After=network.target
-
-[Service]
-ExecStart=%h/notify.sh %i
-```
-
-And modify `.config/systemd/user/mycorrhiza.service` appropriately:
-
-```
-[Unit]
-# fields omitted
-OnFailure=failure-notification@%i
-
-[Service]
-# further contents omitted
-```
-
-Now reload the service files:
-
-```
-$ systemctl --user daemon-reload
-```
-
-**You're incredible!**
-
-= Cheatsheet
-
-* Control the service: `systemctl --user start|stop|restart|status mycorrhiza`
-* View logs: `journalctl --user -u mycorrhiza`
\ No newline at end of file
</code></pre>
bouncepawDelete ‘u/test’ by bouncepaw2023-11-28T20:16:27Zda2404c
<p><b>Delete ‘u/test’</b> (by bouncepaw at 28 Nov 23 20:16 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/u/test">u/test</a>
</p>
<pre><code>diff --git a/u/test.myco b/u/test.myco
deleted file mode 100644
index 27d33a5..0000000
--- a/u/test.myco
+++ /dev/null
@@ -1,2 +0,0 @@
-test – test
-2023-11-2513:48:09 UTC[[u/test]]
\ No newline at end of file
</code></pre>
bouncepawCreate ‘u/test’: test by test2023-11-25T13:48:22Zdd03d98
<p><b>Create ‘u/test’: test</b> (by test at 25 Nov 23 13:48 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/u/test">u/test</a>
</p>
<pre><code>diff --git a/u/test.myco b/u/test.myco
new file mode 100644
index 0000000..27d33a5
--- /dev/null
+++ b/u/test.myco
@@ -0,0 +1,2 @@
+test – test
+2023-11-2513:48:09 UTC[[u/test]]
\ No newline at end of file
</code></pre>
testEdit ‘git_of_theseus’ by bouncepaw2023-11-24T22:45:54Z9d2b447
<p><b>Edit ‘git_of_theseus’</b> (by bouncepaw at 24 Nov 23 22:45 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/git_of_theseus">git_of_theseus</a>
</p>
<pre><code>diff --git a/git_of_theseus.myco b/git_of_theseus.myco
index f71b49c..bb14685 100644
--- a/git_of_theseus.myco
+++ b/git_of_theseus.myco
@@ -2,4 +2,4 @@
-=> https://github.com/erikbern/git-of-theseus
-=> ./script
+=> https://github.com/erikbern/git-of-theseus
+=> ./script
@@ -8 +8,13 @@
<= ./2021-12-25 by month | full blend
+
+= 2023-11-24
+img grid {
+./2023-11-24 By Month { By month. }
+./2023-11-24 By Year { By year. }
+}
+
+The 2023 was the quietest year. It is seen the best on the by year plot. Less code was added in 2020 than remains from the whole of 2020, and don't forget that one big refactoring that threw away the most of 2020 code. Also, the trend for the freshly added code is to remain there.
+
+What does it mean? Mycorrhiza is pretty stable and does not require often changes. The fact that [[release/1.14]] was released five months after the previous version highlights that. A lot of development attention has moved to [[Betula]] as well.
+
+I am longing for a big refactoring, though. Lend me power to perform that!
\ No newline at end of file
</code></pre>
bouncepawUpload media for ‘git_of_theseus/2023-11-24_by_year’ with type ‘image/png’ by bouncepaw2023-11-24T22:40:59Z2aec162
<p><b>Upload media for ‘git_of_theseus/2023-11-24_by_year’ with type ‘image/png’</b> (by bouncepaw at 24 Nov 23 22:40 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/git_of_theseus/2023-11-24_by_year">git_of_theseus/2023-11-24_by_year</a>
</p>
<pre><code>No text changes</code></pre>
bouncepawUpload media for ‘git_of_theseus/2023-11-24_by_month’ with type ‘image/png’ by bouncepaw2023-11-24T22:40:47Z2e97de5
<p><b>Upload media for ‘git_of_theseus/2023-11-24_by_month’ with type ‘image/png’</b> (by bouncepaw at 24 Nov 23 22:40 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/git_of_theseus/2023-11-24_by_month">git_of_theseus/2023-11-24_by_month</a>
</p>
<pre><code>No text changes</code></pre>
bouncepawDelete ‘u/w.w.v’ by bouncepaw2023-11-24T22:35:32Z383db08
<p><b>Delete ‘u/w.w.v’</b> (by bouncepaw at 24 Nov 23 22:35 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/u/w.w.v">u/w.w.v</a>
</p>
<pre><code>diff --git a/u/w.w.v.myco b/u/w.w.v.myco
deleted file mode 100644
index be4001b..0000000
--- a/u/w.w.v.myco
+++ /dev/null
@@ -1 +0,0 @@
-Not supporting any warz,as anarcho still luv c.c.c.p
\ No newline at end of file
</code></pre>
bouncepawEdit ‘on_hierarchies’ by bouncepaw2023-11-24T22:34:49Z8c15119
<p><b>Edit ‘on_hierarchies’</b> (by bouncepaw at 24 Nov 23 22:34 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/on_hierarchies">on_hierarchies</a>
</p>
<pre><code>diff --git a/on_hierarchies.myco b/on_hierarchies.myco
index 6e83be8..d15e359 100644
--- a/on_hierarchies.myco
+++ b/on_hierarchies.myco
@@ -21 +21,3 @@ And someday in the future, we will delete it completely and forget it a nightmar
To the world without strict hierarchies 🚀
+
+**Update.** The sibling list is long gone. Getting rid of it proved to be a good choice.
\ No newline at end of file
</code></pre>
bouncepawRename ‘essay/on_hierarchies’ to ‘on_hierarchies’ recursively by bouncepaw2023-11-24T22:33:54Z2c779f7
<p><b>Rename ‘essay/on_hierarchies’ to ‘on_hierarchies’ recursively</b> (by bouncepaw at 24 Nov 23 22:33 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/essay/on_hierarchies">essay/on_hierarchies</a><span aria-hidden="true">, </span><a href="/hypha/on_hierarchies">on_hierarchies</a>
</p>
<pre><code>diff --git a/essay/on_hierarchies.myco b/essay/on_hierarchies.myco
deleted file mode 100644
index 6e83be8..0000000
--- a/essay/on_hierarchies.myco
+++ /dev/null
@@ -1,21 +0,0 @@
-Since the very inception, Mycorrhiza had a major focus on **hierarchies**. You were meant to organize your hyphae into tree-like structures, having a strict logic on how things are placed. The user interface encouraged this behaviour:
-
-* The list of sibling hyphae prevented you from having too many root-level hyphae. Root hyphae shall be major topics which smaller hyphae are collected under. And you don't want to have too many of them, because the list would become long and ugly.
-* The list of subhyphae made it possible to see all subhyphae at once. MediaWiki and MoinMoin don't have that, you have to write lists of subhyphae (or subpages, that's what they call it) manually.
-
-Two years later, this practice proved to be harmful.
-
-Turned out, the whole idea of hierarchies is totally intuitive to people. We are all used to filesystems and stuff like that, right?
-
-But the classic problem of this approach emerged quickly.
-* What if an article fits two topics? Where do I save it? Dunno. Save it somewhere.
-* Creating hyphae that do not fit the established hierachies is complicated. What to do? Create it in a wrong place, yeah.
-* Also, linking is a big hassle because all hypha names are long.
-
-All in all, while it's all cute, it is going to be removed. How? Removing the list of siblings removed all that encouragement of deep nested hypha trees and turns Mycorrhiza into a more classic graph-like environment. Experiments on some wikis with the list being hidden were successful.
-
-But we cannot simply remove it, because wikis depend on it. We will disable it. Those who really need it (oldtimers), will be able to enable it. Newcomers will just not have it enabled.
-
-And someday in the future, we will delete it completely and forget it a nightmare.
-
-To the world without strict hierarchies 🚀
diff --git a/on_hierarchies.myco b/on_hierarchies.myco
new file mode 100644
index 0000000..6e83be8
--- /dev/null
+++ b/on_hierarchies.myco
@@ -0,0 +1,21 @@
+Since the very inception, Mycorrhiza had a major focus on **hierarchies**. You were meant to organize your hyphae into tree-like structures, having a strict logic on how things are placed. The user interface encouraged this behaviour:
+
+* The list of sibling hyphae prevented you from having too many root-level hyphae. Root hyphae shall be major topics which smaller hyphae are collected under. And you don't want to have too many of them, because the list would become long and ugly.
+* The list of subhyphae made it possible to see all subhyphae at once. MediaWiki and MoinMoin don't have that, you have to write lists of subhyphae (or subpages, that's what they call it) manually.
+
+Two years later, this practice proved to be harmful.
+
+Turned out, the whole idea of hierarchies is totally intuitive to people. We are all used to filesystems and stuff like that, right?
+
+But the classic problem of this approach emerged quickly.
+* What if an article fits two topics? Where do I save it? Dunno. Save it somewhere.
+* Creating hyphae that do not fit the established hierachies is complicated. What to do? Create it in a wrong place, yeah.
+* Also, linking is a big hassle because all hypha names are long.
+
+All in all, while it's all cute, it is going to be removed. How? Removing the list of siblings removed all that encouragement of deep nested hypha trees and turns Mycorrhiza into a more classic graph-like environment. Experiments on some wikis with the list being hidden were successful.
+
+But we cannot simply remove it, because wikis depend on it. We will disable it. Those who really need it (oldtimers), will be able to enable it. Newcomers will just not have it enabled.
+
+And someday in the future, we will delete it completely and forget it a nightmare.
+
+To the world without strict hierarchies 🚀
</code></pre>
bouncepawDelete ‘u/congtyvesinhaz’ by bouncepaw2023-11-24T22:12:30Zba0a6ec
<p><b>Delete ‘u/congtyvesinhaz’</b> (by bouncepaw at 24 Nov 23 22:12 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/u/congtyvesinhaz">u/congtyvesinhaz</a>
</p>
<pre><code>diff --git a/u/congtyvesinhaz.myco b/u/congtyvesinhaz.myco
deleted file mode 100644
index 0667c28..0000000
--- a/u/congtyvesinhaz.myco
+++ /dev/null
@@ -1,8 +0,0 @@
-AZ Clear la doi tac tin cay trong linh vuc ve sinh. Chung toi cung cap dich vu lam sach chat luong cho doanh nghiep va gia dinh. Doi ngu nhan vien duoc dao tao chuyen sau, kinh nghiem va san long dap ung moi yeu cau cua khach hang. Chung toi khong chi lam sach be mat ma con chu trong den su than thien voi moi truong va suc khoe. San pham ve sinh duoc chon lua can than de dam bao an toan cho nguoi su dung va moi truong. Cam ket "Su sach se mang lai cuoc song tot dep hon", chung toi khong ngung no luc de dap ung va vuot qua ky vong cua khach hang. Hay de AZ Clear cham soc khong gian song cua ban, mang den trai nghiem ve sinh hoan hao
-https://azcleard.com/dich-vu/tap-vu-van-phong-tai-tp-ho-chi-minh-204.html
-https://azcleard.com/dich-vu/dich-vu-cung-cap-nhan-vien-tap-vu-az-clear-296.html
-https://azcleard.com/dich-vu/ve-sinh-nha-cua-tphcm-173.html
-https://azcleard.com/dich-vu/dich-vu-ve-sinh-cong-nghiep-tai-tp-ho-chi-minh-180.html
-https://azcleard.com/
-https://azcleard.com/dich-vu/dich-vu-ve-sinh-nha-xuong-tphcm-184.html
-https://azcleard.com/dich-vu/dich-vu-danh-bong-san-go-chuyen-nghiep-290.html
</code></pre>
bouncepawEdit ‘authorization’ by bouncepaw2023-11-24T22:11:59Za9e9513
<p><b>Edit ‘authorization’</b> (by bouncepaw at 24 Nov 23 22:11 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/authorization">authorization</a>
</p>
<pre><code>diff --git a/authorization.myco b/authorization.myco
index 0db790b..338e839 100644
--- a/authorization.myco
+++ b/authorization.myco
@@ -3,2 +3,8 @@ By default, Mycorrhiza Wiki has no protection nor authorization, thus anyone who
= Groups
-Every user is part of a group. The groups are `anon`, `editor`, `trusted`, `moderator`, `admin`. They have different rights. Anonymous users can only read hyphae, editors can edit hyphae, trusted editors can also rename them, moderators can delete them, and administrators can do everything.
\ No newline at end of file
+Every user is part of a group. The groups are `anon`, `editor`, `trusted`, `moderator`, `admin`. They have different rights. Anonymous users can only read hyphae, editors can edit hyphae, trusted editors can also rename them, moderators can delete them, and administrators can do everything.
+
+= Additional authorization techniques
+[[Basic Auth]] is provided by most web servers. You will probably want to use one for HTTPS, so you might as well consider using it, if you don't like Mycorrhiza's approach to authorization.
+
+There is a fork of Mycorrhiza with built-in support for Tailscale:
+=> https://git.sr.ht/~lewiscowper/mycorrhiza
\ No newline at end of file
</code></pre>
bouncepawEdit ‘u/congtyvesinhaz’ by congtyvesinhaz2023-11-13T07:56:27Zbdc8922
<p><b>Edit ‘u/congtyvesinhaz’</b> (by congtyvesinhaz at 13 Nov 23 07:56 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/u/congtyvesinhaz">u/congtyvesinhaz</a>
</p>
<pre><code>diff --git a/u/congtyvesinhaz.myco b/u/congtyvesinhaz.myco
index 9845573..0667c28 100644
--- a/u/congtyvesinhaz.myco
+++ b/u/congtyvesinhaz.myco
@@ -1,4 +1,8 @@
AZ Clear la doi tac tin cay trong linh vuc ve sinh. Chung toi cung cap dich vu lam sach chat luong cho doanh nghiep va gia dinh. Doi ngu nhan vien duoc dao tao chuyen sau, kinh nghiem va san long dap ung moi yeu cau cua khach hang. Chung toi khong chi lam sach be mat ma con chu trong den su than thien voi moi truong va suc khoe. San pham ve sinh duoc chon lua can than de dam bao an toan cho nguoi su dung va moi truong. Cam ket "Su sach se mang lai cuoc song tot dep hon", chung toi khong ngung no luc de dap ung va vuot qua ky vong cua khach hang. Hay de AZ Clear cham soc khong gian song cua ban, mang den trai nghiem ve sinh hoan hao
-<a href="https://azcleard.com/">cong ty ve sinh</a>
-[URL="https://azcleard.com/"]cong ty ve sinh[/URL]
+https://azcleard.com/dich-vu/tap-vu-van-phong-tai-tp-ho-chi-minh-204.html
+https://azcleard.com/dich-vu/dich-vu-cung-cap-nhan-vien-tap-vu-az-clear-296.html
+https://azcleard.com/dich-vu/ve-sinh-nha-cua-tphcm-173.html
+https://azcleard.com/dich-vu/dich-vu-ve-sinh-cong-nghiep-tai-tp-ho-chi-minh-180.html
https://azcleard.com/
+https://azcleard.com/dich-vu/dich-vu-ve-sinh-nha-xuong-tphcm-184.html
+https://azcleard.com/dich-vu/dich-vu-danh-bong-san-go-chuyen-nghiep-290.html
</code></pre>
congtyvesinhazCreate ‘u/congtyvesinhaz’: cong ty ve sinh AZ Clear by congtyvesinhaz2023-11-13T07:56:07Z5b3df7f
<p><b>Create ‘u/congtyvesinhaz’: cong ty ve sinh AZ Clear</b> (by congtyvesinhaz at 13 Nov 23 07:56 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/u/congtyvesinhaz">u/congtyvesinhaz</a>
</p>
<pre><code>diff --git a/u/congtyvesinhaz.myco b/u/congtyvesinhaz.myco
new file mode 100644
index 0000000..9845573
--- /dev/null
+++ b/u/congtyvesinhaz.myco
@@ -0,0 +1,4 @@
+AZ Clear la doi tac tin cay trong linh vuc ve sinh. Chung toi cung cap dich vu lam sach chat luong cho doanh nghiep va gia dinh. Doi ngu nhan vien duoc dao tao chuyen sau, kinh nghiem va san long dap ung moi yeu cau cua khach hang. Chung toi khong chi lam sach be mat ma con chu trong den su than thien voi moi truong va suc khoe. San pham ve sinh duoc chon lua can than de dam bao an toan cho nguoi su dung va moi truong. Cam ket "Su sach se mang lai cuoc song tot dep hon", chung toi khong ngung no luc de dap ung va vuot qua ky vong cua khach hang. Hay de AZ Clear cham soc khong gian song cua ban, mang den trai nghiem ve sinh hoan hao
+<a href="https://azcleard.com/">cong ty ve sinh</a>
+[URL="https://azcleard.com/"]cong ty ve sinh[/URL]
+https://azcleard.com/
</code></pre>
congtyvesinhazEdit ‘u/bouncepaw’ by bouncepaw2023-11-12T18:15:53Z456daaa
<p><b>Edit ‘u/bouncepaw’</b> (by bouncepaw at 12 Nov 23 18:15 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/u/bouncepaw">u/bouncepaw</a>
</p>
<pre><code>diff --git a/u/bouncepaw.myco b/u/bouncepaw.myco
index bdcf102..2c8bdab 100644
--- a/u/bouncepaw.myco
+++ b/u/bouncepaw.myco
@@ -5,7 +5,7 @@ I am the developer of Mycorrhiza Wiki. I am also known as Timur Ismagilov and by
= On other platforms
-* [[https://melanocarpa.lesarbr.es | Digital garden]]
+* [[https://garden.bouncepaw.com | Digital garden]]
+* [[https://bouncepaw.com |My website]]
* [[https://t.me/bpblog|Telegram channel]]
* [[https://t.me/bouncepaw|Telegram profile]]
-* [[https://bouncepaw.github.io/|A website]]
-* [[http://lesarbr.es|Les Arbres]]
+* [[https://bouncepaw.github.io/|Old Russian blog]]
* [[https://boosty.to/bouncepaw|Boosty (you can donate me here)]]
</code></pre>
bouncepawEdit ‘guide’: Revert vandalism by bouncepaw2023-10-22T11:13:34Za57ba62
<p><b>Edit ‘guide’: Revert vandalism</b> (by bouncepaw at 22 Oct 23 11:13 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/guide">guide</a>
</p>
<pre><code>diff --git a/guide.myco b/guide.myco
index 21bb637..61f6e40 100644
--- a/guide.myco
+++ b/guide.myco
@@ -8,2 +8,3 @@ Collection of **guides** and instructions regarding Mycorrhiza Wiki
=> openbsd | Installation on OpenBSD
+=> Systemd 101
=> Using without git
</code></pre>
bouncepawCreate ‘systemd_101’: Revert vandalism by bouncepaw2023-10-22T11:13:07Z3f3aafe
<p><b>Create ‘systemd_101’: Revert vandalism</b> (by bouncepaw at 22 Oct 23 11:13 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/systemd_101">systemd_101</a>
</p>
<pre><code>diff --git a/systemd_101.myco b/systemd_101.myco
new file mode 100644
index 0000000..12c6132
--- /dev/null
+++ b/systemd_101.myco
@@ -0,0 +1,151 @@
+or **The Definitive Guide to Setting Up Systemd for Mycorrhizal Affairs**
+
+//**Disclaimer:** I hate systemd.//
+
+= Introduction
+
+Okay, so you got your systemd-based distro on a server and Mycorrhiza running in a tmux. But with experience you realize that running software without persistent logging, no crash reporting and unreliable shell scripts for restarting (if you even have any) is not how you roll in production. Good news—I got your back. We'll walk through setting up a user service for systemd from scratch, with auto-restart, failure notifications and no root access for manipulating service state.
+
+//A hash symbol (`#`) in the beginning means you need to run the command as root. Similarly, a dollar sign (`$`) means you need to run the command as a normal user.//
+
+= Setting up
+
+First, we need to create a separate user for the wiki. Using your own profile (or even worse, the superuser) is very insecure; you're not protected from hack attempts or vulnerabilities in the software, and you really don't want to compromise some of your more secure stuff. Creating a new user is as simple as running one command:
+
+```sh
+# useradd -m myco
+```
+
+If you're not planning to give anyone access to the server via this user, you could use `-s /usr/sbin/nologin` to disable shell access and prevent anyone from logging in. Then you would need to add `-s /bin/bash` to every `su` command that logs into the account in order to get a working shell.
+
+Now, let's login into our newly created account:
+
+```sh
+# su - myco
+```
+
+At this point, you can add some SSH keys to `.ssh/authorized_keys` in order to be able to login using SSH directly into `myco` user without additional `su` hop.
+
+`systemd` has two modes:
+* System mode (`--system`) is assumed automatically when systemd is running with PID 1. It acts as the global init system and automatically runs system services.
+* User mode (`--user`) is used when, well, it's not running in system mode. One systemd instance is automatically started for every user logged in (not per-session, but rather per-user) and killed after the last session is closed. The major advantage is that you can run `systemctl` without root access.
+
+Sounds great! But, we need systemd to not automatically exit when we log out. We want our wiki to be running even without us logged in, right? For that to work we can enable systemd linger:
+
+```sh
+$ loginctl enable-linger $USER
+```
+
+Great! Now we have our own systemd user instance running and even automatically starting at boot. Let's test if it works:
+
+```sh
+$ systemctl --user
+```
+
+If this command fails with a "failed to connect to bus" error, that means we don't have required environment variables set because we logged in "brutally" using `su`. You see, when you login via SSH or a login prompt in the console, your authentication request is processed by PAM, and if your credentials are correct, the very same service also runs pam_env and sets proper environment variables. But it doesn't run when you change the user by running `su`, because practically what you're doing is that you're just running an interactive shell as that user, not even properly logging in.
+
+As a workaround, you can just disconnect right now and login via SSH instead, or run the following command:
+
+```sh
+export XDG_RUNTIME_DIR=/run/user/$UID
+```
+
+Now the previous `systemctl` command should work fine! If it's not, try logging in via SSH. If it still doesn't work, well, you're on your own :)
+
+= Service file
+
+Let's create some directories:
+
+```
+mkdir -p .config/systemd/user
+```
+
+Open up an editor for `.config/systemd/user/mycorrhiza.service`. This service config will be pretty simple:
+
+```
+[Unit]
+Description=Mycorrhiza Wiki
+
+[Service]
+ExecStart=/usr/bin/mycorrhiza -listen-addr 127.0.0.1:8080 %h/wiki
+Restart=on-failure
+
+[Install]
+WantedBy=default.target
+```
+
+Replace the path to the executable if yours is not in `/usr/bin`. This service configuration will start the wiki from `$HOME/wiki` directory and listen on `127.0.0.1:8080`.
+
+Now let's enable the service and start it:
+
+```sh
+$ systemctl --user enable mycorrhiza
+$ systemctl --user start mycorrhiza
+```
+
+Check the logs:
+
+```sh
+$ journalctl --user -u mycorrhiza
+```
+
+Your wiki should be running and be accessible at `127.0.0.1:8080` at the moment. It should also automatically start on boot, if your server gets rebooted or shut down.
+
+= Failure notifications in Telegram
+
+Now let's setup some sort of a notification if the wiki crashes anyway. It's not really comfortable to learn about your website being down from your users.
+
+It'll be quite simple. First, create a Telegram bot in [[https://t.me/BotFather | @BotFather]] and get its API token. Then, create a shell script at `~/notify.sh` with the following contents:
+
+```sh
+#!/bin/sh
+TOKEN=
+CHAT_ID=
+TEXT="❌ Wiki *crashed*"
+
+curl -s "https://api.telegram.org/bot$TOKEN/sendMessage" \
+ -d "chat_id=$CHAT_ID" \
+ -d "text=$TEXT" \
+ -d "parse_mode=markdown"
+```
+
+Paste in your Bot API token and chat ID in the corresponding variables. You can get the chat ID using @myidbot. Don't forget to run chmod on the script:
+
+```sh
+$ chmod +x notify.sh
+```
+
+Now let's create a service at `.config/systemd/user/failure-notification@.service`:
+
+```
+[Unit]
+Description=Failure notification sender
+After=network.target
+
+[Service]
+ExecStart=%h/notify.sh %i
+```
+
+And modify `.config/systemd/user/mycorrhiza.service` appropriately:
+
+```
+[Unit]
+# fields omitted
+OnFailure=failure-notification@%i
+
+[Service]
+# further contents omitted
+```
+
+Now reload the service files:
+
+```
+$ systemctl --user daemon-reload
+```
+
+**You're incredible!**
+
+= Cheatsheet
+
+* Control the service: `systemctl --user start|stop|restart|status mycorrhiza`
+* View logs: `journalctl --user -u mycorrhiza`
\ No newline at end of file
</code></pre>
bouncepawEdit ‘instances’ by bouncepaw2023-10-09T21:35:09Z73a1f89
<p><b>Edit ‘instances’</b> (by bouncepaw at 09 Oct 23 21:35 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/instances">instances</a>
</p>
<pre><code>diff --git a/instances.myco b/instances.myco
index d717cd2..1cd7769 100644
--- a/instances.myco
+++ b/instances.myco
@@ -5,3 +5,3 @@ This is a list of some Mycorrhiza wikis. Feel free to add your own to the list!
* [[https://klava.wiki]]: a wiki for a Russian keyboard community
-* [[https://melanocarpa.lesarbr.es]]: [[u/bouncepaw]]'s digital darden.
+* [[https://garden.bouncepaw.com]]: [[u/bouncepaw]]'s digital darden.
* [[https://garden.danilax86.space]]: digital garden
</code></pre>
bouncepawEdit ‘guide’ by drcheems2023-08-27T22:45:42Z29aad8e
<p><b>Edit ‘guide’</b> (by drcheems at 27 Aug 23 22:45 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/guide">guide</a>
</p>
<pre><code>diff --git a/guide.myco b/guide.myco
index 944153d..21bb637 100644
--- a/guide.myco
+++ b/guide.myco
@@ -8,3 +8,2 @@ Collection of **guides** and instructions regarding Mycorrhiza Wiki
=> openbsd | Installation on OpenBSD
-=> systemd 101
=> Using without git
</code></pre>
drcheemsDelete ‘systemd_101’ by drcheems2023-08-27T22:45:36Z4cae7ab
<p><b>Delete ‘systemd_101’</b> (by drcheems at 27 Aug 23 22:45 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/systemd_101">systemd_101</a>
</p>
<pre><code>diff --git a/systemd_101.myco b/systemd_101.myco
deleted file mode 100644
index 6402c79..0000000
--- a/systemd_101.myco
+++ /dev/null
@@ -1,151 +0,0 @@
-or **The Definitive Guide to Setting Up Systemd for Mycorrhizal Affairs**
-
-//**Disclaimer:** I hate systemd.//
-
-= Introduction
-
-Okay, so you got your systemd-based distro on a server and Mycorrhiza running in a tmux. But with experience you realize that running software without persistent logging, no crash reporting and unreliable shell scripts for restarting (if you even have any) is not how you roll in production. Good news—I got your back. We'll walk through setting up a user service for systemd from scratch, with auto-restart, failure notifications and no root access for manipulating service state.
-
-//A hash symbol (`#`) in the beginning means you need to run the command as root. Similarly, a dollar sign (`$`) means you need to run the command as a normal user.//
-
-= Setting up
-
-First, we need to create a separate user for the wiki. Using your own profile (or even worse, the superuser) is very insecure; you're not protected from hack attempts or vulnerabilities in the software, and you really don't want to compromise some of your more secure stuff. Creating a new user is as simple as running one command:
-
-```sh
-# useradd -m myco
-```
-
-If you're not planning to give anyone access to the server via this user, you could use `-s /usr/sbin/nologin` to disable shell access and prevent anyone from logging in. Then you would need to add `-s /bin/bash` to every `su` command that logs into the account in order to get a working shell.
-
-Now, let's login into our newly created account:
-
-```sh
-# su - myco
-```
-
-At this point, you can add some SSH keys to `.ssh/authorized_keys` in order to be able to login using SSH directly into `myco` user without additional `su` hop.
-
-`systemd` has two modes:
-* System mode (`--system`) is assumed automatically when systemd is running with PID 1. It acts as the global init system and automatically runs system services.
-* User mode (`--user`) is used when, well, it's not running in system mode. One systemd instance is automatically started for every user logged in (not per-session, but rather per-user) and killed after the last session is closed. The major advantage is that you can run `systemctl` without root access.
-
-Sounds great! But, we need systemd to not automatically exit when we log out. We want our wiki to be running even without us logged in, right? For that to work we can enable systemd linger:
-
-```sh
-$ loginctl enable-linger $USER
-```
-
-Great! Now we have our own systemd user instance running and even automatically starting at boot. Let's test if it works:
-
-```sh
-$ systemctl --user
-```
-
-If this command fails with a "failed to connect to bus" error, that means we don't have required environment variables set because we logged in "brutally" using `su`. You see, when you login via SSH or a login prompt in the console, your authentication request is processed by PAM, and if your credentials are correct, the very same service also runs pam_env and sets proper environment variables. But it doesn't run when you change the user by running `su`, because practically what you're doing is that you're just running an interactive shell as that user, not even properly logging in.
-
-As a workaround, you can just disconnect right now and login via SSH instead, or run the following command:
-
-```sh
-export XDG_RUNTIME_DIR=/run/user/$UID
-```
-
-Now the previous `systemctl` command should work fine! If it's not, try logging in via SSH. If it still doesn't work, well, you're on your own :)
-
-= Service file
-
-Let's create some directories:
-
-```
-mkdir -p .config/systemd/user
-```
-
-Open up an editor for `.config/systemd/user/mycorrhiza.service`. This service config will be pretty simple:
-
-```
-[Unit]
-Description=Mycorrhiza Wiki
-
-[Service]
-ExecStart=/usr/bin/mycorrhiza -listen-addr 127.0.0.1:8080 %h/wiki
-Restart=on-failure
-
-[Install]
-WantedBy=default.target
-```
-
-Replace the path to the executable if yours is not in `/usr/bin`. This service configuration will start the wiki from `$HOME/wiki` directory and listen on `127.0.0.1:8080`.
-
-Now let's enable the service and start it:
-
-```sh
-$ systemctl --user enable mycorrhiza
-$ systemctl --user start mycorrhiza
-```
-
-Check the logs:
-
-```sh
-$ journalctl --user -u mycorrhiza
-```
-
-Your wiki should be running and be accessible at `127.0.0.1:8080` at the moment. It should also automatically start on boot, if your server gets rebooted or shut down.
-
-= Failure notifications in Telegram
-
-Now let's setup some sort of a notification if the wiki crashes anyway. It's not really comfortable to learn about your website being down from your users.
-
-It'll be quite simple. First, create a Telegram bot in [[https://t.me/BotFather | @BotFather]] and get its API token. Then, create a shell script at `~/notify.sh` with the following contents:
-
-```sh
-#!/bin/sh
-TOKEN=
-CHAT_ID=
-TEXT="❌ Wiki *crashed*"
-
-curl -s "https://api.telegram.org/bot$TOKEN/sendMessage" \
- -d "chat_id=$CHAT_ID" \
- -d "text=$TEXT" \
- -d "parse_mode=markdown"
-```
-
-Paste in your Bot API token and chat ID in the corresponding variables. You can get the chat ID using @myidbot. Don't forget to run chmod on the script:
-
-```sh
-$ chmod +x notify.sh
-```
-
-Now let's create a service at `.config/systemd/user/failure-notification@.service`:
-
-```
-[Unit]
-Description=Failure notification sender
-After=network.target
-
-[Service]
-ExecStart=%h/notify.sh %i
-```
-
-And modify `.config/systemd/user/mycorrhiza.service` appropriately:
-
-```
-[Unit]
-# fields omitted
-OnFailure=failure-notification@%i
-
-[Service]
-# further contents omitted
-```
-
-Now reload the service files:
-
-```
-$ systemctl --user daemon-reload
-```
-
-**You're incredible!**
-
-= Cheatsheet
-
-* Control the service: `systemctl --user start|stop|restart|status mycorrhiza`
-* View logs: `journalctl --user -u mycorrhiza`
</code></pre>
drcheemsCreate ‘spec/tokens’ by bouncepaw2023-08-05T22:54:02Z331346c
<p><b>Create ‘spec/tokens’</b> (by bouncepaw at 05 Aug 23 22:54 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/spec/tokens">spec/tokens</a>
</p>
<pre><code>diff --git a/spec/tokens.myco b/spec/tokens.myco
new file mode 100644
index 0000000..2a27273
--- /dev/null
+++ b/spec/tokens.myco
@@ -0,0 +1,21 @@
+**Tokens** are defined sequences of characters. The Mycomarkup lexer reads them, lists them. The sequences of characters that did not match any token definition are called NonToken:s.
+
+= Tokens
+table {
+! Characters ! Tokens produced
+start of document | LineStart
+\ | Backslash
+\{ | Open
+\} | Close
+\==== | Heading4
+\=== | Heading3
+\== | Heading2
+\= | Heading1
+\=> | Rocket
+space, tab | Space
+newline | LineEnd LineStart
+\``` | TripleBacktick
+---- | FourHyphens
+}
+
+got tired
\ No newline at end of file
</code></pre>
bouncepawEdit ‘spec’ by bouncepaw2023-08-05T22:46:44Zb2691bc
<p><b>Edit ‘spec’</b> (by bouncepaw at 05 Aug 23 22:46 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/spec">spec</a>
</p>
<pre><code>diff --git a/spec.myco b/spec.myco
index 88b50d6..911afd8 100644
--- a/spec.myco
+++ b/spec.myco
@@ -8,2 +8,3 @@
=> ./grammar
+=> ./tokens
=> ./blocks
</code></pre>
bouncepawEdit ‘spec/grammar’ by bouncepaw2023-08-05T22:46:25Zc952502
<p><b>Edit ‘spec/grammar’</b> (by bouncepaw at 05 Aug 23 22:46 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/spec/grammar">spec/grammar</a>
</p>
<pre><code>diff --git a/spec/grammar.myco b/spec/grammar.myco
index 6938b97..ca3c88f 100644
--- a/spec/grammar.myco
+++ b/spec/grammar.myco
@@ -15,2 +15,2 @@ Comments are started with #
-The rest is coined on the go
+The rest is coined on the go. I also contradict myself.
\ No newline at end of file
</code></pre>
bouncepawEdit ‘spec/blocks’ by bouncepaw2023-08-05T22:45:22Zfec66d3
<p><b>Edit ‘spec/blocks’</b> (by bouncepaw at 05 Aug 23 22:45 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/spec/blocks">spec/blocks</a>
</p>
<pre><code>diff --git a/spec/blocks.myco b/spec/blocks.myco
index 1326348..5f1fdca 100644
--- a/spec/blocks.myco
+++ b/spec/blocks.myco
@@ -124,6 +124,12 @@ ThematicBreakAnchor ::= (!NL)+
= Image gallery
-* [[./image gallery]]
+```
+ImageGallery = Img [ ImgDescriptor ] Open ImgEntry ( Close | EOD )
+ImgDescriptor = # not { or NL
+ImgEntry = ( LineStart LWS LineEnd ) * LineStart Target [ Pipe LWS Sizes ] LWS*
+
+got tired here
+```
= List
-* [[./list]]
+...
@@ -188,2 +194,2 @@ TableCellWithoutMarker ::=
= Transclusion
-Not written.
\ No newline at end of file
+...
\ No newline at end of file
</code></pre>
bouncepawEdit ‘spec/blocks’ by bouncepaw2023-08-05T22:37:39Z590b3e4
<p><b>Edit ‘spec/blocks’</b> (by bouncepaw at 05 Aug 23 22:37 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/spec/blocks">spec/blocks</a>
</p>
<pre><code>diff --git a/spec/blocks.myco b/spec/blocks.myco
index 214a8af..1326348 100644
--- a/spec/blocks.myco
+++ b/spec/blocks.myco
@@ -16,2 +16,34 @@ TopLevelBlock ::=
+= Keywords
+```
+Token =
+ Backslash
+ | LineEnd
+ | LineStart
+ | EOD # End Of Document
+ | Open
+ | Close
+ | HeadingToken1 | HeadingToken2 | HeadingToken3 | HeadingToken4
+ | TripleBacktick
+ | FourHyphens
+ | Img
+ | Rocket
+ | ListMarker
+
+Backslash = "\"
+LineStart = ? Found right after LineEnd, Open and Close ?
+LineEnd = "\n"
+Open = "{"
+Close = "}"
+HeadingToken1 = LineStart "=" LWS
+HeadingToken2 = LineStart "==" LWS
+HeadingToken3 = LineStart "===" LWS
+HeadingToken4 = LineStart "====" LWS
+TripleBacktick = LineStart "```"
+FourHyphens = LineStart "----"
+Img = LineStart "img" LWS
+Rocket = LineStart "=>"
+ListMarker = LineStart "*"+ ( "." | "v" | "x" )* LWS
+```
+
= Formatted
@@ -98,3 +130,5 @@ ThematicBreakAnchor ::= (!NL)+
= Launchpad
-* [[./launch pad]]
+```
+Launchpad = Rocket LinkTarget [ Pipe [ !NL + ] ] LineEnd;
+```
</code></pre>
bouncepawEdit ‘spec/blocks’ by bouncepaw2023-08-05T22:17:45Z734e564
<p><b>Edit ‘spec/blocks’</b> (by bouncepaw at 05 Aug 23 22:17 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/spec/blocks">spec/blocks</a>
</p>
<pre><code>diff --git a/spec/blocks.myco b/spec/blocks.myco
index f88e49e..214a8af 100644
--- a/spec/blocks.myco
+++ b/spec/blocks.myco
@@ -2,6 +2,5 @@
MycomarkupDocument ::=
- Block*
-Block ::=
- Formatted
- | Paragraph
+ TopLevelBlock*
+TopLevelBlock ::=
+ Paragraph
| Heading
@@ -55,3 +54,3 @@ AutoLink ::=
```
-Paragraph ::= ( LineBeginning Formatted LineEnding )*
+Paragraph ::= ( LineBeginning Formatted NL )*
```
</code></pre>
bouncepawEdit ‘spec/blocks’ by bouncepaw2023-08-05T22:12:05Z8e98fca
<p><b>Edit ‘spec/blocks’</b> (by bouncepaw at 05 Aug 23 22:12 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/spec/blocks">spec/blocks</a>
</p>
<pre><code>diff --git a/spec/blocks.myco b/spec/blocks.myco
index e4c4abd..f88e49e 100644
--- a/spec/blocks.myco
+++ b/spec/blocks.myco
@@ -18,3 +18,3 @@ Block ::=
= Formatted
-**Formatted block** is the most fundamental block in Mycomarkup. It represents a formatted text.
+**Formatted block** is the most fundamental block in Mycomarkup. It represents a line formatted text.
@@ -36,7 +36,7 @@ Grammar:
Formatted ::=
- FormattedLine+
-FormattedLine ::=
Span+
Span ::=
- TextSpan | FormattingMarker | InlineLink
+ TextSpan | Code | FormattingMarker | InlineLink | AutoLink
+Code ::=
+ "`" Text "`"
FormattingMarker ::=
@@ -47,2 +47,4 @@ InlineLink ::=
| "[[" LWS LinkTarget LWS "|" LWS LinkDisplayedText LWS "]]" # link with both target and displayed text
+AutoLink ::=
+ ...
```
@@ -50,6 +52,6 @@ InlineLink ::=
= Paragraph
-**Paragraph block** is the container of one [[../Formatted]] block.
+**Paragraph block** is the container of one Formatted block.
```
-Paragraph ::= LineBeginning Formatted
+Paragraph ::= ( LineBeginning Formatted LineEnding )*
```
</code></pre>
bouncepawEdit ‘spec/blocks’ by bouncepaw2023-08-05T22:02:39Z4b4c80f
<p><b>Edit ‘spec/blocks’</b> (by bouncepaw at 05 Aug 23 22:02 UTC)</p>
<p>Hyphae affected:
<a href="/hypha/spec/blocks">spec/blocks</a>
</p>
<pre><code>diff --git a/spec/blocks.myco b/spec/blocks.myco
index fb33d03..e4c4abd 100644
--- a/spec/blocks.myco
+++ b/spec/blocks.myco
@@ -18,5 +18,5 @@ Block ::=
= Formatted
-**Formatted block** is the most fundamental block in Mycomarkup. It represents a formatted text of the same significance.
+**Formatted block** is the most fundamental block in Mycomarkup. It represents a formatted text.
-Formatted block does not appear by itself. It is always part of something else. The most common container for Formatted is [[../Paragraph]]. This is how a Paragraph containing a Formatted might look:
+Formatted block does not appear by itself. It is always part of something else. The most common container for Formatted is Paragraph. This is how a Paragraph containing a Formatted might look:
@@ -31,2 +31,3 @@ Formatted has these types of elements inside. They are called **spans**, and are
* **Inline links** have a //target// and an optional //displayed text//. If there is no displayed text given by the writer, it is the same as target. Empty links are removed from the output.
+* **Automatic links**
@@ -49,16 +50,41 @@ InlineLink ::=
= Paragraph
-* [[./paragraph]]
+**Paragraph block** is the container of one [[../Formatted]] block.
-** [[./inline link]]
-** [[./automatic link]]
-** [[./span]]
+```
+Paragraph ::= LineBeginning Formatted
+```
= Heading
-* [[./heading]]
+**Heading** introduces a new section. Headings go to the table of contents.
+
+```
+Heading ::=
+ (Heading1
+ | Heading2
+ | Heading3
+ | Heading4) NL
+Heading1 ::= "=" LWS FormattedLine
+Heading2 ::= "==" LWS FormattedLine
+Heading3 ::= "===" LWS FormattedLine
+Heading4 ::= "====" LWS FormattedLine
+```
= Codeblock
-* [[./codeblock]]
+**Codeblock** is a preformatted block of code.
+
+```
+CodeBlock ::=
+ LineBeginning "```" Language? NL CodeBlockContents (NL "```" IgnoredText | EOD)
+Language ::= (!NL)+
+CodeBlockContents ::= CodeBlockLine*
+CodeBlockLine ::= SomeText NL
+```
= Thematic break
-* [[./thematic break]]
+**Thematic break** introduces a new section without a heading, it breaks themes.
+
+```
+ThematicBreak ::= "----" ThematicBreakAnchor? NL
+ThematicBreakAnchor ::= (!NL)+
+```
</code></pre>
bouncepaw