fix files links and add more task descriptions

b438caba1f0df3a2328bc39a19303f5895a28f32

Tucker McKnight <tucker@pangolin.lan> | Sun Jan 04 2026

fix files links and add more task descriptions
js_templates/file.ts:26
Before
25
26
27
28
29
30
                return `<span class="px-2">${dir}</span>`
              }
              else {
                return `<span class="bezel-gray px-1"><a href="${data.reposPath}/${data.fileInfo.repoName}/branches/${data.fileInfo.branchName}/files/${arr.slice(0, index + 1).join('/')}">${dir}</a></span>`
              }
            }).join('')
          }
After
25
26
27
28
29
30
                return `<span class="px-2">${dir}</span>`
              }
              else {
                return `<span class="bezel-gray px-1"><a href="${data.reposPath}/${data.fileInfo.repoName}/branches/${data.fileInfo.branchName}/files/${arr.slice(0, index + 1).map((part) => slugify(part)).join('/')}.html">${dir}</a></span>`
              }
            }).join('')
          }
js_templates/file.ts:45
Before
44
45
46




47
48
49
          ${topLevelFilesOnly(getDirectoryContents(data.fileInfo.repoName, data.fileInfo.branchName, data.fileInfo.file), data.fileInfo.file + '/').map((dir) => {
            return `<li class="list-group-item">
              ${dir.isDirectory ? `<span>&#x1F4C1;</span>` : ''}
⁣
⁣
⁣
⁣
              <a href="${data.reposPath}/${slugify(data.fileInfo.repoName)}/branches/${slugify(data.fileInfo.branchName)}/files/${dir.fullPath.split('/').map((pathPart) => slugify(pathPart)).join('/')}">${getRelativePath(data.fileInfo.file, dir.name)}</a>
            </li>`
          }).join('')}
        </ul>
After
44
45
46
47
48
49
50
51
52
53
          ${topLevelFilesOnly(getDirectoryContents(data.fileInfo.repoName, data.fileInfo.branchName, data.fileInfo.file), data.fileInfo.file + '/').map((dir) => {
            return `<li class="list-group-item">
              ${dir.isDirectory ? `<span>&#x1F4C1;</span>` : ''}
              <a href="${data.reposPath}/${slugify(data.fileInfo.repoName)}/branches/${slugify(data.fileInfo.branchName)}/files/${dir.fullPath.split('/').map((pathPart) => {
                return pathPart.split('.').map((subPart) => {
                  return slugify(subPart)
                }).join('.')
              }).join('/')}.html">${getRelativePath(data.fileInfo.file, dir.name)}</a>
            </li>`
          }).join('')}
        </ul>
js_templates/files.ts:25
Before
24
25
26






27
28
29
        return `
          <li class="list-group-item">
            ${file.isDirectory ? '<span>&#x1F4C1;</span>' : ''}
⁣
⁣
⁣
⁣
⁣
⁣
            <a href="${data.reposPath}/${slugify(data.branchInfo.repoName)}/branches/${slugify(data.branchInfo.branchName)}/files/${file.fullPath.split('/').map((pathPart) => slugify(pathPart)).join('/')}">${file.name}</a>
          </li>
        `
    }).join('')}
After
24
25
26
27
28
29
30
31
32
33
34
35
        return `
          <li class="list-group-item">
            ${file.isDirectory ? '<span>&#x1F4C1;</span>' : ''}
            <a href="${data.reposPath}/${slugify(data.branchInfo.repoName)}/branches/${slugify(data.branchInfo.branchName)}/files/${
              file.fullPath.split('/')
              .map((pathPart) => {
                return pathPart.split('.').map((subPart) => {
                  return slugify(subPart)
                }).join('.')
              }).join('/')}.html">${file.name}</a>
          </li>
        `
    }).join('')}
main.ts:315
Before
314
315
316
317
318
319
      permalink: (data) => {
        const repoName = data.fileInfo.repoName
        const branchName = data.fileInfo.branchName
        return `${reposPath}/${eleventyConfig.getFilter("slugify")(repoName)}/branches/${eleventyConfig.getFilter("slugify")(branchName)}/files/${data.fileInfo.file.split('/').map((filePart) => eleventyConfig.getFilter("slugify")(filePart)).join('/')}/`
      },
      eleventyComputed: {
        nav: {
After
314
315
316
317
318
319
      permalink: (data) => {
        const repoName = data.fileInfo.repoName
        const branchName = data.fileInfo.branchName
        return `${reposPath}/${eleventyConfig.getFilter("slugify")(repoName)}/branches/${eleventyConfig.getFilter("slugify")(branchName)}/files/${data.fileInfo.file.split('/').map((filePart) => filePart.split('.').map((subPart) => eleventyConfig.getFilter("slugify")(subPart)).join('.')).join('/')}.html`
      },
      eleventyComputed: {
        nav: {
wiki_and_tasks/.obsidian/workspace.json:179
Before
178
179
180

181
182
  },
  "active": "ed8907ba19d17623",
  "lastOpenFiles": [
⁣
    "tasks/branch-globs.md.html",
    "tasks",
    "page.md",
After
178
179
180
181
182
183
  },
  "active": "ed8907ba19d17623",
  "lastOpenFiles": [
    "tasks/branch-globs.md",
    "tasks/branch-globs.md.html",
    "tasks",
    "page.md",
wiki_and_tasks/index.md:26
Before
25
26










- Goal: have HTML pages generated for user-specified tags in the repo, not
⁣
⁣
⁣
⁣
⁣
⁣
⁣
⁣
⁣
⁣
  just each branch head.
After
25
26
27
28
29
30
31
32
33
34
35
36

- Goal: have HTML pages generated for user-specified tags in the repo, not
  just each branch head.

### Clone repo at first, rather than at the end

- Goal: Clone the repo before site generation starts. Use this cloned repo for all repo actions.
  - As a side benefit, this should allow users to clone from a remote repository (like on github) and use their static HTML site as a mirror of that. E.g. the `location` for the repo in the plugin config could be a remote URL.

### Create links consistently with some kind of nav or link helper
- Goal: Links to various pages are being manually created with a hodgepodge of splitting and slugifying strings. Create an easy and consistent way for the virtual template to get a link to the other pages.
  - Should be used in places like `file.ts`, `files.ts`, etc.
  - Part of this task should also be to avoid slugifying parts of the link that we don't need to. E.g. right now, a folder like `wiki_and_tasks` will get changed to `wiki-and-tasks` (with hyphens instead of underscores) for the URL. But underscores *are* valid for using in a URL, and also, there could also be a folder called `wiki-and-tasks` with hyphens, and they would both be able to exist in the repository.