<div class="footer">
<a href="$home/timeline.rss">RSS</a> · <a href="mailto:bugs@YOURDOMAIN.com?subject=Bug%20Report">Report Issue</a> · <a href="$home/brlist">Branches</a> · Fossil $manifest_version
</div>
<script nonce="$nonce">
// External links open in new tab
document.querySelectorAll('div.markdown a[href^="http"]').forEach(a => a.target = '_blank');

// Copy button on code blocks
document.querySelectorAll('pre').forEach(pre => {
  const codeNode = pre.querySelector('code');
  const rawCode = (codeNode ? codeNode.textContent : pre.textContent).replace(/\n$/, '');
  pre.dataset.rawCode = rawCode;

  // Render line numbers while preserving copy behavior.
  const lineTarget = codeNode || pre;
  if (!pre.classList.contains('fs-ln-ready')) {
    const lines = rawCode.split('\n');
    lineTarget.textContent = '';
    lines.forEach((line, idx) => {
      const row = document.createElement('span');
      row.className = 'fs-code-line';
      row.setAttribute('data-ln', String(idx + 1));
      row.textContent = line.length ? line : ' ';
      lineTarget.appendChild(row);
    });
    pre.classList.add('fs-ln-ready');
  }

  const btn = document.createElement('button');
  btn.className = 'copy-btn';
  btn.textContent = 'Copy';
  btn.onclick = () => {
    navigator.clipboard.writeText(pre.dataset.rawCode || '');
    btn.textContent = 'Copied!';
    btn.classList.add('copied');
    setTimeout(() => { btn.textContent = 'Copy'; btn.classList.remove('copied'); }, 2000);
  };
  pre.appendChild(btn);
});

// Anchor links on headers
document.querySelectorAll('div.markdown h1, div.markdown h2, div.markdown h3, div.markdown h4').forEach(h => {
  const id = h.id || h.textContent.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/-$/, '');
  h.id = id;
  const a = document.createElement('a');
  a.className = 'header-anchor';
  a.href = '#' + id;
  a.textContent = '#';
  h.appendChild(a);
});

// Code popup
const getCode = document.querySelector('.get-code');
const getCodeBtn = document.querySelector('.get-code-btn');
const cloneEl = document.querySelector('.popup-clone');

if (getCodeBtn) {
  getCodeBtn.addEventListener('click', e => {
    e.stopPropagation();
    getCode.classList.toggle('open');
  });
}

if (cloneEl) {
  cloneEl.addEventListener('click', () => {
    navigator.clipboard.writeText(cloneEl.innerText);
    cloneEl.classList.add('copied');
    setTimeout(() => cloneEl.classList.remove('copied'), 2000);
  });
}

document.addEventListener('click', e => {
  if (getCode && !getCode.contains(e.target)) getCode.classList.remove('open');
});
</script>
