v1.0.4: 테마 경고 수정과 기본 다크모드 적용
Made-with: Cursor
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -11,6 +11,8 @@
|
||||
var savedTheme = localStorage.getItem(storageKey);
|
||||
if (savedTheme) {
|
||||
setTheme(savedTheme);
|
||||
} else {
|
||||
setTheme("dark");
|
||||
}
|
||||
|
||||
document.querySelectorAll("[data-theme-toggle]").forEach(function (button) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# 배포 가이드
|
||||
|
||||
## 현재 버전
|
||||
- `v1.0.1`
|
||||
- `v1.0.4`
|
||||
|
||||
## Git 기본 설정
|
||||
- 저장소 작성자 정보는 아래 값으로 통일한다.
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
# 의사결정 이력
|
||||
|
||||
## 2026-04-27 v1.0.4
|
||||
이번 변경은 Ghost 테마 경고를 제거하고(helpers 호환성), 우측 사이드바 작성자 아바타를 고정 크기(48x48)로 안정화하며, 초기 테마 기본값을 다크 모드로 통일하는 데 목적이 있다. 특히 `img_url`의 `size="s"` 옵션은 `/size/w300/` 경로를 만들기 때문에 원본 이미지 경로를 요구하는 현재 운영 정책과 맞지 않아 제거했고, 작성자 아바타에는 `h-full` 대신 명시적 `w-12 h-12`를 적용해 텍스트 높이에 따라 이미지가 늘어나는 문제를 방지했다.
|
||||
|
||||
## 2026-04-27 v1.0.1
|
||||
작성자 프로필 이미지는 홈과 포스트 상세처럼 현재 URL 깊이가 다른 화면에서 동일하게 보여야 한다. Ghost의 `img_url`이 루트 기준 경로를 만들 수 있지만, 테마가 프록시나 캐시 계층을 거치는 운영 환경에서는 절대 URL이 더 명확하므로 작성자 이미지 렌더링 지점을 `absolute="true"`로 통일했다. 우측 사이드바 작성자 카드는 시각적으로 외부 이동 아이콘을 이미 갖고 있으므로 실제 작성자 URL도 함께 연결했다.
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# 파일-화면 매핑 가이드
|
||||
|
||||
## 현재 버전
|
||||
- `v1.0.1`
|
||||
- `v1.0.4`
|
||||
|
||||
## 공통 레이아웃
|
||||
- [default.hbs](../default.hbs): 전체 3열 셸, 1296px 공통 폭 계산, 공통 자산 로드, 전역 공유 모달(`share-modal`) 마크업 포함
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# 기술 명세
|
||||
|
||||
## 현재 버전
|
||||
- `v1.0.1`
|
||||
- `v1.0.4`
|
||||
|
||||
## 테마 개요
|
||||
- 테마명: `Zenless Column Flow` (slug: `zenless-column-flow`)
|
||||
|
||||
@@ -1,6 +1,20 @@
|
||||
# 업데이트 로그
|
||||
|
||||
## v1.0.4 - 2026-04-27
|
||||
- `package.json` 버전을 `1.0.4`로 증가.
|
||||
- `assets/built/theme.js`: 로컬 저장 테마가 없을 때 기본 다크 모드를 적용하도록 초기 분기 추가.
|
||||
- `partials/recommendations.hbs`: Ghost 테마 경고 대응을 위해 `{{#each}}`를 `{{#foreach}}`로 변경.
|
||||
- `partials/site/topbar.hbs`: 검색 데이터 소스 `{{#get "posts"}}` 조회 제한을 `150`에서 `100`으로 조정.
|
||||
- `partials/site/sidebar-right.hbs`: 포스트 상세 작성자 아바타 `img_url`에서 `size="s"`를 제거해 원본 경로 이미지가 렌더링되도록 수정.
|
||||
- `partials/site/sidebar-right.hbs`: 작성자 아바타를 `w-12 h-12` 고정(`48x48`) 및 `shrink-0`로 조정해 텍스트 높이에 따른 이미지 확장을 방지.
|
||||
- `docs/spec.md`, `docs/map.md`, `docs/deploy.md`, `docs/history.md`, `docs/convention.md` 현재 버전을 `v1.0.4`로 동기화.
|
||||
|
||||
## v1.0.1 - 2026-04-27
|
||||
- `assets/built/theme.js`: 로컬 저장된 테마 값이 없을 때 기본 테마를 다크 모드로 적용하도록 초기 분기 추가.
|
||||
- `partials/site/sidebar-right.hbs`: 포스트 상세 작성자 아바타를 `w-12 h-12` 고정 크기(`48x48`)와 `shrink-0`로 조정해 본문 높이에 따라 이미지 높이가 늘어나지 않도록 수정.
|
||||
- `partials/recommendations.hbs`: Ghost 테마 경고 대응을 위해 `{{#each}}`를 `{{#foreach}}`로 변경.
|
||||
- `partials/site/topbar.hbs`: 검색 데이터 소스 `{{#get "posts"}}` 조회 제한을 `150`에서 `100`으로 조정.
|
||||
- `partials/site/sidebar-right.hbs`: 포스트 상세 작성자 아바타 `img_url`에서 `size="s"`를 제거해 원본 경로 이미지가 렌더링되도록 수정.
|
||||
- `package.json` 버전을 `1.0.1`로 증가.
|
||||
- `partials/site/sidebar-right.hbs`: 포스트 상세 우측 작성자 프로필 이미지 URL을 절대 경로로 렌더링하도록 수정하고 작성자 링크를 연결.
|
||||
- `author.hbs`, `partials/site/sidebar-left.hbs`, `partials/site/topbar.hbs`: 작성자 프로필 이미지 URL을 절대 경로 기준으로 통일.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "zenless-column-flow",
|
||||
"version": "1.0.1",
|
||||
"version": "1.0.4",
|
||||
"private": true,
|
||||
"description": "Zenless Column Flow Ghost theme for editorial three-column blogs.",
|
||||
"keywords": [
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{{#if recommendations}}
|
||||
<ul class="flex flex-col gap-1 rounded-theme overflow-hidden" data-recommendations="">
|
||||
{{#each recommendations as |rec|}}
|
||||
{{#foreach recommendations}}
|
||||
<li>
|
||||
<a class="py-1 text-[0.8rem] leading-tight flex items-center gap-2 hover:opacity-75" href="{{rec.url}}" data-recommendation="{{rec.id}}" target="_blank" rel="noopener">
|
||||
{{#if rec.favicon}}
|
||||
<img class="w-[18px] h-[18px] rounded-[8px] aspect-square object-cover" src="{{rec.favicon}}" alt="" loading="lazy" onerror="this.style.display='none'">
|
||||
<a class="py-1 text-[0.8rem] leading-tight flex items-center gap-2 hover:opacity-75" href="{{url}}" data-recommendation="{{id}}" target="_blank" rel="noopener">
|
||||
{{#if favicon}}
|
||||
<img class="w-[18px] h-[18px] rounded-[8px] aspect-square object-cover" src="{{favicon}}" alt="" loading="lazy" onerror="this.style.display='none'">
|
||||
{{/if}}
|
||||
<h3 class="font-medium line-clamp-1 text-ellipsis overflow-hidden" title="{{rec.title}}">{{rec.title}}</h3>
|
||||
<h3 class="font-medium line-clamp-1 text-ellipsis overflow-hidden" title="{{title}}">{{title}}</h3>
|
||||
</a>
|
||||
</li>
|
||||
{{/each}}
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
{{/if}}
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
</button>
|
||||
<div class="sidebar-card__content sidebar-card__content--categories" x-cloak x-show="categoriesOpen">
|
||||
<ul class="category-grid grid sm:grid-cols-2 gap-x-2 gap-0.5 mt-1 text-typ-tone font-medium text-[0.8rem] -mb-1.5" data-category-priority-list
|
||||
data-category-priority-order="tech,business,health,science,design,travel,gaming,music,diy,photography,books"
|
||||
data-category-priority-order="project, dev, tech, note, study, tools, review, lab, play, life"
|
||||
data-category-priority-limit="10">
|
||||
{{#get "tags" limit="100" include="count.posts" order="count.posts desc"}}
|
||||
{{#foreach tags}}
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
{{#is "post"}}
|
||||
{{#post}}
|
||||
{{#primary_author}}
|
||||
<section class="px-4 sm:px-5 py-4 sm:py-5 xl:pr-1 flex flex-col gap-1.5 border-b border-brd">
|
||||
<a class="flex gap-2 hover:opacity-80" href="{{url}}">{{#if profile_image}}
|
||||
<img class="object-cover size-10 sm:size-12 aspect-square" src="{{img_url profile_image size="s" absolute="true"}}" alt="{{name}}">
|
||||
<section class="px-4 sm:px-5 py-4 sm:py-5 xl:pr-1 flex flex-col gap-2.5 border-b border-brd">
|
||||
<a class="flex items-start gap-2 hover:opacity-80" href="{{url}}">{{#if profile_image}}
|
||||
<img class="w-12 h-12 min-h-12 shrink-0 aspect-square rounded-full object-cover" src="{{img_url profile_image absolute="true"}}" alt="{{name}}">
|
||||
{{else}}
|
||||
<div class="object-cover size-10 sm:size-12 aspect-square avatar--fallback">A</div>
|
||||
<div class="w-12 h-12 min-h-12 shrink-0 aspect-square rounded-full avatar--fallback">A</div>
|
||||
{{/if}}
|
||||
<div class="flex-1 flex flex-col gap-1">
|
||||
<h3 class="text-sm font-medium leading-tight flex items-center justify-between gap-1">{{name}}</h3>
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
<span data-search-item data-search-type="tag" data-search-title="{{name}}" data-search-url="{{url}}"></span>
|
||||
{{/foreach}}
|
||||
{{/get}}
|
||||
{{#get "posts" limit="150"}}
|
||||
{{#get "posts" limit="100"}}
|
||||
{{#foreach posts}}
|
||||
<span data-search-item data-search-type="post" data-search-title="{{title}}" data-search-url="{{url}}" data-search-excerpt="{{excerpt words='24'}}"></span>
|
||||
{{/foreach}}
|
||||
|
||||
Reference in New Issue
Block a user