release: sync main with dev (about editor, journal template, icon cleanup) (#449)

Brings `main` up to `dev` after #448 realigned the two branches.

`main` had #431 (portfolio features) but was missing everything that
landed on `dev` since:

- #443 — journal sample story ships as a template, not a live entry
- #445 — last emojis in the public frontend replaced with SVG icons
- #446 — About page toggle + content editor in the admin (@lancetm714's
work, rebased)
- #448 — the merge of `main` into `dev`, resolving the `Icons.tsx` split
and porting `IconEyeOff` into the shared icon file

After this merge both branches carry the same tree. CI on #448
(type-check + tests) passed on the merged state.

---------

Co-authored-by: ralksta <ralksta@users.noreply.github.com>
Co-authored-by: lancetm714 <108419425+lancetm714@users.noreply.github.com>
This commit is contained in:
Ralksta
2026-08-14 21:19:54 +02:00
committed by GitHub
parent 84c7eeef40
commit 6eda34cc50
18 changed files with 943 additions and 526 deletions

View File

@@ -51,7 +51,10 @@
border: 1px solid var(--border, rgba(255, 255, 255, 0.08));
border-radius: 12px;
overflow: hidden;
transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
transition:
transform 0.25s ease,
border-color 0.25s ease,
box-shadow 0.25s ease;
}
.journal-card:hover {
@@ -84,7 +87,6 @@
align-items: center;
justify-content: center;
opacity: 0.3;
font-size: 2rem;
}
.journal-card__content {

View File

@@ -7,6 +7,7 @@ import { isAdminAuthenticated } from '@/lib/admin/auth';
import { immich } from '@/lib/immich';
import { imageUrl, assetPlaceholder } from '@/lib/urls';
import { BackLink } from '@/components/BackLink';
import { IconBook } from '@/components/Icons';
import './journal.css';
export const dynamic = 'force-dynamic';
@@ -102,7 +103,9 @@ export default async function JournalIndexPage() {
blurDataURL={entry.blurDataURL}
/>
) : (
<div className="journal-card__cover-empty">📖</div>
<div className="journal-card__cover-empty">
<IconBook size={32} aria-hidden="true" />
</div>
)}
</div>