~jadedctrl/jam-xwx-moe

Showing details for patch 9fce8fcdfe022819eeab80544c18959792bcc144.
2023-05-13 (Sat), 6:01 PM - Jaidyn Ann - 9fce8fcdfe022819eeab80544c18959792bcc144

Aldoni 'bloat'-agordojn k datumojn

Summary of changes
31 files added
  • bloat/bloat.conf
  • bloat/instance/ktp/favicon.png
  • bloat/instance/ktp/fluoride.js
  • bloat/instance/ktp/style.css
  • bloat/instance/ŝablonoj/about.tmpl
  • bloat/instance/ŝablonoj/emoji.tmpl
  • bloat/instance/ŝablonoj/error.tmpl
  • bloat/instance/ŝablonoj/filters.tmpl
  • bloat/instance/ŝablonoj/footer.tmpl
  • bloat/instance/ŝablonoj/header.tmpl
  • bloat/instance/ŝablonoj/likedby.tmpl
  • bloat/instance/ŝablonoj/list.tmpl
  • bloat/instance/ŝablonoj/lists.tmpl
  • bloat/instance/ŝablonoj/mute.tmpl
  • bloat/instance/ŝablonoj/nav.tmpl
  • bloat/instance/ŝablonoj/notification.tmpl
  • bloat/instance/ŝablonoj/postform.tmpl
  • bloat/instance/ŝablonoj/quickreply.tmpl
  • bloat/instance/ŝablonoj/requestlist.tmpl
  • bloat/instance/ŝablonoj/retweetedby.tmpl
  • bloat/instance/ŝablonoj/root.tmpl
  • bloat/instance/ŝablonoj/search.tmpl
  • bloat/instance/ŝablonoj/settings.tmpl
  • bloat/instance/ŝablonoj/signin.tmpl
  • bloat/instance/ŝablonoj/status.tmpl
  • bloat/instance/ŝablonoj/thread.tmpl
  • bloat/instance/ŝablonoj/timeline.tmpl
  • bloat/instance/ŝablonoj/user.tmpl
  • bloat/instance/ŝablonoj/userlist.tmpl
  • bloat/instance/ŝablonoj/userlistitem.tmpl
  • bloat/instance/ŝablonoj/usersearch.tmpl
diff -rN -u old-jam-xwx-moe/bloat/bloat.conf new-jam-xwx-moe/bloat/bloat.conf
--- old-jam-xwx-moe/bloat/bloat.conf	1970-01-01 00:00:00.000000000 +0000
+++ new-jam-xwx-moe/bloat/bloat.conf	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,45 @@
+# Format:
+# - Lines starting with a '#' are ignored
+# - Key and Value are separated by a single '='
+# - Leading and trailing white spaces in Key and Value are ignored
+# - Quoting and multi-line values are not supported
+
+# Address to listen to. Value can be of "HOSTNAME:PORT" or "IP:PORT" form. In
+# case of empty HOSTNAME or IP, "0.0.0.0:PORT" is used.
+# Example: ":8080", "bloat.mydomain.com"
+listen_address=127.0.0.1:8090
+
+# Full URL of the website. Users will be redirected to this URL after
+# authentication.
+# Example: "http://localhost:8080", "https://bloat.mydomain.com"
+client_website=https://jam.xwx.moe:1337
+
+# Name of the client.
+client_name=Mancardo Jamada
+
+# Mastadon scopes used by the client.
+# See https://docs.joinmastodon.org/api/oauth-scopes/
+client_scope=read write follow
+
+# Path of directory containing template files.
+templates_path=instance/ŝablonoj
+
+# Path of directory containing static files (CSS and JS).
+static_directory=instance/ktp
+
+# Supported post formats. Value is a list of key:value pair separated by a ','.
+# Empty value will disable the format selection in frontend.
+post_formats=PlainText:text/plain,HTML:text/html,Markdown:text/markdown,BBCode:text/bbcode
+
+# Log file. Will log to stdout if value is empty.
+# log_file=log
+
+# In single instance mode, bloat will not ask for instance domain name and
+# user will be directly redirected to login form. User login from other
+# instances is not allowed in this mode.
+# Empty value disables single instance mode.
+single_instance=jam.xwx.moe
+
+# Path to custom CSS. Value can be a file path relative to the static directory.
+# or a URL starting with either "http://" or "https://".
+# custom_css=custom.css
Binary files old-jam-xwx-moe/bloat/instance/ktp/favicon.png and new-jam-xwx-moe/bloat/instance/ktp/favicon.png differ
diff -rN -u old-jam-xwx-moe/bloat/instance/ktp/fluoride.js new-jam-xwx-moe/bloat/instance/ktp/fluoride.js
--- old-jam-xwx-moe/bloat/instance/ktp/fluoride.js	1970-01-01 00:00:00.000000000 +0000
+++ new-jam-xwx-moe/bloat/instance/ktp/fluoride.js	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,332 @@
+// @license magnet:?xt=urn:btih:90dc5c0be029de84e523b9b3922520e79e0e6f08&dn=cc0.txt CC0
+
+var reverseActions = {
+	"like": "unlike",
+	"unlike": "like",
+	"retweet": "unretweet",
+	"unretweet": "retweet"
+};
+
+var csrfToken = "";
+var antiDopamineMode = false;
+
+function checkCSRFToken() {
+	var tag = document.querySelector("meta[name='csrf_token']");
+	if (tag)
+		csrfToken = tag.getAttribute("content");
+}
+
+function checkAntiDopamineMode() {
+	var tag = document.querySelector("meta[name='antidopamine_mode']");
+	if (tag)
+		antiDopamineMode = tag.getAttribute("content") === "true";
+}
+
+function http(method, url, body, type, success, error) {
+	var req = new XMLHttpRequest();
+	req.onload = function() {
+		if (this.status === 200 && typeof success === "function") {
+			success(this.responseText, this.responseType);
+		} else if (typeof error === "function") {
+			error(this.responseText);
+		}
+	};
+	req.onerror = function() {
+		if (typeof error === "function") {
+			error(this.responseText);
+		}
+	};
+	req.open(method, url);
+	req.setRequestHeader("Content-Type", type);
+	req.send(body);
+}
+
+function updateActionForm(id, f, action) {
+	f.querySelector("[type='submit']").value = action;
+	f.action = "/" + action + "/" + id;
+	f.dataset.action = action;
+}
+
+function handleLikeForm(id, f) {
+	f.onsubmit = function(event) {
+		event.preventDefault();
+
+		var action = f.dataset.action;
+		var forms = document.
+			querySelectorAll(".status-"+id+" .status-like");
+		for (var i = 0; i < forms.length; i++) {
+			updateActionForm(id, forms[i], reverseActions[action]);
+		}
+
+		var body = "csrf_token=" + encodeURIComponent(csrfToken);
+		var contentType = "application/x-www-form-urlencoded";
+		http("POST", "/fluoride/" + action + "/" + id, 
+			body, contentType, function(res, type) {
+
+			if (antiDopamineMode)
+				return;
+			var data = JSON.parse(res);
+			var count = data.data;
+			if (count === 0)
+				count = "";
+			var counts = document.
+				querySelectorAll(".status-"+id+" .status-like-count");
+			for (var i = 0; i < counts.length; i++) {
+				if (count > 0) {
+					counts[i].innerHTML = "(" + count + ")";
+				} else {
+					counts[i].innerHTML = "";
+				}
+			}
+		}, function(err) {
+			for (var i = 0; i < forms.length; i++) {
+				updateActionForm(id, forms[i], action);
+			}
+		});
+	}
+}
+
+function handleRetweetForm(id, f) {
+	f.onsubmit = function(event) {
+		event.preventDefault();
+
+		var action = f.dataset.action;
+		var forms = document.
+			querySelectorAll(".status-"+id+" .status-retweet");
+		for (var i = 0; i < forms.length; i++) {
+			updateActionForm(id, forms[i], reverseActions[action]);
+		}
+
+		var body = "csrf_token=" + encodeURIComponent(csrfToken);
+		var contentType = "application/x-www-form-urlencoded";
+		http("POST", "/fluoride/" + action + "/" + id, 
+			body, contentType, function(res, type) {
+
+			if (antiDopamineMode)
+				return;
+			var data = JSON.parse(res);
+			var count = data.data;
+			if (count === 0)
+				count = "";
+			var counts = document.
+				querySelectorAll(".status-"+id+" .status-retweet-count");
+			for (var i = 0; i < counts.length; i++) {
+				if (count > 0) {
+					counts[i].innerHTML = "(" + count + ")";
+				} else {
+					counts[i].innerHTML = "";
+				}
+			}
+		}, function(err) {
+			for (var i = 0; i < forms.length; i++) {
+				updateActionForm(id, forms[i], action);
+			}
+		});
+	}
+}
+
+function isInView(el) {
+	var ract = el.getBoundingClientRect();
+	if (ract.top > 0 && ract.bottom < window.innerHeight)
+		return true;
+	return false;
+}
+
+function handleReplyToLink(a) {
+	if (!a)
+		return;
+	var id = a.getAttribute("href");
+	if (!id || id[0] != "#")
+		return;
+	a.onmouseenter = function(event) {
+		var id = event.target.getAttribute("href");
+		var status = document.querySelector(id);
+		if (!status)
+			return;
+		if (isInView(status)) {
+			status.classList.add("highlight");
+		} else {
+			var copy = status.cloneNode(true);
+			copy.id = "reply-to-popup";
+			var ract = event.target.getBoundingClientRect();
+			copy.style["max-width"] = (window.innerWidth - ract.left - 32) + "px";
+			if (ract.top > window.innerHeight / 2) {
+				copy.style.bottom = (window.innerHeight - 
+					window.scrollY - ract.top) + "px";
+			}
+			event.target.parentElement.appendChild(copy);
+		}
+	}
+	a.onmouseleave = function(event) {
+		var popup = document.getElementById("reply-to-popup");
+		if (popup) {
+			event.target.parentElement.removeChild(popup);    
+		} else {
+			var id = event.target.getAttribute("href");
+			document.querySelector(id)
+				.classList.remove("highlight");
+		}
+	}
+}
+
+function handleReplyLink(a) {
+	a.onmouseenter = function(event) {
+		var id = event.target.getAttribute("href");
+		var status = document.querySelector(id);
+		if (!status)
+			return;
+		if (isInView(status)) {
+			status.classList.add("highlight");
+		} else {
+			var copy = status.cloneNode(true);
+			copy.id = "reply-popup";
+			var ract = event.target.getBoundingClientRect();
+			copy.style["max-width"] = (window.innerWidth - 98) + "px";
+			if (ract.left > window.innerWidth / 2) {
+				copy.style.right = (window.innerWidth -
+					ract.right - 12) + "px";
+			}
+			event.target.parentElement.appendChild(copy);
+		}
+	}
+	a.onmouseleave = function(event) {
+		var popup = document.getElementById("reply-popup");
+		if (popup) {
+			event.target.parentElement.removeChild(popup);
+		} else {
+			var id = event.target.getAttribute("href");
+			document.querySelector(id).classList.remove("highlight");
+		}
+	}
+}
+
+function handleStatusLink(a) {
+	if (a.classList.contains("mention"))
+		a.removeAttribute("target");
+	else
+		a.target = "_blank";
+}
+
+function setPos(el, cx, cy, mw, mh) {
+	var h = el.clientHeight;
+	var w = el.clientWidth;
+	var left, top;
+	if (cx < mw/2) {
+		if (w + cx + 20 < mw) {
+			left = cx + 20; 
+		} else {
+			left = (mw - w);
+		}
+	} else {
+		if (cx - w - 20 > 0) {
+			left = cx - w - 20; 
+		} else {
+			left = 0;
+		}
+	}
+	top = (cy - (h/2));
+	if (top < 0) {
+		top = 0;
+	} else if (top + h > mh) {
+		top = (mh - h);
+	} 
+	el.style.left = left + "px";
+	el.style.top = top + "px";
+}
+
+var imgPrev = null;
+var imgX = 0;
+var imgY = 0;
+function handleImgPreview(a) {
+	a.onmouseenter = function(e) {
+		var mw = document.documentElement.clientWidth;
+		var mh = document.documentElement.clientHeight - 24;
+		imgX = e.clientX;
+		imgY = e.clientY;
+		var img = document.createElement("img");
+		img.id = "img-preview";
+		img.src = e.target.getAttribute("href");
+		img.style["max-width"] = mw + "px";
+		img.style["max-height"] = mh + "px";
+		imgPrev = img;
+		img.onload = function(e2) {
+			setPos(imgPrev, imgX, imgY, mw, mh);
+		}
+		document.body.appendChild(img);
+	}
+	a.onmouseleave = function(e) {
+		var img = document.getElementById("img-preview");
+		if (img)
+			document.body.removeChild(img);
+		imgPrev = null;
+	}
+	a.onmousemove = function(e) {
+		if (!imgPrev)
+			return;
+		var mw = document.documentElement.clientWidth;
+		var mh = document.documentElement.clientHeight - 24;
+		imgX = e.clientX;
+		imgY = e.clientY;
+		setPos(imgPrev, imgX, imgY, mw, mh);
+	}
+}
+
+function onPaste(e) {
+	if (!e.clipboardData.files)
+		return;
+	var fp = document.querySelector("#post-file-picker")
+	var dt = new DataTransfer();
+	for (var i = 0; i < fp.files.length; i++) {
+		dt.items.add(fp.files[i]);
+	}
+	for (var i = 0; i < e.clipboardData.files.length; i++) {
+		dt.items.add(e.clipboardData.files[i]);
+	}
+	fp.files = dt.files;
+}
+
+document.addEventListener("DOMContentLoaded", function() { 
+	checkCSRFToken();
+	checkAntiDopamineMode();
+
+	var statuses = document.querySelectorAll(".status-container");
+	for (var i = 0; i < statuses.length; i++) {
+		var s = statuses[i];
+		var id = s.dataset.id;
+
+		var likeForm = s.querySelector(".status-like");
+		handleLikeForm(id, likeForm);
+
+		var retweetForm = s.querySelector(".status-retweet");
+		handleRetweetForm(id, retweetForm);
+
+		var replyToLink = s.querySelector(".status-reply-to-link");
+		handleReplyToLink(replyToLink);
+
+		var replyLinks = s.querySelectorAll(".status-reply-link");
+		for (var j = 0; j < replyLinks.length; j++) {
+			handleReplyLink(replyLinks[j]);
+		}
+
+		var links = s.querySelectorAll(".status-content a");
+		for (var j = 0; j < links.length; j++) {
+			handleStatusLink(links[j]);
+		}
+	}
+
+	var links = document.querySelectorAll(".user-profile-decription a, .user-fields a");
+	for (var j = 0; j < links.length; j++) {
+		links[j].target = "_blank";
+	}
+
+	var links = document.querySelectorAll(".status-media-container .img-link");
+	for (var j = 0; j < links.length; j++) {
+		handleImgPreview(links[j]);
+	}
+
+	var pf = document.querySelector(".post-form")
+	if (pf)
+		pf.addEventListener("paste", onPaste);
+});
+
+// @license-end
diff -rN -u old-jam-xwx-moe/bloat/instance/ktp/style.css new-jam-xwx-moe/bloat/instance/ktp/style.css
--- old-jam-xwx-moe/bloat/instance/ktp/style.css	1970-01-01 00:00:00.000000000 +0000
+++ new-jam-xwx-moe/bloat/instance/ktp/style.css	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,639 @@
+body {
+	background-color: #d2d2d2;
+}
+
+.status-container-container {
+	margin: 0 -4px 12px -4px;
+	padding: 4px;
+	border-left: 4px solid transparent;
+}
+
+.status-container-container:target {
+	border-color: #777777;
+}
+
+.status-container-container.highlight {
+	background-color: #eeeeee;
+}
+
+.status-container {
+	display: flex;
+}
+
+.status-content {
+	margin: 4px 0;
+	max-height: 600px;
+	overflow: auto;
+	overflow-wrap: break-word;
+}
+
+.status-name {
+	overflow-wrap: break-word;
+}
+
+.status-content p {
+	margin: 0px;
+}
+
+.status-content img,
+.status-image,
+.status-video {
+	height: auto;
+	width: auto;
+	max-height: 240px;
+	max-width: 280px;
+	vertical-align: bottom;
+	object-fit: contain;
+}
+
+.status-media-container {
+	margin: 5px 0 -5px 0;
+	overflow: auto;
+}
+
+.status-media-container>a {
+	margin-bottom: 5px;
+	display: inline-block;
+}
+
+.status-profile-img-container {
+	margin-right: 8px;
+	display: inline-block;
+	vertical-align: top;
+}
+
+.status-profile-img {
+	height: 48px;
+	width: 48px;
+	min-height: 48px;
+	min-width: 48px;
+	max-height: 48px;
+	max-width: 48px;
+	vertical-align: top;
+	object-fit: contain;
+	margin-top: 2px;
+}
+
+.status {
+	display: inline-block;
+	vertical-align: top;
+	flex: 1;
+	min-width: 0;
+}
+
+.status-dname {
+	font-weight: 800;
+}
+
+.status-uname {
+	font-style: italic;
+	font-size: 10pt;
+}
+
+.status-action-container {
+	margin-top: 4px;
+}
+
+.status-action {
+	display: inline-block;
+	margin-right: 16px;
+}
+
+.status-action-last {
+	margin-right: 4px;
+}
+
+.status-action form {
+	display: inline-block;
+}
+
+.status-action a {
+	display: inline-block;
+}
+
+.status-action * {
+	vertical-align: middle;
+}
+
+.status-action a.status-time {
+	width: auto;
+}
+
+.page-title {
+	font-size: 18pt;
+	margin: 8px 0;
+}
+
+.post-form {
+	margin: 4px 0;
+}
+
+.post-form>div {
+	margin-bottom: 4px;
+}
+
+.signin-form {
+	margin: 8px 0;
+}
+
+.signin-form input {
+	margin: 4px 0;
+}
+
+.retweet-info {
+	margin: 0 0 4px 24px;
+	overflow-wrap: break-word;
+}
+
+.retweet-info .status-profile-img {
+	height: 24px;
+	width: 24px;
+	min-height: 24px;
+	min-width: 24px;
+	max-height: 24px;
+	max-width: 24px;
+	vertical-align: middle;
+}
+
+.retweet-info .status-dname {
+	margin-left: 4px;
+}
+
+textarea {
+	padding: 4px;
+	font-size: 11pt;
+	font-family: initial;
+}
+
+.post-content {
+	box-sizing: border-box;
+	width: 100%;
+}
+
+#css {
+	box-sizing: border-box;
+	max-width: 100%;
+}
+
+.pagination {
+	margin: 4px 4px 12px 4px;
+}
+
+.pagination a {
+	margin: 0 8px;
+	font-size: 13pt;
+}
+
+.notification-container {
+	margin: 0 -4px 12px -4px;
+	padding: 4px;
+	border-left: 4px solid transparent;
+}
+
+.notification-container.unread {
+	border-color: #777777;
+}
+
+.notification-container .status-container {
+	opacity: 0.6;
+}
+
+.notification-container.mention .status-container {
+	opacity: unset;
+}
+
+.notification-info-text span {
+	vertical-align: middle;
+}
+
+.notification-follow-container {
+	overflow: auto;
+	display: flex;
+	align-items: center;
+}
+
+.notification-follow {
+	overflow: auto;
+}
+
+.notification-time {
+	margin-left: 8px;
+}
+
+.status-reply-to-link {
+	font-size: 10pt
+}
+
+.status-reply-container {
+	overflow-wrap: break-word;
+}
+
+.status-reply-container .fa {
+	font-size: 10pt;
+	vertical-align: sub;
+	margin-right: -2px;
+}
+
+.status-reply-text {
+	font-size: 10pt;
+}
+
+.status-reply-link {
+	font-size: 10pt;
+}
+
+.status-reply-info-divider {
+	margin: 0 4px;
+}
+
+.post-content-container {
+	padding-right: 8px;
+}
+
+.error-text {
+	margin: 8px 0;
+}
+
+.post-attachment-div {
+	margin: 2px 0;
+}
+
+.user-profile-img-container {
+	display: inline-block;
+	margin: 0 4px 4px 0;
+}
+
+.user-profile-details-container {
+	display: inline-block;
+	vertical-align: top;
+}
+
+.user-profile-details-container>div {
+	margin-bottom: 4px;
+}
+
+.user-profile-img {
+	height: 96px;
+	width: 96px;
+	vertical-align: top;
+	object-fit: contain;
+	margin-top: 2px;
+}
+
+.user-profile-decription,
+.user-fields {
+	overflow-wrap: break-word;
+	margin: 8px 0;
+}
+
+.user-profile-decription p {
+	margin: 0;
+}
+
+.user-profile-decription img {
+	height: auto;
+	width: auto;
+	max-height: 240px;
+	max-width: 280px;
+	object-fit: contain;
+}
+
+.d-inline {
+	display: inline;
+}
+
+.p-0 {
+	padding: 0;
+}
+
+.btn-link {
+	border: none;
+	outline: none;
+	background: none;
+	cursor: pointer;
+	padding: 0;
+	font-family: inherit;
+	font-size: inherit;
+}
+
+a, .btn-link {
+	color: #464acc;
+	text-decoration: none;
+}
+
+a:hover,
+.btn-link:hover {
+	color: #8387bf;
+}
+
+.status-visibility {
+	margin-left: 4px;
+	display: inline-block;
+	color: #222222;
+	font-size: 8pt;
+}
+
+.remote-link {
+	margin-left: 4px;
+	font-size: 8pt;
+}
+
+.img-link {
+	display: inline-block;
+	position: relative;
+}
+
+.status-profile-img-container .img-link {
+	width: 48px;
+}
+
+.status-nsfw-overlay {
+	background: black;
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	right: 0;
+}
+
+.img-link:hover .status-nsfw-overlay {
+	display: none;
+}
+
+.status-video-container {
+	display: inline-block;
+	position: relative;
+	margin-bottom: 5px;
+}
+
+.status-video-container:hover .status-nsfw-overlay {
+	display: none;
+}
+
+.emoji-item-container {
+	width: 220px;
+	display: inline-block;
+	margin: 4px 0;
+	overflow: hidden;
+}
+
+.emoji-item {
+	display: flex;
+	align-items: center;
+}
+
+img.emoji {
+	height: auto;
+	width: auto;
+	max-height: 32px;
+	max-width: 32px;
+	min-height: 32px;
+	min-width: 32px;
+	vertical-align: middle;
+	object-fit: contain;
+	margin: 0;
+}
+
+.status-dname img.emoji {
+	height: 24px;
+	min-height: 24px;
+	min-width: 24px;
+}
+
+.emoji-shortcode {
+	margin-left: 4px;
+}
+
+.post-form-emoji-link {
+	margin-left: 4px;
+}
+
+.user-info-img {
+	height: 64px;
+	width: 64px;
+	vertical-align: middle;
+	object-fit: contain;
+	margin-top: 2px;
+}
+
+.user-info-img-container {
+	float: left;
+	margin-right: 8px;
+}
+
+.user-info-details-container {
+	overflow: auto;
+}
+
+.user-info-details-name,
+.user-info-details-nav {
+	margin-bottom: 4px;
+}
+
+.nav-link {
+	margin-right: 2px;
+}
+
+.user-list-item {
+	overflow: auto;
+	margin: 0 0 12px 0;
+	display: flex;
+	align-items: center;
+}
+
+.user-list-profile-img {
+	float: left;
+	margin: 0 8px 0 0;
+}
+
+.user-list-name {
+	overflow: auto;
+}
+
+.user-list-action {
+	margin: 0 12px;
+}
+
+#settings-form {
+	margin: 8px 0;
+}
+
+.settings-form-field {
+	margin: 4px 0;
+}
+
+#settings-form button[type=submit] {
+	margin-top: 8px;
+}
+
+#reply-popup {
+	position: absolute;
+	background-color: #d2d2d2;
+	border: 1px solid #aaaaaa;
+	padding: 4px 8px;
+	z-index: 3;
+	margin: 0;
+}
+
+#reply-to-popup {
+	position: absolute;
+	background-color: #d2d2d2;
+	border: 1px solid #aaaaaa;
+	padding: 4px 8px;
+	z-index: 3;
+	margin: 0;
+}
+
+.search-form {
+	margin: 12px 0;
+}
+
+.more-container {
+	position: relative;
+	display: inline-block;
+}
+
+.more-content {
+	display: none;
+	position: absolute;
+	background-color: #d2d2d2;
+	padding: 2px 4px;
+	border: 1px solid #aaaaaa;
+	z-index: 1;
+}
+
+.more-container:hover .more-content {
+	display: block;
+}
+
+.more-link {
+	font-size: 8pt;
+	display: block;
+	margin: 2px;
+}
+
+.poll-form {
+	margin-top: 5px;
+	overflow: auto;
+	overflow-wrap: break-word;
+}
+
+.poll-form button[type=submit] {
+	margin-top: 6px;
+}
+
+.poll-info {
+	margin-top: 6px;
+}
+
+.page-title-container {
+	margin: 8px 0;
+}
+
+.page-refresh {
+	margin-right: 8px;
+}
+
+.notification-text {
+	vertical-align: middle;
+}
+
+.notification-read {
+	display: inline-block;
+}
+
+.no-data-found {
+	margin: 12px 0;
+}
+
+.signout {
+	display: inline;
+}
+
+.signin-desc {
+	margin: 8px 0 16px 0;
+}
+
+.keyboard-shortcuts {
+	margin-top: 12px;
+}
+
+.keyboard-shortcuts td {
+	padding: 2px 4px;
+}
+
+kbd {
+	border-radius: 3px;
+	padding: 1px 4px;
+	border: 1px solid #444444;
+	background-color: #eeeeee;
+	font-size: 10pt;
+}
+
+.filters {
+	margin: 10px 0;
+}
+
+.filters td {
+	padding: 2px 4px;
+}
+
+#img-preview {
+	pointer-events: none;
+	z-index: 2;
+	position: fixed;
+}
+
+.quote {
+	color: #789922;
+}
+
+.dark {
+	background-color: #222222;
+	background-image: none;
+	color: #eaeaea;
+}
+
+.dark a {
+	color: #81a2be;
+}
+
+.dark textarea {
+	background-color: #333333;
+	border: 1px solid #444444;
+	color: #eaeaea;
+}
+
+.dark #reply-popup,
+.dark #reply-to-popup {
+	background-color: #222222;
+	border-color: #444444;
+}
+
+.dark .status-container-container.highlight {
+	background-color: #333333;
+}
+
+.dark .btn-link {
+	color: #81a2be;
+}
+
+.dark a:hover,
+.dark .btn-link:hover {
+	color: #497091;
+}
+
+.dark .status-visibility {
+	color: #eaeaea;
+}
+
+.dark .more-content {
+	background-color: #222222;
+	border-color: #444444;
+}
+
+.dark kbd {
+	background-color: #333333;
+	border-color: #444444;
+	color: #eaeaea;
+}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/about.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/about.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/about.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/about.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,109 @@
+{{with .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+
+<div class="page-title"> About </div>
+<div>
+	<p>
+		A web client for <a href="https://pleroma.social" target="_blank">Mastadon Network</a>.
+	</p>
+	<p>
+		The source code is released under 
+		<a href="https://creativecommons.org/publicdomain/zero/1.0/legalcode" target="_blank">CC0</a> 
+		and is available on 
+		<a href="https://git.freesoftwareextremist.com/bloat" target="_blank">git.freesoftwareextremist.com/bloat</a>.
+	</P>
+</div>
+
+<div class="page-title"> Keyboard shortcuts </div>
+<div>
+	<table class="keyboard-shortcuts">
+		<tr>
+			<td> User profile </td>
+			<td> <kbd>0</kbd> </td>
+		</tr>
+		<tr>
+			<td> Home timeline </td>
+			<td> <kbd>1</kbd> </td>
+		</tr>
+		<tr>
+			<td> Direct timeline </td>
+			<td> <kbd>2</kbd> </td>
+		</tr>
+		<tr>
+			<td> Local timeline </td>
+			<td> <kbd>3</kbd> </td>
+		</tr>
+		<tr>
+			<td> The Whole Known Network </td>
+			<td> <kbd>4</kbd> </td>
+		</tr>
+		<tr>
+			<td> Remote timeline </td>
+			<td> <kbd>5</kbd> </td>
+		</tr>
+		<tr>
+			<td> Search </td>
+			<td> <kbd>6</kbd> </td>
+		</tr>
+		<tr>
+			<td> Lists </td>
+			<td> <kbd>7</kbd> </td>
+		</tr>
+		<tr>
+			<td> Settings </td>
+			<td> <kbd>8</kbd> </td>
+		</tr>
+		<tr>
+			<td> About </td>
+			<td> <kbd>9</kbd> </td>
+		</tr>
+		<tr>
+			<td> Emoji list </td>
+			<td> <kbd>L</kbd> </td>
+		</tr>
+		<tr>
+			<td> Edit post </td>
+			<td> <kbd>E</kbd> </td>
+		</tr>
+		<tr>
+			<td> Post format </td>
+			<td> <kbd>F</kbd> </td>
+		</tr>
+		<tr>
+			<td> Post scope </td>
+			<td> <kbd>S</kbd> </td>
+		</tr>
+		<tr>
+			<td> Post NSFW </td>
+			<td> <kbd>N</kbd> </td>
+		</tr>
+		<tr>
+			<td> Post attachments </td>
+			<td> <kbd>A</kbd> </td>
+		</tr>
+		<tr>
+			<td> Submit post </td>
+			<td> <kbd>P</kbd> </td>
+		</tr>
+		<tr>
+			<td> Refresh notifications </td>
+			<td> <kbd>R</kbd> </td>
+		</tr>
+		<tr>
+			<td> Read notifications </td>
+			<td> <kbd>C</kbd> </td>
+		</tr>
+		<tr>
+			<td> Refresh timeline/thread page </td>
+			<td> <kbd>T</kbd> </td>
+		</tr>
+	</table>
+	<p>
+		You can activate the shortcuts by pressing the associated key with your browser's <a href="https://en.wikipedia.org/wiki/Access_key#Access_in_different_browsers" target="_blank">accesskey modifier</a>, 
+		which is generally <kbd>Alt</kbd> + <kbd>Shift</kbd>.
+	</p>
+</div>
+
+{{template "footer.tmpl"}}
+{{end}}
+
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/emoji.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/emoji.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/emoji.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/emoji.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,17 @@
+{{with .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+<div class="page-title"> Emojis </div>
+
+<div class="emoji-list-container">
+	{{range .Emojis}}
+	<div class="emoji-item-container">
+		<div class="emoji-item">
+			<img class="emoji" src="{{.URL}}" alt="{{.ShortCode}}" height="32" loading="lazy" />
+			<span title=":{{.ShortCode}}:" class="emoji-shortcode">:{{.ShortCode}}:</span>
+		</div>
+	</div>
+	{{end}}
+</div>
+
+{{template "footer.tmpl"}}
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/error.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/error.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/error.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/error.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,17 @@
+{{with .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+<div class="page-title"> Error </div>
+
+<div class="error-text"> {{.Err}} </div>
+<div>
+	<a href="/timeline/home">home</a>
+	{{if .Retry}}
+	<a href="{{$.Ctx.Referrer}}">retry</a>
+	{{end}}
+	{{if .SessionErr}}
+	<a href="/signin" target="_top">signin</a>
+	{{end}}
+</div>
+
+{{template "footer.tmpl"}}
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/filters.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/filters.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/filters.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/filters.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,40 @@
+{{with .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+<div class="page-title"> Filters </div>
+
+{{if .Filters}}
+<table class="filters">
+	{{range .Filters}}
+	<tr>
+		<td> {{.Phrase}}{{if not .WholeWord}}*{{end}} </td>
+		<td> 
+			<form action="/unfilter/{{.ID}}" method="POST">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<button type="submit"> Delete </button>
+			</form>
+		</td>
+	</tr>
+	{{end}}
+</table>
+{{else}}
+	<div class="filters"> No filters added </div>
+{{end}}
+
+<div class="page-title"> Add filter </div>
+<form action="/filter" method="POST">
+	<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+	<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+	<span class="settings-form-field">
+		<label for="phrase"> Phrase </label>
+		<input id="phrase" name="phrase" required>
+	</span>
+	<span class="settings-form-field">
+		<input id="whole-word" name="whole_word" type="checkbox" value="true" checked>
+		<label for="whole-word"> Whole word </label>
+	</span>
+	<button type="submit"> Add </button>
+</form>
+
+{{template "footer.tmpl"}}
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/footer.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/footer.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/footer.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/footer.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,2 @@
+</body>
+</html>
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/header.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/header.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/header.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/header.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,33 @@
+{{with .Data}}
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset='utf-8'>
+	<link rel="icon" type="image/png" href="/static/favicon.png">
+	<meta content='width=device-width, initial-scale=1' name='viewport'>
+	{{if .Target}}
+	<base href="" target="{{.Target}}">
+	{{end}}
+	{{if .CSRFToken}}
+	<meta name="csrf_token" content="{{.CSRFToken}}">
+	{{end}}
+	{{if $.Ctx.AntiDopamineMode}}
+	<meta name="antidopamine_mode" content="{{$.Ctx.AntiDopamineMode}}">
+	{{end}}
+	{{if .RefreshInterval}}
+	<meta http-equiv="refresh" content="{{.RefreshInterval}}">
+	{{end}}
+	<title> {{if gt .Count 0}}({{.Count}}){{end}} {{.Title}} </title>
+	<link rel="stylesheet" href="/static/style.css">
+	{{if .CustomCSS}}
+	<link rel="stylesheet" href="{{.CustomCSS}}">
+	{{end}}
+	{{if $.Ctx.FluorideMode}}
+	<script src="/static/fluoride.js"></script>
+	{{end}}
+	{{if $.Ctx.UserCSS}}
+	<style>{{RawCSS $.Ctx.UserCSS}}</style>
+	{{end}}
+</head>
+<body {{if $.Ctx.DarkMode}}class="dark"{{end}}>
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/likedby.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/likedby.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/likedby.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/likedby.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,8 @@
+{{with .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+<div class="page-title"> Liked By </div>
+
+{{template "userlist.tmpl" (WithContext .Users $.Ctx)}}
+
+{{template "footer.tmpl"}}
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/lists.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/lists.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/lists.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/lists.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,35 @@
+{{with .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+<div class="page-title"> Lists </div>
+
+{{range .Lists}}
+<div>
+	<a href="/timeline/list?list={{.ID}}"> {{.Title}} timeline </a> 
+	-
+	<form class="d-inline" action="/list/{{.ID}}" method="GET">
+		<button type="submit" class="btn-link"> edit </button>
+	</form>
+	-
+	<form class="d-inline" action="/list/{{.ID}}/remove" method="POST">
+		<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+		<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+		<button type="submit" class="btn-link"> delete </button>
+	</form>
+</div>
+{{else}}
+<div class="no-data-found">No data found</div>
+{{end}}
+
+<div class="page-title"> Add list </div>
+<form action="/list" method="POST">
+	<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+	<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+	<span class="settings-form-field">
+		<label for="title"> Title </label>
+		<input id="title" name="title" required>
+	</span>
+	<button type="submit"> Add </button>
+</form>
+
+{{template "footer.tmpl"}}
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/list.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/list.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/list.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/list.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,63 @@
+{{with .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+<div class="page-title"> List {{.List.Title}} </div>
+
+<form action="/list/{{.List.ID}}/rename" method="POST">
+	<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+	<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+	<input id="title" name="title" value="{{.List.Title}}">
+	<button type="submit"> Rename </button>
+</form>
+
+<div class="page-title"> Users </div>
+{{if .Accounts}}
+<table>
+{{range .Accounts}}
+	<tr>
+		<td class="p-0"> {{template "userlistitem.tmpl" (WithContext . $.Ctx)}} </td>
+		<td class="p-0"> 
+			<form class="user-list-action" action="/list/{{$.Data.List.ID}}/removeuser?uid={{.ID}}" method="POST">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<button type="submit"> Remove </button>
+			</form>
+		</td>
+	</tr>
+{{end}}
+</table>
+{{else}}
+<div class="no-data-found">No data found</div>
+{{end}}
+
+<div class="page-title"> Add user </div>
+<form class="search-form" action="/list/{{.List.ID}}" method="GET">
+	<span class="post-form-field">
+		<label for="query"> Query </label>
+		<input id="query" name="q" value="{{.Q}}">
+	</span>
+	<button type="submit"> Search </button>
+</form>
+
+{{if .Q}}
+{{if .SearchAccounts}}
+<table>
+{{range .SearchAccounts}}
+	<tr>
+		<td> {{template "userlistitem.tmpl" (WithContext . $.Ctx)}} </td>
+		<td>
+			<form class="user-list-action" action="/list/{{$.Data.List.ID}}/adduser?uid={{.ID}}" method="POST">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<button type="submit"> Add </button>
+			</form>
+		</td>
+	</tr>
+{{end}}
+</table>
+{{else}}
+<div class="no-data-found">No data found</div>
+{{end}}
+{{end}}
+
+{{template "footer.tmpl"}}
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/mute.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/mute.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/mute.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/mute.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,29 @@
+{{with .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+<div class="page-title"> Mute {{.User.Acct}} </div>
+
+<form action="/mute/{{.User.ID}}" method="POST">
+	<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+	<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+	<div class="settings-form-field">
+		<input id="notifications" name="notifications" type="checkbox" value="true" checked>
+		<label for="notifications"> Mute notifications </label>
+	</div>
+	<div class="settings-form-field">
+		<label for="duration"> Auto unmute </label>
+		<select id="duration" name="duration">
+			<option value="0" selected>Disabled</option>
+			<option value="300">After 5m</option>
+			<option value="1800">After 30m</option>
+			<option value="3600">After 1h</option>
+			<option value="21600">After 6h</option>
+			<option value="86400">After 1d</option>
+			<option value="259200">After 3d</option>
+			<option value="604800">After 7d</option>
+		</select>
+	</div>
+	<button type="submit"> Mute </button>
+</form>
+
+{{template "footer.tmpl"}}
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/nav.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/nav.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/nav.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/nav.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,40 @@
+{{with .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+<div class="user-info">
+	<div class="user-info-img-container">
+		<a class="img-link" href="/timeline/home" title="Home (1)">
+			<img class="user-info-img" src="{{.User.Avatar}}" alt="profile-avatar" height="64" />
+		</a>
+	</div>
+	<div class="user-info-details-container">
+		<div class="user-info-details-name">
+			<bdi class="status-dname"> {{EmojiFilter (HTML .User.DisplayName) .User.Emojis | Raw}} </bdi>
+			<a class="nav-link" href="/user/{{.User.ID}}" accesskey="0" title="User profile (0)">
+				<span class="status-uname"> @{{.User.Acct}} </span>
+			</a>
+		</div>
+		<div class="user-info-details-nav">
+			<a class="nav-link" href="/timeline/home" accesskey="1" title="Home timeline (1)">home</a>
+			<a class="nav-link" href="/timeline/direct" accesskey="2" title="Direct timeline (2)">direct</a>
+			<a class="nav-link" href="/timeline/local" accesskey="3" title="Local timeline (3)">local</a>
+			<a class="nav-link" href="/timeline/twkn" accesskey="4" title="The Whole Known Netwwork (4)">twkn</a>
+			<a class="nav-link" href="/timeline/remote" accesskey="5" title="Remote timeline (5)">remote</a>
+			<a class="nav-link" href="/search" accesskey="6" title="Search (6)">search</a>
+		</div>
+		<div>
+			<a class="nav-link" href="/lists" accesskey="7" title="Lists (7)">lists</a>
+			<a class="nav-link" href="/settings" target="_top" accesskey="8" title="Settings (8)">settings</a>
+			<form class="signout" action="/signout" method="post" target="_top">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<input type="submit" value="signout" class="btn-link nav-link" title="Signout">
+			</form>
+			<a class="nav-link" href="/about" accesskey="9" title="About (9)">about</a>
+		</div>
+	</div>
+</div>
+
+{{template "postform.tmpl" (WithContext .PostContext $.Ctx)}}
+
+{{template "footer.tmpl"}}
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/notification.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/notification.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/notification.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/notification.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,128 @@
+{{with .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+<div class="page-title-container">
+	<span class="page-title">
+		Notifications
+		{{if and (not $.Ctx.AntiDopamineMode) (gt .UnreadCount 0)}}
+			({{.UnreadCount }})
+		{{end}}
+	</span>
+	<a class="page-refresh" href="/notifications" target="_self" accesskey="R" title="Refresh (R)">refresh</a>
+	{{if .ReadID}}
+	<form class="notification-read" action="/notifications/read?max_id={{.ReadID}}" method="post" target="_self">
+		<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+		<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+		<input type="submit" value="read" class="btn-link" accesskey="C" title="Clear unread notifications (C)">
+	</form>
+	{{end}}
+</div>
+
+{{range .Notifications}}
+<div class="notification-container {{.Type}} {{if .Pleroma}}{{if not .Pleroma.IsSeen}}unread{{end}}{{end}}">
+	{{if eq .Type "follow"}}
+	<div class="notification-follow-container">
+		<div class="status-profile-img-container">
+			<a class="img-link" href="/user/{{.Account.ID}}">
+				<img class="status-profile-img" src="{{.Account.Avatar}}" title="@{{.Account.Acct}}" alt="profile-avatar" height="48" />
+			</a>
+		</div>
+		<div class="notification-follow">
+			<div class="notification-info-text">
+				<bdi class="status-dname"> {{EmojiFilter (HTML .Account.DisplayName) .Account.Emojis | Raw}} </bdi>
+				<span class="notification-text"> followed you - 
+					<time datetime="{{FormatTimeRFC3339 .CreatedAt}}" title="{{FormatTimeRFC822 .CreatedAt}}">{{TimeSince .CreatedAt}}</time> 
+				</span>
+			</div>
+			<div>
+				<a href="/user/{{.Account.ID}}"> <span class="status-uname"> @{{.Account.Acct}} </span> </a>
+			</div>
+		</div>
+	</div>
+
+	{{else if eq .Type "follow_request"}}
+	<div class="notification-follow-container">
+		<div class="status-profile-img-container">
+			<a class="img-link" href="/user/{{.Account.ID}}">
+				<img class="status-profile-img" src="{{.Account.Avatar}}" title="@{{.Account.Acct}}" alt="profile-avatar" height="48" />
+			</a>
+		</div>
+		<div class="notification-follow">
+			<div class="notification-info-text">
+				<bdi class="status-dname"> {{EmojiFilter (HTML .Account.DisplayName) .Account.Emojis | Raw}} </bdi>
+				<span class="notification-text"> wants to follow you - 
+					<time datetime="{{FormatTimeRFC3339 .CreatedAt}}" title="{{FormatTimeRFC822 .CreatedAt}}">{{TimeSince .CreatedAt}}</time> 
+				</span>
+			</div>
+			<div>
+				<a href="/user/{{.Account.ID}}"> <span class="status-uname"> @{{.Account.Acct}} </span> </a>
+			</div>
+			<form class="d-inline" action="/accept/{{.Account.ID}}" method="post" target="_self">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<input type="submit" value="accept" class="btn-link">
+			</form>
+			-
+			<form class="d-inline" action="/reject/{{.Account.ID}}" method="post" target="_self">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<input type="submit" value="reject" class="btn-link">
+			</form>
+		</div>
+	</div>
+
+	{{else if eq .Type "mention"}}
+	{{template "status" (WithContext .Status $.Ctx)}}
+
+	{{else if eq .Type "reblog"}}
+	<div class="retweet-info">
+		<a class="img-link" href="/user/{{.Account.ID}}">
+			<img class="status-profile-img" src="{{.Account.Avatar}}" title="@{{.Account.Acct}}" alt="avatar" height="48" />
+		</a>
+		<a href="/user/{{.Account.ID}}">
+			<span class="status-uname"> @{{.Account.Acct}} </span>
+		</a>
+		<span class="notification-text"> retweeted your post - 
+			<time datetime="{{FormatTimeRFC3339 .CreatedAt}}" title="{{FormatTimeRFC822 .CreatedAt}}">{{TimeSince .CreatedAt}}</time> 
+		</span>
+	</div>
+	{{template "status" (WithContext .Status $.Ctx)}}
+
+	{{else if eq .Type "favourite"}}
+	<div class="retweet-info">
+		<a class="img-link" href="/user/{{.Account.ID}}">
+			<img class="status-profile-img" src="{{.Account.Avatar}}" title="@{{.Account.Acct}}" alt="avatar" height="48" />
+		</a>
+		<a href="/user/{{.Account.ID}}">
+			<span class="status-uname"> @{{.Account.Acct}} </span>
+		</a>
+		<span class="notification-text"> liked your post - 
+			<time datetime="{{FormatTimeRFC3339 .CreatedAt}}" title="{{FormatTimeRFC822 .CreatedAt}}">{{TimeSince .CreatedAt}}</time> 
+		</span>
+	</div>
+	{{template "status" (WithContext .Status $.Ctx)}}
+
+	{{else}}
+	<div class="retweet-info">
+		<a class="img-link" href="/user/{{.Account.ID}}">
+			<img class="status-profile-img" src="{{.Account.Avatar}}" title="@{{.Account.Acct}}" alt="avatar" height="48" />
+		</a>
+		<a href="/user/{{.Account.ID}}">
+			<span class="status-uname"> @{{.Account.Acct}} </span>
+		</a>
+		<span class="notification-text"> {{.Type}} - 
+			<time datetime="{{FormatTimeRFC3339 .CreatedAt}}" title="{{FormatTimeRFC822 .CreatedAt}}">{{TimeSince .CreatedAt}}</time> 
+		</span>
+	</div>
+	{{if .Status}}{{template "status" (WithContext .Status $.Ctx)}}{{end}}
+	{{end}}
+</div>
+{{end}}
+
+<div class="pagination">
+	{{if .NextLink}}
+		<a href="{{.NextLink}}" target="_self">[next]</a>
+	{{end}}
+</div>
+
+{{template "footer.tmpl"}}
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/postform.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/postform.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/postform.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/postform.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,51 @@
+{{with .Data}}
+<form class="post-form" action="/post" method="POST" enctype="multipart/form-data" target="_self">
+	<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+	<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+	{{if .ReplyContext}}
+	<input type="hidden" name="reply_to_id" value="{{.ReplyContext.InReplyToID}}" />
+	<input type="hidden" name="quickreply" value="{{.ReplyContext.QuickReply}}" />
+	<label for="post-content" class="post-form-title"> Reply to @{{.ReplyContext.InReplyToName}} </label>
+	{{else}}
+	<label for="post-content" class="post-form-title"> New post </label>
+	{{end}}
+	<a class="post-form-emoji-link" href="/emojis" target="_blank" title="Emoji list (L)" accesskey="L">
+		emoji list
+	</a>
+	<div class="post-form-content-container">
+		<textarea id="post-content" name="content" class="post-content" cols="34" rows="5" accesskey="E" title="Edit post (E)">{{if .ReplyContext}}{{.ReplyContext.ReplyContent}}{{end}}</textarea>
+	</div>
+	<div>
+		{{if .Formats}}
+		<span class="post-form-field">
+			{{$defFormat := .DefaultFormat}}
+			<select id="post-format" name="format" accesskey="F" title="Format (F)">
+				{{range .Formats}} 
+					<option value="{{.Type}}" {{if eq $defFormat .Type}}selected{{end}}>{{.Name}}</option> 
+				{{end}}
+			</select>
+		</span>
+		{{end}}
+		<span class="post-form-field">
+			<select id="post-visilibity" name="visibility" {{if .ReplyContext}}{{if .ReplyContext.ForceVisibility}}disabled{{end}}{{end}} accesskey="S" title="Scope (S)">
+				<option value="public" {{if eq .DefaultVisibility "public"}}selected{{end}}>Public</option>
+				<option value="unlisted" {{if eq .DefaultVisibility "unlisted"}}selected{{end}}>Unlisted</option>
+				<option value="private" {{if eq .DefaultVisibility "private"}}selected{{end}}>Private</option>
+				<option value="direct" {{if eq .DefaultVisibility "direct"}}selected{{end}}>Direct</option>
+			</select>
+		</span>
+		<span class="post-form-field">
+			<input type="checkbox" id="nsfw-checkbox" name="is_nsfw" value="true" accesskey="N" title="NSFW (N)">
+			<label for="nsfw-checkbox"> NSFW </label>
+		</span>
+	</div>
+	<div>
+		<span class="post-form-field">
+			<input id="post-file-picker" type="file" name="attachments" multiple accesskey="A" title="Attachments (A)">
+		</span>
+	</div>
+	<button type="submit" accesskey="P" title="Post (P)"> Post </button>
+	<button type="reset" title="Reset"> Reset </button>
+</form>
+{{end}}
+
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/quickreply.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/quickreply.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/quickreply.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/quickreply.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,12 @@
+{{with $s := .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+<div class="page-title"> Quick Reply </div>
+
+{{if .Ancestor}}
+{{template "status.tmpl" (WithContext .Ancestor $.Ctx)}}
+{{end}}
+{{template "status.tmpl" (WithContext .Status $.Ctx)}}
+{{template "postform.tmpl" (WithContext $s.PostContext $.Ctx)}}
+
+{{template "footer.tmpl"}}
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/requestlist.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/requestlist.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/requestlist.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/requestlist.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,36 @@
+{{with .Data}}
+<div>
+	{{range .}}
+	<div class="user-list-item">
+		<div class="user-list-profile-img">
+			<a class="img-link" href="/user/{{.ID}}">
+				<img class="status-profile-img" src="{{.Avatar}}" title="@{{.Acct}}" alt="avatar" height="48" />
+			</a>
+		</div>
+		<div class="user-list-name">
+			<div>
+				<div class="status-dname"> {{EmojiFilter (HTML .DisplayName) .Emojis | Raw}} </div>
+				<a class="img-link" href="/user/{{.ID}}">
+					<div class="status-uname"> @{{.Acct}} </div>
+				</a>
+			</div>
+			<form class="d-inline" action="/accept/{{.ID}}" method="post" target="_self">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<input type="submit" value="accept" class="btn-link">
+			</form>
+			-
+			<form class="d-inline" action="/reject/{{.ID}}" method="post" target="_self">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<input type="submit" value="reject" class="btn-link">
+			</form>
+		</div>
+	</div>
+	{{else}}
+	<div class="no-data-found">No data found</div>
+	{{end}}
+</div>
+{{else}}
+<div class="no-data-found">No data found</div>
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/retweetedby.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/retweetedby.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/retweetedby.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/retweetedby.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,8 @@
+{{with .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+<div class="page-title"> Retweeted By </div>
+
+{{template "userlist.tmpl" (WithContext .Users $.Ctx)}}
+
+{{template "footer.tmpl"}}
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/root.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/root.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/root.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/root.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,17 @@
+{{with .Data}}
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
+<html>
+<head>
+	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 
+	<link rel="icon" type="image/png" href="/static/favicon.png">
+	<title>{{.Title}}</title>
+</head>
+<frameset cols="424px,*">
+	<frameset rows="316px,*">
+		<frame name="nav" src="/nav"> 
+		<frame name="notification" src="/notifications"> 
+	</frameset>
+	<frame name="main" src="/timeline/home"> 
+</frameset>
+</html>
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/search.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/search.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/search.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/search.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,39 @@
+{{with .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+<div class="page-title"> Search </div>
+
+<form class="search-form" action="/search" method="GET">
+	<span class="post-form-field">
+		<label for="query"> Query </label>
+		<input id="query" name="q" value="{{.Q}}">
+	</span>
+	<span class="post-form-field">
+		<label for="type"> Type </label>
+		<select id="type" name="type">
+			<option value="statuses" {{if eq .Type "statuses"}}selected{{end}}>Statuses</option>
+			<option value="accounts" {{if eq .Type "accounts"}}selected{{end}}>Accounts</option>
+		</select>
+	</span>
+	<button type="submit"> Search </button>
+</form>
+
+{{if eq .Type "statuses"}}
+{{range .Statuses}}
+{{template "status.tmpl" (WithContext . $.Ctx)}}
+{{else}}
+{{if .Q}}<div class="no-data-found">No data found</div>{{end}}
+{{end}}
+{{end}}
+
+{{if eq .Type "accounts"}}
+{{template "userlist.tmpl" (WithContext .Users $.Ctx)}}
+{{end}}
+
+<div class="pagination">
+	{{if .NextLink}}
+		<a href="{{.NextLink}}">[next]</a>
+	{{end}}
+</div>
+
+{{template "footer.tmpl"}}
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/settings.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/settings.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/settings.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/settings.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,83 @@
+{{with .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+<div class="page-title"> Settings </div>
+
+<form id="settings-form" action="/settings" method="POST">
+	<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+	<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+	{{if .PostFormats}}
+	<div class="settings-form-field">
+		<label for="post-format"> Default format </label>
+		{{$defFormat := .Settings.DefaultFormat}}
+		<select id="post-format" name="format">
+			{{range .PostFormats}} 
+				<option value="{{.Type}}" {{if eq $defFormat .Type}}selected{{end}}>{{.Name}}</option> 
+			{{end}}
+		</select>
+	</div>
+	{{end}}
+	<div class="settings-form-field">
+		<label for="visibility"> Default scope </label>
+		<select id="visibility" name="visibility">
+			<option value="public" {{if eq .Settings.DefaultVisibility "public"}}selected{{end}}>Public</option>
+			<option value="unlisted" {{if eq .Settings.DefaultVisibility "unlisted"}}selected{{end}}>Unlisted</option>
+			<option value="private" {{if eq .Settings.DefaultVisibility "private"}}selected{{end}}>Private</option>
+			<option value="direct" {{if eq .Settings.DefaultVisibility "direct"}}selected{{end}}>Direct</option>
+		</select>
+	</div>
+	<div class="settings-form-field">
+		<label for="notification-interval"> Refresh Notifications </label>
+		<select id="notification-interval" name="notification_interval">
+			<option value="0" {{if eq .Settings.NotificationInterval 0}}selected{{end}}>Disabled</option>
+			<option value="30" {{if eq .Settings.NotificationInterval 30}}selected{{end}}>After 30s</option>
+			<option value="60" {{if eq .Settings.NotificationInterval 60}}selected{{end}}>After 1m</option>
+			<option value="120" {{if eq .Settings.NotificationInterval 120}}selected{{end}}>After 2m</option>
+			<option value="300" {{if eq .Settings.NotificationInterval 300}}selected{{end}}>After 5m</option>
+			<option value="600" {{if eq .Settings.NotificationInterval 600}}selected{{end}}>After 10m</option>
+		</select>
+	</div>
+	<div class="settings-form-field">
+		<input id="copy-scope" name="copy_scope" type="checkbox" value="true" {{if .Settings.CopyScope}}checked{{end}}>
+		<label for="copy-scope"> Copy scope when replying </label>
+	</div>
+	<div class="settings-form-field">
+		<input id="thread-tab" name="thread_in_new_tab" type="checkbox" value="true" {{if .Settings.ThreadInNewTab}}checked{{end}}>
+		<label for="thread-tab"> Open threads in new tab from timeline </label>
+	</div>
+	<div class="settings-form-field">
+		<input id="hide-attachments" name="hide_attachments" type="checkbox" value="true" {{if .Settings.HideAttachments}}checked{{end}}>
+		<label for="hide-attachments"> Hide attachments </label>
+	</div>
+	<div class="settings-form-field">
+		<input id="mask-nsfw" name="mask_nsfw" type="checkbox" value="true" {{if .Settings.MaskNSFW}}checked{{end}}>
+		<label for="mask-nsfw"> Mask NSFW attachments </label>
+	</div>
+	<div class="settings-form-field">
+		<input id="fluoride-mode" name="fluoride_mode" type="checkbox" value="true" {{if .Settings.FluorideMode}}checked{{end}}>
+		<label for="fluoride-mode"> Enable <abbr title="Enable JavaScript based functionality, e.g., like/retweet without page reload and reply preview on thread page">fluoride mode</abbr> </label>
+	</div>
+	<div class="settings-form-field">
+		<input id="anti-dopamine-mode" name="anti_dopamine_mode" type="checkbox"
+		value="true" {{if .Settings.AntiDopamineMode}}checked{{end}}>
+		<label for="anti-dopamine-mode"> Enable <abbr title="Remove like/retweet/unread notification count and disable like/retweet/follow notifications">anti-dopamine mode</abbr> </label>
+	</div>
+	<div class="settings-form-field">
+		<input id="hide-unsupported-notifs" name="hide_unsupported_notifs" type="checkbox"
+		value="true" {{if .Settings.HideUnsupportedNotifs}}checked{{end}}>
+		<label for="hide-unsupported-notifs"> Hide unsupported notifications </label>
+	</div>
+	<div class="settings-form-field">
+		<input id="dark-mode" name="dark_mode" type="checkbox" value="true" {{if .Settings.DarkMode}}checked{{end}}>
+		<label for="dark-mode"> Use dark theme </label>
+	</div>
+	<div class="settings-form-field">
+		<label for="css"> Custom CSS: </label>
+	</div>
+	<div>
+		<textarea id="css" name="css" cols="80" rows="8">{{.Settings.CSS}}</textarea>
+	</div>
+	<button type="submit"> Save </button>
+</form>
+
+{{template "footer.tmpl"}}
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/signin.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/signin.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/signin.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/signin.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,23 @@
+{{with .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+<div class="page-title"> Bloat </div>
+<div class="signin-desc">
+	A web client for <a href="https://pleroma.social" target="_blank">Mastadon Network</a>.
+</div>
+
+<form class="signin-form" action="/signin" method="post">
+	Enter the domain name of your instance to continue
+	<br/>
+	<input type="text" name="instance" placeholder="example.com" required>
+	<br/>
+	<button type="submit"> Signin </button>
+</form>
+
+<p>
+	See
+	<a href="https://git.freesoftwareextremist.com/bloat" target="_blank">git.freesoftwareextremist.com/bloat</a>
+	for more details.
+</P>
+
+{{template "footer.tmpl"}}
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/status.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/status.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/status.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/status.tmpl"	2024-11-23 19:54:47.193882400 +0000
@@ -0,0 +1,245 @@
+{{with .Data}}
+<div id="status-{{.ID}}" class="status-container-container">
+	{{if .Reblog}}
+	<div class="retweet-info">
+		<a class="img-link" href="/user/{{.Account.ID}}">
+			<img class="status-profile-img" src="{{.Account.Avatar}}" title="@{{.Account.Acct}}" alt="avatar" height="24" />
+		</a>
+		<bdi class="status-dname"> {{EmojiFilter (HTML .Account.DisplayName) .Account.Emojis | Raw}} </bdi>
+		<a href="/user/{{.Account.ID}}"> 
+			<span class="status-uname"> @{{.Account.Acct}} </span> 
+		</a>
+		retweeted
+	</div>
+	{{template "status" (WithContext .Reblog $.Ctx)}}
+	{{else}}
+	{{block "status" (WithContext . $.Ctx)}}
+	{{with $s := .Data}}
+	<div class="status-container status-{{.ID}}" data-id="{{.ID}}">
+		<div class="status-profile-img-container">
+			<a class="img-link" href="/user/{{.Account.ID}}">
+				<img class="status-profile-img" src="{{.Account.Avatar}}" title="@{{.Account.Acct}}" alt="avatar" height="48" />
+			</a>
+		</div>
+		<div class="status"> 
+			<div class="status-name">
+				<bdi class="status-dname"> {{EmojiFilter (HTML .Account.DisplayName) .Account.Emojis | Raw}} </bdi>
+				<a href="/user/{{.Account.ID}}">
+					<span class="status-uname"> @{{.Account.Acct}} </span>
+				</a>
+				<div class="more-container">
+					<div class="remote-link">
+						{{if .IDNumbers}}#{{index .IDNumbers .ID}}{{end}} {{.Visibility}}
+					</div>
+					<div class="more-content">
+						<a class="more-link" href="{{.URL}}" target="_blank">
+							source
+						</a>
+						<a class="more-link" href="/quickreply/{{.ID}}#status-{{.ID}}">
+							quickreply
+						</a>
+						{{if .Muted}}
+						<form action="/unmuteconv/{{.ID}}" method="post" target="_self">
+							<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+							<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+							<input type="submit" value="unmute" class="btn-link more-link">
+						</form>
+						{{else}}
+						<form action="/muteconv/{{.ID}}" method="post" target="_self">
+							<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+							<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+							<input type="submit" value="mute" class="btn-link more-link">
+						</form>
+						{{end}}
+						{{if .Bookmarked}}
+						<form action="/unbookmark/{{.ID}}" method="post" target="_self">
+							<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+							<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+							<input type="hidden" name="retweeted_by_id" value="{{.RetweetedByID}}">
+							<input type="submit" value="unbookmark" class="btn-link more-link">
+						</form>
+						{{else}}
+						<form action="/bookmark/{{.ID}}" method="post" target="_self">
+							<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+							<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+							<input type="hidden" name="retweeted_by_id" value="{{.RetweetedByID}}">
+							<input type="submit" value="bookmark" class="btn-link more-link">
+						</form>
+						{{end}}
+						{{if eq $.Ctx.UserID .Account.ID}}
+						<form action="/delete/{{.ID}}" method="post" target="_self">
+							<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+							<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+							<input type="submit" value="delete" class="btn-link more-link">
+						</form>
+						{{end}}
+					</div>
+				</div>
+			</div>
+			<div class="status-reply-container">
+				{{if .InReplyToID}}
+				<a class="status-reply-to-link" href="{{if not .ShowReplies}}/thread/{{.InReplyToID}}{{end}}#status-{{.InReplyToID}}"> 
+					 in reply to {{if .IDNumbers}}#{{index .IDNumbers .InReplyToID}}{{end}} {{if .Pleroma.InReplyToAccountAcct}}@{{.Pleroma.InReplyToAccountAcct}}{{else if not .IDNumbers}}{{.InReplyToID}}{{end}}
+				</a>
+				{{if index .IDReplies .ID}} <span class="status-reply-info-divider"> - </span> {{end}}
+				{{end}}
+				{{if .ShowReplies}}
+				{{if index .IDReplies .ID}} <span class="status-reply-text"> replies: </span> {{end}}
+				{{range index .IDReplies .ID}}
+				<a class="status-reply-link" href="#status-{{.ID}}">#{{.Number}}</a>
+				{{end}}
+				{{end}}
+			</div>
+			{{if (or .Content .SpoilerText)}}
+			<div class="status-content">
+				{{if .SpoilerText}}{{EmojiFilter (HTML .SpoilerText) .Emojis | Raw}}<br/>{{end}}
+				{{StatusContentFilter .Content .Emojis .Mentions | Raw}}
+			</div>
+			{{end}}
+			{{if .MediaAttachments}}
+			<div class="status-media-container">
+				{{range .MediaAttachments}}
+
+				{{if eq .Type "image"}}
+				{{if $.Ctx.HideAttachments}}
+				<a href="{{.URL}}" target="_blank">
+					[image{{if $s.Sensitive}}/nsfw{{end}}{{if .Description}}: {{.Description}}{{end}}]
+				</a>
+				{{else}}
+				<a class="img-link" href="{{.URL}}" target="_blank" title="{{.Description}}">
+					<img class="status-image" src="{{.PreviewURL}}" alt="status-image" height="240" />
+					{{if (and $.Ctx.MaskNSFW $s.Sensitive)}}
+					<div class="status-nsfw-overlay"></div>
+					{{end}}
+				</a>
+				{{end}}
+
+				{{else if eq .Type "audio"}}
+				{{if $.Ctx.HideAttachments}}
+				<a href="{{.URL}}" target="_blank">
+					[audio{{if $s.Sensitive}}/nsfw{{end}}{{if .Description}}: {{.Description}}{{end}}]
+				</a>
+				{{else}}
+				<audio class="status-audio" controls title="{{.Description}}">
+					<source src="{{.URL}}">
+					<a href="{{.URL}}" target="_blank"> [audio] </a>
+				</audio>
+				{{end}}
+
+				{{else if eq .Type "video"}}
+				{{if $.Ctx.HideAttachments}}
+				<a href="{{.URL}}" target="_blank">
+					[video{{if $s.Sensitive}}/nsfw{{end}}{{if .Description}}: {{.Description}}{{end}}]
+				</a>
+				{{else}}
+				<div class="status-video-container" title="{{.Description}}">
+					<video class="status-video" controls height="240">
+						<source src="{{.URL}}">
+						<a href="{{.URL}}" target="_blank"> [video] </a>
+					</video>
+					{{if (and $.Ctx.MaskNSFW $s.Sensitive)}}
+					<div class="status-nsfw-overlay"></div>
+					{{end}}
+				</div>
+				{{end}}
+
+				{{else}}
+				<a href="{{.URL}}" target="_blank"> 
+					[attachment{{if $s.Sensitive}}/nsfw{{end}}{{if .Description}}: {{.Description}}{{end}}]
+				</a>
+				{{end}}
+				{{end}}
+			</div>
+			{{end}}
+			{{if .Poll}}
+			<form class="poll-form" action="/vote/{{.Poll.ID}}" method="POST" target="_self">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<input type="hidden" name="status_id" value="{{$s.ID}}">
+				{{range $i, $o := .Poll.Options}}
+				<div class="poll-option">
+					{{if (or $s.Poll.Expired $s.Poll.Voted)}}
+					<div> {{EmojiFilter (HTML $o.Title) $s.Emojis | Raw}} - {{$o.VotesCount}} votes </div>
+					{{else}}
+					<input type="{{if $s.Poll.Multiple}}checkbox{{else}}radio{{end}}" name="choices" 
+						id="poll-{{$s.ID}}-{{$i}}" value="{{$i}}">
+					<label for="poll-{{$s.ID}}-{{$i}}"> 
+						{{EmojiFilter (HTML $o.Title) $s.Emojis | Raw}}
+					</label>
+					{{end}}
+				</div>
+				{{end}}
+				{{if not (or .Poll.Expired .Poll.Voted)}}
+				<button type="submit"> Vote </button>
+				{{end}}
+				<div class="poll-info">
+					<span>{{.Poll.VotesCount}} votes</span>
+					{{if .Poll.Expired}}
+					<span> - poll expired </span>
+					{{else if .Poll.ExpiresAt}}
+					<span>
+						- poll ends in
+						<time datetime="{{FormatTimeRFC3339 .Poll.ExpiresAt}}" title="{{FormatTimeRFC822 .Poll.ExpiresAt}}"> 
+							{{TimeUntil .Poll.ExpiresAt}} 
+						</time> 
+					</span>
+					{{end}}
+				</div>
+			</form>
+			{{end}}
+			<div class="status-action-container"> 
+				<div class="status-action">
+					<a href="/thread/{{.ID}}?reply=true#status-{{.ID}}"> 
+						reply
+					</a>
+					<a class="status-reply-count" href="/thread/{{.ID}}#status-{{.ID}}" {{if $.Ctx.ThreadInNewTab}}target="_blank"{{end}}>
+						{{if and (not $.Ctx.AntiDopamineMode) .RepliesCount}}
+							({{DisplayInteractionCount .RepliesCount}})
+						{{end}}
+					</a>
+				</div>
+				<div class="status-action">
+					{{$rt := "retweet"}} {{if .Reblogged}} {{$rt = "unretweet"}} {{end}}
+					<form class="status-retweet" data-action="{{$rt}}" action="/{{$rt}}/{{.ID}}" method="post" target="_self">
+						<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+						<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+						<input type="hidden" name="retweeted_by_id" value="{{.RetweetedByID}}">
+						<input type="submit" value="{{$rt}}" class="btn-link" 
+							{{if or (eq .Visibility "private") (eq .Visibility "direct")}}title="this status cannot be retweeted" disabled{{end}}>
+						<a class="status-retweet-count" href="/retweetedby/{{.ID}}" title="click to see the the list"> 
+							{{if and (not $.Ctx.AntiDopamineMode) .ReblogsCount}}
+								({{DisplayInteractionCount .ReblogsCount}})
+							{{end}}
+						</a>
+					</form>
+				</div>
+				<div class="status-action">
+					{{$like := "like"}} {{if .Favourited}} {{$like = "unlike"}} {{end}}
+					<form class="status-like" data-action="{{$like}}" action="/{{$like}}/{{.ID}}" method="post" target="_self">
+						<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+						<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+						<input type="hidden" name="retweeted_by_id" value="{{.RetweetedByID}}">
+						<input type="submit" value="{{$like}}" class="btn-link">
+						<a class="status-like-count" href="/likedby/{{.ID}}" title="click to see the the list"> 
+							{{if and (not $.Ctx.AntiDopamineMode) .FavouritesCount}}
+								({{DisplayInteractionCount .FavouritesCount}})
+							{{end}}
+						</a>
+					</form>
+				</div>
+				<div class="status-action status-action-last">
+					<a class="status-time" href="{{if not .ShowReplies}}/thread/{{.ID}}{{end}}#status-{{.ID}}"
+						{{if $.Ctx.ThreadInNewTab}}target="_blank"{{end}}> 
+						<time datetime="{{FormatTimeRFC3339 .CreatedAt.Time}}" title="{{FormatTimeRFC822 .CreatedAt.Time}}">
+							{{TimeSince .CreatedAt.Time}}
+						</time> 
+					</a>
+				</div>
+			</div>
+		</div>
+	</div>
+	{{end}}
+	{{end}}
+	{{end}}
+</div>
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/thread.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/thread.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/thread.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/thread.tmpl"	2024-11-23 19:54:47.197882405 +0000
@@ -0,0 +1,18 @@
+{{with $s := .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+<div class="page-title-container">
+	<span class="page-title"> Thread </span>
+	<a class="page-refresh" href="{{$.Ctx.Referrer}}" accesskey="T" title="Refresh (T)">refresh</a>
+</div>
+
+{{range .Statuses}}
+
+{{template "status.tmpl" (WithContext . $.Ctx)}}
+{{if $s.PostContext.ReplyContext}}{{if eq .ID $s.PostContext.ReplyContext.InReplyToID}}
+{{template "postform.tmpl" (WithContext $s.PostContext $.Ctx)}}
+{{end}}{{end}}
+
+{{end}}
+
+{{template "footer.tmpl"}}
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/timeline.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/timeline.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/timeline.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/timeline.tmpl"	2024-11-23 19:54:47.197882405 +0000
@@ -0,0 +1,32 @@
+{{with .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+<div class="page-title-container">
+	<span class="page-title"> {{.Title}}  </span>
+	<a class="page-refresh" href="{{$.Ctx.Referrer}}" accesskey="T" title="Refresh (T)">refresh</a>
+</div>
+
+{{if eq .Type "remote"}}
+<form class="search-form" action="/timeline/remote" method="GET">
+	<span class="post-form-field">
+		<label for="instance"> Instance </label>
+		<input id="instance" name="instance" value="{{.Instance}}">
+	</span>
+	<button type="submit"> Submit </button>
+</form>
+{{end}}
+
+{{range .Statuses}}
+{{template "status.tmpl" (WithContext . $.Ctx)}}
+{{end}}
+
+<div class="pagination">
+	{{if .PrevLink}}
+		<a href="{{.PrevLink}}">[prev]</a>
+	{{end}}
+	{{if .NextLink}}
+		<a href="{{.NextLink}}">[next]</a>
+	{{end}}
+</div>
+
+{{template "footer.tmpl"}}
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/userlistitem.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/userlistitem.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/userlistitem.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/userlistitem.tmpl"	2024-11-23 19:54:47.197882405 +0000
@@ -0,0 +1,15 @@
+{{with .Data}}
+<div class="user-list-item">
+	<div class="user-list-profile-img">
+		<a class="img-link" href="/user/{{.ID}}">
+			<img class="status-profile-img" src="{{.Avatar}}" title="@{{.Acct}}" alt="avatar" height="48" />
+		</a>
+	</div>
+	<div class="user-list-name">
+		<div class="status-dname"> {{EmojiFilter (HTML .DisplayName) .Emojis | Raw}} </div>
+		<a class="img-link" href="/user/{{.ID}}">
+			<div class="status-uname"> @{{.Acct}} </div>
+		</a>
+	</div>
+</div>
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/userlist.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/userlist.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/userlist.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/userlist.tmpl"	2024-11-23 19:54:47.197882405 +0000
@@ -0,0 +1,11 @@
+{{with .Data}}
+<div>
+	{{range .}}
+		{{template "userlistitem.tmpl" (WithContext . $.Ctx)}}
+	{{else}}
+	<div class="no-data-found">No data found</div>
+	{{end}}
+</div>
+{{else}}
+<div class="no-data-found">No data found</div>
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/usersearch.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/usersearch.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/usersearch.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/usersearch.tmpl"	2024-11-23 19:54:47.197882405 +0000
@@ -0,0 +1,26 @@
+{{with .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+<div class="page-title"> Search {{EmojiFilter (HTML .User.DisplayName) .User.Emojis | Raw}}'s statuses </div>
+
+<form class="search-form" action="/usersearch/{{.User.ID}}" method="GET">
+	<span class="post-form-field">
+		<label for="query"> Query </label>
+		<input id="query" name="q" value="{{.Q}}">
+	</span>
+	<button type="submit"> Search </button>
+</form>
+
+{{range .Statuses}}
+{{template "status.tmpl" (WithContext . $.Ctx)}}
+{{else}}
+{{if .Q}}<div class="no-data-found">No data found</div>{{end}}
+{{end}}
+
+<div class="pagination">
+	{{if .NextLink}}
+		<a href="{{.NextLink}}">[next]</a>
+	{{end}}
+</div>
+
+{{template "footer.tmpl"}}
+{{end}}
diff -rN -u "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/user.tmpl" "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/user.tmpl"
--- "old-jam-xwx-moe/bloat/instance/\305\235ablonoj/user.tmpl"	1970-01-01 00:00:00.000000000 +0000
+++ "new-jam-xwx-moe/bloat/instance/\305\235ablonoj/user.tmpl"	2024-11-23 19:54:47.197882405 +0000
@@ -0,0 +1,195 @@
+{{with .Data}}
+{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
+<div class="page-title"> User </div>
+
+<div class="user-info-container">
+<div>
+	<div class="user-profile-img-container">
+		<a class="img-link" href="{{.User.Avatar}}" target="_blank">
+			<img class="user-profile-img" src="{{.User.Avatar}}" alt="profile-avatar" height="96" />
+		</a>
+	</div>
+	<div class="user-profile-details-container">
+		<div>
+			<bdi class="status-dname"> {{EmojiFilter (HTML .User.DisplayName) .User.Emojis | Raw}} </bdi>
+			<span class="status-uname"> @{{.User.Acct}} </span>
+			<a class="remote-link" href="{{.User.URL}}" target="_blank" title="remote profile">
+				source
+			</a>
+		</div>
+		{{if not .IsCurrent}}
+		<div>
+			<span> {{if .User.Pleroma.Relationship.FollowedBy}} follows you - {{end}} </span>  
+			{{if .User.Pleroma.Relationship.BlockedBy}} blocks you - {{end}}
+			{{if .User.Pleroma.Relationship.Following}} 
+			<form class="d-inline" action="/unfollow/{{.User.ID}}" method="post">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<input type="submit" value="unfollow" class="btn-link">
+			</form>
+			{{else}}
+			<form class="d-inline" action="/follow/{{.User.ID}}" method="post">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<input type="submit" value="{{if .User.Pleroma.Relationship.Requested}}resend request{{else}}follow{{end}}" class="btn-link">
+			</form>
+			{{end}}
+			{{if .User.Pleroma.Relationship.Requested}}
+			-
+			<form class="d-inline" action="/unfollow/{{.User.ID}}" method="post">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<input type="submit" value="cancel request" class="btn-link">
+			</form>
+			{{end}}
+			-
+			{{if .User.Pleroma.Relationship.Subscribing}}
+			<form class="d-inline" action="/unsubscribe/{{.User.ID}}" method="post">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<input type="submit" value="unsubscribe" class="btn-link">
+			</form>
+			{{else}}
+			<form class="d-inline" action="/subscribe/{{.User.ID}}" method="post">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<input type="submit" value="subscribe" class="btn-link">
+			</form>
+			{{end}}
+		</div>
+		<div>
+			{{if .User.Pleroma.Relationship.Blocking}}
+			<form class="d-inline" action="/unblock/{{.User.ID}}" method="post">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<input type="submit" value="unblock" class="btn-link">
+			</form>
+			{{else}}
+			<form class="d-inline" action="/block/{{.User.ID}}" method="post">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<input type="submit" value="block" class="btn-link">
+			</form>
+			{{end}}
+			-
+			{{if .User.Pleroma.Relationship.Muting}}
+			<form class="d-inline" action="/unmute/{{.User.ID}}" method="post">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<input type="submit" value="unmute" class="btn-link">
+			</form>
+			{{else}}
+			<a href="/mute/{{.User.ID}}"> mute </a>
+			{{end}}
+			{{if .User.Pleroma.Relationship.Following}} 
+			-
+			{{if .User.Pleroma.Relationship.ShowingReblogs}}
+			<form class="d-inline" action="/follow/{{.User.ID}}?reblogs=false" method="post">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<input type="submit" value="hide retweets" class="btn-link">
+			</form>
+			{{else}}
+			<form class="d-inline" action="/follow/{{.User.ID}}" method="post">
+				<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
+				<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
+				<input type="submit" value="show retweets" class="btn-link">
+			</form>
+			{{end}}
+			{{end}}
+		</div>
+		{{end}}
+		<div>
+			<a href="/user/{{.User.ID}}"> statuses ({{.User.StatusesCount}}) </a> - 
+			<a href="/user/{{.User.ID}}/following"> following ({{.User.FollowingCount}}) </a> - 
+			<a href="/user/{{.User.ID}}/followers"> followers ({{.User.FollowersCount}}) </a> - 
+			<a href="/user/{{.User.ID}}/media"> media </a>
+		</div>
+		{{if .IsCurrent}}
+		<div>
+			<a href="/user/{{.User.ID}}/bookmarks"> bookmarks </a>
+			- <a href="/user/{{.User.ID}}/likes"> likes </a>
+			- <a href="/user/{{.User.ID}}/mutes"> mutes </a>
+			- <a href="/user/{{.User.ID}}/blocks"> blocks </a>
+			{{if .User.Locked}}- <a href="/user/{{.User.ID}}/requests"> requests </a>{{end}}
+		</div>
+		{{end}}
+		<div>
+			<a href="/usersearch/{{.User.ID}}"> search statuses </a>
+			{{if .IsCurrent}} - <a href="/filters"> filters </a> {{end}}
+		</div>
+	</div>
+	<div class="user-profile-decription">
+	{{EmojiFilter .User.Note .User.Emojis | Raw}}
+	</div>
+	{{if .User.Fields}}
+	<div class="user-fields">
+		{{range .User.Fields}}
+		<div>{{EmojiFilter .Name $.Data.User.Emojis | Raw}} - {{EmojiFilter .Value $.Data.User.Emojis | Raw}}</div>
+		{{end}}
+	</div>
+	{{end}}
+</div>
+</div>
+
+{{if eq .Type ""}}
+<div class="page-title"> Statuses </div>
+{{range .Statuses}}
+{{template "status.tmpl" (WithContext . $.Ctx)}}
+{{else}}
+<div class="no-data-found">No data found</div>
+{{end}}
+
+{{else if eq .Type "following"}}
+<div class="page-title"> Following </div>
+{{template "userlist.tmpl" (WithContext .Users $.Ctx)}}
+
+{{else if eq .Type "followers"}}
+<div class="page-title"> Followers </div>
+{{template "userlist.tmpl" (WithContext .Users $.Ctx)}}
+
+{{else if eq .Type "media"}}
+<div class="page-title"> Statuses with media </div>
+{{range .Statuses}}
+{{template "status.tmpl" (WithContext . $.Ctx)}}
+{{else}}
+<div class="no-data-found">No data found</div>
+{{end}}
+
+{{else if eq .Type "bookmarks"}}
+<div class="page-title"> Bookmarks </div>
+{{range .Statuses}}
+{{template "status.tmpl" (WithContext . $.Ctx)}}
+{{else}}
+<div class="no-data-found">No data found</div>
+{{end}}
+
+{{else if eq .Type "likes"}}
+<div class="page-title"> Likes </div>
+{{range .Statuses}}
+{{template "status.tmpl" (WithContext . $.Ctx)}}
+{{else}}
+<div class="no-data-found">No data found</div>
+{{end}}
+
+{{else if eq .Type "mutes"}}
+<div class="page-title"> Mutes </div>
+{{template "userlist.tmpl" (WithContext .Users $.Ctx)}}
+
+{{else if eq .Type "blocks"}}
+<div class="page-title"> Blocks </div>
+{{template "userlist.tmpl" (WithContext .Users $.Ctx)}}
+
+{{else if eq .Type "requests"}}
+<div class="page-title"> Follow requests </div>
+{{template "requestlist.tmpl" (WithContext .Users $.Ctx)}}
+{{end}}
+
+<div class="pagination">
+	{{if .NextLink}}
+		<a href="{{.NextLink}}">[next]</a>
+	{{end}}
+</div>
+
+{{template "footer.tmpl"}}
+{{end}}