diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8af31da
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+isso-dev.db
+.hugo_build.lock
\ No newline at end of file
diff --git a/content/posts/hi-post.md b/content/posts/hi-post.md
index 75d80a9..51c943b 100644
--- a/content/posts/hi-post.md
+++ b/content/posts/hi-post.md
@@ -2,7 +2,7 @@
title: "Hello World"
date: 2024-04-04T02:46:07-04:00
draft: false
-categories: ["Terminal", "Hugo"]
+categories: ["terminal", "hugo"]
tags: ["css", "terminal-style", "tutorial"]
description: "this is quick description of this post"
@@ -10,3 +10,9 @@ description: "this is quick description of this post"
# yoooo
this is one of my first articles homies. so i wil try my best to write it the best i can
+
+
+
+
+{{< chat cactus-comments >}}
+
diff --git a/content/posts/new-test-post.md b/content/posts/new-test-post.md
index a00e96c..53808e5 100644
--- a/content/posts/new-test-post.md
+++ b/content/posts/new-test-post.md
@@ -3,6 +3,6 @@ title: "New Test Post"
date: 2024-04-04T02:35:21-04:00
draft: false
params:
- topic: Games
+ topic: games
---
diff --git a/content/posts/test-post.md b/content/posts/test-post.md
index da51fa0..2e4d357 100644
--- a/content/posts/test-post.md
+++ b/content/posts/test-post.md
@@ -2,7 +2,7 @@
title: "Test Post"
date: 2023-07-22T23:03:09-04:00
draft: False
-categories: ['Games']
+categories: ['games']
---
## Introduction
diff --git a/hugo.toml b/hugo.toml
index 5af54c5..e9677cd 100644
--- a/hugo.toml
+++ b/hugo.toml
@@ -3,6 +3,14 @@ languageCode = 'en-us'
title = 'mshj.net'
theme = 'terminal'
+[params]
+
+ [params.isso]
+ url = "http://localhost:8080/"
+
+[security]
+ enableInlineShortcodes = true
+
# Enable tags and categories
[taxonomies]
category = "categories"
diff --git a/isso.dev.cfg b/isso.dev.cfg
new file mode 100644
index 0000000..9e1cebc
--- /dev/null
+++ b/isso.dev.cfg
@@ -0,0 +1,19 @@
+[general]
+dbpath = /home/mshj/Documents/projects/mshj_blog/isso-dev.db
+host =
+ http://localhost:1313
+ http://localhost:33989
+
+[server]
+listen = http://localhost:8080
+
+[moderation]
+enabled = false
+
+[client]
+require-email = false
+preview = false
+
+[guard]
+enabled = true
+ratelimit = 2
diff --git a/public/404.html b/public/404.html
index 16d637a..25a476b 100644
--- a/public/404.html
+++ b/public/404.html
@@ -22,27 +22,38 @@
diff --git a/public/categories/games/index.html b/public/categories/games/index.html
index 1379a72..5eea32d 100644
--- a/public/categories/games/index.html
+++ b/public/categories/games/index.html
@@ -22,27 +22,38 @@
diff --git a/public/categories/hugo/index.html b/public/categories/hugo/index.html
index 71073db..85d3b7a 100644
--- a/public/categories/hugo/index.html
+++ b/public/categories/hugo/index.html
@@ -22,27 +22,38 @@
diff --git a/public/categories/index.html b/public/categories/index.html
index 3e17e8a..3e6cf75 100644
--- a/public/categories/index.html
+++ b/public/categories/index.html
@@ -22,27 +22,38 @@
diff --git a/public/categories/terminal/index.html b/public/categories/terminal/index.html
index 534e74f..5a18b7f 100644
--- a/public/categories/terminal/index.html
+++ b/public/categories/terminal/index.html
@@ -22,27 +22,38 @@
diff --git a/public/css/styles.css b/public/css/styles.css
index 783ed77..01e0cf3 100644
--- a/public/css/styles.css
+++ b/public/css/styles.css
@@ -302,6 +302,260 @@ body {
min-height: 100vh;
}
+/* Neocities button slideshow */
+.neocities-buttons {
+ margin-top: 1rem;
+ font-size: 0.85rem;
+}
+
+.neocities-buttons strong {
+ display: block;
+ margin-bottom: 0.5rem;
+}
+
+.button-slideshow {
+ width: 88px;
+ height: 31px;
+ overflow: hidden;
+ position: relative;
+}
+
+.button-slideshow a {
+ position: absolute;
+ top: 0;
+ left: 0;
+ opacity: 0;
+ animation: buttonFade 12s infinite;
+}
+
+.button-slideshow a:nth-child(1) { animation-delay: 0s; }
+.button-slideshow a:nth-child(2) { animation-delay: 3s; }
+.button-slideshow a:nth-child(3) { animation-delay: 6s; }
+.button-slideshow a:nth-child(4) { animation-delay: 9s; }
+
+.button-slideshow a img {
+ display: block;
+ width: 88px;
+ height: 31px;
+}
+
+@keyframes buttonFade {
+ 0% { opacity: 0; }
+ 4% { opacity: 1; }
+ 21% { opacity: 1; }
+ 25% { opacity: 0; }
+ 100% { opacity: 0; }
+}
+
+/* Comments container */
+.comments-container {
+ margin: 0 auto;
+ width: 100%;
+ max-width: 700px;
+ padding: 1.5rem;
+ margin-top: 2rem;
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
+}
+
+.comments-container h3 {
+ margin-top: 0;
+ margin-bottom: 1rem;
+ font-size: 1rem;
+}
+
+/* Isso form overrides */
+#isso-thread {
+ color: #ecf0f1 !important;
+}
+
+/* Hide email, website, and preview */
+.isso-postbox-email,
+.isso-postbox-website,
+.isso-preview,
+.isso-post-action input[name="preview"],
+div[class*="isso-postbox-email"],
+div[class*="isso-postbox-website"] {
+ display: none !important;
+}
+
+/* Fallback: hide email/website input wrappers by input name */
+.isso-input-wrapper:has(input[name="email"]),
+.isso-input-wrapper:has(input[name="website"]),
+.isso-input-wrapper:has(input[placeholder*="mail"]),
+.isso-input-wrapper:has(input[placeholder*="ebsite"]) {
+ display: none !important;
+}
+
+/* Postbox layout */
+#isso-thread .isso-postbox {
+ display: flex !important;
+ flex-direction: column !important;
+ gap: 0 !important;
+}
+
+/* Textarea (comment box) */
+#isso-thread .isso-textarea-wrapper {
+ margin-bottom: 0.75rem !important;
+}
+
+#isso-thread .isso-textarea,
+#isso-thread textarea {
+ background: #1a1d23 !important;
+ color: #ecf0f1 !important;
+ border: 1px solid #2c3e50 !important;
+ border-radius: 12px !important;
+ font-family: 'SF Mono', 'Menlo', monospace !important;
+ font-size: 0.9rem !important;
+ padding: 0.75rem !important;
+ min-height: 100px !important;
+ width: 100% !important;
+ box-sizing: border-box !important;
+ resize: vertical !important;
+}
+
+/* Author name input */
+#isso-thread .isso-postbox-author,
+#isso-thread .isso-input-wrapper:first-of-type {
+ margin-bottom: 0 !important;
+}
+
+#isso-thread input[type="text"],
+#isso-thread .isso-input-wrapper input {
+ background: #1a1d23 !important;
+ color: #ecf0f1 !important;
+ border: 1px solid #2c3e50 !important;
+ border-radius: 12px !important;
+ font-family: 'SF Mono', 'Menlo', monospace !important;
+ font-size: 0.9rem !important;
+ padding: 0.5rem 0.75rem !important;
+ width: 100% !important;
+ box-sizing: border-box !important;
+}
+
+/* Focus states */
+#isso-thread textarea:focus,
+#isso-thread .isso-textarea:focus,
+#isso-thread input[type="text"]:focus {
+ border-color: #62c4ff !important;
+ outline: none !important;
+}
+
+#isso-thread textarea::placeholder,
+#isso-thread input::placeholder {
+ color: #555 !important;
+}
+
+/* Name + submit aligned on same row via JS-injected wrapper isn't possible,
+ so use CSS grid on the postbox to place them */
+#isso-thread .isso-postbox {
+ display: grid !important;
+ grid-template-columns: 1fr !important;
+ gap: 0.75rem !important;
+}
+
+#isso-thread .isso-textarea-wrapper {
+ grid-column: 1 !important;
+}
+
+#isso-thread .isso-auth-section {
+ display: flex !important;
+ align-items: center !important;
+ justify-content: space-between !important;
+ gap: 0.5rem !important;
+}
+
+#isso-thread .isso-postbox-author,
+#isso-thread .isso-auth-section .isso-input-wrapper:first-of-type {
+ flex: 1 !important;
+ margin-bottom: 0 !important;
+}
+
+#isso-thread .isso-post-action {
+ margin: 0 !important;
+ padding: 0 !important;
+}
+
+#isso-thread .isso-post-action:first-of-type {
+ margin-left: auto !important;
+}
+
+#isso-thread .isso-post-action ~ .isso-post-action {
+ display: none !important;
+}
+
+#isso-thread .isso-post-action input[type="submit"],
+#isso-thread .isso-postbox-author input,
+#isso-thread .isso-input-wrapper:first-of-type input {
+ height: 36px !important;
+ box-sizing: border-box !important;
+}
+
+#isso-thread .isso-postbox-author input,
+#isso-thread .isso-input-wrapper:first-of-type input {
+ width: 100% !important;
+ min-width: 180px !important;
+}
+
+#isso-thread input[type="submit"] {
+ background: #62c4ff !important;
+ color: #222225 !important;
+ border: none !important;
+ border-radius: 12px !important;
+ padding: 0.5rem 1.25rem !important;
+ font-family: 'SF Mono', 'Menlo', monospace !important;
+ font-size: 0.85rem !important;
+ font-weight: 600 !important;
+ cursor: pointer !important;
+ transition: background 0.2s ease !important;
+}
+
+#isso-thread input[type="submit"]:hover {
+ background: #4ab0ed !important;
+}
+
+/* Custom comment avatars */
+.isso-custom-avatar {
+ width: 48px !important;
+ height: 48px !important;
+ border-radius: 50% !important;
+ object-fit: cover !important;
+}
+
+/* Comment styling */
+#isso-thread .isso-comment {
+ border-left: 2px solid #2c3e50 !important;
+ padding: 0.75rem !important;
+ padding-left: 1rem !important;
+ margin-bottom: 1rem !important;
+ margin-top: 1rem !important;
+}
+
+#isso-thread .isso-comment-header {
+ color: #a3abba !important;
+ font-size: 0.8rem !important;
+ margin-bottom: 0.5rem !important;
+}
+
+#isso-thread .isso-text-wrapper {
+ color: #ecf0f1 !important;
+ line-height: 1.5 !important;
+}
+
+#isso-thread .isso-comment-footer {
+ color: #666 !important;
+ font-size: 0.75rem !important;
+ margin-top: 0.5rem !important;
+}
+
+#isso-thread .isso-comment-footer a {
+ color: #a3abba !important;
+ text-decoration: none !important;
+}
+
+#isso-thread .isso-comment-footer a:hover {
+ color: #62c4ff !important;
+}
+
:root {
--global-font-size: 15px;
--global-line-height: 1.4em;
diff --git a/public/css/styles.css.tmp.28280.1769582633307 b/public/css/styles.css.tmp.28280.1769582633307
new file mode 100644
index 0000000..01e0cf3
--- /dev/null
+++ b/public/css/styles.css.tmp.28280.1769582633307
@@ -0,0 +1,584 @@
+/* Sleek Terminal Card */
+.card-container {
+ --terminal-bg: #1a1d23;
+ --terminal-border: #2c3e50;
+ --terminal-accent: #3498db;
+ --terminal-text: #ecf0f1;
+ --terminal-highlight: #2ecc71;
+
+ color: var(--terminal-text) !important;
+ font-family: 'SF Mono', 'Menlo', monospace;
+ padding: 1rem;
+ position: relative;
+ overflow: hidden;
+ transition: all 0.3s ease;
+ max-width: 700px;
+ margin: 1.5rem auto;
+}
+
+.main-content {
+ flex-grow: 1;
+ width: 100%;
+ padding-bottom: 60px;
+}
+
+
+/* Card container adjustments */
+.card-container {
+ margin: 0 auto;
+ width: 100%;
+ max-width: 700px;
+ padding-right: 1.5rem;
+ padding-bottom: 1.5rem;
+ padding-left: 1.5rem;
+ padding-top: 0;
+}
+
+/* Header styling */
+.card-container header {
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
+ margin-bottom: 0.5rem;
+ padding-bottom: 0.75rem;
+ font-size: 1.2rem;
+ font-weight: 600;
+ background-color: transparent;
+ padding: 0;
+ border: none;
+}
+
+.card-container header h1 {
+ padding-top: 0;
+}
+
+.card-container header h2 {
+ color: var(--terminal-text);
+ font-size: inherit;
+ font-weight: inherit;
+ margin: 0;
+ letter-spacing: -0.5px;
+}
+
+/* Body content */
+.content-wrapper {
+ line-height: 1.6;
+ font-size: 1rem;
+}
+
+/* Code blocks */
+.content-wrapper pre {
+ background: rgba(0, 0, 0, 0.2);
+ border-radius: 4px;
+ padding: 0.75rem;
+ overflow-x: auto;
+}
+
+
+/* Status indicator */
+.card-container::after {
+ content: '●';
+ position: absolute;
+ top: 12px;
+ right: 15px;
+ color: var(--terminal-highlight);
+ font-size: 0.8rem;
+ text-shadow: 0 0 8px currentColor;
+ display: none;
+}
+
+/* Menu list */
+.menu-list {
+ list-style-type: none !important;
+ padding: 0;
+ margin: 0;
+}
+
+.menu-list li {
+ margin-bottom: 0.5rem;
+ list-style: none;
+}
+
+.meta-info {
+ font-size: 0.8rem;
+ color: #666;
+ margin-left: 0.5rem;
+}
+/* Tag list */
+.tag-list {
+ margin-top: 1rem;
+ font-size: 0.8rem;
+}
+
+/* Tag link */
+.tag-link {
+ text-decoration: none;
+ color: #ffffff;
+ padding: 0.1rem 0.3rem;
+ border-radius: 0.3rem;
+ margin-right: 0.3rem;
+}
+
+.tag-link:nth-child(8n+1) {
+ background-color: #f2f2f2;
+}
+
+.tag-link:nth-child(8n+2) {
+ background-color: #ff69b4;
+}
+
+.tag-link:nth-child(8n+3) {
+ background-color: #33cc33;
+}
+
+.tag-link:nth-child(8n+4) {
+ background-color: #6666ff;
+}
+
+.tag-link:nth-child(8n+5) {
+ background-color: #ffff66;
+}
+
+.tag-link:nth-child(8n+6) {
+ background-color: #ff9966;
+}
+
+.tag-link:nth-child(8n+7) {
+ background-color: #cc66cc;
+}
+
+.tag-link:nth-child(8n+0) {
+ background-color: #66cccc;
+}
+.tag-link:hover {
+ background-color: #ddd;
+ color: #333;
+}
+
+.components-grid {
+ display: grid;
+ grid-column-gap: 1.4em;
+ grid-template-columns: auto;
+ grid-template-rows: auto;
+}
+
+.image-grid {
+ display: grid;
+ grid-template-rows: auto;
+ display: grid;
+ grid-gap: 1em;
+ grid-template-rows: auto;
+ grid-template-columns: repeat(auto-fit,
+ minmax(calc(var(--page-width) / 12), 1fr));
+}
+
+.header-container {
+ display: flex;
+ align-items: center;
+}
+
+.mini-header {
+ font-size: 0.8rem;
+ color: #666;
+ margin-left: 1rem;
+ border-right: 2px solid #666;
+ animation: blink 0.7s infinite;
+}
+
+@keyframes blink {
+ 0% {
+ border-color: #666;
+ }
+ 50% {
+ border-color: transparent;
+ }
+ 100% {
+ border-color: #666;
+ }
+}
+
+@media only screen and (min-width: 70em) {
+ .components-grid {
+ grid-template-columns: 3fr 9fr;
+ }
+
+ .components-grid aside {
+ position: sticky;
+ top: calc(var(--global-space) * 2);
+ }
+}
+
+.terminal-tags {
+ margin-top: 1rem;
+ line-height: 2;
+}
+
+.terminal-tag {
+ background-color: var(--secondary-color);
+ color: var(--background-color);
+ padding: 0.2rem 0.5rem;
+ margin-right: 0.5rem;
+ text-decoration: none;
+ font-size: 0.8rem;
+ border-radius: 3px;
+}
+
+.terminal-tag:hover {
+ background-color: var(--primary-color);
+}
+
+.terminal-meta {
+ opacity: 0.7;
+ font-size: 0.8rem;
+ margin-left: 0.5rem;
+}
+
+
+.post-list {
+ display: flex;
+ flex-direction: column;
+ padding: 1rem;
+ border: 1px solid #eee;
+ border-radius: 20px;
+ margin-bottom: 1.5rem;
+ position:static !important;
+
+}
+.post-list li {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+.post-list-title {
+ font-weight: 600;
+ color: #333;
+ margin-bottom: 0.5rem;
+}
+
+
+.post-list-description {
+ color: #e6e6e6;
+ font-size: 0.9rem;
+ line-height: 1.4;
+ margin: 0 0 0 0;
+}
+
+/* Add spacing between list items */
+.post-list + .post-list {
+ margin-top: 1.5rem;
+}
+
+
+.site-footer {
+ margin-top: auto;
+ width: 100%;
+ padding: 1rem;
+ text-align: center;
+}
+
+.footer-nav a {
+ text-decoration: none;
+ color: #666;
+ margin: 0 0.5rem;
+ display: inline-block;
+}
+
+.footer-nav a:hover {
+ color: #333;
+}
+
+.footer-nav svg {
+ vertical-align: middle;
+}
+
+.site-footer p {
+ font-size: 0.9rem;
+ color: #666;
+ margin: 0.5rem 0;
+}
+
+body {
+ display: flex;
+ flex-direction: column;
+ min-height: 100vh;
+}
+
+/* Neocities button slideshow */
+.neocities-buttons {
+ margin-top: 1rem;
+ font-size: 0.85rem;
+}
+
+.neocities-buttons strong {
+ display: block;
+ margin-bottom: 0.5rem;
+}
+
+.button-slideshow {
+ width: 88px;
+ height: 31px;
+ overflow: hidden;
+ position: relative;
+}
+
+.button-slideshow a {
+ position: absolute;
+ top: 0;
+ left: 0;
+ opacity: 0;
+ animation: buttonFade 12s infinite;
+}
+
+.button-slideshow a:nth-child(1) { animation-delay: 0s; }
+.button-slideshow a:nth-child(2) { animation-delay: 3s; }
+.button-slideshow a:nth-child(3) { animation-delay: 6s; }
+.button-slideshow a:nth-child(4) { animation-delay: 9s; }
+
+.button-slideshow a img {
+ display: block;
+ width: 88px;
+ height: 31px;
+}
+
+@keyframes buttonFade {
+ 0% { opacity: 0; }
+ 4% { opacity: 1; }
+ 21% { opacity: 1; }
+ 25% { opacity: 0; }
+ 100% { opacity: 0; }
+}
+
+/* Comments container */
+.comments-container {
+ margin: 0 auto;
+ width: 100%;
+ max-width: 700px;
+ padding: 1.5rem;
+ margin-top: 2rem;
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
+}
+
+.comments-container h3 {
+ margin-top: 0;
+ margin-bottom: 1rem;
+ font-size: 1rem;
+}
+
+/* Isso form overrides */
+#isso-thread {
+ color: #ecf0f1 !important;
+}
+
+/* Hide email, website, and preview */
+.isso-postbox-email,
+.isso-postbox-website,
+.isso-preview,
+.isso-post-action input[name="preview"],
+div[class*="isso-postbox-email"],
+div[class*="isso-postbox-website"] {
+ display: none !important;
+}
+
+/* Fallback: hide email/website input wrappers by input name */
+.isso-input-wrapper:has(input[name="email"]),
+.isso-input-wrapper:has(input[name="website"]),
+.isso-input-wrapper:has(input[placeholder*="mail"]),
+.isso-input-wrapper:has(input[placeholder*="ebsite"]) {
+ display: none !important;
+}
+
+/* Postbox layout */
+#isso-thread .isso-postbox {
+ display: flex !important;
+ flex-direction: column !important;
+ gap: 0 !important;
+}
+
+/* Textarea (comment box) */
+#isso-thread .isso-textarea-wrapper {
+ margin-bottom: 0.75rem !important;
+}
+
+#isso-thread .isso-textarea,
+#isso-thread textarea {
+ background: #1a1d23 !important;
+ color: #ecf0f1 !important;
+ border: 1px solid #2c3e50 !important;
+ border-radius: 12px !important;
+ font-family: 'SF Mono', 'Menlo', monospace !important;
+ font-size: 0.9rem !important;
+ padding: 0.75rem !important;
+ min-height: 100px !important;
+ width: 100% !important;
+ box-sizing: border-box !important;
+ resize: vertical !important;
+}
+
+/* Author name input */
+#isso-thread .isso-postbox-author,
+#isso-thread .isso-input-wrapper:first-of-type {
+ margin-bottom: 0 !important;
+}
+
+#isso-thread input[type="text"],
+#isso-thread .isso-input-wrapper input {
+ background: #1a1d23 !important;
+ color: #ecf0f1 !important;
+ border: 1px solid #2c3e50 !important;
+ border-radius: 12px !important;
+ font-family: 'SF Mono', 'Menlo', monospace !important;
+ font-size: 0.9rem !important;
+ padding: 0.5rem 0.75rem !important;
+ width: 100% !important;
+ box-sizing: border-box !important;
+}
+
+/* Focus states */
+#isso-thread textarea:focus,
+#isso-thread .isso-textarea:focus,
+#isso-thread input[type="text"]:focus {
+ border-color: #62c4ff !important;
+ outline: none !important;
+}
+
+#isso-thread textarea::placeholder,
+#isso-thread input::placeholder {
+ color: #555 !important;
+}
+
+/* Name + submit aligned on same row via JS-injected wrapper isn't possible,
+ so use CSS grid on the postbox to place them */
+#isso-thread .isso-postbox {
+ display: grid !important;
+ grid-template-columns: 1fr !important;
+ gap: 0.75rem !important;
+}
+
+#isso-thread .isso-textarea-wrapper {
+ grid-column: 1 !important;
+}
+
+#isso-thread .isso-auth-section {
+ display: flex !important;
+ align-items: center !important;
+ justify-content: space-between !important;
+ gap: 0.5rem !important;
+}
+
+#isso-thread .isso-postbox-author,
+#isso-thread .isso-auth-section .isso-input-wrapper:first-of-type {
+ flex: 1 !important;
+ margin-bottom: 0 !important;
+}
+
+#isso-thread .isso-post-action {
+ margin: 0 !important;
+ padding: 0 !important;
+}
+
+#isso-thread .isso-post-action:first-of-type {
+ margin-left: auto !important;
+}
+
+#isso-thread .isso-post-action ~ .isso-post-action {
+ display: none !important;
+}
+
+#isso-thread .isso-post-action input[type="submit"],
+#isso-thread .isso-postbox-author input,
+#isso-thread .isso-input-wrapper:first-of-type input {
+ height: 36px !important;
+ box-sizing: border-box !important;
+}
+
+#isso-thread .isso-postbox-author input,
+#isso-thread .isso-input-wrapper:first-of-type input {
+ width: 100% !important;
+ min-width: 180px !important;
+}
+
+#isso-thread input[type="submit"] {
+ background: #62c4ff !important;
+ color: #222225 !important;
+ border: none !important;
+ border-radius: 12px !important;
+ padding: 0.5rem 1.25rem !important;
+ font-family: 'SF Mono', 'Menlo', monospace !important;
+ font-size: 0.85rem !important;
+ font-weight: 600 !important;
+ cursor: pointer !important;
+ transition: background 0.2s ease !important;
+}
+
+#isso-thread input[type="submit"]:hover {
+ background: #4ab0ed !important;
+}
+
+/* Custom comment avatars */
+.isso-custom-avatar {
+ width: 48px !important;
+ height: 48px !important;
+ border-radius: 50% !important;
+ object-fit: cover !important;
+}
+
+/* Comment styling */
+#isso-thread .isso-comment {
+ border-left: 2px solid #2c3e50 !important;
+ padding: 0.75rem !important;
+ padding-left: 1rem !important;
+ margin-bottom: 1rem !important;
+ margin-top: 1rem !important;
+}
+
+#isso-thread .isso-comment-header {
+ color: #a3abba !important;
+ font-size: 0.8rem !important;
+ margin-bottom: 0.5rem !important;
+}
+
+#isso-thread .isso-text-wrapper {
+ color: #ecf0f1 !important;
+ line-height: 1.5 !important;
+}
+
+#isso-thread .isso-comment-footer {
+ color: #666 !important;
+ font-size: 0.75rem !important;
+ margin-top: 0.5rem !important;
+}
+
+#isso-thread .isso-comment-footer a {
+ color: #a3abba !important;
+ text-decoration: none !important;
+}
+
+#isso-thread .isso-comment-footer a:hover {
+ color: #62c4ff !important;
+}
+
+:root {
+ --global-font-size: 15px;
+ --global-line-height: 1.4em;
+ --global-space: 10px;
+ --font-stack: Menlo, Monaco, Lucida Console, Liberation Mono,
+ DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace,
+ serif;
+ --mono-font-stack: Menlo, Monaco, Lucida Console, Liberation Mono,
+ DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace,
+ serif;
+ --background-color: #15151b !important;
+ --page-width: 60em;
+ --font-color: #e8e9ed;
+ --invert-font-color: #222225;
+ --secondary-color: #a3abba;
+ --tertiary-color: #a3abba;
+ --primary-color: #62c4ff;
+ --error-color: #ff3c74;
+ --progress-bar-background: #3f3f44;
+ --progress-bar-fill: #62c4ff;
+ --code-bg-color: #3f3f44;
+ --input-style: solid;
+ --display-h1-decoration: none;
+}
+
+
diff --git a/public/images/avatars/avatar1.jpg b/public/images/avatars/avatar1.jpg
new file mode 100644
index 0000000..9fde822
Binary files /dev/null and b/public/images/avatars/avatar1.jpg differ
diff --git a/public/images/avatars/avatar2.png b/public/images/avatars/avatar2.png
new file mode 100644
index 0000000..18e6dd0
Binary files /dev/null and b/public/images/avatars/avatar2.png differ
diff --git a/public/images/avatars/avatar3.png b/public/images/avatars/avatar3.png
new file mode 100644
index 0000000..7ede1d6
Binary files /dev/null and b/public/images/avatars/avatar3.png differ
diff --git a/public/index.html b/public/index.html
index 4284c7c..4bb0b8f 100644
--- a/public/index.html
+++ b/public/index.html
@@ -22,27 +22,38 @@
diff --git a/public/js/topbar.js b/public/js/topbar.js
index 9c258cf..f305ff3 100644
--- a/public/js/topbar.js
+++ b/public/js/topbar.js
@@ -1,5 +1,5 @@
const miniHeader = document.getElementById('mini-header');
-const texts = ['use linux', 'i hate css', 'gpl everything', 'made with love']; // add your random text here
+const texts = ['use linux', 'soup for my family', 'gpl everything']; // add your random text here
const text = texts[Math.floor(Math.random() * texts.length)];
let charIndex = 0;
@@ -7,7 +7,7 @@ function typeText() {
if (charIndex < text.length) {
miniHeader.textContent += text.charAt(charIndex);
charIndex++;
- setTimeout(typeText, 50); // adjust the typing speed here
+ setTimeout(typeText, 50);
}
}
diff --git a/public/posts/hi-post/index.html b/public/posts/hi-post/index.html
index f7e0be0..10383e2 100644
--- a/public/posts/hi-post/index.html
+++ b/public/posts/hi-post/index.html
@@ -1,5 +1,5 @@
-
+
@@ -22,27 +22,38 @@
@@ -55,9 +66,9 @@
@@ -77,12 +88,90 @@
yoooo
this is one of my first articles homies. so i wil try my best to write it the best i can
-
-
-
+
+
+
+
+
+
+
diff --git a/public/posts/index.html b/public/posts/index.html
index 2043b61..457e902 100644
--- a/public/posts/index.html
+++ b/public/posts/index.html
@@ -22,27 +22,38 @@
diff --git a/public/posts/new-test-post/index.html b/public/posts/new-test-post/index.html
index cfe7f03..c7dddfb 100644
--- a/public/posts/new-test-post/index.html
+++ b/public/posts/new-test-post/index.html
@@ -1,5 +1,5 @@
-
+
@@ -22,27 +22,38 @@
@@ -54,12 +65,88 @@
-
-
-
+
+
+
+
+
diff --git a/public/posts/test-post/index.html b/public/posts/test-post/index.html
index 67cc8e9..9f3ef5a 100644
--- a/public/posts/test-post/index.html
+++ b/public/posts/test-post/index.html
@@ -1,5 +1,5 @@
-
+
@@ -22,27 +22,38 @@
@@ -55,7 +66,7 @@
@@ -65,12 +76,88 @@
Introduction
This is bold text, and this is emphasized text.
Visit the Hugo website!
-
-
-
+
+
+
+
+
diff --git a/public/projects/index.html b/public/projects/index.html
index c739bf1..1d22e45 100644
--- a/public/projects/index.html
+++ b/public/projects/index.html
@@ -22,27 +22,38 @@
diff --git a/public/projects/project/index.html b/public/projects/project/index.html
index 99d464e..e7240e6 100644
--- a/public/projects/project/index.html
+++ b/public/projects/project/index.html
@@ -22,27 +22,38 @@
diff --git a/public/tags/css/index.html b/public/tags/css/index.html
index 75e802b..f378d81 100644
--- a/public/tags/css/index.html
+++ b/public/tags/css/index.html
@@ -22,27 +22,38 @@
diff --git a/public/tags/index.html b/public/tags/index.html
index 3c41ccf..71c2dde 100644
--- a/public/tags/index.html
+++ b/public/tags/index.html
@@ -22,27 +22,38 @@
diff --git a/public/tags/terminal-style/index.html b/public/tags/terminal-style/index.html
index 7955330..9f63cd7 100644
--- a/public/tags/terminal-style/index.html
+++ b/public/tags/terminal-style/index.html
@@ -22,27 +22,38 @@
diff --git a/public/tags/tutorial/index.html b/public/tags/tutorial/index.html
index b71ddd2..9fee6b6 100644
--- a/public/tags/tutorial/index.html
+++ b/public/tags/tutorial/index.html
@@ -22,27 +22,38 @@
diff --git a/static/images/avatars/avatar1.jpg b/static/images/avatars/avatar1.jpg
new file mode 100644
index 0000000..9fde822
Binary files /dev/null and b/static/images/avatars/avatar1.jpg differ
diff --git a/static/images/avatars/avatar2.png b/static/images/avatars/avatar2.png
new file mode 100644
index 0000000..18e6dd0
Binary files /dev/null and b/static/images/avatars/avatar2.png differ
diff --git a/static/images/avatars/avatar3.png b/static/images/avatars/avatar3.png
new file mode 100644
index 0000000..7ede1d6
Binary files /dev/null and b/static/images/avatars/avatar3.png differ
diff --git a/themes/terminal/layouts/_default/baseof.html b/themes/terminal/layouts/_default/baseof.html
index 57382c5..d1a4588 100644
--- a/themes/terminal/layouts/_default/baseof.html
+++ b/themes/terminal/layouts/_default/baseof.html
@@ -14,19 +14,30 @@
diff --git a/themes/terminal/layouts/_default/single.html b/themes/terminal/layouts/_default/single.html
index a953981..f77031a 100644
--- a/themes/terminal/layouts/_default/single.html
+++ b/themes/terminal/layouts/_default/single.html
@@ -21,9 +21,85 @@
{{ end }}
- {{ .Content }}
+ {{ .Content }}
-
-
+
+{{ with .Site.Params.isso }}
+
+{{ end }}
{{ end }}
\ No newline at end of file
diff --git a/themes/terminal/layouts/_shortcodes/chat.html b/themes/terminal/layouts/_shortcodes/chat.html
new file mode 100644
index 0000000..bbc9516
--- /dev/null
+++ b/themes/terminal/layouts/_shortcodes/chat.html
@@ -0,0 +1,16 @@
+{{ if .Site.Params.cactusComments.enabled }}
+
+{{ end }}
diff --git a/themes/terminal/static/css/styles.css b/themes/terminal/static/css/styles.css
index 783ed77..01e0cf3 100644
--- a/themes/terminal/static/css/styles.css
+++ b/themes/terminal/static/css/styles.css
@@ -302,6 +302,260 @@ body {
min-height: 100vh;
}
+/* Neocities button slideshow */
+.neocities-buttons {
+ margin-top: 1rem;
+ font-size: 0.85rem;
+}
+
+.neocities-buttons strong {
+ display: block;
+ margin-bottom: 0.5rem;
+}
+
+.button-slideshow {
+ width: 88px;
+ height: 31px;
+ overflow: hidden;
+ position: relative;
+}
+
+.button-slideshow a {
+ position: absolute;
+ top: 0;
+ left: 0;
+ opacity: 0;
+ animation: buttonFade 12s infinite;
+}
+
+.button-slideshow a:nth-child(1) { animation-delay: 0s; }
+.button-slideshow a:nth-child(2) { animation-delay: 3s; }
+.button-slideshow a:nth-child(3) { animation-delay: 6s; }
+.button-slideshow a:nth-child(4) { animation-delay: 9s; }
+
+.button-slideshow a img {
+ display: block;
+ width: 88px;
+ height: 31px;
+}
+
+@keyframes buttonFade {
+ 0% { opacity: 0; }
+ 4% { opacity: 1; }
+ 21% { opacity: 1; }
+ 25% { opacity: 0; }
+ 100% { opacity: 0; }
+}
+
+/* Comments container */
+.comments-container {
+ margin: 0 auto;
+ width: 100%;
+ max-width: 700px;
+ padding: 1.5rem;
+ margin-top: 2rem;
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
+}
+
+.comments-container h3 {
+ margin-top: 0;
+ margin-bottom: 1rem;
+ font-size: 1rem;
+}
+
+/* Isso form overrides */
+#isso-thread {
+ color: #ecf0f1 !important;
+}
+
+/* Hide email, website, and preview */
+.isso-postbox-email,
+.isso-postbox-website,
+.isso-preview,
+.isso-post-action input[name="preview"],
+div[class*="isso-postbox-email"],
+div[class*="isso-postbox-website"] {
+ display: none !important;
+}
+
+/* Fallback: hide email/website input wrappers by input name */
+.isso-input-wrapper:has(input[name="email"]),
+.isso-input-wrapper:has(input[name="website"]),
+.isso-input-wrapper:has(input[placeholder*="mail"]),
+.isso-input-wrapper:has(input[placeholder*="ebsite"]) {
+ display: none !important;
+}
+
+/* Postbox layout */
+#isso-thread .isso-postbox {
+ display: flex !important;
+ flex-direction: column !important;
+ gap: 0 !important;
+}
+
+/* Textarea (comment box) */
+#isso-thread .isso-textarea-wrapper {
+ margin-bottom: 0.75rem !important;
+}
+
+#isso-thread .isso-textarea,
+#isso-thread textarea {
+ background: #1a1d23 !important;
+ color: #ecf0f1 !important;
+ border: 1px solid #2c3e50 !important;
+ border-radius: 12px !important;
+ font-family: 'SF Mono', 'Menlo', monospace !important;
+ font-size: 0.9rem !important;
+ padding: 0.75rem !important;
+ min-height: 100px !important;
+ width: 100% !important;
+ box-sizing: border-box !important;
+ resize: vertical !important;
+}
+
+/* Author name input */
+#isso-thread .isso-postbox-author,
+#isso-thread .isso-input-wrapper:first-of-type {
+ margin-bottom: 0 !important;
+}
+
+#isso-thread input[type="text"],
+#isso-thread .isso-input-wrapper input {
+ background: #1a1d23 !important;
+ color: #ecf0f1 !important;
+ border: 1px solid #2c3e50 !important;
+ border-radius: 12px !important;
+ font-family: 'SF Mono', 'Menlo', monospace !important;
+ font-size: 0.9rem !important;
+ padding: 0.5rem 0.75rem !important;
+ width: 100% !important;
+ box-sizing: border-box !important;
+}
+
+/* Focus states */
+#isso-thread textarea:focus,
+#isso-thread .isso-textarea:focus,
+#isso-thread input[type="text"]:focus {
+ border-color: #62c4ff !important;
+ outline: none !important;
+}
+
+#isso-thread textarea::placeholder,
+#isso-thread input::placeholder {
+ color: #555 !important;
+}
+
+/* Name + submit aligned on same row via JS-injected wrapper isn't possible,
+ so use CSS grid on the postbox to place them */
+#isso-thread .isso-postbox {
+ display: grid !important;
+ grid-template-columns: 1fr !important;
+ gap: 0.75rem !important;
+}
+
+#isso-thread .isso-textarea-wrapper {
+ grid-column: 1 !important;
+}
+
+#isso-thread .isso-auth-section {
+ display: flex !important;
+ align-items: center !important;
+ justify-content: space-between !important;
+ gap: 0.5rem !important;
+}
+
+#isso-thread .isso-postbox-author,
+#isso-thread .isso-auth-section .isso-input-wrapper:first-of-type {
+ flex: 1 !important;
+ margin-bottom: 0 !important;
+}
+
+#isso-thread .isso-post-action {
+ margin: 0 !important;
+ padding: 0 !important;
+}
+
+#isso-thread .isso-post-action:first-of-type {
+ margin-left: auto !important;
+}
+
+#isso-thread .isso-post-action ~ .isso-post-action {
+ display: none !important;
+}
+
+#isso-thread .isso-post-action input[type="submit"],
+#isso-thread .isso-postbox-author input,
+#isso-thread .isso-input-wrapper:first-of-type input {
+ height: 36px !important;
+ box-sizing: border-box !important;
+}
+
+#isso-thread .isso-postbox-author input,
+#isso-thread .isso-input-wrapper:first-of-type input {
+ width: 100% !important;
+ min-width: 180px !important;
+}
+
+#isso-thread input[type="submit"] {
+ background: #62c4ff !important;
+ color: #222225 !important;
+ border: none !important;
+ border-radius: 12px !important;
+ padding: 0.5rem 1.25rem !important;
+ font-family: 'SF Mono', 'Menlo', monospace !important;
+ font-size: 0.85rem !important;
+ font-weight: 600 !important;
+ cursor: pointer !important;
+ transition: background 0.2s ease !important;
+}
+
+#isso-thread input[type="submit"]:hover {
+ background: #4ab0ed !important;
+}
+
+/* Custom comment avatars */
+.isso-custom-avatar {
+ width: 48px !important;
+ height: 48px !important;
+ border-radius: 50% !important;
+ object-fit: cover !important;
+}
+
+/* Comment styling */
+#isso-thread .isso-comment {
+ border-left: 2px solid #2c3e50 !important;
+ padding: 0.75rem !important;
+ padding-left: 1rem !important;
+ margin-bottom: 1rem !important;
+ margin-top: 1rem !important;
+}
+
+#isso-thread .isso-comment-header {
+ color: #a3abba !important;
+ font-size: 0.8rem !important;
+ margin-bottom: 0.5rem !important;
+}
+
+#isso-thread .isso-text-wrapper {
+ color: #ecf0f1 !important;
+ line-height: 1.5 !important;
+}
+
+#isso-thread .isso-comment-footer {
+ color: #666 !important;
+ font-size: 0.75rem !important;
+ margin-top: 0.5rem !important;
+}
+
+#isso-thread .isso-comment-footer a {
+ color: #a3abba !important;
+ text-decoration: none !important;
+}
+
+#isso-thread .isso-comment-footer a:hover {
+ color: #62c4ff !important;
+}
+
:root {
--global-font-size: 15px;
--global-line-height: 1.4em;
diff --git a/themes/terminal/static/js/topbar.js b/themes/terminal/static/js/topbar.js
index 9c258cf..f305ff3 100644
--- a/themes/terminal/static/js/topbar.js
+++ b/themes/terminal/static/js/topbar.js
@@ -1,5 +1,5 @@
const miniHeader = document.getElementById('mini-header');
-const texts = ['use linux', 'i hate css', 'gpl everything', 'made with love']; // add your random text here
+const texts = ['use linux', 'soup for my family', 'gpl everything']; // add your random text here
const text = texts[Math.floor(Math.random() * texts.length)];
let charIndex = 0;
@@ -7,7 +7,7 @@ function typeText() {
if (charIndex < text.length) {
miniHeader.textContent += text.charAt(charIndex);
charIndex++;
- setTimeout(typeText, 50); // adjust the typing speed here
+ setTimeout(typeText, 50);
}
}
comments
+