From 637c0b086e5e1cf478bbd2736e31ad6f61397b22 Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Wed, 24 Jun 2026 20:50:24 +0000 Subject: [PATCH 1/4] =?UTF-8?q?=F0=9F=8E=A8=20Palette:=20=ED=96=A5?= =?UTF-8?q?=EC=83=81=EB=90=9C=20HTML=20=EC=A0=91=EA=B7=BC=EC=84=B1=20?= =?UTF-8?q?=EB=B0=8F=20UX=20=EA=B0=9C=EC=84=A0=20(ARIA=20=EB=9D=BC?= =?UTF-8?q?=EB=B2=A8=20=EC=B6=94=EA=B0=80=20=EB=93=B1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .jules/palette.md | 3 +++ src/main/kotlin/html4tree/main.kt | 29 +++++++++++++++++++++------ src/test/kotlin/html4tree/MainTest.kt | 28 ++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 .jules/palette.md create mode 100644 src/test/kotlin/html4tree/MainTest.kt diff --git a/.jules/palette.md b/.jules/palette.md new file mode 100644 index 00000000..8da0349d --- /dev/null +++ b/.jules/palette.md @@ -0,0 +1,3 @@ +## 2024-05-15 - Enhancing Generated File Tree HTML +**Learning:** Raw directory listings generated into HTML often lack critical accessibility meta tags (like `lang="en"`, `viewport` for responsive scaling) and aria-labels for directory/file links (which are otherwise non-descriptive for screen readers like just `📁 folderName`). +**Action:** Always include base semantic structures (`
`, ``, responsive meta tags) and `aria-label`s specifying the entity type (e.g., `folderName directory`) when generating raw navigation trees to ensure keyboard and screen-reader usability. Add `:focus` styles mimicking `:hover` for keyboard users. diff --git a/src/main/kotlin/html4tree/main.kt b/src/main/kotlin/html4tree/main.kt index daaead3d..28c70b4a 100644 --- a/src/main/kotlin/html4tree/main.kt +++ b/src/main/kotlin/html4tree/main.kt @@ -82,20 +82,34 @@ fun process_dir(curr_dir: File){ """ val index_top = """ - + + + ${curr_dir.getName()} ${css} -

${curr_dir.getName()}

- +
""" diff --git a/src/test/kotlin/html4tree/MainTest.kt b/src/test/kotlin/html4tree/MainTest.kt new file mode 100644 index 00000000..552113ec --- /dev/null +++ b/src/test/kotlin/html4tree/MainTest.kt @@ -0,0 +1,28 @@ +package html4tree + +import org.junit.Test +import java.io.File +import kotlin.test.assertTrue + +class MainTest { + @Test + fun testProcessDir() { + val tempDir = File("temp_test_dir") + tempDir.mkdir() + try { + process_dir(tempDir) + val indexFile = File(tempDir, "index.html") + assertTrue(indexFile.exists()) + val content = indexFile.readText() + assertTrue(content.contains("")) + assertTrue(content.contains("")) + assertTrue(content.contains("")) + assertTrue(content.contains("")) + assertTrue(content.contains("
")) + assertTrue(content.contains("aria-label=\"Go to parent directory\"")) + } finally { + File(tempDir, "index.html").delete() + tempDir.delete() + } + } +} From 78952a9298b31b4118236d796a70481651234785 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 28 Jun 2026 08:51:21 +0000 Subject: [PATCH 2/4] Fix review feedback for escaping and temp test directory --- src/main/kotlin/html4tree/main.kt | 22 ++++++++++++++++++---- src/test/kotlin/html4tree/MainTest.kt | 7 +++---- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/html4tree/main.kt b/src/main/kotlin/html4tree/main.kt index 28c70b4a..7435162f 100644 --- a/src/main/kotlin/html4tree/main.kt +++ b/src/main/kotlin/html4tree/main.kt @@ -97,17 +97,19 @@ fun process_dir(curr_dir: File){ """ + val escapedDirName = escape_html(curr_dir.getName()) + val index_top = """ - ${curr_dir.getName()} + ${escapedDirName} ${css}
-

${curr_dir.getName()}

+

${escapedDirName}