[WIP] broken, hacky attempt to get better diffs.

31332fc4de834fb03bb56cd214276d0209ed7bbd

Tucker McKnight <tmcknight@instructure.com> | Sun Mar 15 2026

[WIP] broken, hacky attempt to get better diffs.

Need to rethink this, just commiting it to remember what I changed.

Need to create newlines in one side of the diff if the other side is
exclusively adding lines. So maybe change the Diff to check lines
instead of words, and then do words (or characters?) per-line once
the line diff has been created.
js_templates/commit.ts:65
Before
64
65
66

67
68
            m('div', {class: "row"}, [
              m('div', {class: "col-auto border-end"},
                m('pre', {class: "mb-0"}, lineNumbers(hunk.beforeText).map((lineNumber) => {
⁣
                  return (lineNumber + hunk.lineNumber - 1).toString()
                }).join('\n'))
              ),
After
64
65
66
67
68
69
            m('div', {class: "row"}, [
              m('div', {class: "col-auto border-end"},
                m('pre', {class: "mb-0"}, lineNumbers(hunk.beforeText).map((lineNumber) => {
                  if (lineNumber === null) { return '' }
                  return (lineNumber + hunk.lineNumber - 1).toString()
                }).join('\n'))
              ),
js_templates/commit.ts:77
Before
76
77
78
79

80
81
            m('span', {class: 'font-monospace text-secondary'}, 'After'),
            m('div', {class: "row"},
              m('div', {class: "col-auto border-end"},
                m('pre', {class: "mb-0"}, lineNumbers(hunk.beforeText).map((lineNumber) => {
⁣
                  return (lineNumber + hunk.lineNumber - 1).toString()
                }).join('\n'))
              ),
After
76
77
78
79
80
81
82
            m('span', {class: 'font-monospace text-secondary'}, 'After'),
            m('div', {class: "row"},
              m('div', {class: "col-auto border-end"},
                m('pre', {class: "mb-0"}, lineNumbers(hunk.afterText).map((lineNumber) => {
                  if (lineNumber === null) { return '' }
                  return (lineNumber + hunk.lineNumber - 1).toString()
                }).join('\n'))
              ),
main.ts:136
Before
135
136
137
138

139
140
141

142
143
144
  })

  eleventyConfig.addFilter("lineNumbers", (code: string) => {
    code.split('')
⁣
    const numLines = code.split('\n').length
    const lineNumbers = []
    for (let i = 1; i <= numLines; i++) {
⁣
      lineNumbers.push(i)
    }

    return lineNumbers
After
135
136
137
138
139
140
141
142
143
144
145
146
  })

  eleventyConfig.addFilter("lineNumbers", (code: string) => {
    const lines = code.split('\n')
    console.log(lines)
    const numLines = lines.length
    const lineNumbers = []
    for (let i = 0; i < numLines - 1; i++) {
      const lineNum = lines[i].includes('\u{2063}') ? null : i
      lineNumbers.push(lineNum)
    }

    return lineNumbers