fix some stuff with fics loader

This commit is contained in:
haetae 2025-09-02 17:08:20 -04:00
parent e56feaf1d0
commit be0ffaeb93
13 changed files with 240 additions and 645 deletions

View File

@ -0,0 +1 @@
did:plc:dg2qmmjic7mmecrbvpuhtvh6

View File

@ -1,9 +0,0 @@
title: truly
series: honkai
publishedAt: 2021-05-20
summary:
this is crazy but...
but would you
> trust me?

View File

@ -1,11 +0,0 @@
---
title: take me on
publishedAt: 2025-01-05
notes: hahah
---
dksafjasldkjfksdl
kjfdlskafjaslk
k
ss sddd

View File

@ -1,9 +0,0 @@
title = "this is a test"
series = [
"test",
"fandom 2"
]
publishedAt = 2022-12-22
summary = """
yeller
"""

View File

@ -1,10 +0,0 @@
---
title: ch 1
publishedAt: 2022-11-01
notes: i wrote this in a fugue state while listening to [Waste by Oh Wonder](https://www.youtube.com/watch?v=Ar1grAdGkec)
sortOrder: 1
---
test
two

View File

@ -1,13 +0,0 @@
---
title: chapter 2
publishedAt: 2023-12-12
notes: i wrote this in a fugue state while listening to [Waste by Oh Wonder](https://www.youtube.com/watch?v=Ar1grAdGkec)
sortOrder: 2
---
tksdfalkjflkd
kasdjfldk
k
kdsafsd

View File

@ -4,8 +4,6 @@ publishedAt: 2020-12-20T19:18:00
notes: i wrote this in a fugue state while listening to [Waste by Oh Wonder](https://www.youtube.com/watch?v=Ar1grAdGkec)
---
![the of all time]($/images/the-of-all-time.png)
 
 

View File

@ -6,10 +6,6 @@ import Navbar from "~/Navbar.astro";
import formatDate from "@/utils/formatDate";
import moods from "@/utils/moods";
import outerBBS from "$/guild-bbs.png";
import innerBBS from "$/guild-bbs-content.png";
import sideBBS from "$/guild-bbs-list.png";
interface Props {
id?: string;
title: string;
@ -31,435 +27,96 @@ blog.sort((a, b) => b.data.pubDate!.valueOf() - a.data.pubDate!.valueOf());
---
<Layout {title}>
<Fragment slot="head">
<link rel="preload" href={outerBBS.src} as="image" />
<link rel="preload" href={innerBBS.src} as="image" />
<link rel="preload" href={sideBBS.src} as="image" />
<Font cssVariable="--arial" preload />
<Font cssVariable="--dotumche-11" preload />
<Font cssVariable="--dotumche-12" preload />
<Font cssVariable="--dotum-11" preload />
<Font cssVariable="--dotum-12" preload />
<slot name="head" />
</Fragment>
<Navbar />
<main>
<article id={id}>
<header>
<h1>{title}</h1>
<div class="info">
<time datetime={formatDate(date, true)}>
<span class="title">Date</span>
<span class="desc">{formatDate(date)}</span>
</time>
</div>
</header>
<div class="content">
<slot />
</div>
{currently && (
<aside>
<h2>Current</h2>
{currently?.mood && (
<dl>
<dt class="title">Mood</dt>
<dd class="desc">
<Image src={`/src/assets/moods/${moods.find(mood => mood === currently?.mood)}.png`} width={36} height={36} alt="" />
{currently.mood}
</dd>
</dl>
)}
{currently.playing && (
<dl>
<dt class="title">Game</dt>
<dd class="desc">{currently.playing}</dd>
</dl>
)}
{currently.watching && (
<dl>
<dt class="title">Show</dt>
<dd class="desc">{currently.watching}</dd>
</dl>
)}
{currently.reading && (
<dl>
<dt class="title">Book</dt>
<dd class="desc">{currently.reading}</dd>
</dl>
)}
{currently.listening && (
<dl>
<dt>Currently listening</dt>
<dd>{currently.listening}</dd>
</dl>
)}
</aside>
)}
</article>
<slot name="pagination" />
<nav id="blog-links">
<div class="inner">
<div class="nav-section">
<h1><span class="title">recent posts</span></h1>
<h2>recent posts</h2>
<ul>
{blog.map(entry => (
<li>
<span class="item">
<a href={`/blog/${entry.id}`} class="entry-title" aria-labelledby={entry.id}>
<span style="display: none">{entry.data.title}</span>
</a>
<span id={entry.id} class="link" aria-hidden="true">{entry.data.title}</span>
<time datetime={formatDate(entry.data.pubDate!, true)}>
{formatDate(entry.data.pubDate!, false, "MM/DD/YY")}
</time>
</span>
<a href={`/blog/${entry.id}`} class="entry-title" aria-labelledby={entry.id}>
{entry.data.title}
</a>
<time datetime={formatDate(entry.data.pubDate!, true)}>
{formatDate(entry.data.pubDate!, false, "MM/DD/YY")}
</time>
</li>
))}
</ul>
</div>
<div class="nav-section">
<h1><span class="title">other links</span></h1>
<h2>other links</h2>
<ul>
<li><span class="item"><a href="/blog" class="link">archive</a></span></li>
<li><span class="item"><a href="/blog/rss.xml" class="link">rss feed</a></span></li>
<li><a href="/blog" class="link">archive</a></li>
<li><a href="/blog/rss.xml" class="link">rss feed</a></li>
</ul>
</div>
</div>
</nav>
<article id={id}>
<div class="inner">
<header>
<h1>{title}</h1>
<hr />
<div class="info">
<time datetime={formatDate(date, true)}>
<span class="title">Date</span>
<span class="desc">{formatDate(date)}</span>
</time>
</div>
</header>
<div class="content">
<slot />
</div>
{currently && (
<aside>
<h2>Current</h2>
{currently?.mood && (
<dl>
<dt class="title">Mood</dt>
<dd class="desc">
<Image src={`/src/assets/moods/${moods.find(mood => mood === currently?.mood)}.png`} width={36} height={36} alt="" />
{currently.mood}
</dd>
</dl>
)}
{currently.playing && (
<dl>
<dt class="title">Game</dt>
<dd class="desc">{currently.playing}</dd>
</dl>
)}
{currently.watching && (
<dl>
<dt class="title">Show</dt>
<dd class="desc">{currently.watching}</dd>
</dl>
)}
{currently.reading && (
<dl>
<dt class="title">Book</dt>
<dd class="desc">{currently.reading}</dd>
</dl>
)}
{currently.listening && (
<dl>
<dt>Currently listening</dt>
<dd>{currently.listening}</dd>
</dl>
)}
</aside>
)}
</div>
</article>
<slot name="pagination" />
</main>
</Layout>
<style define:vars={{ outerBorder: `url(${outerBBS.src})`, innerBorder: `url(${innerBBS.src})`, sideBorder: `url(${sideBBS.src})` }}>
body {
image-rendering: pixelated;
--bg-0: #fff;
--bg-1: #eeffff;
--bg-2: #eeeeff;
--bg-3: #eee;
--bg-4: #ddddee;
--bg-5: #ddeeee;
--bg-6: #ccccdd;
--bg-7: #ccddee;
--bg-8: #8888bb;
--border-0: #000;
--border-1: #334466;
--border-2: #6699aa;
--border-3: #7799bb;
--border-4: #88aabb;
--border-5: #99bbcc;
--border-6: #bbccdd;
--normal-color: #335577;
--active-color: #aa0033;
--active-border: #442266;
color: #000;
}
h1 { font: bold 1rem var(--arial-font); }
h2 {
font: normal 1.5rem var(--dotum-12-font);
text-transform: uppercase;
}
main {
font: 1rem var(--arial-font);
letter-spacing: 1px;
display: grid;
grid-template-columns: auto minmax(auto, 75ch);
justify-content: center;
@media screen and (max-width: 1360px) {
margin: 0 1rem;
}
@media screen and (max-width: 76em) {
grid-template-columns: 1fr;
}
}
#blog-links {
min-width: 28ch;
border: 2px solid var(--border-0);
border-image: var(--sideBorder) 22 8 40 7 fill / 44px 16px 80px 14px;
background-color: var(--bg-0);
padding: 42px 10px 78px;
margin-right: -2px;
.inner {
display: flex;
height: calc(100% - 34px);
flex-flow: column wrap;
background-color: var(--bg-3);
padding: 16px 6px;
margin: 18px 20px 16px;
border: 2px solid var(--border-6);
}
h1 {
padding: 6px 2px;
border-block: 2px solid var(--border-3);
.title {
display: block;
background-color: var(--bg-8);
color: var(--bg-0);
font-weight: normal;
text-transform: uppercase;
padding: 5px 2px;
text-align: center;
}
}
ul {
display: flex;
flex-flow: column wrap;
list-style: none;
padding: 0;
li {
padding: 4px 2px;
border-bottom: 2px solid var(--bg-4);
max-width: 100%;
.item {
position: relative;
font: normal 1.375rem var(--dotum-11-font);
display: flex;
justify-content: space-between;
align-items: center;
a {
&.entry-title {
position: absolute;
display: block;
top: 0;
left: 0;
width: 100%;
height: 100%;
~ .link {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 19ch;
@media screen and (max-width: 76em) {
max-width: unset;
}
}
}
}
.link {
flex: 1;
background-color: var(--bg-1);
padding: 6px;
color: var(--border-0);
text-decoration: none;
}
time {
background-color: var(--bg-5);
padding: 6px;
}
&:hover {
.link { background-color: var(--bg-7); }
time { background-color: var(--border-6); }
}
}
&:last-child { border: none; }
}
}
.nav-section {
background-color: var(--bg-0);
max-width: 100%;
&:last-child {
border-bottom: 2px solid var(--border-2);
}
}
@media screen and (max-width: 76em) {
margin-bottom: -2px;
}
}
article {
display: flex;
border: 2px solid var(--border-0);
border-image: var(--outerBorder) 19 9 38 11 fill / 38px 18px 76px 22px;
background-color: var(--bg-3);
padding: 36px 16px 74px 20px;
.inner {
display: flex;
flex-direction: column;
border: 2px solid var(--border-2);
border-image: var(--innerBorder) 3 2 2 fill / 6px 4px 4px;
margin: 14px 4px 8px;
padding: 4px 2px 2px;
background-color: var(--bg-0);
}
.title {
display: grid;
place-content: center;
font: normal 1.5em var(--dotum-12-font);
background-color: var(--bg-2);
padding: 2px 6px;
}
.desc {
background-color: var(--bg-4);
padding: 4px 6px;
flex: 1;
}
header {
border-bottom: 2px solid var(--bg-6);
h1 {
text-align: center;
margin: 6px 2px;
padding: 2px 0;
background-color: var(--border-6);
}
.info {
display: flex;
align-items: baseline;
gap: 2px;
border-style: solid;
border-width: 2px;
border-color: var(--bg-2) var(--bg-2) var(--bg-1) var(--bg-1);
padding: 2px 4px;
time {
display: flex;
width: 100%;
align-items: stretch;
}
}
hr {
background-color: var(--border-5);
border: none;
height: 2px;
}
}
.content {
/* position: relative; */
flex: 1;
background-attachment: local;
background-image: linear-gradient(to right, var(--bg-0) 5px, transparent 2px), linear-gradient(var(--bg-4) 2px, transparent 2px);
background-size: 10px 2em;
background-position-y: calc(2em - 2px);
margin: 2rem 1rem;
padding: 0 1rem;
line-height: 2;
max-height: 38em;
overflow-y: auto;
margin-trim: block;
p {
margin-block: 2em;
&:has(> img) {
margin-block: 0;
}
}
a, del, s { text-decoration-thickness: 2px; }
a {
color: var(--normal-color);
&:visited {
color: var(--active-border);
}
&:hover {
color: var(--active-color);
}
&:active, &:focus {
color: var(--normal-color);
}
}
figure {
border: 2px solid var(--border-5);
border-image: var(--innerBorder) 3 2 2 fill / 6px 4px 4px;
padding: 4px 2px 2px;
background-color: var(--bg-0);
width: max-content;
margin: 0 auto;
img {
min-height: 2em;
border-bottom: 2px solid var(--border-3);
}
figcaption {
font-family: var(--dotum-11-font);
font-size: calc(1em + 2px);
color: var(--border-1);
background-color: var(--bg-3);
margin: 4px;
padding: 0 6px;
text-align: center;
}
}
@supports not (margin-trim: block) {
p:first-child { margin-block-start: 0; }
p:last-child { margin-block-end: 0; }
}
@media screen and (max-width: 950px) {
background-position-y: 0.8rem;
padding: 1rem;
margin: 0.25rem 0;
}
}
aside {
display: grid;
grid-template-columns: auto 1fr;
grid-template-rows: repeat(4, auto);
border-top: 2px solid var(--border-4);
h2 {
display: grid;
place-content: center;
grid-area: 1 / 1 / -1;
padding: 0 4px 0 8px;
height: 100%;
border-top: 2px solid var(--border-1);
border-right: 2px solid var(--border-4);
background-color: var(--bg-7);
}
dl {
display: flex;
align-items: center;
padding: 2px 6px;
border-bottom: 2px solid var(--border-4);
border-top: 2px solid var(--border-1);
border-left: 2px solid var(--border-1);
&:first-of-type > dd {
display: flex;
align-items: center;
gap: 6px;
margin: -2px;
padding: 0 6px;
}
&:last-child { border-bottom: none; }
}
}
}
<style>
</style>

View File

@ -2,7 +2,6 @@
import Blog from '@/layouts/Blog.astro';
import type { GetStaticPaths } from 'astro';
import { getCollection, render } from 'astro:content';
import buttons from "$/guild-bbs-buttons.png";
export const getStaticPaths = (async () => {
const blog = await getCollection("blog");
@ -24,7 +23,6 @@ const next = current === 0 ? undefined : blog[current - 1];
<Blog id={entry.id} title={entry.data.title!} date={entry.data.pubDate!} currently={entry.data.currently}>
<Fragment slot="head">
<meta name="description" content={entry.body?.substring(0, 150) + "…"} />
<link rel="preload" href={buttons.src} as="image" />
</Fragment>
<Content />
@ -33,116 +31,15 @@ const next = current === 0 ? undefined : blog[current - 1];
<footer id="blog-pagination" slot="pagination">
{previous && (
<a id="previous" aria-label="go to previous post" href={`/blog/${previous.id}`}>
<div class="arrow" />
<div class="title">
<span>{previous.data.title}</span>
</div>
<span>{previous.data.title}</span>
</a>
)}
{next && (
<a id="next" aria-label="go to next post" href={`/blog/${next.id}`}>
<div class="title">
<span>{next.data.title}</span>
</div>
<div class="arrow" />
<span>{next.data.title}</span>
</a>
)}
</footer>
)}
</Blog>
<style define:vars={{ buttons: `url(${buttons.src})` }}>
#blog-pagination {
margin: 1rem 0;
display: grid;
grid-column: 1 / -1;
grid-template-columns: repeat(2, 1fr);
.arrow {
width: 36px;
height: 50px;
background: var(--buttons) no-repeat top left;
}
#previous {
grid-column: 1 / 2;
justify-self: left;
.arrow { background-position: 0 0; }
&:hover .arrow { background-position: -36px 0; }
&:active .arrow, &:focus .arrow { background-position: -72px 0; }
.title {
border-left: none;
margin-left: -2px;
padding-left: calc(0.5em + 2px);
}
}
#next {
grid-column: 2 / -1;
justify-self: right;
.arrow { background-position: -108px 0; }
&:hover .arrow { background-position: -144px 0; }
&:active .arrow, &:focus .arrow { background-position: -180px 0; }
.title {
position: relative;
z-index: 1;
border-right: none;
margin-right: -2px;
padding-right: calc(0.5em + 2px);
}
}
a {
display: flex;
flex-flow: row wrap;
align-items: stretch;
font: normal 1.5rem var(--dotum-12-font);
color: var(--normal-color);
text-decoration: none;
.title {
display: grid;
place-content: center;
padding: 0 0.5em;
background-color: var(--bg-7);
border: 2px solid var(--border-1);
box-shadow:
inset 2px 2px 0 0 var(--bg-0),
inset 4px 4px 0 0 var(--bg-5),
inset -2px -2px 0 0 var(--border-5),
inset -4px -4px 0 0 var(--border-6);
@media screen and (468px > width) {
> span {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: calc(12ch + 1em);
}
}
}
&:hover {
color: var(--active-color);
.title { border-color: var(--active-border); }
}
&:active, &:focus {
color: var(--normal-color);
.title {
border-color: var(--border-1);
box-shadow:
inset -2px -2px 0 0 var(--bg-0),
inset -4px -4px 0 0 var(--bg-5),
inset 2px 2px 0 0 var(--border-5),
inset 4px 4px 0 0 var(--border-6);
}
}
}
}
</style>
</Blog>

View File

@ -1,6 +1,5 @@
---
import Layout from "@/layouts/Layout.astro";
import Figure from "~/Figure.astro";
import formatDate from "@/utils/formatDate";
import { getCollection } from "astro:content";
import dayjs from "dayjs";

View File

@ -59,14 +59,14 @@ const notes = fic.rendered && await parser.parse((fic.rendered.metadata!.frontma
</dl>
<div class="links">
{fic.data.chapters && <>
<a class="button" href={`/fics/${chapters[0].id}`}>start reading</a>
{chapters && <>
{/* <a class="button" href={`/fics/${chapters[0].id}`}>start reading</a> */}
<a class="button" href={`/fics/${Astro.params.ficId}/rss.xml`}>rss feed</a>
</>}
</div>
</header>
{fic.data.chapters && (
{chapters && (
<h2>chapters</h2>
<ul>
{chapters.map(chapter => (
@ -75,7 +75,6 @@ const notes = fic.rendered && await parser.parse((fic.rendered.metadata!.frontma
</ul>
)}
</section>
{fic.body && (
<section id="oneshot">
<ChapterContent lastModified={lastMod} notes={notes}>

View File

@ -1,21 +1,24 @@
---
import { Font } from 'astro:assets';
import Layout from '@/layouts/Layout.astro';
import Navbar from '~/Navbar.astro';
import bulletin from "$/acnl-bulletin.png";
import outerBBS from "$/guild-bbs.png";
import innerBBS from "$/guild-bbs-content.png";
import sideBBS from "$/guild-bbs-list.png";
import buttons from "$/guild-bbs-buttons.png";
---
<Layout>
<Fragment slot="head">
<link rel="preload" href={outerBBS.src} as="image" />
<link rel="preload" href={innerBBS.src} as="image" />
<link rel="preload" href={sideBBS.src} as="image" />
<link rel="preload" href={buttons.src} as="image" />
<Font cssVariable="--arial" preload />
</Fragment>
<Navbar />
<main>
<section id="welcome">
<div class="card">
<h1>welcome!</h1>
<article>
this is
</article>
</div>
</section>
<section id="updates">
<article class="update card">
<h1>update title</h1>
@ -24,6 +27,26 @@ import bulletin from "$/acnl-bulletin.png";
<p>some stuff happened</p>
</div>
</article>
<footer id="updates-pagination">
<a id="previous" aria-label="go to previous post" href="javascript:void(0)">
<div class="arrow" />
<div class="title">prev</div>
</a>
<a id="next" aria-label="go to next post" href="javascript:void(0)">
<div class="title">next</div>
<div class="arrow" />
</a>
</footer>
</section>
<section id="welcome">
<div class="card">
<h1>welcome!</h1>
<article>
this is
</article>
</div>
</section>
<section id="wall">
@ -36,76 +59,146 @@ import bulletin from "$/acnl-bulletin.png";
</main>
</Layout>
<style define:vars={{ bulletin: `url(${bulletin.src})` }}>
body {
--acnl-border: #ac6835;
--acnl-bg: #8c5321;
--card-border-1: #ffd53c;
--card-border-2: #5acbbd;
--card-bg: white;
<style define:vars={{ outerBorder: `url(${outerBBS.src})`, innerBorder: `url(${innerBBS.src})`, sideBorder: `url(${sideBBS.src})`, buttons: `url(${buttons.src})` }}>
main {
image-rendering: pixelated;
--bg-0: #fff;
--bg-1: #eeffff;
--bg-2: #eeeeff;
--bg-3: #eee;
--bg-4: #ddddee;
--bg-5: #ddeeee;
--bg-6: #ccccdd;
--bg-7: #ccddee;
--bg-8: #8888bb;
--border-0: #000;
--border-1: #334466;
--border-2: #6699aa;
--border-3: #7799bb;
--border-4: #88aabb;
--border-5: #99bbcc;
--border-6: #bbccdd;
--normal-color: #335577;
--active-color: #aa0033;
--active-border: #442266;
color: #000;
font: 1rem var(--arial-font);
letter-spacing: 1px;
display: grid;
grid-template-columns: 1fr 1fr;
margin: 1em;
}
main {
h1 { font: bold 1rem var(--arial-font); }
/* UPDATES */
#updates {
border-image: var(--sideBorder) 22 9 40 8 fill / 44px 18px 80px 16px;
padding: 44px 18px 80px 16px;
margin-right: -2px;
}
#updates-pagination {
margin: 1rem 0;
display: grid;
grid-template-columns: repeat(2, 1fr);
justify-content: center;
gap: 1rem;
max-width: 50em;
margin: 0 auto;
@media screen and (max-width: 1360px) {
margin: 0 1rem;
.arrow {
width: 36px;
height: 50px;
background: var(--buttons) no-repeat top left;
}
@media screen and (max-width: 76em) {
grid-template-columns: 1fr;
}
}
h1 { font-size: 2rem; }
.board {
image-rendering: pixelated;
border: 2px solid var(--acnl-border);
background-color: transparent;
border-image: var(--bulletin) 42 30 30 fill / 42px 30px 30px;
padding: 42px 30px 30px;
}
.card {
border: 6px solid black;
background-color: var(--card-bg);
box-shadow: inset 0 0 0 4px var(--card-bg), inset 0 0 0 6px black;
padding: calc(1rem + 4px);
h1 {
padding-bottom: 2px;
border-bottom: 2px solid black;
text-align: center;
margin-bottom: 1rem;
#previous {
grid-column: 1 / 2;
justify-self: left;
.arrow { background-position: 0 0; }
&:hover .arrow { background-position: -36px 0; }
&:active .arrow, &:focus .arrow { background-position: -72px 0; }
.title {
border-left: none;
margin-left: -2px;
padding-left: calc(0.5em + 2px);
}
}
#next {
grid-column: 2 / -1;
justify-self: right;
.arrow { background-position: -108px 0; }
&:hover .arrow { background-position: -144px 0; }
&:active .arrow, &:focus .arrow { background-position: -180px 0; }
.title {
position: relative;
z-index: 1;
border-right: none;
margin-right: -2px;
padding-right: calc(0.5em + 2px);
}
}
a {
display: flex;
flex-flow: row wrap;
align-items: stretch;
color: var(--normal-color);
text-decoration: none;
.title {
display: grid;
place-content: center;
padding: 0 0.5em;
background-color: var(--bg-7);
border: 2px solid var(--border-1);
box-shadow:
inset 2px 2px 0 0 var(--bg-0),
inset 4px 4px 0 0 var(--bg-5),
inset -2px -2px 0 0 var(--border-5),
inset -4px -4px 0 0 var(--border-6);
@media screen and (468px > width) {
> span {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: calc(12ch + 1em);
}
}
}
&:hover {
color: var(--active-color);
.title { border-color: var(--active-border); }
}
&:active, &:focus {
color: var(--normal-color);
.title {
border-color: var(--border-1);
box-shadow:
inset -2px -2px 0 0 var(--bg-0),
inset -4px -4px 0 0 var(--bg-5),
inset 2px 2px 0 0 var(--border-5),
inset 4px 4px 0 0 var(--border-6);
}
}
}
}
/* WELCOME */
#welcome {
.card {
border-color: var(--card-border-1);
box-shadow: inset 0 0 0 4px var(--card-bg), inset 0 0 0 6px var(--card-border-1);
height: 100%;
h1 { border-bottom-color: var(--card-border-1); }
}
border-image: var(--outerBorder) 20 9 39 11 fill / 40px 18px 78px 22px;
padding: 40px 18px 78px 22px;
}
#updates {
.card {
border-color: var(--card-border-2);
box-shadow: inset 0 0 0 4px var(--card-bg), inset 0 0 0 6px var(--card-border-2);
h1 { border-bottom-color: var(--card-border-2); }
}
}
#wall {
grid-column: 1 / -1;
/* INNER BORDERS */
.inner {
border-image: var(--innerBorder) 3 2 2 2 fill / 6px 4px 4px;
padding: 6px 4px 4px;
}
</style>

View File

@ -81,7 +81,10 @@ async function getAllChapters(metaPath: string) {
const ficFolder = fic.split("/").at(-1);
const entries = await Array.fromAsync(glob(fic + '/*.md'));
const chapters = entries.map(chapter => path.relative(fic, chapter));
return chapters.map(chapter => `${ficFolder}/${chapter}`);
return chapters.map(chapter => {
const chapterWithoutExt = path.parse(chapter).name; // needed for loader to properly grab ids
return `${ficFolder}/${chapterWithoutExt}`;
});
}
// unused for now