diff --git a/www/public/txt/changelog.txt b/www/public/changelog.txt similarity index 100% rename from www/public/txt/changelog.txt rename to www/public/changelog.txt diff --git a/www/public/txt/config.yaml b/www/public/config.yaml similarity index 100% rename from www/public/txt/config.yaml rename to www/public/config.yaml diff --git a/www/public/txt/cv.txt b/www/public/cv.txt similarity index 100% rename from www/public/txt/cv.txt rename to www/public/cv.txt diff --git a/www/public/txt/now.txt b/www/public/now.txt similarity index 100% rename from www/public/txt/now.txt rename to www/public/now.txt diff --git a/www/public/txt/stats.txt b/www/public/stats.txt similarity index 100% rename from www/public/txt/stats.txt rename to www/public/stats.txt diff --git a/www/scripts/generate-stats.js b/www/scripts/generate-stats.js index 6bf8b7e..ffdf6d6 100644 --- a/www/scripts/generate-stats.js +++ b/www/scripts/generate-stats.js @@ -24,13 +24,13 @@ for (const post of posts) { } // Count txt files and their words (excluding stats.txt which we're generating) -const txtDir = path.join(root, 'public/txt'); -const txtFiles = fs.existsSync(txtDir) - ? fs.readdirSync(txtDir).filter(f => f.endsWith('.txt') && f !== 'stats.txt') +const publicDir = path.join(root, 'public'); +const txtFiles = fs.existsSync(publicDir) + ? fs.readdirSync(publicDir).filter(f => f.endsWith('.txt') && f !== 'stats.txt') : []; let txtWords = 0; for (const txt of txtFiles) { - const content = fs.readFileSync(path.join(txtDir, txt), 'utf-8'); + const content = fs.readFileSync(path.join(publicDir, txt), 'utf-8'); txtWords += countWords(content); } @@ -51,8 +51,8 @@ if (fs.existsSync(guestbookJsonFile)) { // Calculate totals (excluding stats.txt words for now, we'll add them after generating) const totalPages = 1 + 1 + posts.length + 1 + txtFiles.length + 1 + 1; // home, blog index, posts, txt index, txts, bookmarks, guestbook -// Read template from public/txt/stats.txt and replace placeholders -const template = fs.readFileSync(path.join(root, 'public/txt/stats.txt'), 'utf-8'); +// Read template from public/stats.txt and replace placeholders +const template = fs.readFileSync(path.join(root, 'public/stats.txt'), 'utf-8'); // First pass: generate stats without stats.txt word count let stats = template @@ -70,7 +70,7 @@ const totalWords = postWords + txtWords + statsWords; stats = stats.replace('[WORDS]', totalWords.toString()); // Write to Vercel output -const outputDir = path.join(root, '.vercel/output/static/txt'); +const outputDir = path.join(root, '.vercel/output/static'); if (!fs.existsSync(outputDir)) { fs.mkdirSync(outputDir, { recursive: true }); } diff --git a/www/src/lib/txt.ts b/www/src/lib/txt.ts index 802ba33..12a0db1 100644 --- a/www/src/lib/txt.ts +++ b/www/src/lib/txt.ts @@ -24,7 +24,7 @@ export interface TxtConfig { } export function getTxtDir(): string { - return path.join(process.cwd(), 'public/txt'); + return path.join(process.cwd(), 'public'); } export function loadTxtConfig(): TxtConfig { diff --git a/www/src/pages/feed.xml.ts b/www/src/pages/feed.xml.ts index aa58a25..8433614 100644 --- a/www/src/pages/feed.xml.ts +++ b/www/src/pages/feed.xml.ts @@ -19,7 +19,7 @@ export async function GET(context: APIContext) { ...txtFiles.map(txt => ({ title: txt.name, pubDate: txt.date, - link: `/txt/${txt.name}`, + link: `/${txt.name}`, description: txt.name, })), ...bookmarks.map(b => ({ diff --git a/www/src/pages/index.astro b/www/src/pages/index.astro index 2ae6848..515e553 100644 --- a/www/src/pages/index.astro +++ b/www/src/pages/index.astro @@ -40,7 +40,7 @@ try {
txt
 formatListItem(f.date, `/txt/${f.name}`, f.name, { pinned: f.pinned })),
+  ...txtFiles.slice(0, 10).map(f => formatListItem(f.date, `/${f.name}`, f.name, { pinned: f.pinned })),
   ...(txtFiles.length > 10 ? [`+${txtFiles.length - 10} more`] : [])
 ].join('\n')} />
 
diff --git a/www/src/pages/random.ts b/www/src/pages/random.ts index 5effc90..522dfdd 100644 --- a/www/src/pages/random.ts +++ b/www/src/pages/random.ts @@ -13,7 +13,7 @@ export async function GET(context: APIContext) { const urls = [ ...posts.map(post => `/md/${getSlug(post.id)}`), - ...txtFiles.map(txt => `/txt/${txt}`), + ...txtFiles.map(txt => `/${txt}`), ...bookmarks.map(b => b.data.url), ]; diff --git a/www/src/pages/sitemap.txt.ts b/www/src/pages/sitemap.txt.ts index ac8cfa8..e961db6 100644 --- a/www/src/pages/sitemap.txt.ts +++ b/www/src/pages/sitemap.txt.ts @@ -17,7 +17,7 @@ export async function GET(context: APIContext) { '/md', ...posts.map(post => `/md/${getSlug(post.id)}`), '/txt', - ...txtFiles.map(txt => `/txt/${txt}`), + ...txtFiles.map(txt => `/${txt}`), '/bookmarks', '/guestbook', ].map(p => `${site}${p}`); diff --git a/www/src/pages/txt/index.astro b/www/src/pages/txt/index.astro index fd98e29..4b55aa7 100644 --- a/www/src/pages/txt/index.astro +++ b/www/src/pages/txt/index.astro @@ -9,6 +9,6 @@ const txtFiles = getTxtFiles();
txt -
 formatListItem(f.date, `/txt/${f.name}`, f.name, { pinned: f.pinned })).join('\n')} />
+
 formatListItem(f.date, `/${f.name}`, f.name, { pinned: f.pinned })).join('\n')} />
 
diff --git a/www/vercel.json b/www/vercel.json index f796588..ff19401 100644 --- a/www/vercel.json +++ b/www/vercel.json @@ -1,5 +1,8 @@ { "installCommand": "../install.sh", "buildCommand": "pnpm --filter @ily/www build", - "outputDirectory": "dist" + "outputDirectory": "dist", + "redirects": [ + { "source": "/txt/now.txt", "destination": "/now.txt", "permanent": true } + ] }