Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .jules/palette.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,6 @@
## 2024-08-01 - λ„€μ΄ν‹°λΈŒ λΈŒλΌμš°μ € UI의 닀크 λͺ¨λ“œ 지원 κ°•μ œ
**ν•™μŠ΅:** CSS λ―Έλ””μ–΄ 쿼리(`@media (prefers-color-scheme: dark)`)λ₯Ό 톡해 닀크 λͺ¨λ“œλ₯Ό μ§€μ›ν•˜λ”λΌλ„, λΈŒλΌμš°μ €μ˜ λ„€μ΄ν‹°λΈŒ UI μš”μ†Œ(μŠ€ν¬λ‘€λ°”, κΈ°λ³Έ 폼 컨트둀, κΈ°λ³Έ λ°±κ·ΈλΌμš΄λ“œ λ“±)λŠ” ν…Œλ§ˆ 변경을 μΈμ‹ν•˜μ§€ λͺ»ν•΄ μ–΄λ‘μš΄ ν…Œλ§ˆ ν™˜κ²½μ—μ„œ 밝은 μŠ€ν¬λ‘€λ°”κ°€ ν‘œμ‹œλ˜λŠ” λ“± μ‹œκ°μ  뢈일치λ₯Ό μ΄ˆλž˜ν•©λ‹ˆλ‹€.
**쑰치:** 항상 HTML λ¬Έμ„œμ˜ `<head>` μ˜μ—­μ— `<meta name="color-scheme" content="light dark">` 메타 νƒœκ·Έλ₯Ό λͺ…μ‹œμ μœΌλ‘œ μΆ”κ°€ν•˜μ—¬ λΈŒλΌμš°μ € μˆ˜μ€€μ—μ„œ μ‚¬μš©μžμ˜ μ‹œμŠ€ν…œ ν…Œλ§ˆ(닀크 λͺ¨λ“œ λ“±)λ₯Ό μ™„μ „νžˆ 상속받아 일관성 μžˆλŠ” λ„€μ΄ν‹°λΈŒ UIλ₯Ό λ Œλ”λ§ν•˜λ„λ‘ 보μž₯ν•˜μ‹­μ‹œμ˜€.
## 2026-08-01 - 루트 λ””λ ‰ν† λ¦¬μ˜ 빈 제λͺ© 처리
**Learning:** 파일 μ‹œμŠ€ν…œ λ£¨νŠΈμ™€ 같이 `getName()`이 빈 λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•˜λŠ” 디렉토리λ₯Ό μ²˜λ¦¬ν•  λ•Œ, 접근성을 ν•΄μΉ˜κ³  슀크린 리더 ν™˜κ²½μ—μ„œ 제λͺ© μš”μ†Œ(`<title>`, `<h1>`)κ°€ λˆ„λ½λ˜λŠ” λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
**Action:** 디렉토리 이름이 λΉ„μ–΄μžˆλŠ” 경우, μ‹œκ°μ  빈 μƒνƒœλ₯Ό λ°©μ§€ν•˜κ³  접근성을 μœ μ§€ν•˜κΈ° μœ„ν•΄ `absolutePath`와 같은 의미 μžˆλŠ” λŒ€μ²΄ 경둜λ₯Ό μ‚¬μš©ν•˜μ—¬ 제λͺ©κ³Ό 헀더에 ν‘œμ‹œλ˜λ„λ‘ μ„€μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.
4 changes: 2 additions & 2 deletions src/main/kotlin/html4tree/main.kt
Original file line number Diff line number Diff line change
Expand Up @@ -327,12 +327,12 @@ ${cssContent} </style>
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src '${styleHash}'; base-uri 'none'; form-action 'none';">
<!-- λ³΄μ•ˆ ν–₯상: 리퍼러λ₯Ό ν†΅ν•œ 디렉토리 경둜 λ…ΈμΆœ λ°©μ§€ -->
<meta name="referrer" content="no-referrer">
<title>${curr_dir.getName().escapeHtml()}</title>
<title>${(if (curr_dir.name.isEmpty()) curr_dir.absolutePath else curr_dir.name).escapeHtml()}</title>
${css}
</head>
<body>
<main>
<h1>${curr_dir.getName().escapeHtml()}</h1>
<h1>${(if (curr_dir.name.isEmpty()) curr_dir.absolutePath else curr_dir.name).escapeHtml()}</h1>
<nav aria-label="디렉토리 λͺ©λ‘">
<ul role="list">
<li><a class="dir-link" href="./.." aria-label="μƒμœ„ λ””λ ‰ν† λ¦¬λ‘œ 이동" title="μƒμœ„ λ””λ ‰ν† λ¦¬λ‘œ 이동"><span class="icon" aria-hidden="true">&#x21B0;</span> <span>..</span></a></li>
Expand Down
12 changes: 12 additions & 0 deletions src/test/kotlin/html4tree/MainTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -443,6 +443,18 @@ class MainTest {
assertFalse(File(gitDir, "index.html").exists())
}

@Test
fun testEmptyDirNameFallbackToAbsolutePath() {
val fakeRoot = object : File(tempDir, "fakeRoot") {
override fun getName() = ""
}
fakeRoot.mkdir()
process_dir(fakeRoot)
val indexHtml = File(fakeRoot, "index.html").readText()
assertTrue(indexHtml.contains("<title>${fakeRoot.absolutePath.escapeHtml()}</title>"), "Title should use absolute path when name is empty")
assertTrue(indexHtml.contains("<h1>${fakeRoot.absolutePath.escapeHtml()}</h1>"), "H1 should use absolute path when name is empty")
}

@Test
fun testProcessDirHandlesNonDirectoryWithoutThrowing() {
val notADirectory = File(tempDir, "not-a-directory")
Expand Down
Loading