detached fcc7703

feat(web): one merge request card, a diff view menu, a wide diff mode and quieter hunk rows

commit
fcc77036ea838fc565f571e1c6afe37cd933ecc7
author
brice · · 2026-10-19 15:05 UTC
committer
brice · · 2026-10-19 15:05 UTC
parent
d8e7d5b
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
16 files · +866 -681
M internal/adapters/web/diff.templ +30 -3
@@ -72,9 +72,8 @@ templ Commit(l Layout, p CommitPage) {
7272 <div class="diff-tools" role="group" aria-label="Diff view">
7373 <span class="dim">{ plural(p.NFiles, "file", "files") } · <span class="plus">+{ itoa(p.Adds) }</span> <span class="minus">-{ itoa(p.Dels) }</span></span>
7474 <span class="grow"></span>
75- @viewLink(p.DiffView, "unified", "Unified", "u", p.UnifiedHref)
76- @viewLink(p.DiffView, "split", "Split", "d", p.SplitHref)
77- @collapseButton()
75+ @diffViewMenu(p.DiffView)
76+ @wideButton()
7877 </div>
7978 if p.Invisible {
8079 <p class="notice">
@@ -112,6 +111,34 @@ templ Commit(l Layout, p CommitPage) {
112111 }
113112 }
114113
114+// diffViewMenu is the layout of the diff (unified, the default, or split) and
115+// the fold of its files, in one menu: a <details> that works without scripts;
116+// u, d and x still act without opening it. Its button names the layout shown.
117+templ diffViewMenu(p DiffView) {
118+ <details class="menu vmenu">
119+ <summary class="btn" aria-label="Diff view">
120+ if p.Both {
121+ <span hx-live="this.textContent = q('#diffs').attr['data-diff'] === 'split' ? 'Split' : 'Unified'">{ viewLabel(p.View) }</span>
122+ } else {
123+ { viewLabel(p.View) }
124+ }
125+ </summary>
126+ <div class="menu-pop" role="group" aria-label="Diff view">
127+ @viewLink(p, "unified", "Unified", "u", p.UnifiedHref)
128+ @viewLink(p, "split", "Split", "d", p.SplitHref)
129+ @collapseButton()
130+ </div>
131+ </details>
132+}
133+
134+// wideButton gives the diff the whole width of the screen: the rail goes to
135+// the right edge and the code takes the rest. ermite.js keeps the choice.
136+templ wideButton() {
137+ <button type="button" class="btn" data-js data-fire="wide" data-wide-toggle aria-pressed="false" aria-keyshortcuts="w" title="use the whole width of the screen">
138+ Wide<kbd aria-hidden="true">w</kbd>
139+ </button>
140+}
141+
115142 // viewLink is a button of the diff tools. It is a link, so that the split
116143 // layout works without JavaScript; with it, and when both layouts are in the
117144 // page, a click only flips the layout.
@@ -72,9 +72,8 @@ templ Commit(l Layout, p CommitPage) {
72 <div class="diff-tools" role="group" aria-label="Diff view">72 <div class="diff-tools" role="group" aria-label="Diff view">
73 <span class="dim">{ plural(p.NFiles, "file", "files") } · <span class="plus">+{ itoa(p.Adds) }</span> <span class="minus">-{ itoa(p.Dels) }</span></span>73 <span class="dim">{ plural(p.NFiles, "file", "files") } · <span class="plus">+{ itoa(p.Adds) }</span> <span class="minus">-{ itoa(p.Dels) }</span></span>
74 <span class="grow"></span>74 <span class="grow"></span>
75- @viewLink(p.DiffView, "unified", "Unified", "u", p.UnifiedHref)75+ @diffViewMenu(p.DiffView)
76- @viewLink(p.DiffView, "split", "Split", "d", p.SplitHref)76+ @wideButton()
77- @collapseButton()
78 </div>77 </div>
79 if p.Invisible {78 if p.Invisible {
80 <p class="notice">79 <p class="notice">
@@ -112,6 +111,34 @@ templ Commit(l Layout, p CommitPage) {
112 }111 }
113 }112 }
114 113
114+// diffViewMenu is the layout of the diff (unified, the default, or split) and
115+// the fold of its files, in one menu: a <details> that works without scripts;
116+// u, d and x still act without opening it. Its button names the layout shown.
117+templ diffViewMenu(p DiffView) {
118+ <details class="menu vmenu">
119+ <summary class="btn" aria-label="Diff view">
120+ if p.Both {
121+ <span hx-live="this.textContent = q('#diffs').attr['data-diff'] === 'split' ? 'Split' : 'Unified'">{ viewLabel(p.View) }</span>
122+ } else {
123+ { viewLabel(p.View) }
124+ }
125+ </summary>
126+ <div class="menu-pop" role="group" aria-label="Diff view">
127+ @viewLink(p, "unified", "Unified", "u", p.UnifiedHref)
128+ @viewLink(p, "split", "Split", "d", p.SplitHref)
129+ @collapseButton()
130+ </div>
131+ </details>
132+}
133+
134+// wideButton gives the diff the whole width of the screen: the rail goes to
135+// the right edge and the code takes the rest. ermite.js keeps the choice.
136+templ wideButton() {
137+ <button type="button" class="btn" data-js data-fire="wide" data-wide-toggle aria-pressed="false" aria-keyshortcuts="w" title="use the whole width of the screen">
138+ Wide<kbd aria-hidden="true">w</kbd>
139+ </button>
140+}
141+
115 // viewLink is a button of the diff tools. It is a link, so that the split142 // viewLink is a button of the diff tools. It is a link, so that the split
116 // layout works without JavaScript; with it, and when both layouts are in the143 // layout works without JavaScript; with it, and when both layouts are in the
117 // page, a click only flips the layout.144 // page, a click only flips the layout.
M internal/adapters/web/diff_templ.go +542 -434 generated file: collapsed
M internal/adapters/web/format.go +8 -0
@@ -61,6 +61,14 @@ func grouped(n int) string {
6161 return string(b)
6262 }
6363
64+// viewLabel names a diff layout on the button of the view menu.
65+func viewLabel(view string) string {
66+ if view == "split" {
67+ return "Split"
68+ }
69+ return "Unified"
70+}
71+
6472 func plural(n int, one, many string) string {
6573 if n == 1 {
6674 return "1 " + one
@@ -61,6 +61,14 @@ func grouped(n int) string {
61 return string(b)61 return string(b)
62 }62 }
63 63
64+// viewLabel names a diff layout on the button of the view menu.
65+func viewLabel(view string) string {
66+ if view == "split" {
67+ return "Split"
68+ }
69+ return "Unified"
70+}
71+
64 func plural(n int, one, many string) string {72 func plural(n int, one, many string) string {
65 if n == 1 {73 if n == 1 {
66 return "1 " + one74 return "1 " + one
M internal/adapters/web/issues.templ +24 -22
@@ -136,32 +136,34 @@ templ issueNewRail() {
136136 // owner, the form to comment and the button that closes or reopens it.
137137 templ IssueShow(l Layout, p IssuePage) {
138138 @Shell(l, issueRail(p)) {
139- <header class="show mr-h">
140- <h1><span class="mute">{ p.Number }</span> { p.Title }</h1>
141- <dl class="kv show-kv">
142- <dt>state</dt>
143- <dd class="mr-state" data-state={ p.State }>{ p.State }</dd>
144- <dt>opened</dt>
145- <dd>
146- { p.Opened.Name }
147- if p.Opened.WhenAt != "" {
148- { " · " }<time datetime={ p.Opened.WhenAt } title={ p.Opened.Abs }>{ p.Opened.When }</time>
139+ <section class="mr-card">
140+ <header class="show mr-h">
141+ <h1><span class="mute">{ p.Number }</span> { p.Title }</h1>
142+ <dl class="kv show-kv">
143+ <dt>state</dt>
144+ <dd class="mr-state" data-state={ p.State }>{ p.State }</dd>
145+ <dt>opened</dt>
146+ <dd>
147+ { p.Opened.Name }
148+ if p.Opened.WhenAt != "" {
149+ { " · " }<time datetime={ p.Opened.WhenAt } title={ p.Opened.Abs }>{ p.Opened.When }</time>
150+ }
151+ </dd>
152+ if p.UpdatedAt != "" {
153+ <dt>updated</dt>
154+ <dd><time datetime={ p.UpdatedAt }>{ p.Updated }</time></dd>
149155 }
150- </dd>
151- if p.UpdatedAt != "" {
152- <dt>updated</dt>
153- <dd><time datetime={ p.UpdatedAt }>{ p.Updated }</time></dd>
154- }
155- </dl>
156- </header>
156+ </dl>
157+ </header>
158+ if p.Desc != "" {
159+ <article class="mr-desc prose" aria-label="description" hx-ignore>
160+ @templ.Raw(string(p.Desc))
161+ </article>
162+ }
163+ </section>
157164 if p.Live {
158165 @LiveSlot("mr-notice")
159166 }
160- if p.Desc != "" {
161- <article class="mr-desc prose" aria-label="description" hx-ignore>
162- @templ.Raw(string(p.Desc))
163- </article>
164- }
165167 <h2 class="rule-h" id="comments"><span>Comments</span><span class="count">{ itoa(len(p.Comments)) }</span></h2>
166168 for _, c := range p.Comments {
167169 @commentView(c, "")
@@ -136,32 +136,34 @@ templ issueNewRail() {
136 // owner, the form to comment and the button that closes or reopens it.136 // owner, the form to comment and the button that closes or reopens it.
137 templ IssueShow(l Layout, p IssuePage) {137 templ IssueShow(l Layout, p IssuePage) {
138 @Shell(l, issueRail(p)) {138 @Shell(l, issueRail(p)) {
139- <header class="show mr-h">139+ <section class="mr-card">
140- <h1><span class="mute">{ p.Number }</span> { p.Title }</h1>140+ <header class="show mr-h">
141- <dl class="kv show-kv">141+ <h1><span class="mute">{ p.Number }</span> { p.Title }</h1>
142- <dt>state</dt>142+ <dl class="kv show-kv">
143- <dd class="mr-state" data-state={ p.State }>{ p.State }</dd>143+ <dt>state</dt>
144- <dt>opened</dt>144+ <dd class="mr-state" data-state={ p.State }>{ p.State }</dd>
145- <dd>145+ <dt>opened</dt>
146- { p.Opened.Name }146+ <dd>
147- if p.Opened.WhenAt != "" {147+ { p.Opened.Name }
148- { " · " }<time datetime={ p.Opened.WhenAt } title={ p.Opened.Abs }>{ p.Opened.When }</time>148+ if p.Opened.WhenAt != "" {
149+ { " · " }<time datetime={ p.Opened.WhenAt } title={ p.Opened.Abs }>{ p.Opened.When }</time>
150+ }
151+ </dd>
152+ if p.UpdatedAt != "" {
153+ <dt>updated</dt>
154+ <dd><time datetime={ p.UpdatedAt }>{ p.Updated }</time></dd>
149 }155 }
150- </dd>156+ </dl>
151- if p.UpdatedAt != "" {157+ </header>
152- <dt>updated</dt>158+ if p.Desc != "" {
153- <dd><time datetime={ p.UpdatedAt }>{ p.Updated }</time></dd>159+ <article class="mr-desc prose" aria-label="description" hx-ignore>
154- }160+ @templ.Raw(string(p.Desc))
155- </dl>161+ </article>
156- </header>162+ }
163+ </section>
157 if p.Live {164 if p.Live {
158 @LiveSlot("mr-notice")165 @LiveSlot("mr-notice")
159 }166 }
160- if p.Desc != "" {
161- <article class="mr-desc prose" aria-label="description" hx-ignore>
162- @templ.Raw(string(p.Desc))
163- </article>
164- }
165 <h2 class="rule-h" id="comments"><span>Comments</span><span class="count">{ itoa(len(p.Comments)) }</span></h2>167 <h2 class="rule-h" id="comments"><span>Comments</span><span class="count">{ itoa(len(p.Comments)) }</span></h2>
166 for _, c := range p.Comments {168 for _, c := range p.Comments {
167 @commentView(c, "")169 @commentView(c, "")
M internal/adapters/web/issues_templ.go +26 -26 generated file: collapsed
M internal/adapters/web/keys.templ +1 -0
@@ -32,6 +32,7 @@ templ Keys() {
3232 k-split from:body -> ermite.layout('split');
3333 k-unified from:body -> ermite.layout('unified');
3434 k-collapse from:body -> ermite.collapse();
35+ k-wide from:body -> window.ermiteWide.toggle();
3536 k-expand from:body -> ermite.expandFile();
3637 k-expandAll from:body -> ermite.expandAll();
3738 k-permalink from:body -> ermite.permalink();
@@ -32,6 +32,7 @@ templ Keys() {
32 k-split from:body -> ermite.layout('split');32 k-split from:body -> ermite.layout('split');
33 k-unified from:body -> ermite.layout('unified');33 k-unified from:body -> ermite.layout('unified');
34 k-collapse from:body -> ermite.collapse();34 k-collapse from:body -> ermite.collapse();
35+ k-wide from:body -> window.ermiteWide.toggle();
35 k-expand from:body -> ermite.expandFile();36 k-expand from:body -> ermite.expandFile();
36 k-expandAll from:body -> ermite.expandAll();37 k-expandAll from:body -> ermite.expandAll();
37 k-permalink from:body -> ermite.permalink();38 k-permalink from:body -> ermite.permalink();
M internal/adapters/web/keys_templ.go +1 -1 generated file: collapsed
M internal/adapters/web/mr.templ +39 -39
@@ -109,41 +109,43 @@ templ mrListRail(p MRListPage) {
109109 // form, the checks, the settings, the commits and the files.
110110 templ MergeRequest(l Layout, p MRPage) {
111111 @Shell(l, mrRail(p)) {
112- <header class="show mr-h">
113- <h1><span class="mute">{ p.Number }</span> { p.Title }</h1>
114- <dl class="kv show-kv">
115- <dt>state</dt>
116- <dd class="mr-state" data-state={ p.State }>
117- { p.State }
118- if p.MergedShort != "" {
119- { " · " }<a href={ templ.SafeURL(p.MergedHref) }>{ p.MergedShort }</a>{ " · " + p.MergeMode }
120- }
121- </dd>
122- <dt>branch</dt>
123- <dd>
124- @branchLink(p.Source, p.SourceHref)
125- { " → " }
126- @branchLink(p.Target, p.TargetHref)
127- </dd>
128- <dt>opened</dt>
129- <dd>
130- { p.Opened.Name }
131- if p.Opened.WhenAt != "" {
132- { " · " }<time datetime={ p.Opened.WhenAt } title={ p.Opened.Abs }>{ p.Opened.When }</time>
112+ <section class="mr-card">
113+ <header class="show mr-h">
114+ <h1><span class="mute">{ p.Number }</span> { p.Title }</h1>
115+ <dl class="kv show-kv">
116+ <dt>state</dt>
117+ <dd class="mr-state" data-state={ p.State }>
118+ { p.State }
119+ if p.MergedShort != "" {
120+ { " · " }<a href={ templ.SafeURL(p.MergedHref) }>{ p.MergedShort }</a>{ " · " + p.MergeMode }
121+ }
122+ </dd>
123+ <dt>branch</dt>
124+ <dd>
125+ @branchLink(p.Source, p.SourceHref)
126+ { " → " }
127+ @branchLink(p.Target, p.TargetHref)
128+ </dd>
129+ <dt>opened</dt>
130+ <dd>
131+ { p.Opened.Name }
132+ if p.Opened.WhenAt != "" {
133+ { " · " }<time datetime={ p.Opened.WhenAt } title={ p.Opened.Abs }>{ p.Opened.When }</time>
134+ }
135+ </dd>
136+ if p.UpdatedAt != "" {
137+ <dt>updated</dt>
138+ <dd><time datetime={ p.UpdatedAt }>{ p.Updated }</time></dd>
133139 }
134- </dd>
135- if p.UpdatedAt != "" {
136- <dt>updated</dt>
137- <dd><time datetime={ p.UpdatedAt }>{ p.Updated }</time></dd>
138- }
139- </dl>
140- </header>
140+ </dl>
141+ </header>
142+ if p.Desc != "" {
143+ <article class="mr-desc prose" aria-label="description" hx-ignore>
144+ @templ.Raw(string(p.Desc))
145+ </article>
146+ }
147+ </section>
141148 @LiveSlot("mr-notice")
142- if p.Desc != "" {
143- <article class="mr-desc prose" aria-label="description" hx-ignore>
144- @templ.Raw(string(p.Desc))
145- </article>
146- }
147149 if p.Since != nil {
148150 <nav class="since" aria-label="Diff range">
149151 <a
@@ -431,9 +433,8 @@ templ mrRail(p MRPage) {
431433 templ mrBar(p MRPage) {
432434 <div class="diff-tools mr-bar" role="group" aria-label="Diff view and merge">
433435 <span class="dim">{ plural(p.NFiles, "file", "files") } · <span class="plus">+{ itoa(p.Adds) }</span> <span class="minus">-{ itoa(p.Dels) }</span></span>
434- @viewLink(p.DiffView, "unified", "Unified", "u", p.UnifiedHref)
435- @viewLink(p.DiffView, "split", "Split", "d", p.SplitHref)
436- @collapseButton()
436+ @diffViewMenu(p.DiffView)
437+ @wideButton()
437438 <span class="grow"></span>
438439 @MRChecksSum(p.ChecksSum)
439440 if p.Box != nil {
@@ -562,9 +563,8 @@ templ Compare(l Layout, p ComparePage) {
562563 <div class="diff-tools" role="group" aria-label="Diff view">
563564 <span class="dim">{ plural(p.NFiles, "file", "files") } · <span class="plus">+{ itoa(p.Adds) }</span> <span class="minus">-{ itoa(p.Dels) }</span></span>
564565 <span class="grow"></span>
565- @viewLink(p.DiffView, "unified", "Unified", "u", p.UnifiedHref)
566- @viewLink(p.DiffView, "split", "Split", "d", p.SplitHref)
567- @collapseButton()
566+ @diffViewMenu(p.DiffView)
567+ @wideButton()
568568 </div>
569569 if p.Invisible {
570570 <p class="notice">
@@ -109,41 +109,43 @@ templ mrListRail(p MRListPage) {
109 // form, the checks, the settings, the commits and the files.109 // form, the checks, the settings, the commits and the files.
110 templ MergeRequest(l Layout, p MRPage) {110 templ MergeRequest(l Layout, p MRPage) {
111 @Shell(l, mrRail(p)) {111 @Shell(l, mrRail(p)) {
112- <header class="show mr-h">112+ <section class="mr-card">
113- <h1><span class="mute">{ p.Number }</span> { p.Title }</h1>113+ <header class="show mr-h">
114- <dl class="kv show-kv">114+ <h1><span class="mute">{ p.Number }</span> { p.Title }</h1>
115- <dt>state</dt>115+ <dl class="kv show-kv">
116- <dd class="mr-state" data-state={ p.State }>116+ <dt>state</dt>
117- { p.State }117+ <dd class="mr-state" data-state={ p.State }>
118- if p.MergedShort != "" {118+ { p.State }
119- { " · " }<a href={ templ.SafeURL(p.MergedHref) }>{ p.MergedShort }</a>{ " · " + p.MergeMode }119+ if p.MergedShort != "" {
120- }120+ { " · " }<a href={ templ.SafeURL(p.MergedHref) }>{ p.MergedShort }</a>{ " · " + p.MergeMode }
121- </dd>121+ }
122- <dt>branch</dt>122+ </dd>
123- <dd>123+ <dt>branch</dt>
124- @branchLink(p.Source, p.SourceHref)124+ <dd>
125- { " → " }125+ @branchLink(p.Source, p.SourceHref)
126- @branchLink(p.Target, p.TargetHref)126+ { " → " }
127- </dd>127+ @branchLink(p.Target, p.TargetHref)
128- <dt>opened</dt>128+ </dd>
129- <dd>129+ <dt>opened</dt>
130- { p.Opened.Name }130+ <dd>
131- if p.Opened.WhenAt != "" {131+ { p.Opened.Name }
132- { " · " }<time datetime={ p.Opened.WhenAt } title={ p.Opened.Abs }>{ p.Opened.When }</time>132+ if p.Opened.WhenAt != "" {
133+ { " · " }<time datetime={ p.Opened.WhenAt } title={ p.Opened.Abs }>{ p.Opened.When }</time>
134+ }
135+ </dd>
136+ if p.UpdatedAt != "" {
137+ <dt>updated</dt>
138+ <dd><time datetime={ p.UpdatedAt }>{ p.Updated }</time></dd>
133 }139 }
134- </dd>140+ </dl>
135- if p.UpdatedAt != "" {141+ </header>
136- <dt>updated</dt>142+ if p.Desc != "" {
137- <dd><time datetime={ p.UpdatedAt }>{ p.Updated }</time></dd>143+ <article class="mr-desc prose" aria-label="description" hx-ignore>
138- }144+ @templ.Raw(string(p.Desc))
139- </dl>145+ </article>
140- </header>146+ }
147+ </section>
141 @LiveSlot("mr-notice")148 @LiveSlot("mr-notice")
142- if p.Desc != "" {
143- <article class="mr-desc prose" aria-label="description" hx-ignore>
144- @templ.Raw(string(p.Desc))
145- </article>
146- }
147 if p.Since != nil {149 if p.Since != nil {
148 <nav class="since" aria-label="Diff range">150 <nav class="since" aria-label="Diff range">
149 <a151 <a
@@ -431,9 +433,8 @@ templ mrRail(p MRPage) {
431 templ mrBar(p MRPage) {433 templ mrBar(p MRPage) {
432 <div class="diff-tools mr-bar" role="group" aria-label="Diff view and merge">434 <div class="diff-tools mr-bar" role="group" aria-label="Diff view and merge">
433 <span class="dim">{ plural(p.NFiles, "file", "files") } · <span class="plus">+{ itoa(p.Adds) }</span> <span class="minus">-{ itoa(p.Dels) }</span></span>435 <span class="dim">{ plural(p.NFiles, "file", "files") } · <span class="plus">+{ itoa(p.Adds) }</span> <span class="minus">-{ itoa(p.Dels) }</span></span>
434- @viewLink(p.DiffView, "unified", "Unified", "u", p.UnifiedHref)436+ @diffViewMenu(p.DiffView)
435- @viewLink(p.DiffView, "split", "Split", "d", p.SplitHref)437+ @wideButton()
436- @collapseButton()
437 <span class="grow"></span>438 <span class="grow"></span>
438 @MRChecksSum(p.ChecksSum)439 @MRChecksSum(p.ChecksSum)
439 if p.Box != nil {440 if p.Box != nil {
@@ -562,9 +563,8 @@ templ Compare(l Layout, p ComparePage) {
562 <div class="diff-tools" role="group" aria-label="Diff view">563 <div class="diff-tools" role="group" aria-label="Diff view">
563 <span class="dim">{ plural(p.NFiles, "file", "files") } · <span class="plus">+{ itoa(p.Adds) }</span> <span class="minus">-{ itoa(p.Dels) }</span></span>564 <span class="dim">{ plural(p.NFiles, "file", "files") } · <span class="plus">+{ itoa(p.Adds) }</span> <span class="minus">-{ itoa(p.Dels) }</span></span>
564 <span class="grow"></span>565 <span class="grow"></span>
565- @viewLink(p.DiffView, "unified", "Unified", "u", p.UnifiedHref)566+ @diffViewMenu(p.DiffView)
566- @viewLink(p.DiffView, "split", "Split", "d", p.SplitHref)567+ @wideButton()
567- @collapseButton()
568 </div>568 </div>
569 if p.Invisible {569 if p.Invisible {
570 <p class="notice">570 <p class="notice">
M internal/adapters/web/mr_templ.go +127 -135
@@ -553,14 +553,14 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
553553 }()
554554 }
555555 ctx = templ.InitializeContext(ctx)
556- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "<header class=\"show mr-h\"><h1><span class=\"mute\">")
556+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "<section class=\"mr-card\"><header class=\"show mr-h\"><h1><span class=\"mute\">")
557557 if templ_7745c5c3_Err != nil {
558558 return templ_7745c5c3_Err
559559 }
560560 var templ_7745c5c3_Var26 string
561561 templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(p.Number)
562562 if templ_7745c5c3_Err != nil {
563- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 113, Col: 36}
563+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 114, Col: 37}
564564 }
565565 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26))
566566 if templ_7745c5c3_Err != nil {
@@ -573,7 +573,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
573573 var templ_7745c5c3_Var27 string
574574 templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
575575 if templ_7745c5c3_Err != nil {
576- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 113, Col: 55}
576+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 114, Col: 56}
577577 }
578578 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27))
579579 if templ_7745c5c3_Err != nil {
@@ -586,7 +586,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
586586 var templ_7745c5c3_Var28 string
587587 templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.State)
588588 if templ_7745c5c3_Err != nil {
589- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 116, Col: 45}
589+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 117, Col: 46}
590590 }
591591 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var28)
592592 if templ_7745c5c3_Err != nil {
@@ -599,7 +599,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
599599 var templ_7745c5c3_Var29 string
600600 templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(p.State)
601601 if templ_7745c5c3_Err != nil {
602- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 117, Col: 14}
602+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 118, Col: 15}
603603 }
604604 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29))
605605 if templ_7745c5c3_Err != nil {
@@ -613,7 +613,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
613613 var templ_7745c5c3_Var30 string
614614 templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(" · ")
615615 if templ_7745c5c3_Err != nil {
616- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 119, Col: 14}
616+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 120, Col: 15}
617617 }
618618 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30))
619619 if templ_7745c5c3_Err != nil {
@@ -626,7 +626,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
626626 var templ_7745c5c3_Var31 templ.SafeURL
627627 templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.MergedHref))
628628 if templ_7745c5c3_Err != nil {
629- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 119, Col: 53}
629+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 120, Col: 54}
630630 }
631631 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31))
632632 if templ_7745c5c3_Err != nil {
@@ -639,7 +639,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
639639 var templ_7745c5c3_Var32 string
640640 templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(p.MergedShort)
641641 if templ_7745c5c3_Err != nil {
642- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 119, Col: 71}
642+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 120, Col: 72}
643643 }
644644 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32))
645645 if templ_7745c5c3_Err != nil {
@@ -652,7 +652,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
652652 var templ_7745c5c3_Var33 string
653653 templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(" · " + p.MergeMode)
654654 if templ_7745c5c3_Err != nil {
655- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 119, Col: 99}
655+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 120, Col: 100}
656656 }
657657 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33))
658658 if templ_7745c5c3_Err != nil {
@@ -670,7 +670,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
670670 var templ_7745c5c3_Var34 string
671671 templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(" → ")
672672 if templ_7745c5c3_Err != nil {
673- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 125, Col: 14}
673+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 126, Col: 15}
674674 }
675675 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))
676676 if templ_7745c5c3_Err != nil {
@@ -687,7 +687,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
687687 var templ_7745c5c3_Var35 string
688688 templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinStringErrs(p.Opened.Name)
689689 if templ_7745c5c3_Err != nil {
690- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 130, Col: 20}
690+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 131, Col: 21}
691691 }
692692 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35))
693693 if templ_7745c5c3_Err != nil {
@@ -701,7 +701,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
701701 var templ_7745c5c3_Var36 string
702702 templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.JoinStringErrs(" · ")
703703 if templ_7745c5c3_Err != nil {
704- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 132, Col: 14}
704+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 133, Col: 15}
705705 }
706706 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var36))
707707 if templ_7745c5c3_Err != nil {
@@ -714,7 +714,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
714714 var templ_7745c5c3_Var37 string
715715 templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Opened.WhenAt)
716716 if templ_7745c5c3_Err != nil {
717- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 132, Col: 48}
717+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 133, Col: 49}
718718 }
719719 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var37)
720720 if templ_7745c5c3_Err != nil {
@@ -727,7 +727,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
727727 var templ_7745c5c3_Var38 string
728728 templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Opened.Abs)
729729 if templ_7745c5c3_Err != nil {
730- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 132, Col: 71}
730+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 133, Col: 72}
731731 }
732732 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var38)
733733 if templ_7745c5c3_Err != nil {
@@ -740,7 +740,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
740740 var templ_7745c5c3_Var39 string
741741 templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.JoinStringErrs(p.Opened.When)
742742 if templ_7745c5c3_Err != nil {
743- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 132, Col: 89}
743+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 133, Col: 90}
744744 }
745745 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var39))
746746 if templ_7745c5c3_Err != nil {
@@ -763,7 +763,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
763763 var templ_7745c5c3_Var40 string
764764 templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.UpdatedAt)
765765 if templ_7745c5c3_Err != nil {
766- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 137, Col: 37}
766+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 138, Col: 38}
767767 }
768768 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var40)
769769 if templ_7745c5c3_Err != nil {
@@ -776,7 +776,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
776776 var templ_7745c5c3_Var41 string
777777 templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinStringErrs(p.Updated)
778778 if templ_7745c5c3_Err != nil {
779- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 137, Col: 51}
779+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 138, Col: 52}
780780 }
781781 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41))
782782 if templ_7745c5c3_Err != nil {
@@ -791,16 +791,8 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
791791 if templ_7745c5c3_Err != nil {
792792 return templ_7745c5c3_Err
793793 }
794- templ_7745c5c3_Err = LiveSlot("mr-notice").Render(ctx, templ_7745c5c3_Buffer)
795- if templ_7745c5c3_Err != nil {
796- return templ_7745c5c3_Err
797- }
798- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, " ")
799- if templ_7745c5c3_Err != nil {
800- return templ_7745c5c3_Err
801- }
802794 if p.Desc != "" {
803- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "<article class=\"mr-desc prose\" aria-label=\"description\" hx-ignore>")
795+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "<article class=\"mr-desc prose\" aria-label=\"description\" hx-ignore>")
804796 if templ_7745c5c3_Err != nil {
805797 return templ_7745c5c3_Err
806798 }
@@ -808,11 +800,19 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
808800 if templ_7745c5c3_Err != nil {
809801 return templ_7745c5c3_Err
810802 }
811- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "</article>")
803+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "</article>")
812804 if templ_7745c5c3_Err != nil {
813805 return templ_7745c5c3_Err
814806 }
815807 }
808+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "</section>")
809+ if templ_7745c5c3_Err != nil {
810+ return templ_7745c5c3_Err
811+ }
812+ templ_7745c5c3_Err = LiveSlot("mr-notice").Render(ctx, templ_7745c5c3_Buffer)
813+ if templ_7745c5c3_Err != nil {
814+ return templ_7745c5c3_Err
815+ }
816816 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, " ")
817817 if templ_7745c5c3_Err != nil {
818818 return templ_7745c5c3_Err
@@ -825,7 +825,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
825825 var templ_7745c5c3_Var42 templ.SafeURL
826826 templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Since.AllHref))
827827 if templ_7745c5c3_Err != nil {
828- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 150, Col: 42}
828+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 152, Col: 42}
829829 }
830830 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42))
831831 if templ_7745c5c3_Err != nil {
@@ -848,7 +848,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
848848 var templ_7745c5c3_Var43 string
849849 templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.JoinStringErrs(p.Target)
850850 if templ_7745c5c3_Err != nil {
851- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 154, Col: 49}
851+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 156, Col: 49}
852852 }
853853 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var43))
854854 if templ_7745c5c3_Err != nil {
@@ -861,7 +861,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
861861 var templ_7745c5c3_Var44 templ.SafeURL
862862 templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Since.SinceHref))
863863 if templ_7745c5c3_Err != nil {
864- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 156, Col: 44}
864+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 158, Col: 44}
865865 }
866866 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var44))
867867 if templ_7745c5c3_Err != nil {
@@ -884,7 +884,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
884884 var templ_7745c5c3_Var45 string
885885 templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.JoinStringErrs(p.Since.ReadShort)
886886 if templ_7745c5c3_Err != nil {
887- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 160, Col: 64}
887+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 162, Col: 64}
888888 }
889889 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var45))
890890 if templ_7745c5c3_Err != nil {
@@ -897,7 +897,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
897897 var templ_7745c5c3_Var46 string
898898 templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(p.Since.HeadShort)
899899 if templ_7745c5c3_Err != nil {
900- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 160, Col: 90}
900+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 162, Col: 90}
901901 }
902902 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46))
903903 if templ_7745c5c3_Err != nil {
@@ -920,7 +920,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
920920 var templ_7745c5c3_Var47 string
921921 templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinStringErrs(p.SinceNote)
922922 if templ_7745c5c3_Err != nil {
923- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 164, Col: 34}
923+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 166, Col: 34}
924924 }
925925 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47))
926926 if templ_7745c5c3_Err != nil {
@@ -961,7 +961,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
961961 var templ_7745c5c3_Var48 string
962962 templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note)
963963 if templ_7745c5c3_Err != nil {
964- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 174, Col: 29}
964+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 176, Col: 29}
965965 }
966966 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48))
967967 if templ_7745c5c3_Err != nil {
@@ -984,7 +984,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
984984 var templ_7745c5c3_Var49 string
985985 templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.View)
986986 if templ_7745c5c3_Err != nil {
987- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 180, Col: 22}
987+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 182, Col: 22}
988988 }
989989 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var49)
990990 if templ_7745c5c3_Err != nil {
@@ -1002,7 +1002,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
10021002 var templ_7745c5c3_Var50 string
10031003 templ_7745c5c3_Var50, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.View)
10041004 if templ_7745c5c3_Err != nil {
1005- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 182, Col: 22}
1005+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 184, Col: 22}
10061006 }
10071007 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var50)
10081008 if templ_7745c5c3_Err != nil {
@@ -1042,7 +1042,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
10421042 var templ_7745c5c3_Var51 string
10431043 templ_7745c5c3_Var51, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.NUnresolved))
10441044 if templ_7745c5c3_Err != nil {
1045- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 195, Col: 97}
1045+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 197, Col: 97}
10461046 }
10471047 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var51))
10481048 if templ_7745c5c3_Err != nil {
@@ -1055,7 +1055,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
10551055 var templ_7745c5c3_Var52 string
10561056 templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.NComments))
10571057 if templ_7745c5c3_Err != nil {
1058- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 195, Col: 126}
1058+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 197, Col: 126}
10591059 }
10601060 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var52))
10611061 if templ_7745c5c3_Err != nil {
@@ -1136,7 +1136,7 @@ func branchLink(name, href string) templ.Component {
11361136 var templ_7745c5c3_Var54 templ.SafeURL
11371137 templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(href))
11381138 if templ_7745c5c3_Err != nil {
1139- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 213, Col: 31}
1139+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 215, Col: 31}
11401140 }
11411141 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var54))
11421142 if templ_7745c5c3_Err != nil {
@@ -1149,7 +1149,7 @@ func branchLink(name, href string) templ.Component {
11491149 var templ_7745c5c3_Var55 string
11501150 templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinStringErrs(name)
11511151 if templ_7745c5c3_Err != nil {
1152- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 213, Col: 40}
1152+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 215, Col: 40}
11531153 }
11541154 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55))
11551155 if templ_7745c5c3_Err != nil {
@@ -1163,7 +1163,7 @@ func branchLink(name, href string) templ.Component {
11631163 var templ_7745c5c3_Var56 string
11641164 templ_7745c5c3_Var56, templ_7745c5c3_Err = templ.JoinStringErrs(name)
11651165 if templ_7745c5c3_Err != nil {
1166- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 215, Col: 8}
1166+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 217, Col: 8}
11671167 }
11681168 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var56))
11691169 if templ_7745c5c3_Err != nil {
@@ -1244,7 +1244,7 @@ func commentView(c CommentView, suffix string) templ.Component {
12441244 var templ_7745c5c3_Var59 string
12451245 templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.ResolveAttributeValue("c" + c.ID + suffix)
12461246 if templ_7745c5c3_Err != nil {
1247- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 234, Col: 42}
1247+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 236, Col: 42}
12481248 }
12491249 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var59)
12501250 if templ_7745c5c3_Err != nil {
@@ -1257,7 +1257,7 @@ func commentView(c CommentView, suffix string) templ.Component {
12571257 var templ_7745c5c3_Var60 string
12581258 templ_7745c5c3_Var60, templ_7745c5c3_Err = templ.ResolveAttributeValue(boolText(c.Resolved))
12591259 if templ_7745c5c3_Err != nil {
1260- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 234, Col: 81}
1260+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 236, Col: 81}
12611261 }
12621262 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var60)
12631263 if templ_7745c5c3_Err != nil {
@@ -1280,7 +1280,7 @@ func commentView(c CommentView, suffix string) templ.Component {
12801280 var templ_7745c5c3_Var61 string
12811281 templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.JoinStringErrs(c.Author)
12821282 if templ_7745c5c3_Err != nil {
1283- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 236, Col: 33}
1283+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 238, Col: 33}
12841284 }
12851285 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var61))
12861286 if templ_7745c5c3_Err != nil {
@@ -1294,7 +1294,7 @@ func commentView(c CommentView, suffix string) templ.Component {
12941294 var templ_7745c5c3_Var62 string
12951295 templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
12961296 if templ_7745c5c3_Err != nil {
1297- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 238, Col: 9}
1297+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 240, Col: 9}
12981298 }
12991299 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var62))
13001300 if templ_7745c5c3_Err != nil {
@@ -1307,7 +1307,7 @@ func commentView(c CommentView, suffix string) templ.Component {
13071307 var templ_7745c5c3_Var63 string
13081308 templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.WhenAt)
13091309 if templ_7745c5c3_Err != nil {
1310- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 238, Col: 49}
1310+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 240, Col: 49}
13111311 }
13121312 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var63)
13131313 if templ_7745c5c3_Err != nil {
@@ -1320,7 +1320,7 @@ func commentView(c CommentView, suffix string) templ.Component {
13201320 var templ_7745c5c3_Var64 string
13211321 templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.Abs)
13221322 if templ_7745c5c3_Err != nil {
1323- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 238, Col: 65}
1323+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 240, Col: 65}
13241324 }
13251325 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var64)
13261326 if templ_7745c5c3_Err != nil {
@@ -1333,7 +1333,7 @@ func commentView(c CommentView, suffix string) templ.Component {
13331333 var templ_7745c5c3_Var65 string
13341334 templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.JoinStringErrs(c.When)
13351335 if templ_7745c5c3_Err != nil {
1336- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 238, Col: 76}
1336+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 240, Col: 76}
13371337 }
13381338 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var65))
13391339 if templ_7745c5c3_Err != nil {
@@ -1348,7 +1348,7 @@ func commentView(c CommentView, suffix string) templ.Component {
13481348 var templ_7745c5c3_Var66 string
13491349 templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
13501350 if templ_7745c5c3_Err != nil {
1351- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 241, Col: 9}
1351+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 243, Col: 9}
13521352 }
13531353 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var66))
13541354 if templ_7745c5c3_Err != nil {
@@ -1363,7 +1363,7 @@ func commentView(c CommentView, suffix string) templ.Component {
13631363 var templ_7745c5c3_Var67 string
13641364 templ_7745c5c3_Var67, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
13651365 if templ_7745c5c3_Err != nil {
1366- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 244, Col: 9}
1366+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 246, Col: 9}
13671367 }
13681368 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var67))
13691369 if templ_7745c5c3_Err != nil {
@@ -1378,7 +1378,7 @@ func commentView(c CommentView, suffix string) templ.Component {
13781378 var templ_7745c5c3_Var68 string
13791379 templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
13801380 if templ_7745c5c3_Err != nil {
1381- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 247, Col: 9}
1381+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 249, Col: 9}
13821382 }
13831383 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var68))
13841384 if templ_7745c5c3_Err != nil {
@@ -1391,7 +1391,7 @@ func commentView(c CommentView, suffix string) templ.Component {
13911391 var templ_7745c5c3_Var69 string
13921392 templ_7745c5c3_Var69, templ_7745c5c3_Err = templ.JoinStringErrs(c.Where)
13931393 if templ_7745c5c3_Err != nil {
1394- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 247, Col: 47}
1394+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 249, Col: 47}
13951395 }
13961396 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var69))
13971397 if templ_7745c5c3_Err != nil {
@@ -1466,7 +1466,7 @@ func commentView(c CommentView, suffix string) templ.Component {
14661466 var templ_7745c5c3_Var70 string
14671467 templ_7745c5c3_Var70, templ_7745c5c3_Err = templ.JoinStringErrs(c.Verdict)
14681468 if templ_7745c5c3_Err != nil {
1469- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 271, Col: 36}
1469+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 273, Col: 36}
14701470 }
14711471 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var70))
14721472 if templ_7745c5c3_Err != nil {
@@ -1485,7 +1485,7 @@ func commentView(c CommentView, suffix string) templ.Component {
14851485 var templ_7745c5c3_Var71 string
14861486 templ_7745c5c3_Var71, templ_7745c5c3_Err = templ.JoinStringErrs(c.Range)
14871487 if templ_7745c5c3_Err != nil {
1488- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 274, Col: 31}
1488+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 276, Col: 31}
14891489 }
14901490 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var71))
14911491 if templ_7745c5c3_Err != nil {
@@ -1504,7 +1504,7 @@ func commentView(c CommentView, suffix string) templ.Component {
15041504 var templ_7745c5c3_Var72 string
15051505 templ_7745c5c3_Var72, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.Quote)
15061506 if templ_7745c5c3_Err != nil {
1507- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 277, Col: 65}
1507+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 279, Col: 65}
15081508 }
15091509 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var72)
15101510 if templ_7745c5c3_Err != nil {
@@ -1523,7 +1523,7 @@ func commentView(c CommentView, suffix string) templ.Component {
15231523 var templ_7745c5c3_Var73 templ.SafeURL
15241524 templ_7745c5c3_Var73, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.Edit.Action))
15251525 if templ_7745c5c3_Err != nil {
1526- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 280, Col: 92}
1526+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 282, Col: 92}
15271527 }
15281528 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var73))
15291529 if templ_7745c5c3_Err != nil {
@@ -1536,7 +1536,7 @@ func commentView(c CommentView, suffix string) templ.Component {
15361536 var templ_7745c5c3_Var74 string
15371537 templ_7745c5c3_Var74, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa(c.Edit.From))
15381538 if templ_7745c5c3_Err != nil {
1539- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 280, Col: 153}
1539+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 282, Col: 153}
15401540 }
15411541 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var74)
15421542 if templ_7745c5c3_Err != nil {
@@ -1549,7 +1549,7 @@ func commentView(c CommentView, suffix string) templ.Component {
15491549 var templ_7745c5c3_Var75 string
15501550 templ_7745c5c3_Var75, templ_7745c5c3_Err = templ.JoinStringErrs(c.Edit.Text)
15511551 if templ_7745c5c3_Err != nil {
1552- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 280, Col: 209}
1552+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 282, Col: 209}
15531553 }
15541554 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var75))
15551555 if templ_7745c5c3_Err != nil {
@@ -1568,7 +1568,7 @@ func commentView(c CommentView, suffix string) templ.Component {
15681568 var templ_7745c5c3_Var76 templ.SafeURL
15691569 templ_7745c5c3_Var76, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.Delete.Action))
15701570 if templ_7745c5c3_Err != nil {
1571- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 283, Col: 96}
1571+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 285, Col: 96}
15721572 }
15731573 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var76))
15741574 if templ_7745c5c3_Err != nil {
@@ -1581,7 +1581,7 @@ func commentView(c CommentView, suffix string) templ.Component {
15811581 var templ_7745c5c3_Var77 string
15821582 templ_7745c5c3_Var77, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa(c.Delete.From))
15831583 if templ_7745c5c3_Err != nil {
1584- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 283, Col: 159}
1584+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 285, Col: 159}
15851585 }
15861586 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var77)
15871587 if templ_7745c5c3_Err != nil {
@@ -1620,7 +1620,7 @@ func commentView(c CommentView, suffix string) templ.Component {
16201620 var templ_7745c5c3_Var78 templ.SafeURL
16211621 templ_7745c5c3_Var78, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.Resolve.Action))
16221622 if templ_7745c5c3_Err != nil {
1623- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 294, Col: 77}
1623+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 296, Col: 77}
16241624 }
16251625 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var78))
16261626 if templ_7745c5c3_Err != nil {
@@ -1633,7 +1633,7 @@ func commentView(c CommentView, suffix string) templ.Component {
16331633 var templ_7745c5c3_Var79 string
16341634 templ_7745c5c3_Var79, templ_7745c5c3_Err = templ.ResolveAttributeValue(boolText(c.Resolve.Value))
16351635 if templ_7745c5c3_Err != nil {
1636- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 295, Col: 74}
1636+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 297, Col: 74}
16371637 }
16381638 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var79)
16391639 if templ_7745c5c3_Err != nil {
@@ -1651,7 +1651,7 @@ func commentView(c CommentView, suffix string) templ.Component {
16511651 var templ_7745c5c3_Var80 string
16521652 templ_7745c5c3_Var80, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa(c.Resolve.From))
16531653 if templ_7745c5c3_Err != nil {
1654- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 297, Col: 66}
1654+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 299, Col: 66}
16551655 }
16561656 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var80)
16571657 if templ_7745c5c3_Err != nil {
@@ -1669,7 +1669,7 @@ func commentView(c CommentView, suffix string) templ.Component {
16691669 var templ_7745c5c3_Var81 string
16701670 templ_7745c5c3_Var81, templ_7745c5c3_Err = templ.JoinStringErrs(c.Resolve.Label)
16711671 if templ_7745c5c3_Err != nil {
1672- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 299, Col: 55}
1672+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 301, Col: 55}
16731673 }
16741674 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var81))
16751675 if templ_7745c5c3_Err != nil {
@@ -1724,7 +1724,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
17241724 var templ_7745c5c3_Var83 templ.SafeURL
17251725 templ_7745c5c3_Var83, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(f.Action))
17261726 if templ_7745c5c3_Err != nil {
1727- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 314, Col: 67}
1727+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 316, Col: 67}
17281728 }
17291729 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var83))
17301730 if templ_7745c5c3_Err != nil {
@@ -1737,7 +1737,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
17371737 var templ_7745c5c3_Var84 string
17381738 templ_7745c5c3_Var84, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.ID + suffix)
17391739 if templ_7745c5c3_Err != nil {
1740- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 315, Col: 28}
1740+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 317, Col: 28}
17411741 }
17421742 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var84)
17431743 if templ_7745c5c3_Err != nil {
@@ -1750,7 +1750,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
17501750 var templ_7745c5c3_Var85 string
17511751 templ_7745c5c3_Var85, templ_7745c5c3_Err = templ.JoinStringErrs(f.Title)
17521752 if templ_7745c5c3_Err != nil {
1753- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 315, Col: 40}
1753+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 317, Col: 40}
17541754 }
17551755 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var85))
17561756 if templ_7745c5c3_Err != nil {
@@ -1763,7 +1763,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
17631763 var templ_7745c5c3_Var86 string
17641764 templ_7745c5c3_Var86, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.ID + suffix)
17651765 if templ_7745c5c3_Err != nil {
1766- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 317, Col: 21}
1766+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 319, Col: 21}
17671767 }
17681768 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var86)
17691769 if templ_7745c5c3_Err != nil {
@@ -1802,7 +1802,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
18021802 var templ_7745c5c3_Var87 string
18031803 templ_7745c5c3_Var87, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Path)
18041804 if templ_7745c5c3_Err != nil {
1805- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 332, Col: 50}
1805+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 334, Col: 50}
18061806 }
18071807 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var87)
18081808 if templ_7745c5c3_Err != nil {
@@ -1815,7 +1815,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
18151815 var templ_7745c5c3_Var88 string
18161816 templ_7745c5c3_Var88, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Line)
18171817 if templ_7745c5c3_Err != nil {
1818- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 333, Col: 50}
1818+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 335, Col: 50}
18191819 }
18201820 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var88)
18211821 if templ_7745c5c3_Err != nil {
@@ -1828,7 +1828,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
18281828 var templ_7745c5c3_Var89 string
18291829 templ_7745c5c3_Var89, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Side)
18301830 if templ_7745c5c3_Err != nil {
1831- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 334, Col: 50}
1831+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 336, Col: 50}
18321832 }
18331833 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var89)
18341834 if templ_7745c5c3_Err != nil {
@@ -1841,7 +1841,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
18411841 var templ_7745c5c3_Var90 string
18421842 templ_7745c5c3_Var90, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.StartLine)
18431843 if templ_7745c5c3_Err != nil {
1844- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 335, Col: 86}
1844+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 337, Col: 86}
18451845 }
18461846 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var90)
18471847 if templ_7745c5c3_Err != nil {
@@ -1860,7 +1860,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
18601860 var templ_7745c5c3_Var91 string
18611861 templ_7745c5c3_Var91, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.ReplyTo)
18621862 if templ_7745c5c3_Err != nil {
1863- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 338, Col: 57}
1863+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 340, Col: 57}
18641864 }
18651865 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var91)
18661866 if templ_7745c5c3_Err != nil {
@@ -1885,7 +1885,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
18851885 var templ_7745c5c3_Var92 string
18861886 templ_7745c5c3_Var92, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa(f.From))
18871887 if templ_7745c5c3_Err != nil {
1888- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 344, Col: 56}
1888+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 346, Col: 56}
18891889 }
18901890 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var92)
18911891 if templ_7745c5c3_Err != nil {
@@ -1908,7 +1908,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
19081908 var templ_7745c5c3_Var93 templ.SafeURL
19091909 templ_7745c5c3_Var93, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(f.Cancel))
19101910 if templ_7745c5c3_Err != nil {
1911- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 349, Col: 49}
1911+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 351, Col: 49}
19121912 }
19131913 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var93))
19141914 if templ_7745c5c3_Err != nil {
@@ -1955,7 +1955,7 @@ func mrRail(p MRPage) templ.Component {
19551955 var templ_7745c5c3_Var95 string
19561956 templ_7745c5c3_Var95, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Files)))
19571957 if templ_7745c5c3_Err != nil {
1958- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 358, Col: 49}
1958+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 360, Col: 49}
19591959 }
19601960 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var95))
19611961 if templ_7745c5c3_Err != nil {
@@ -1986,7 +1986,7 @@ func mrRail(p MRPage) templ.Component {
19861986 var templ_7745c5c3_Var96 templ.SafeURL
19871987 templ_7745c5c3_Var96, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(v.Href))
19881988 if templ_7745c5c3_Err != nil {
1989- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 371, Col: 37}
1989+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 373, Col: 37}
19901990 }
19911991 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var96))
19921992 if templ_7745c5c3_Err != nil {
@@ -1999,7 +1999,7 @@ func mrRail(p MRPage) templ.Component {
19991999 var templ_7745c5c3_Var97 string
20002000 templ_7745c5c3_Var97, templ_7745c5c3_Err = templ.JoinStringErrs(v.Author)
20012001 if templ_7745c5c3_Err != nil {
2002- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 371, Col: 50}
2002+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 373, Col: 50}
20032003 }
20042004 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var97))
20052005 if templ_7745c5c3_Err != nil {
@@ -2012,7 +2012,7 @@ func mrRail(p MRPage) templ.Component {
20122012 var templ_7745c5c3_Var98 string
20132013 templ_7745c5c3_Var98, templ_7745c5c3_Err = templ.JoinStringErrs(v.Label)
20142014 if templ_7745c5c3_Err != nil {
2015- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 371, Col: 63}
2015+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 373, Col: 63}
20162016 }
20172017 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var98))
20182018 if templ_7745c5c3_Err != nil {
@@ -2049,7 +2049,7 @@ func mrRail(p MRPage) templ.Component {
20492049 var templ_7745c5c3_Var99 string
20502050 templ_7745c5c3_Var99, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Commits)))
20512051 if templ_7745c5c3_Err != nil {
2052- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 382, Col: 71}
2052+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 384, Col: 71}
20532053 }
20542054 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var99))
20552055 if templ_7745c5c3_Err != nil {
@@ -2077,7 +2077,7 @@ func mrRail(p MRPage) templ.Component {
20772077 var templ_7745c5c3_Var100 templ.SafeURL
20782078 templ_7745c5c3_Var100, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.Href))
20792079 if templ_7745c5c3_Err != nil {
2080- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 386, Col: 36}
2080+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 388, Col: 36}
20812081 }
20822082 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var100))
20832083 if templ_7745c5c3_Err != nil {
@@ -2090,7 +2090,7 @@ func mrRail(p MRPage) templ.Component {
20902090 var templ_7745c5c3_Var101 string
20912091 templ_7745c5c3_Var101, templ_7745c5c3_Err = templ.JoinStringErrs(c.Short)
20922092 if templ_7745c5c3_Err != nil {
2093- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 386, Col: 48}
2093+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 388, Col: 48}
20942094 }
20952095 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var101))
20962096 if templ_7745c5c3_Err != nil {
@@ -2103,7 +2103,7 @@ func mrRail(p MRPage) templ.Component {
21032103 var templ_7745c5c3_Var102 string
21042104 templ_7745c5c3_Var102, templ_7745c5c3_Err = templ.JoinStringErrs(c.Subject)
21052105 if templ_7745c5c3_Err != nil {
2106- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 387, Col: 32}
2106+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 389, Col: 32}
21072107 }
21082108 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var102))
21092109 if templ_7745c5c3_Err != nil {
@@ -2126,7 +2126,7 @@ func mrRail(p MRPage) templ.Component {
21262126 var templ_7745c5c3_Var103 string
21272127 templ_7745c5c3_Var103, templ_7745c5c3_Err = templ.JoinStringErrs(c.Author)
21282128 if templ_7745c5c3_Err != nil {
2129- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 392, Col: 16}
2129+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 394, Col: 16}
21302130 }
21312131 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var103))
21322132 if templ_7745c5c3_Err != nil {
@@ -2140,7 +2140,7 @@ func mrRail(p MRPage) templ.Component {
21402140 var templ_7745c5c3_Var104 string
21412141 templ_7745c5c3_Var104, templ_7745c5c3_Err = templ.JoinStringErrs(" · ")
21422142 if templ_7745c5c3_Err != nil {
2143- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 394, Col: 15}
2143+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 396, Col: 15}
21442144 }
21452145 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var104))
21462146 if templ_7745c5c3_Err != nil {
@@ -2153,7 +2153,7 @@ func mrRail(p MRPage) templ.Component {
21532153 var templ_7745c5c3_Var105 string
21542154 templ_7745c5c3_Var105, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.WhenAt)
21552155 if templ_7745c5c3_Err != nil {
2156- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 394, Col: 42}
2156+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 396, Col: 42}
21572157 }
21582158 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var105)
21592159 if templ_7745c5c3_Err != nil {
@@ -2166,7 +2166,7 @@ func mrRail(p MRPage) templ.Component {
21662166 var templ_7745c5c3_Var106 string
21672167 templ_7745c5c3_Var106, templ_7745c5c3_Err = templ.JoinStringErrs(c.When)
21682168 if templ_7745c5c3_Err != nil {
2169- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 394, Col: 53}
2169+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 396, Col: 53}
21702170 }
21712171 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var106))
21722172 if templ_7745c5c3_Err != nil {
@@ -2181,7 +2181,7 @@ func mrRail(p MRPage) templ.Component {
21812181 var templ_7745c5c3_Var107 string
21822182 templ_7745c5c3_Var107, templ_7745c5c3_Err = templ.JoinStringErrs(" · new")
21832183 if templ_7745c5c3_Err != nil {
2184- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 397, Col: 18}
2184+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 399, Col: 18}
21852185 }
21862186 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var107))
21872187 if templ_7745c5c3_Err != nil {
@@ -2211,7 +2211,7 @@ func mrRail(p MRPage) templ.Component {
22112211 var templ_7745c5c3_Var108 string
22122212 templ_7745c5c3_Var108, templ_7745c5c3_Err = templ.JoinStringErrs(p.CommitsNote)
22132213 if templ_7745c5c3_Err != nil {
2214- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 407, Col: 34}
2214+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 409, Col: 34}
22152215 }
22162216 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var108))
22172217 if templ_7745c5c3_Err != nil {
@@ -2229,7 +2229,7 @@ func mrRail(p MRPage) templ.Component {
22292229 var templ_7745c5c3_Var109 string
22302230 templ_7745c5c3_Var109, templ_7745c5c3_Err = templ.JoinStringErrs(strings.Join(p.Modes, ", "))
22312231 if templ_7745c5c3_Err != nil {
2232- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 414, Col: 36}
2232+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 416, Col: 36}
22332233 }
22342234 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var109))
22352235 if templ_7745c5c3_Err != nil {
@@ -2290,7 +2290,7 @@ func mrBar(p MRPage) templ.Component {
22902290 var templ_7745c5c3_Var111 string
22912291 templ_7745c5c3_Var111, templ_7745c5c3_Err = templ.JoinStringErrs(plural(p.NFiles, "file", "files"))
22922292 if templ_7745c5c3_Err != nil {
2293- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 433, Col: 55}
2293+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 435, Col: 55}
22942294 }
22952295 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var111))
22962296 if templ_7745c5c3_Err != nil {
@@ -2303,7 +2303,7 @@ func mrBar(p MRPage) templ.Component {
23032303 var templ_7745c5c3_Var112 string
23042304 templ_7745c5c3_Var112, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Adds))
23052305 if templ_7745c5c3_Err != nil {
2306- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 433, Col: 95}
2306+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 435, Col: 95}
23072307 }
23082308 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var112))
23092309 if templ_7745c5c3_Err != nil {
@@ -2316,7 +2316,7 @@ func mrBar(p MRPage) templ.Component {
23162316 var templ_7745c5c3_Var113 string
23172317 templ_7745c5c3_Var113, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Dels))
23182318 if templ_7745c5c3_Err != nil {
2319- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 433, Col: 140}
2319+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 435, Col: 140}
23202320 }
23212321 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var113))
23222322 if templ_7745c5c3_Err != nil {
@@ -2326,15 +2326,11 @@ func mrBar(p MRPage) templ.Component {
23262326 if templ_7745c5c3_Err != nil {
23272327 return templ_7745c5c3_Err
23282328 }
2329- templ_7745c5c3_Err = viewLink(p.DiffView, "unified", "Unified", "u", p.UnifiedHref).Render(ctx, templ_7745c5c3_Buffer)
2329+ templ_7745c5c3_Err = diffViewMenu(p.DiffView).Render(ctx, templ_7745c5c3_Buffer)
23302330 if templ_7745c5c3_Err != nil {
23312331 return templ_7745c5c3_Err
23322332 }
2333- templ_7745c5c3_Err = viewLink(p.DiffView, "split", "Split", "d", p.SplitHref).Render(ctx, templ_7745c5c3_Buffer)
2334- if templ_7745c5c3_Err != nil {
2335- return templ_7745c5c3_Err
2336- }
2337- templ_7745c5c3_Err = collapseButton().Render(ctx, templ_7745c5c3_Buffer)
2333+ templ_7745c5c3_Err = wideButton().Render(ctx, templ_7745c5c3_Buffer)
23382334 if templ_7745c5c3_Err != nil {
23392335 return templ_7745c5c3_Err
23402336 }
@@ -2420,7 +2416,7 @@ func mergeMenu(p MRPage) templ.Component {
24202416 var templ_7745c5c3_Var115 string
24212417 templ_7745c5c3_Var115, templ_7745c5c3_Err = templ.JoinStringErrs(p.HeadShort)
24222418 if templ_7745c5c3_Err != nil {
2423- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 466, Col: 19}
2419+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 467, Col: 19}
24242420 }
24252421 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var115))
24262422 if templ_7745c5c3_Err != nil {
@@ -2434,7 +2430,7 @@ func mergeMenu(p MRPage) templ.Component {
24342430 var templ_7745c5c3_Var116 string
24352431 templ_7745c5c3_Var116, templ_7745c5c3_Err = templ.JoinStringErrs(p.Target)
24362432 if templ_7745c5c3_Err != nil {
2437- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 470, Col: 18}
2433+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 471, Col: 18}
24382434 }
24392435 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var116))
24402436 if templ_7745c5c3_Err != nil {
@@ -2452,7 +2448,7 @@ func mergeMenu(p MRPage) templ.Component {
24522448 var templ_7745c5c3_Var117 templ.SafeURL
24532449 templ_7745c5c3_Var117, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Box.ReadyAction))
24542450 if templ_7745c5c3_Err != nil {
2455- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 474, Col: 80}
2451+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 475, Col: 80}
24562452 }
24572453 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var117))
24582454 if templ_7745c5c3_Err != nil {
@@ -2470,7 +2466,7 @@ func mergeMenu(p MRPage) templ.Component {
24702466 var templ_7745c5c3_Var118 templ.SafeURL
24712467 templ_7745c5c3_Var118, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Box.MergeAction))
24722468 if templ_7745c5c3_Err != nil {
2473- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 478, Col: 80}
2469+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 479, Col: 80}
24742470 }
24752471 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var118))
24762472 if templ_7745c5c3_Err != nil {
@@ -2483,7 +2479,7 @@ func mergeMenu(p MRPage) templ.Component {
24832479 var templ_7745c5c3_Var119 string
24842480 templ_7745c5c3_Var119, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Box.Head)
24852481 if templ_7745c5c3_Err != nil {
2486- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 479, Col: 59}
2482+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 480, Col: 59}
24872483 }
24882484 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var119)
24892485 if templ_7745c5c3_Err != nil {
@@ -2501,7 +2497,7 @@ func mergeMenu(p MRPage) templ.Component {
25012497 var templ_7745c5c3_Var120 string
25022498 templ_7745c5c3_Var120, templ_7745c5c3_Err = templ.ResolveAttributeValue(m.Value)
25032499 if templ_7745c5c3_Err != nil {
2504- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 484, Col: 55}
2500+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 485, Col: 55}
25052501 }
25062502 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var120)
25072503 if templ_7745c5c3_Err != nil {
@@ -2524,7 +2520,7 @@ func mergeMenu(p MRPage) templ.Component {
25242520 var templ_7745c5c3_Var121 string
25252521 templ_7745c5c3_Var121, templ_7745c5c3_Err = templ.JoinStringErrs(m.Label)
25262522 if templ_7745c5c3_Err != nil {
2527- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 485, Col: 17}
2523+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 486, Col: 17}
25282524 }
25292525 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var121))
25302526 if templ_7745c5c3_Err != nil {
@@ -2542,7 +2538,7 @@ func mergeMenu(p MRPage) templ.Component {
25422538 var templ_7745c5c3_Var122 string
25432539 templ_7745c5c3_Var122, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(i + 1))
25442540 if templ_7745c5c3_Err != nil {
2545- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 487, Col: 46}
2541+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 488, Col: 46}
25462542 }
25472543 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var122))
25482544 if templ_7745c5c3_Err != nil {
@@ -2570,7 +2566,7 @@ func mergeMenu(p MRPage) templ.Component {
25702566 var templ_7745c5c3_Var123 string
25712567 templ_7745c5c3_Var123, templ_7745c5c3_Err = templ.JoinStringErrs(p.Source)
25722568 if templ_7745c5c3_Err != nil {
2573- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 493, Col: 102}
2569+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 494, Col: 102}
25742570 }
25752571 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var123))
25762572 if templ_7745c5c3_Err != nil {
@@ -2588,7 +2584,7 @@ func mergeMenu(p MRPage) templ.Component {
25882584 var templ_7745c5c3_Var124 string
25892585 templ_7745c5c3_Var124, templ_7745c5c3_Err = templ.JoinStringErrs(p.Target)
25902586 if templ_7745c5c3_Err != nil {
2591- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 496, Col: 82}
2587+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 497, Col: 82}
25922588 }
25932589 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var124))
25942590 if templ_7745c5c3_Err != nil {
@@ -2642,7 +2638,7 @@ func moreMenu(p MRPage) templ.Component {
26422638 var templ_7745c5c3_Var126 templ.SafeURL
26432639 templ_7745c5c3_Var126, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Box.ReadAction))
26442640 if templ_7745c5c3_Err != nil {
2645- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 511, Col: 64}
2641+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 512, Col: 64}
26462642 }
26472643 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var126))
26482644 if templ_7745c5c3_Err != nil {
@@ -2655,7 +2651,7 @@ func moreMenu(p MRPage) templ.Component {
26552651 var templ_7745c5c3_Var127 string
26562652 templ_7745c5c3_Var127, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Box.Head)
26572653 if templ_7745c5c3_Err != nil {
2658- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 512, Col: 59}
2654+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 513, Col: 59}
26592655 }
26602656 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var127)
26612657 if templ_7745c5c3_Err != nil {
@@ -2673,7 +2669,7 @@ func moreMenu(p MRPage) templ.Component {
26732669 var templ_7745c5c3_Var128 templ.SafeURL
26742670 templ_7745c5c3_Var128, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Box.CloseAction))
26752671 if templ_7745c5c3_Err != nil {
2676- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 516, Col: 64}
2672+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 517, Col: 64}
26772673 }
26782674 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var128))
26792675 if templ_7745c5c3_Err != nil {
@@ -2745,7 +2741,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
27452741 var templ_7745c5c3_Var131 string
27462742 templ_7745c5c3_Var131, templ_7745c5c3_Err = templ.JoinStringErrs(p.Source)
27472743 if templ_7745c5c3_Err != nil {
2748- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 532, Col: 17}
2744+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 533, Col: 17}
27492745 }
27502746 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var131))
27512747 if templ_7745c5c3_Err != nil {
@@ -2758,7 +2754,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
27582754 var templ_7745c5c3_Var132 string
27592755 templ_7745c5c3_Var132, templ_7745c5c3_Err = templ.JoinStringErrs(p.Target)
27602756 if templ_7745c5c3_Err != nil {
2761- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 532, Col: 34}
2757+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 533, Col: 34}
27622758 }
27632759 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var132))
27642760 if templ_7745c5c3_Err != nil {
@@ -2771,7 +2767,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
27712767 var templ_7745c5c3_Var133 templ.SafeURL
27722768 templ_7745c5c3_Var133, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.SourceHref))
27732769 if templ_7745c5c3_Err != nil {
2774- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 535, Col: 45}
2770+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 536, Col: 45}
27752771 }
27762772 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var133))
27772773 if templ_7745c5c3_Err != nil {
@@ -2784,7 +2780,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
27842780 var templ_7745c5c3_Var134 string
27852781 templ_7745c5c3_Var134, templ_7745c5c3_Err = templ.JoinStringErrs(p.Source)
27862782 if templ_7745c5c3_Err != nil {
2787- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 535, Col: 58}
2783+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 536, Col: 58}
27882784 }
27892785 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var134))
27902786 if templ_7745c5c3_Err != nil {
@@ -2797,7 +2793,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
27972793 var templ_7745c5c3_Var135 templ.SafeURL
27982794 templ_7745c5c3_Var135, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.TargetHref))
27992795 if templ_7745c5c3_Err != nil {
2800- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 537, Col: 45}
2796+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 538, Col: 45}
28012797 }
28022798 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var135))
28032799 if templ_7745c5c3_Err != nil {
@@ -2810,7 +2806,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
28102806 var templ_7745c5c3_Var136 string
28112807 templ_7745c5c3_Var136, templ_7745c5c3_Err = templ.JoinStringErrs(p.Target)
28122808 if templ_7745c5c3_Err != nil {
2813- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 537, Col: 58}
2809+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 538, Col: 58}
28142810 }
28152811 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var136))
28162812 if templ_7745c5c3_Err != nil {
@@ -2823,7 +2819,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
28232819 var templ_7745c5c3_Var137 string
28242820 templ_7745c5c3_Var137, templ_7745c5c3_Err = templ.JoinStringErrs(p.AheadText)
28252821 if templ_7745c5c3_Err != nil {
2826- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 539, Col: 21}
2822+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 540, Col: 21}
28272823 }
28282824 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var137))
28292825 if templ_7745c5c3_Err != nil {
@@ -2841,7 +2837,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
28412837 var templ_7745c5c3_Var138 string
28422838 templ_7745c5c3_Var138, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note)
28432839 if templ_7745c5c3_Err != nil {
2844- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 543, Col: 29}
2840+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 544, Col: 29}
28452841 }
28462842 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var138))
28472843 if templ_7745c5c3_Err != nil {
@@ -2864,7 +2860,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
28642860 var templ_7745c5c3_Var139 templ.SafeURL
28652861 templ_7745c5c3_Var139, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Existing.Href))
28662862 if templ_7745c5c3_Err != nil {
2867- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 546, Col: 114}
2863+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 547, Col: 114}
28682864 }
28692865 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var139))
28702866 if templ_7745c5c3_Err != nil {
@@ -2877,7 +2873,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
28772873 var templ_7745c5c3_Var140 string
28782874 templ_7745c5c3_Var140, templ_7745c5c3_Err = templ.JoinStringErrs(p.Existing.Label)
28792875 if templ_7745c5c3_Err != nil {
2880- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 546, Col: 135}
2876+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 547, Col: 135}
28812877 }
28822878 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var140))
28832879 if templ_7745c5c3_Err != nil {
@@ -2900,7 +2896,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
29002896 var templ_7745c5c3_Var141 templ.SafeURL
29012897 templ_7745c5c3_Var141, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Create.Action))
29022898 if templ_7745c5c3_Err != nil {
2903- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 549, Col: 83}
2899+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 550, Col: 83}
29042900 }
29052901 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var141))
29062902 if templ_7745c5c3_Err != nil {
@@ -2913,7 +2909,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
29132909 var templ_7745c5c3_Var142 string
29142910 templ_7745c5c3_Var142, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Create.Source)
29152911 if templ_7745c5c3_Err != nil {
2916- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 550, Col: 62}
2912+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 551, Col: 62}
29172913 }
29182914 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var142)
29192915 if templ_7745c5c3_Err != nil {
@@ -2926,7 +2922,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
29262922 var templ_7745c5c3_Var143 string
29272923 templ_7745c5c3_Var143, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Create.Target)
29282924 if templ_7745c5c3_Err != nil {
2929- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 551, Col: 62}
2925+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 552, Col: 62}
29302926 }
29312927 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var143)
29322928 if templ_7745c5c3_Err != nil {
@@ -2939,7 +2935,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
29392935 var templ_7745c5c3_Var144 string
29402936 templ_7745c5c3_Var144, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Create.Title)
29412937 if templ_7745c5c3_Err != nil {
2942- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 553, Col: 97}
2938+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 554, Col: 97}
29432939 }
29442940 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var144)
29452941 if templ_7745c5c3_Err != nil {
@@ -2962,7 +2958,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
29622958 var templ_7745c5c3_Var145 string
29632959 templ_7745c5c3_Var145, templ_7745c5c3_Err = templ.JoinStringErrs(plural(p.NFiles, "file", "files"))
29642960 if templ_7745c5c3_Err != nil {
2965- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 563, Col: 57}
2961+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 564, Col: 57}
29662962 }
29672963 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var145))
29682964 if templ_7745c5c3_Err != nil {
@@ -2975,7 +2971,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
29752971 var templ_7745c5c3_Var146 string
29762972 templ_7745c5c3_Var146, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Adds))
29772973 if templ_7745c5c3_Err != nil {
2978- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 563, Col: 97}
2974+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 564, Col: 97}
29792975 }
29802976 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var146))
29812977 if templ_7745c5c3_Err != nil {
@@ -2988,7 +2984,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
29882984 var templ_7745c5c3_Var147 string
29892985 templ_7745c5c3_Var147, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Dels))
29902986 if templ_7745c5c3_Err != nil {
2991- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 563, Col: 142}
2987+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 564, Col: 142}
29922988 }
29932989 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var147))
29942990 if templ_7745c5c3_Err != nil {
@@ -2998,15 +2994,11 @@ func Compare(l Layout, p ComparePage) templ.Component {
29982994 if templ_7745c5c3_Err != nil {
29992995 return templ_7745c5c3_Err
30002996 }
3001- templ_7745c5c3_Err = viewLink(p.DiffView, "unified", "Unified", "u", p.UnifiedHref).Render(ctx, templ_7745c5c3_Buffer)
3002- if templ_7745c5c3_Err != nil {
3003- return templ_7745c5c3_Err
3004- }
3005- templ_7745c5c3_Err = viewLink(p.DiffView, "split", "Split", "d", p.SplitHref).Render(ctx, templ_7745c5c3_Buffer)
2997+ templ_7745c5c3_Err = diffViewMenu(p.DiffView).Render(ctx, templ_7745c5c3_Buffer)
30062998 if templ_7745c5c3_Err != nil {
30072999 return templ_7745c5c3_Err
30083000 }
3009- templ_7745c5c3_Err = collapseButton().Render(ctx, templ_7745c5c3_Buffer)
3001+ templ_7745c5c3_Err = wideButton().Render(ctx, templ_7745c5c3_Buffer)
30103002 if templ_7745c5c3_Err != nil {
30113003 return templ_7745c5c3_Err
30123004 }
@@ -553,14 +553,14 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
553 }()553 }()
554 }554 }
555 ctx = templ.InitializeContext(ctx)555 ctx = templ.InitializeContext(ctx)
556- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "<header class=\"show mr-h\"><h1><span class=\"mute\">")556+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "<section class=\"mr-card\"><header class=\"show mr-h\"><h1><span class=\"mute\">")
557 if templ_7745c5c3_Err != nil {557 if templ_7745c5c3_Err != nil {
558 return templ_7745c5c3_Err558 return templ_7745c5c3_Err
559 }559 }
560 var templ_7745c5c3_Var26 string560 var templ_7745c5c3_Var26 string
561 templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(p.Number)561 templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(p.Number)
562 if templ_7745c5c3_Err != nil {562 if templ_7745c5c3_Err != nil {
563- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 113, Col: 36}563+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 114, Col: 37}
564 }564 }
565 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26))565 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26))
566 if templ_7745c5c3_Err != nil {566 if templ_7745c5c3_Err != nil {
@@ -573,7 +573,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
573 var templ_7745c5c3_Var27 string573 var templ_7745c5c3_Var27 string
574 templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)574 templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title)
575 if templ_7745c5c3_Err != nil {575 if templ_7745c5c3_Err != nil {
576- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 113, Col: 55}576+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 114, Col: 56}
577 }577 }
578 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27))578 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27))
579 if templ_7745c5c3_Err != nil {579 if templ_7745c5c3_Err != nil {
@@ -586,7 +586,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
586 var templ_7745c5c3_Var28 string586 var templ_7745c5c3_Var28 string
587 templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.State)587 templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.State)
588 if templ_7745c5c3_Err != nil {588 if templ_7745c5c3_Err != nil {
589- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 116, Col: 45}589+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 117, Col: 46}
590 }590 }
591 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var28)591 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var28)
592 if templ_7745c5c3_Err != nil {592 if templ_7745c5c3_Err != nil {
@@ -599,7 +599,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
599 var templ_7745c5c3_Var29 string599 var templ_7745c5c3_Var29 string
600 templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(p.State)600 templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(p.State)
601 if templ_7745c5c3_Err != nil {601 if templ_7745c5c3_Err != nil {
602- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 117, Col: 14}602+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 118, Col: 15}
603 }603 }
604 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29))604 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29))
605 if templ_7745c5c3_Err != nil {605 if templ_7745c5c3_Err != nil {
@@ -613,7 +613,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
613 var templ_7745c5c3_Var30 string613 var templ_7745c5c3_Var30 string
614 templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(" · ")614 templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(" · ")
615 if templ_7745c5c3_Err != nil {615 if templ_7745c5c3_Err != nil {
616- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 119, Col: 14}616+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 120, Col: 15}
617 }617 }
618 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30))618 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30))
619 if templ_7745c5c3_Err != nil {619 if templ_7745c5c3_Err != nil {
@@ -626,7 +626,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
626 var templ_7745c5c3_Var31 templ.SafeURL626 var templ_7745c5c3_Var31 templ.SafeURL
627 templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.MergedHref))627 templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.MergedHref))
628 if templ_7745c5c3_Err != nil {628 if templ_7745c5c3_Err != nil {
629- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 119, Col: 53}629+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 120, Col: 54}
630 }630 }
631 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31))631 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31))
632 if templ_7745c5c3_Err != nil {632 if templ_7745c5c3_Err != nil {
@@ -639,7 +639,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
639 var templ_7745c5c3_Var32 string639 var templ_7745c5c3_Var32 string
640 templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(p.MergedShort)640 templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(p.MergedShort)
641 if templ_7745c5c3_Err != nil {641 if templ_7745c5c3_Err != nil {
642- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 119, Col: 71}642+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 120, Col: 72}
643 }643 }
644 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32))644 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32))
645 if templ_7745c5c3_Err != nil {645 if templ_7745c5c3_Err != nil {
@@ -652,7 +652,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
652 var templ_7745c5c3_Var33 string652 var templ_7745c5c3_Var33 string
653 templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(" · " + p.MergeMode)653 templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(" · " + p.MergeMode)
654 if templ_7745c5c3_Err != nil {654 if templ_7745c5c3_Err != nil {
655- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 119, Col: 99}655+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 120, Col: 100}
656 }656 }
657 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33))657 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33))
658 if templ_7745c5c3_Err != nil {658 if templ_7745c5c3_Err != nil {
@@ -670,7 +670,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
670 var templ_7745c5c3_Var34 string670 var templ_7745c5c3_Var34 string
671 templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(" → ")671 templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(" → ")
672 if templ_7745c5c3_Err != nil {672 if templ_7745c5c3_Err != nil {
673- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 125, Col: 14}673+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 126, Col: 15}
674 }674 }
675 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))675 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))
676 if templ_7745c5c3_Err != nil {676 if templ_7745c5c3_Err != nil {
@@ -687,7 +687,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
687 var templ_7745c5c3_Var35 string687 var templ_7745c5c3_Var35 string
688 templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinStringErrs(p.Opened.Name)688 templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinStringErrs(p.Opened.Name)
689 if templ_7745c5c3_Err != nil {689 if templ_7745c5c3_Err != nil {
690- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 130, Col: 20}690+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 131, Col: 21}
691 }691 }
692 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35))692 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35))
693 if templ_7745c5c3_Err != nil {693 if templ_7745c5c3_Err != nil {
@@ -701,7 +701,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
701 var templ_7745c5c3_Var36 string701 var templ_7745c5c3_Var36 string
702 templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.JoinStringErrs(" · ")702 templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.JoinStringErrs(" · ")
703 if templ_7745c5c3_Err != nil {703 if templ_7745c5c3_Err != nil {
704- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 132, Col: 14}704+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 133, Col: 15}
705 }705 }
706 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var36))706 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var36))
707 if templ_7745c5c3_Err != nil {707 if templ_7745c5c3_Err != nil {
@@ -714,7 +714,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
714 var templ_7745c5c3_Var37 string714 var templ_7745c5c3_Var37 string
715 templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Opened.WhenAt)715 templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Opened.WhenAt)
716 if templ_7745c5c3_Err != nil {716 if templ_7745c5c3_Err != nil {
717- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 132, Col: 48}717+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 133, Col: 49}
718 }718 }
719 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var37)719 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var37)
720 if templ_7745c5c3_Err != nil {720 if templ_7745c5c3_Err != nil {
@@ -727,7 +727,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
727 var templ_7745c5c3_Var38 string727 var templ_7745c5c3_Var38 string
728 templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Opened.Abs)728 templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Opened.Abs)
729 if templ_7745c5c3_Err != nil {729 if templ_7745c5c3_Err != nil {
730- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 132, Col: 71}730+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 133, Col: 72}
731 }731 }
732 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var38)732 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var38)
733 if templ_7745c5c3_Err != nil {733 if templ_7745c5c3_Err != nil {
@@ -740,7 +740,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
740 var templ_7745c5c3_Var39 string740 var templ_7745c5c3_Var39 string
741 templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.JoinStringErrs(p.Opened.When)741 templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.JoinStringErrs(p.Opened.When)
742 if templ_7745c5c3_Err != nil {742 if templ_7745c5c3_Err != nil {
743- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 132, Col: 89}743+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 133, Col: 90}
744 }744 }
745 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var39))745 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var39))
746 if templ_7745c5c3_Err != nil {746 if templ_7745c5c3_Err != nil {
@@ -763,7 +763,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
763 var templ_7745c5c3_Var40 string763 var templ_7745c5c3_Var40 string
764 templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.UpdatedAt)764 templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.UpdatedAt)
765 if templ_7745c5c3_Err != nil {765 if templ_7745c5c3_Err != nil {
766- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 137, Col: 37}766+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 138, Col: 38}
767 }767 }
768 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var40)768 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var40)
769 if templ_7745c5c3_Err != nil {769 if templ_7745c5c3_Err != nil {
@@ -776,7 +776,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
776 var templ_7745c5c3_Var41 string776 var templ_7745c5c3_Var41 string
777 templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinStringErrs(p.Updated)777 templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinStringErrs(p.Updated)
778 if templ_7745c5c3_Err != nil {778 if templ_7745c5c3_Err != nil {
779- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 137, Col: 51}779+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 138, Col: 52}
780 }780 }
781 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41))781 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41))
782 if templ_7745c5c3_Err != nil {782 if templ_7745c5c3_Err != nil {
@@ -791,16 +791,8 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
791 if templ_7745c5c3_Err != nil {791 if templ_7745c5c3_Err != nil {
792 return templ_7745c5c3_Err792 return templ_7745c5c3_Err
793 }793 }
794- templ_7745c5c3_Err = LiveSlot("mr-notice").Render(ctx, templ_7745c5c3_Buffer)
795- if templ_7745c5c3_Err != nil {
796- return templ_7745c5c3_Err
797- }
798- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, " ")
799- if templ_7745c5c3_Err != nil {
800- return templ_7745c5c3_Err
801- }
802 if p.Desc != "" {794 if p.Desc != "" {
803- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "<article class=\"mr-desc prose\" aria-label=\"description\" hx-ignore>")795+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "<article class=\"mr-desc prose\" aria-label=\"description\" hx-ignore>")
804 if templ_7745c5c3_Err != nil {796 if templ_7745c5c3_Err != nil {
805 return templ_7745c5c3_Err797 return templ_7745c5c3_Err
806 }798 }
@@ -808,11 +800,19 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
808 if templ_7745c5c3_Err != nil {800 if templ_7745c5c3_Err != nil {
809 return templ_7745c5c3_Err801 return templ_7745c5c3_Err
810 }802 }
811- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "</article>")803+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "</article>")
812 if templ_7745c5c3_Err != nil {804 if templ_7745c5c3_Err != nil {
813 return templ_7745c5c3_Err805 return templ_7745c5c3_Err
814 }806 }
815 }807 }
808+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "</section>")
809+ if templ_7745c5c3_Err != nil {
810+ return templ_7745c5c3_Err
811+ }
812+ templ_7745c5c3_Err = LiveSlot("mr-notice").Render(ctx, templ_7745c5c3_Buffer)
813+ if templ_7745c5c3_Err != nil {
814+ return templ_7745c5c3_Err
815+ }
816 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, " ")816 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, " ")
817 if templ_7745c5c3_Err != nil {817 if templ_7745c5c3_Err != nil {
818 return templ_7745c5c3_Err818 return templ_7745c5c3_Err
@@ -825,7 +825,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
825 var templ_7745c5c3_Var42 templ.SafeURL825 var templ_7745c5c3_Var42 templ.SafeURL
826 templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Since.AllHref))826 templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Since.AllHref))
827 if templ_7745c5c3_Err != nil {827 if templ_7745c5c3_Err != nil {
828- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 150, Col: 42}828+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 152, Col: 42}
829 }829 }
830 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42))830 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42))
831 if templ_7745c5c3_Err != nil {831 if templ_7745c5c3_Err != nil {
@@ -848,7 +848,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
848 var templ_7745c5c3_Var43 string848 var templ_7745c5c3_Var43 string
849 templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.JoinStringErrs(p.Target)849 templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.JoinStringErrs(p.Target)
850 if templ_7745c5c3_Err != nil {850 if templ_7745c5c3_Err != nil {
851- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 154, Col: 49}851+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 156, Col: 49}
852 }852 }
853 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var43))853 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var43))
854 if templ_7745c5c3_Err != nil {854 if templ_7745c5c3_Err != nil {
@@ -861,7 +861,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
861 var templ_7745c5c3_Var44 templ.SafeURL861 var templ_7745c5c3_Var44 templ.SafeURL
862 templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Since.SinceHref))862 templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Since.SinceHref))
863 if templ_7745c5c3_Err != nil {863 if templ_7745c5c3_Err != nil {
864- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 156, Col: 44}864+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 158, Col: 44}
865 }865 }
866 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var44))866 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var44))
867 if templ_7745c5c3_Err != nil {867 if templ_7745c5c3_Err != nil {
@@ -884,7 +884,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
884 var templ_7745c5c3_Var45 string884 var templ_7745c5c3_Var45 string
885 templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.JoinStringErrs(p.Since.ReadShort)885 templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.JoinStringErrs(p.Since.ReadShort)
886 if templ_7745c5c3_Err != nil {886 if templ_7745c5c3_Err != nil {
887- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 160, Col: 64}887+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 162, Col: 64}
888 }888 }
889 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var45))889 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var45))
890 if templ_7745c5c3_Err != nil {890 if templ_7745c5c3_Err != nil {
@@ -897,7 +897,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
897 var templ_7745c5c3_Var46 string897 var templ_7745c5c3_Var46 string
898 templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(p.Since.HeadShort)898 templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(p.Since.HeadShort)
899 if templ_7745c5c3_Err != nil {899 if templ_7745c5c3_Err != nil {
900- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 160, Col: 90}900+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 162, Col: 90}
901 }901 }
902 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46))902 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46))
903 if templ_7745c5c3_Err != nil {903 if templ_7745c5c3_Err != nil {
@@ -920,7 +920,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
920 var templ_7745c5c3_Var47 string920 var templ_7745c5c3_Var47 string
921 templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinStringErrs(p.SinceNote)921 templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinStringErrs(p.SinceNote)
922 if templ_7745c5c3_Err != nil {922 if templ_7745c5c3_Err != nil {
923- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 164, Col: 34}923+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 166, Col: 34}
924 }924 }
925 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47))925 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47))
926 if templ_7745c5c3_Err != nil {926 if templ_7745c5c3_Err != nil {
@@ -961,7 +961,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
961 var templ_7745c5c3_Var48 string961 var templ_7745c5c3_Var48 string
962 templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note)962 templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note)
963 if templ_7745c5c3_Err != nil {963 if templ_7745c5c3_Err != nil {
964- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 174, Col: 29}964+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 176, Col: 29}
965 }965 }
966 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48))966 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48))
967 if templ_7745c5c3_Err != nil {967 if templ_7745c5c3_Err != nil {
@@ -984,7 +984,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
984 var templ_7745c5c3_Var49 string984 var templ_7745c5c3_Var49 string
985 templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.View)985 templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.View)
986 if templ_7745c5c3_Err != nil {986 if templ_7745c5c3_Err != nil {
987- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 180, Col: 22}987+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 182, Col: 22}
988 }988 }
989 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var49)989 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var49)
990 if templ_7745c5c3_Err != nil {990 if templ_7745c5c3_Err != nil {
@@ -1002,7 +1002,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
1002 var templ_7745c5c3_Var50 string1002 var templ_7745c5c3_Var50 string
1003 templ_7745c5c3_Var50, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.View)1003 templ_7745c5c3_Var50, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.View)
1004 if templ_7745c5c3_Err != nil {1004 if templ_7745c5c3_Err != nil {
1005- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 182, Col: 22}1005+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 184, Col: 22}
1006 }1006 }
1007 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var50)1007 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var50)
1008 if templ_7745c5c3_Err != nil {1008 if templ_7745c5c3_Err != nil {
@@ -1042,7 +1042,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
1042 var templ_7745c5c3_Var51 string1042 var templ_7745c5c3_Var51 string
1043 templ_7745c5c3_Var51, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.NUnresolved))1043 templ_7745c5c3_Var51, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.NUnresolved))
1044 if templ_7745c5c3_Err != nil {1044 if templ_7745c5c3_Err != nil {
1045- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 195, Col: 97}1045+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 197, Col: 97}
1046 }1046 }
1047 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var51))1047 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var51))
1048 if templ_7745c5c3_Err != nil {1048 if templ_7745c5c3_Err != nil {
@@ -1055,7 +1055,7 @@ func MergeRequest(l Layout, p MRPage) templ.Component {
1055 var templ_7745c5c3_Var52 string1055 var templ_7745c5c3_Var52 string
1056 templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.NComments))1056 templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.NComments))
1057 if templ_7745c5c3_Err != nil {1057 if templ_7745c5c3_Err != nil {
1058- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 195, Col: 126}1058+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 197, Col: 126}
1059 }1059 }
1060 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var52))1060 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var52))
1061 if templ_7745c5c3_Err != nil {1061 if templ_7745c5c3_Err != nil {
@@ -1136,7 +1136,7 @@ func branchLink(name, href string) templ.Component {
1136 var templ_7745c5c3_Var54 templ.SafeURL1136 var templ_7745c5c3_Var54 templ.SafeURL
1137 templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(href))1137 templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(href))
1138 if templ_7745c5c3_Err != nil {1138 if templ_7745c5c3_Err != nil {
1139- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 213, Col: 31}1139+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 215, Col: 31}
1140 }1140 }
1141 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var54))1141 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var54))
1142 if templ_7745c5c3_Err != nil {1142 if templ_7745c5c3_Err != nil {
@@ -1149,7 +1149,7 @@ func branchLink(name, href string) templ.Component {
1149 var templ_7745c5c3_Var55 string1149 var templ_7745c5c3_Var55 string
1150 templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinStringErrs(name)1150 templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinStringErrs(name)
1151 if templ_7745c5c3_Err != nil {1151 if templ_7745c5c3_Err != nil {
1152- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 213, Col: 40}1152+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 215, Col: 40}
1153 }1153 }
1154 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55))1154 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55))
1155 if templ_7745c5c3_Err != nil {1155 if templ_7745c5c3_Err != nil {
@@ -1163,7 +1163,7 @@ func branchLink(name, href string) templ.Component {
1163 var templ_7745c5c3_Var56 string1163 var templ_7745c5c3_Var56 string
1164 templ_7745c5c3_Var56, templ_7745c5c3_Err = templ.JoinStringErrs(name)1164 templ_7745c5c3_Var56, templ_7745c5c3_Err = templ.JoinStringErrs(name)
1165 if templ_7745c5c3_Err != nil {1165 if templ_7745c5c3_Err != nil {
1166- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 215, Col: 8}1166+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 217, Col: 8}
1167 }1167 }
1168 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var56))1168 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var56))
1169 if templ_7745c5c3_Err != nil {1169 if templ_7745c5c3_Err != nil {
@@ -1244,7 +1244,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1244 var templ_7745c5c3_Var59 string1244 var templ_7745c5c3_Var59 string
1245 templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.ResolveAttributeValue("c" + c.ID + suffix)1245 templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.ResolveAttributeValue("c" + c.ID + suffix)
1246 if templ_7745c5c3_Err != nil {1246 if templ_7745c5c3_Err != nil {
1247- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 234, Col: 42}1247+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 236, Col: 42}
1248 }1248 }
1249 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var59)1249 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var59)
1250 if templ_7745c5c3_Err != nil {1250 if templ_7745c5c3_Err != nil {
@@ -1257,7 +1257,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1257 var templ_7745c5c3_Var60 string1257 var templ_7745c5c3_Var60 string
1258 templ_7745c5c3_Var60, templ_7745c5c3_Err = templ.ResolveAttributeValue(boolText(c.Resolved))1258 templ_7745c5c3_Var60, templ_7745c5c3_Err = templ.ResolveAttributeValue(boolText(c.Resolved))
1259 if templ_7745c5c3_Err != nil {1259 if templ_7745c5c3_Err != nil {
1260- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 234, Col: 81}1260+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 236, Col: 81}
1261 }1261 }
1262 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var60)1262 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var60)
1263 if templ_7745c5c3_Err != nil {1263 if templ_7745c5c3_Err != nil {
@@ -1280,7 +1280,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1280 var templ_7745c5c3_Var61 string1280 var templ_7745c5c3_Var61 string
1281 templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.JoinStringErrs(c.Author)1281 templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.JoinStringErrs(c.Author)
1282 if templ_7745c5c3_Err != nil {1282 if templ_7745c5c3_Err != nil {
1283- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 236, Col: 33}1283+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 238, Col: 33}
1284 }1284 }
1285 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var61))1285 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var61))
1286 if templ_7745c5c3_Err != nil {1286 if templ_7745c5c3_Err != nil {
@@ -1294,7 +1294,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1294 var templ_7745c5c3_Var62 string1294 var templ_7745c5c3_Var62 string
1295 templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.JoinStringErrs(" ")1295 templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
1296 if templ_7745c5c3_Err != nil {1296 if templ_7745c5c3_Err != nil {
1297- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 238, Col: 9}1297+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 240, Col: 9}
1298 }1298 }
1299 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var62))1299 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var62))
1300 if templ_7745c5c3_Err != nil {1300 if templ_7745c5c3_Err != nil {
@@ -1307,7 +1307,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1307 var templ_7745c5c3_Var63 string1307 var templ_7745c5c3_Var63 string
1308 templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.WhenAt)1308 templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.WhenAt)
1309 if templ_7745c5c3_Err != nil {1309 if templ_7745c5c3_Err != nil {
1310- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 238, Col: 49}1310+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 240, Col: 49}
1311 }1311 }
1312 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var63)1312 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var63)
1313 if templ_7745c5c3_Err != nil {1313 if templ_7745c5c3_Err != nil {
@@ -1320,7 +1320,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1320 var templ_7745c5c3_Var64 string1320 var templ_7745c5c3_Var64 string
1321 templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.Abs)1321 templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.Abs)
1322 if templ_7745c5c3_Err != nil {1322 if templ_7745c5c3_Err != nil {
1323- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 238, Col: 65}1323+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 240, Col: 65}
1324 }1324 }
1325 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var64)1325 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var64)
1326 if templ_7745c5c3_Err != nil {1326 if templ_7745c5c3_Err != nil {
@@ -1333,7 +1333,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1333 var templ_7745c5c3_Var65 string1333 var templ_7745c5c3_Var65 string
1334 templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.JoinStringErrs(c.When)1334 templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.JoinStringErrs(c.When)
1335 if templ_7745c5c3_Err != nil {1335 if templ_7745c5c3_Err != nil {
1336- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 238, Col: 76}1336+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 240, Col: 76}
1337 }1337 }
1338 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var65))1338 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var65))
1339 if templ_7745c5c3_Err != nil {1339 if templ_7745c5c3_Err != nil {
@@ -1348,7 +1348,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1348 var templ_7745c5c3_Var66 string1348 var templ_7745c5c3_Var66 string
1349 templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.JoinStringErrs(" ")1349 templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
1350 if templ_7745c5c3_Err != nil {1350 if templ_7745c5c3_Err != nil {
1351- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 241, Col: 9}1351+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 243, Col: 9}
1352 }1352 }
1353 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var66))1353 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var66))
1354 if templ_7745c5c3_Err != nil {1354 if templ_7745c5c3_Err != nil {
@@ -1363,7 +1363,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1363 var templ_7745c5c3_Var67 string1363 var templ_7745c5c3_Var67 string
1364 templ_7745c5c3_Var67, templ_7745c5c3_Err = templ.JoinStringErrs(" ")1364 templ_7745c5c3_Var67, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
1365 if templ_7745c5c3_Err != nil {1365 if templ_7745c5c3_Err != nil {
1366- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 244, Col: 9}1366+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 246, Col: 9}
1367 }1367 }
1368 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var67))1368 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var67))
1369 if templ_7745c5c3_Err != nil {1369 if templ_7745c5c3_Err != nil {
@@ -1378,7 +1378,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1378 var templ_7745c5c3_Var68 string1378 var templ_7745c5c3_Var68 string
1379 templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.JoinStringErrs(" ")1379 templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
1380 if templ_7745c5c3_Err != nil {1380 if templ_7745c5c3_Err != nil {
1381- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 247, Col: 9}1381+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 249, Col: 9}
1382 }1382 }
1383 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var68))1383 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var68))
1384 if templ_7745c5c3_Err != nil {1384 if templ_7745c5c3_Err != nil {
@@ -1391,7 +1391,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1391 var templ_7745c5c3_Var69 string1391 var templ_7745c5c3_Var69 string
1392 templ_7745c5c3_Var69, templ_7745c5c3_Err = templ.JoinStringErrs(c.Where)1392 templ_7745c5c3_Var69, templ_7745c5c3_Err = templ.JoinStringErrs(c.Where)
1393 if templ_7745c5c3_Err != nil {1393 if templ_7745c5c3_Err != nil {
1394- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 247, Col: 47}1394+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 249, Col: 47}
1395 }1395 }
1396 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var69))1396 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var69))
1397 if templ_7745c5c3_Err != nil {1397 if templ_7745c5c3_Err != nil {
@@ -1466,7 +1466,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1466 var templ_7745c5c3_Var70 string1466 var templ_7745c5c3_Var70 string
1467 templ_7745c5c3_Var70, templ_7745c5c3_Err = templ.JoinStringErrs(c.Verdict)1467 templ_7745c5c3_Var70, templ_7745c5c3_Err = templ.JoinStringErrs(c.Verdict)
1468 if templ_7745c5c3_Err != nil {1468 if templ_7745c5c3_Err != nil {
1469- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 271, Col: 36}1469+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 273, Col: 36}
1470 }1470 }
1471 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var70))1471 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var70))
1472 if templ_7745c5c3_Err != nil {1472 if templ_7745c5c3_Err != nil {
@@ -1485,7 +1485,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1485 var templ_7745c5c3_Var71 string1485 var templ_7745c5c3_Var71 string
1486 templ_7745c5c3_Var71, templ_7745c5c3_Err = templ.JoinStringErrs(c.Range)1486 templ_7745c5c3_Var71, templ_7745c5c3_Err = templ.JoinStringErrs(c.Range)
1487 if templ_7745c5c3_Err != nil {1487 if templ_7745c5c3_Err != nil {
1488- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 274, Col: 31}1488+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 276, Col: 31}
1489 }1489 }
1490 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var71))1490 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var71))
1491 if templ_7745c5c3_Err != nil {1491 if templ_7745c5c3_Err != nil {
@@ -1504,7 +1504,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1504 var templ_7745c5c3_Var72 string1504 var templ_7745c5c3_Var72 string
1505 templ_7745c5c3_Var72, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.Quote)1505 templ_7745c5c3_Var72, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.Quote)
1506 if templ_7745c5c3_Err != nil {1506 if templ_7745c5c3_Err != nil {
1507- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 277, Col: 65}1507+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 279, Col: 65}
1508 }1508 }
1509 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var72)1509 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var72)
1510 if templ_7745c5c3_Err != nil {1510 if templ_7745c5c3_Err != nil {
@@ -1523,7 +1523,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1523 var templ_7745c5c3_Var73 templ.SafeURL1523 var templ_7745c5c3_Var73 templ.SafeURL
1524 templ_7745c5c3_Var73, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.Edit.Action))1524 templ_7745c5c3_Var73, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.Edit.Action))
1525 if templ_7745c5c3_Err != nil {1525 if templ_7745c5c3_Err != nil {
1526- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 280, Col: 92}1526+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 282, Col: 92}
1527 }1527 }
1528 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var73))1528 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var73))
1529 if templ_7745c5c3_Err != nil {1529 if templ_7745c5c3_Err != nil {
@@ -1536,7 +1536,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1536 var templ_7745c5c3_Var74 string1536 var templ_7745c5c3_Var74 string
1537 templ_7745c5c3_Var74, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa(c.Edit.From))1537 templ_7745c5c3_Var74, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa(c.Edit.From))
1538 if templ_7745c5c3_Err != nil {1538 if templ_7745c5c3_Err != nil {
1539- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 280, Col: 153}1539+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 282, Col: 153}
1540 }1540 }
1541 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var74)1541 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var74)
1542 if templ_7745c5c3_Err != nil {1542 if templ_7745c5c3_Err != nil {
@@ -1549,7 +1549,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1549 var templ_7745c5c3_Var75 string1549 var templ_7745c5c3_Var75 string
1550 templ_7745c5c3_Var75, templ_7745c5c3_Err = templ.JoinStringErrs(c.Edit.Text)1550 templ_7745c5c3_Var75, templ_7745c5c3_Err = templ.JoinStringErrs(c.Edit.Text)
1551 if templ_7745c5c3_Err != nil {1551 if templ_7745c5c3_Err != nil {
1552- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 280, Col: 209}1552+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 282, Col: 209}
1553 }1553 }
1554 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var75))1554 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var75))
1555 if templ_7745c5c3_Err != nil {1555 if templ_7745c5c3_Err != nil {
@@ -1568,7 +1568,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1568 var templ_7745c5c3_Var76 templ.SafeURL1568 var templ_7745c5c3_Var76 templ.SafeURL
1569 templ_7745c5c3_Var76, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.Delete.Action))1569 templ_7745c5c3_Var76, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.Delete.Action))
1570 if templ_7745c5c3_Err != nil {1570 if templ_7745c5c3_Err != nil {
1571- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 283, Col: 96}1571+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 285, Col: 96}
1572 }1572 }
1573 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var76))1573 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var76))
1574 if templ_7745c5c3_Err != nil {1574 if templ_7745c5c3_Err != nil {
@@ -1581,7 +1581,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1581 var templ_7745c5c3_Var77 string1581 var templ_7745c5c3_Var77 string
1582 templ_7745c5c3_Var77, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa(c.Delete.From))1582 templ_7745c5c3_Var77, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa(c.Delete.From))
1583 if templ_7745c5c3_Err != nil {1583 if templ_7745c5c3_Err != nil {
1584- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 283, Col: 159}1584+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 285, Col: 159}
1585 }1585 }
1586 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var77)1586 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var77)
1587 if templ_7745c5c3_Err != nil {1587 if templ_7745c5c3_Err != nil {
@@ -1620,7 +1620,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1620 var templ_7745c5c3_Var78 templ.SafeURL1620 var templ_7745c5c3_Var78 templ.SafeURL
1621 templ_7745c5c3_Var78, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.Resolve.Action))1621 templ_7745c5c3_Var78, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.Resolve.Action))
1622 if templ_7745c5c3_Err != nil {1622 if templ_7745c5c3_Err != nil {
1623- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 294, Col: 77}1623+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 296, Col: 77}
1624 }1624 }
1625 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var78))1625 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var78))
1626 if templ_7745c5c3_Err != nil {1626 if templ_7745c5c3_Err != nil {
@@ -1633,7 +1633,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1633 var templ_7745c5c3_Var79 string1633 var templ_7745c5c3_Var79 string
1634 templ_7745c5c3_Var79, templ_7745c5c3_Err = templ.ResolveAttributeValue(boolText(c.Resolve.Value))1634 templ_7745c5c3_Var79, templ_7745c5c3_Err = templ.ResolveAttributeValue(boolText(c.Resolve.Value))
1635 if templ_7745c5c3_Err != nil {1635 if templ_7745c5c3_Err != nil {
1636- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 295, Col: 74}1636+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 297, Col: 74}
1637 }1637 }
1638 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var79)1638 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var79)
1639 if templ_7745c5c3_Err != nil {1639 if templ_7745c5c3_Err != nil {
@@ -1651,7 +1651,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1651 var templ_7745c5c3_Var80 string1651 var templ_7745c5c3_Var80 string
1652 templ_7745c5c3_Var80, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa(c.Resolve.From))1652 templ_7745c5c3_Var80, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa(c.Resolve.From))
1653 if templ_7745c5c3_Err != nil {1653 if templ_7745c5c3_Err != nil {
1654- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 297, Col: 66}1654+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 299, Col: 66}
1655 }1655 }
1656 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var80)1656 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var80)
1657 if templ_7745c5c3_Err != nil {1657 if templ_7745c5c3_Err != nil {
@@ -1669,7 +1669,7 @@ func commentView(c CommentView, suffix string) templ.Component {
1669 var templ_7745c5c3_Var81 string1669 var templ_7745c5c3_Var81 string
1670 templ_7745c5c3_Var81, templ_7745c5c3_Err = templ.JoinStringErrs(c.Resolve.Label)1670 templ_7745c5c3_Var81, templ_7745c5c3_Err = templ.JoinStringErrs(c.Resolve.Label)
1671 if templ_7745c5c3_Err != nil {1671 if templ_7745c5c3_Err != nil {
1672- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 299, Col: 55}1672+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 301, Col: 55}
1673 }1673 }
1674 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var81))1674 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var81))
1675 if templ_7745c5c3_Err != nil {1675 if templ_7745c5c3_Err != nil {
@@ -1724,7 +1724,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
1724 var templ_7745c5c3_Var83 templ.SafeURL1724 var templ_7745c5c3_Var83 templ.SafeURL
1725 templ_7745c5c3_Var83, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(f.Action))1725 templ_7745c5c3_Var83, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(f.Action))
1726 if templ_7745c5c3_Err != nil {1726 if templ_7745c5c3_Err != nil {
1727- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 314, Col: 67}1727+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 316, Col: 67}
1728 }1728 }
1729 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var83))1729 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var83))
1730 if templ_7745c5c3_Err != nil {1730 if templ_7745c5c3_Err != nil {
@@ -1737,7 +1737,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
1737 var templ_7745c5c3_Var84 string1737 var templ_7745c5c3_Var84 string
1738 templ_7745c5c3_Var84, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.ID + suffix)1738 templ_7745c5c3_Var84, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.ID + suffix)
1739 if templ_7745c5c3_Err != nil {1739 if templ_7745c5c3_Err != nil {
1740- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 315, Col: 28}1740+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 317, Col: 28}
1741 }1741 }
1742 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var84)1742 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var84)
1743 if templ_7745c5c3_Err != nil {1743 if templ_7745c5c3_Err != nil {
@@ -1750,7 +1750,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
1750 var templ_7745c5c3_Var85 string1750 var templ_7745c5c3_Var85 string
1751 templ_7745c5c3_Var85, templ_7745c5c3_Err = templ.JoinStringErrs(f.Title)1751 templ_7745c5c3_Var85, templ_7745c5c3_Err = templ.JoinStringErrs(f.Title)
1752 if templ_7745c5c3_Err != nil {1752 if templ_7745c5c3_Err != nil {
1753- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 315, Col: 40}1753+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 317, Col: 40}
1754 }1754 }
1755 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var85))1755 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var85))
1756 if templ_7745c5c3_Err != nil {1756 if templ_7745c5c3_Err != nil {
@@ -1763,7 +1763,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
1763 var templ_7745c5c3_Var86 string1763 var templ_7745c5c3_Var86 string
1764 templ_7745c5c3_Var86, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.ID + suffix)1764 templ_7745c5c3_Var86, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.ID + suffix)
1765 if templ_7745c5c3_Err != nil {1765 if templ_7745c5c3_Err != nil {
1766- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 317, Col: 21}1766+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 319, Col: 21}
1767 }1767 }
1768 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var86)1768 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var86)
1769 if templ_7745c5c3_Err != nil {1769 if templ_7745c5c3_Err != nil {
@@ -1802,7 +1802,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
1802 var templ_7745c5c3_Var87 string1802 var templ_7745c5c3_Var87 string
1803 templ_7745c5c3_Var87, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Path)1803 templ_7745c5c3_Var87, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Path)
1804 if templ_7745c5c3_Err != nil {1804 if templ_7745c5c3_Err != nil {
1805- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 332, Col: 50}1805+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 334, Col: 50}
1806 }1806 }
1807 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var87)1807 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var87)
1808 if templ_7745c5c3_Err != nil {1808 if templ_7745c5c3_Err != nil {
@@ -1815,7 +1815,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
1815 var templ_7745c5c3_Var88 string1815 var templ_7745c5c3_Var88 string
1816 templ_7745c5c3_Var88, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Line)1816 templ_7745c5c3_Var88, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Line)
1817 if templ_7745c5c3_Err != nil {1817 if templ_7745c5c3_Err != nil {
1818- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 333, Col: 50}1818+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 335, Col: 50}
1819 }1819 }
1820 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var88)1820 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var88)
1821 if templ_7745c5c3_Err != nil {1821 if templ_7745c5c3_Err != nil {
@@ -1828,7 +1828,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
1828 var templ_7745c5c3_Var89 string1828 var templ_7745c5c3_Var89 string
1829 templ_7745c5c3_Var89, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Side)1829 templ_7745c5c3_Var89, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Side)
1830 if templ_7745c5c3_Err != nil {1830 if templ_7745c5c3_Err != nil {
1831- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 334, Col: 50}1831+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 336, Col: 50}
1832 }1832 }
1833 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var89)1833 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var89)
1834 if templ_7745c5c3_Err != nil {1834 if templ_7745c5c3_Err != nil {
@@ -1841,7 +1841,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
1841 var templ_7745c5c3_Var90 string1841 var templ_7745c5c3_Var90 string
1842 templ_7745c5c3_Var90, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.StartLine)1842 templ_7745c5c3_Var90, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.StartLine)
1843 if templ_7745c5c3_Err != nil {1843 if templ_7745c5c3_Err != nil {
1844- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 335, Col: 86}1844+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 337, Col: 86}
1845 }1845 }
1846 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var90)1846 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var90)
1847 if templ_7745c5c3_Err != nil {1847 if templ_7745c5c3_Err != nil {
@@ -1860,7 +1860,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
1860 var templ_7745c5c3_Var91 string1860 var templ_7745c5c3_Var91 string
1861 templ_7745c5c3_Var91, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.ReplyTo)1861 templ_7745c5c3_Var91, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.ReplyTo)
1862 if templ_7745c5c3_Err != nil {1862 if templ_7745c5c3_Err != nil {
1863- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 338, Col: 57}1863+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 340, Col: 57}
1864 }1864 }
1865 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var91)1865 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var91)
1866 if templ_7745c5c3_Err != nil {1866 if templ_7745c5c3_Err != nil {
@@ -1885,7 +1885,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
1885 var templ_7745c5c3_Var92 string1885 var templ_7745c5c3_Var92 string
1886 templ_7745c5c3_Var92, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa(f.From))1886 templ_7745c5c3_Var92, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa(f.From))
1887 if templ_7745c5c3_Err != nil {1887 if templ_7745c5c3_Err != nil {
1888- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 344, Col: 56}1888+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 346, Col: 56}
1889 }1889 }
1890 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var92)1890 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var92)
1891 if templ_7745c5c3_Err != nil {1891 if templ_7745c5c3_Err != nil {
@@ -1908,7 +1908,7 @@ func commentForm(f CommentForm, suffix string) templ.Component {
1908 var templ_7745c5c3_Var93 templ.SafeURL1908 var templ_7745c5c3_Var93 templ.SafeURL
1909 templ_7745c5c3_Var93, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(f.Cancel))1909 templ_7745c5c3_Var93, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(f.Cancel))
1910 if templ_7745c5c3_Err != nil {1910 if templ_7745c5c3_Err != nil {
1911- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 349, Col: 49}1911+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 351, Col: 49}
1912 }1912 }
1913 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var93))1913 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var93))
1914 if templ_7745c5c3_Err != nil {1914 if templ_7745c5c3_Err != nil {
@@ -1955,7 +1955,7 @@ func mrRail(p MRPage) templ.Component {
1955 var templ_7745c5c3_Var95 string1955 var templ_7745c5c3_Var95 string
1956 templ_7745c5c3_Var95, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Files)))1956 templ_7745c5c3_Var95, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Files)))
1957 if templ_7745c5c3_Err != nil {1957 if templ_7745c5c3_Err != nil {
1958- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 358, Col: 49}1958+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 360, Col: 49}
1959 }1959 }
1960 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var95))1960 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var95))
1961 if templ_7745c5c3_Err != nil {1961 if templ_7745c5c3_Err != nil {
@@ -1986,7 +1986,7 @@ func mrRail(p MRPage) templ.Component {
1986 var templ_7745c5c3_Var96 templ.SafeURL1986 var templ_7745c5c3_Var96 templ.SafeURL
1987 templ_7745c5c3_Var96, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(v.Href))1987 templ_7745c5c3_Var96, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(v.Href))
1988 if templ_7745c5c3_Err != nil {1988 if templ_7745c5c3_Err != nil {
1989- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 371, Col: 37}1989+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 373, Col: 37}
1990 }1990 }
1991 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var96))1991 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var96))
1992 if templ_7745c5c3_Err != nil {1992 if templ_7745c5c3_Err != nil {
@@ -1999,7 +1999,7 @@ func mrRail(p MRPage) templ.Component {
1999 var templ_7745c5c3_Var97 string1999 var templ_7745c5c3_Var97 string
2000 templ_7745c5c3_Var97, templ_7745c5c3_Err = templ.JoinStringErrs(v.Author)2000 templ_7745c5c3_Var97, templ_7745c5c3_Err = templ.JoinStringErrs(v.Author)
2001 if templ_7745c5c3_Err != nil {2001 if templ_7745c5c3_Err != nil {
2002- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 371, Col: 50}2002+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 373, Col: 50}
2003 }2003 }
2004 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var97))2004 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var97))
2005 if templ_7745c5c3_Err != nil {2005 if templ_7745c5c3_Err != nil {
@@ -2012,7 +2012,7 @@ func mrRail(p MRPage) templ.Component {
2012 var templ_7745c5c3_Var98 string2012 var templ_7745c5c3_Var98 string
2013 templ_7745c5c3_Var98, templ_7745c5c3_Err = templ.JoinStringErrs(v.Label)2013 templ_7745c5c3_Var98, templ_7745c5c3_Err = templ.JoinStringErrs(v.Label)
2014 if templ_7745c5c3_Err != nil {2014 if templ_7745c5c3_Err != nil {
2015- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 371, Col: 63}2015+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 373, Col: 63}
2016 }2016 }
2017 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var98))2017 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var98))
2018 if templ_7745c5c3_Err != nil {2018 if templ_7745c5c3_Err != nil {
@@ -2049,7 +2049,7 @@ func mrRail(p MRPage) templ.Component {
2049 var templ_7745c5c3_Var99 string2049 var templ_7745c5c3_Var99 string
2050 templ_7745c5c3_Var99, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Commits)))2050 templ_7745c5c3_Var99, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Commits)))
2051 if templ_7745c5c3_Err != nil {2051 if templ_7745c5c3_Err != nil {
2052- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 382, Col: 71}2052+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 384, Col: 71}
2053 }2053 }
2054 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var99))2054 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var99))
2055 if templ_7745c5c3_Err != nil {2055 if templ_7745c5c3_Err != nil {
@@ -2077,7 +2077,7 @@ func mrRail(p MRPage) templ.Component {
2077 var templ_7745c5c3_Var100 templ.SafeURL2077 var templ_7745c5c3_Var100 templ.SafeURL
2078 templ_7745c5c3_Var100, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.Href))2078 templ_7745c5c3_Var100, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.Href))
2079 if templ_7745c5c3_Err != nil {2079 if templ_7745c5c3_Err != nil {
2080- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 386, Col: 36}2080+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 388, Col: 36}
2081 }2081 }
2082 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var100))2082 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var100))
2083 if templ_7745c5c3_Err != nil {2083 if templ_7745c5c3_Err != nil {
@@ -2090,7 +2090,7 @@ func mrRail(p MRPage) templ.Component {
2090 var templ_7745c5c3_Var101 string2090 var templ_7745c5c3_Var101 string
2091 templ_7745c5c3_Var101, templ_7745c5c3_Err = templ.JoinStringErrs(c.Short)2091 templ_7745c5c3_Var101, templ_7745c5c3_Err = templ.JoinStringErrs(c.Short)
2092 if templ_7745c5c3_Err != nil {2092 if templ_7745c5c3_Err != nil {
2093- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 386, Col: 48}2093+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 388, Col: 48}
2094 }2094 }
2095 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var101))2095 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var101))
2096 if templ_7745c5c3_Err != nil {2096 if templ_7745c5c3_Err != nil {
@@ -2103,7 +2103,7 @@ func mrRail(p MRPage) templ.Component {
2103 var templ_7745c5c3_Var102 string2103 var templ_7745c5c3_Var102 string
2104 templ_7745c5c3_Var102, templ_7745c5c3_Err = templ.JoinStringErrs(c.Subject)2104 templ_7745c5c3_Var102, templ_7745c5c3_Err = templ.JoinStringErrs(c.Subject)
2105 if templ_7745c5c3_Err != nil {2105 if templ_7745c5c3_Err != nil {
2106- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 387, Col: 32}2106+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 389, Col: 32}
2107 }2107 }
2108 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var102))2108 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var102))
2109 if templ_7745c5c3_Err != nil {2109 if templ_7745c5c3_Err != nil {
@@ -2126,7 +2126,7 @@ func mrRail(p MRPage) templ.Component {
2126 var templ_7745c5c3_Var103 string2126 var templ_7745c5c3_Var103 string
2127 templ_7745c5c3_Var103, templ_7745c5c3_Err = templ.JoinStringErrs(c.Author)2127 templ_7745c5c3_Var103, templ_7745c5c3_Err = templ.JoinStringErrs(c.Author)
2128 if templ_7745c5c3_Err != nil {2128 if templ_7745c5c3_Err != nil {
2129- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 392, Col: 16}2129+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 394, Col: 16}
2130 }2130 }
2131 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var103))2131 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var103))
2132 if templ_7745c5c3_Err != nil {2132 if templ_7745c5c3_Err != nil {
@@ -2140,7 +2140,7 @@ func mrRail(p MRPage) templ.Component {
2140 var templ_7745c5c3_Var104 string2140 var templ_7745c5c3_Var104 string
2141 templ_7745c5c3_Var104, templ_7745c5c3_Err = templ.JoinStringErrs(" · ")2141 templ_7745c5c3_Var104, templ_7745c5c3_Err = templ.JoinStringErrs(" · ")
2142 if templ_7745c5c3_Err != nil {2142 if templ_7745c5c3_Err != nil {
2143- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 394, Col: 15}2143+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 396, Col: 15}
2144 }2144 }
2145 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var104))2145 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var104))
2146 if templ_7745c5c3_Err != nil {2146 if templ_7745c5c3_Err != nil {
@@ -2153,7 +2153,7 @@ func mrRail(p MRPage) templ.Component {
2153 var templ_7745c5c3_Var105 string2153 var templ_7745c5c3_Var105 string
2154 templ_7745c5c3_Var105, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.WhenAt)2154 templ_7745c5c3_Var105, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.WhenAt)
2155 if templ_7745c5c3_Err != nil {2155 if templ_7745c5c3_Err != nil {
2156- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 394, Col: 42}2156+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 396, Col: 42}
2157 }2157 }
2158 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var105)2158 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var105)
2159 if templ_7745c5c3_Err != nil {2159 if templ_7745c5c3_Err != nil {
@@ -2166,7 +2166,7 @@ func mrRail(p MRPage) templ.Component {
2166 var templ_7745c5c3_Var106 string2166 var templ_7745c5c3_Var106 string
2167 templ_7745c5c3_Var106, templ_7745c5c3_Err = templ.JoinStringErrs(c.When)2167 templ_7745c5c3_Var106, templ_7745c5c3_Err = templ.JoinStringErrs(c.When)
2168 if templ_7745c5c3_Err != nil {2168 if templ_7745c5c3_Err != nil {
2169- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 394, Col: 53}2169+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 396, Col: 53}
2170 }2170 }
2171 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var106))2171 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var106))
2172 if templ_7745c5c3_Err != nil {2172 if templ_7745c5c3_Err != nil {
@@ -2181,7 +2181,7 @@ func mrRail(p MRPage) templ.Component {
2181 var templ_7745c5c3_Var107 string2181 var templ_7745c5c3_Var107 string
2182 templ_7745c5c3_Var107, templ_7745c5c3_Err = templ.JoinStringErrs(" · new")2182 templ_7745c5c3_Var107, templ_7745c5c3_Err = templ.JoinStringErrs(" · new")
2183 if templ_7745c5c3_Err != nil {2183 if templ_7745c5c3_Err != nil {
2184- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 397, Col: 18}2184+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 399, Col: 18}
2185 }2185 }
2186 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var107))2186 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var107))
2187 if templ_7745c5c3_Err != nil {2187 if templ_7745c5c3_Err != nil {
@@ -2211,7 +2211,7 @@ func mrRail(p MRPage) templ.Component {
2211 var templ_7745c5c3_Var108 string2211 var templ_7745c5c3_Var108 string
2212 templ_7745c5c3_Var108, templ_7745c5c3_Err = templ.JoinStringErrs(p.CommitsNote)2212 templ_7745c5c3_Var108, templ_7745c5c3_Err = templ.JoinStringErrs(p.CommitsNote)
2213 if templ_7745c5c3_Err != nil {2213 if templ_7745c5c3_Err != nil {
2214- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 407, Col: 34}2214+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 409, Col: 34}
2215 }2215 }
2216 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var108))2216 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var108))
2217 if templ_7745c5c3_Err != nil {2217 if templ_7745c5c3_Err != nil {
@@ -2229,7 +2229,7 @@ func mrRail(p MRPage) templ.Component {
2229 var templ_7745c5c3_Var109 string2229 var templ_7745c5c3_Var109 string
2230 templ_7745c5c3_Var109, templ_7745c5c3_Err = templ.JoinStringErrs(strings.Join(p.Modes, ", "))2230 templ_7745c5c3_Var109, templ_7745c5c3_Err = templ.JoinStringErrs(strings.Join(p.Modes, ", "))
2231 if templ_7745c5c3_Err != nil {2231 if templ_7745c5c3_Err != nil {
2232- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 414, Col: 36}2232+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 416, Col: 36}
2233 }2233 }
2234 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var109))2234 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var109))
2235 if templ_7745c5c3_Err != nil {2235 if templ_7745c5c3_Err != nil {
@@ -2290,7 +2290,7 @@ func mrBar(p MRPage) templ.Component {
2290 var templ_7745c5c3_Var111 string2290 var templ_7745c5c3_Var111 string
2291 templ_7745c5c3_Var111, templ_7745c5c3_Err = templ.JoinStringErrs(plural(p.NFiles, "file", "files"))2291 templ_7745c5c3_Var111, templ_7745c5c3_Err = templ.JoinStringErrs(plural(p.NFiles, "file", "files"))
2292 if templ_7745c5c3_Err != nil {2292 if templ_7745c5c3_Err != nil {
2293- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 433, Col: 55}2293+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 435, Col: 55}
2294 }2294 }
2295 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var111))2295 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var111))
2296 if templ_7745c5c3_Err != nil {2296 if templ_7745c5c3_Err != nil {
@@ -2303,7 +2303,7 @@ func mrBar(p MRPage) templ.Component {
2303 var templ_7745c5c3_Var112 string2303 var templ_7745c5c3_Var112 string
2304 templ_7745c5c3_Var112, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Adds))2304 templ_7745c5c3_Var112, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Adds))
2305 if templ_7745c5c3_Err != nil {2305 if templ_7745c5c3_Err != nil {
2306- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 433, Col: 95}2306+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 435, Col: 95}
2307 }2307 }
2308 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var112))2308 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var112))
2309 if templ_7745c5c3_Err != nil {2309 if templ_7745c5c3_Err != nil {
@@ -2316,7 +2316,7 @@ func mrBar(p MRPage) templ.Component {
2316 var templ_7745c5c3_Var113 string2316 var templ_7745c5c3_Var113 string
2317 templ_7745c5c3_Var113, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Dels))2317 templ_7745c5c3_Var113, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Dels))
2318 if templ_7745c5c3_Err != nil {2318 if templ_7745c5c3_Err != nil {
2319- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 433, Col: 140}2319+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 435, Col: 140}
2320 }2320 }
2321 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var113))2321 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var113))
2322 if templ_7745c5c3_Err != nil {2322 if templ_7745c5c3_Err != nil {
@@ -2326,15 +2326,11 @@ func mrBar(p MRPage) templ.Component {
2326 if templ_7745c5c3_Err != nil {2326 if templ_7745c5c3_Err != nil {
2327 return templ_7745c5c3_Err2327 return templ_7745c5c3_Err
2328 }2328 }
2329- templ_7745c5c3_Err = viewLink(p.DiffView, "unified", "Unified", "u", p.UnifiedHref).Render(ctx, templ_7745c5c3_Buffer)2329+ templ_7745c5c3_Err = diffViewMenu(p.DiffView).Render(ctx, templ_7745c5c3_Buffer)
2330 if templ_7745c5c3_Err != nil {2330 if templ_7745c5c3_Err != nil {
2331 return templ_7745c5c3_Err2331 return templ_7745c5c3_Err
2332 }2332 }
2333- templ_7745c5c3_Err = viewLink(p.DiffView, "split", "Split", "d", p.SplitHref).Render(ctx, templ_7745c5c3_Buffer)2333+ templ_7745c5c3_Err = wideButton().Render(ctx, templ_7745c5c3_Buffer)
2334- if templ_7745c5c3_Err != nil {
2335- return templ_7745c5c3_Err
2336- }
2337- templ_7745c5c3_Err = collapseButton().Render(ctx, templ_7745c5c3_Buffer)
2338 if templ_7745c5c3_Err != nil {2334 if templ_7745c5c3_Err != nil {
2339 return templ_7745c5c3_Err2335 return templ_7745c5c3_Err
2340 }2336 }
@@ -2420,7 +2416,7 @@ func mergeMenu(p MRPage) templ.Component {
2420 var templ_7745c5c3_Var115 string2416 var templ_7745c5c3_Var115 string
2421 templ_7745c5c3_Var115, templ_7745c5c3_Err = templ.JoinStringErrs(p.HeadShort)2417 templ_7745c5c3_Var115, templ_7745c5c3_Err = templ.JoinStringErrs(p.HeadShort)
2422 if templ_7745c5c3_Err != nil {2418 if templ_7745c5c3_Err != nil {
2423- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 466, Col: 19}2419+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 467, Col: 19}
2424 }2420 }
2425 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var115))2421 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var115))
2426 if templ_7745c5c3_Err != nil {2422 if templ_7745c5c3_Err != nil {
@@ -2434,7 +2430,7 @@ func mergeMenu(p MRPage) templ.Component {
2434 var templ_7745c5c3_Var116 string2430 var templ_7745c5c3_Var116 string
2435 templ_7745c5c3_Var116, templ_7745c5c3_Err = templ.JoinStringErrs(p.Target)2431 templ_7745c5c3_Var116, templ_7745c5c3_Err = templ.JoinStringErrs(p.Target)
2436 if templ_7745c5c3_Err != nil {2432 if templ_7745c5c3_Err != nil {
2437- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 470, Col: 18}2433+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 471, Col: 18}
2438 }2434 }
2439 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var116))2435 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var116))
2440 if templ_7745c5c3_Err != nil {2436 if templ_7745c5c3_Err != nil {
@@ -2452,7 +2448,7 @@ func mergeMenu(p MRPage) templ.Component {
2452 var templ_7745c5c3_Var117 templ.SafeURL2448 var templ_7745c5c3_Var117 templ.SafeURL
2453 templ_7745c5c3_Var117, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Box.ReadyAction))2449 templ_7745c5c3_Var117, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Box.ReadyAction))
2454 if templ_7745c5c3_Err != nil {2450 if templ_7745c5c3_Err != nil {
2455- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 474, Col: 80}2451+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 475, Col: 80}
2456 }2452 }
2457 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var117))2453 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var117))
2458 if templ_7745c5c3_Err != nil {2454 if templ_7745c5c3_Err != nil {
@@ -2470,7 +2466,7 @@ func mergeMenu(p MRPage) templ.Component {
2470 var templ_7745c5c3_Var118 templ.SafeURL2466 var templ_7745c5c3_Var118 templ.SafeURL
2471 templ_7745c5c3_Var118, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Box.MergeAction))2467 templ_7745c5c3_Var118, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Box.MergeAction))
2472 if templ_7745c5c3_Err != nil {2468 if templ_7745c5c3_Err != nil {
2473- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 478, Col: 80}2469+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 479, Col: 80}
2474 }2470 }
2475 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var118))2471 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var118))
2476 if templ_7745c5c3_Err != nil {2472 if templ_7745c5c3_Err != nil {
@@ -2483,7 +2479,7 @@ func mergeMenu(p MRPage) templ.Component {
2483 var templ_7745c5c3_Var119 string2479 var templ_7745c5c3_Var119 string
2484 templ_7745c5c3_Var119, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Box.Head)2480 templ_7745c5c3_Var119, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Box.Head)
2485 if templ_7745c5c3_Err != nil {2481 if templ_7745c5c3_Err != nil {
2486- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 479, Col: 59}2482+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 480, Col: 59}
2487 }2483 }
2488 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var119)2484 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var119)
2489 if templ_7745c5c3_Err != nil {2485 if templ_7745c5c3_Err != nil {
@@ -2501,7 +2497,7 @@ func mergeMenu(p MRPage) templ.Component {
2501 var templ_7745c5c3_Var120 string2497 var templ_7745c5c3_Var120 string
2502 templ_7745c5c3_Var120, templ_7745c5c3_Err = templ.ResolveAttributeValue(m.Value)2498 templ_7745c5c3_Var120, templ_7745c5c3_Err = templ.ResolveAttributeValue(m.Value)
2503 if templ_7745c5c3_Err != nil {2499 if templ_7745c5c3_Err != nil {
2504- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 484, Col: 55}2500+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 485, Col: 55}
2505 }2501 }
2506 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var120)2502 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var120)
2507 if templ_7745c5c3_Err != nil {2503 if templ_7745c5c3_Err != nil {
@@ -2524,7 +2520,7 @@ func mergeMenu(p MRPage) templ.Component {
2524 var templ_7745c5c3_Var121 string2520 var templ_7745c5c3_Var121 string
2525 templ_7745c5c3_Var121, templ_7745c5c3_Err = templ.JoinStringErrs(m.Label)2521 templ_7745c5c3_Var121, templ_7745c5c3_Err = templ.JoinStringErrs(m.Label)
2526 if templ_7745c5c3_Err != nil {2522 if templ_7745c5c3_Err != nil {
2527- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 485, Col: 17}2523+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 486, Col: 17}
2528 }2524 }
2529 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var121))2525 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var121))
2530 if templ_7745c5c3_Err != nil {2526 if templ_7745c5c3_Err != nil {
@@ -2542,7 +2538,7 @@ func mergeMenu(p MRPage) templ.Component {
2542 var templ_7745c5c3_Var122 string2538 var templ_7745c5c3_Var122 string
2543 templ_7745c5c3_Var122, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(i + 1))2539 templ_7745c5c3_Var122, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(i + 1))
2544 if templ_7745c5c3_Err != nil {2540 if templ_7745c5c3_Err != nil {
2545- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 487, Col: 46}2541+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 488, Col: 46}
2546 }2542 }
2547 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var122))2543 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var122))
2548 if templ_7745c5c3_Err != nil {2544 if templ_7745c5c3_Err != nil {
@@ -2570,7 +2566,7 @@ func mergeMenu(p MRPage) templ.Component {
2570 var templ_7745c5c3_Var123 string2566 var templ_7745c5c3_Var123 string
2571 templ_7745c5c3_Var123, templ_7745c5c3_Err = templ.JoinStringErrs(p.Source)2567 templ_7745c5c3_Var123, templ_7745c5c3_Err = templ.JoinStringErrs(p.Source)
2572 if templ_7745c5c3_Err != nil {2568 if templ_7745c5c3_Err != nil {
2573- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 493, Col: 102}2569+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 494, Col: 102}
2574 }2570 }
2575 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var123))2571 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var123))
2576 if templ_7745c5c3_Err != nil {2572 if templ_7745c5c3_Err != nil {
@@ -2588,7 +2584,7 @@ func mergeMenu(p MRPage) templ.Component {
2588 var templ_7745c5c3_Var124 string2584 var templ_7745c5c3_Var124 string
2589 templ_7745c5c3_Var124, templ_7745c5c3_Err = templ.JoinStringErrs(p.Target)2585 templ_7745c5c3_Var124, templ_7745c5c3_Err = templ.JoinStringErrs(p.Target)
2590 if templ_7745c5c3_Err != nil {2586 if templ_7745c5c3_Err != nil {
2591- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 496, Col: 82}2587+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 497, Col: 82}
2592 }2588 }
2593 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var124))2589 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var124))
2594 if templ_7745c5c3_Err != nil {2590 if templ_7745c5c3_Err != nil {
@@ -2642,7 +2638,7 @@ func moreMenu(p MRPage) templ.Component {
2642 var templ_7745c5c3_Var126 templ.SafeURL2638 var templ_7745c5c3_Var126 templ.SafeURL
2643 templ_7745c5c3_Var126, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Box.ReadAction))2639 templ_7745c5c3_Var126, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Box.ReadAction))
2644 if templ_7745c5c3_Err != nil {2640 if templ_7745c5c3_Err != nil {
2645- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 511, Col: 64}2641+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 512, Col: 64}
2646 }2642 }
2647 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var126))2643 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var126))
2648 if templ_7745c5c3_Err != nil {2644 if templ_7745c5c3_Err != nil {
@@ -2655,7 +2651,7 @@ func moreMenu(p MRPage) templ.Component {
2655 var templ_7745c5c3_Var127 string2651 var templ_7745c5c3_Var127 string
2656 templ_7745c5c3_Var127, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Box.Head)2652 templ_7745c5c3_Var127, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Box.Head)
2657 if templ_7745c5c3_Err != nil {2653 if templ_7745c5c3_Err != nil {
2658- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 512, Col: 59}2654+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 513, Col: 59}
2659 }2655 }
2660 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var127)2656 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var127)
2661 if templ_7745c5c3_Err != nil {2657 if templ_7745c5c3_Err != nil {
@@ -2673,7 +2669,7 @@ func moreMenu(p MRPage) templ.Component {
2673 var templ_7745c5c3_Var128 templ.SafeURL2669 var templ_7745c5c3_Var128 templ.SafeURL
2674 templ_7745c5c3_Var128, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Box.CloseAction))2670 templ_7745c5c3_Var128, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Box.CloseAction))
2675 if templ_7745c5c3_Err != nil {2671 if templ_7745c5c3_Err != nil {
2676- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 516, Col: 64}2672+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 517, Col: 64}
2677 }2673 }
2678 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var128))2674 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var128))
2679 if templ_7745c5c3_Err != nil {2675 if templ_7745c5c3_Err != nil {
@@ -2745,7 +2741,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
2745 var templ_7745c5c3_Var131 string2741 var templ_7745c5c3_Var131 string
2746 templ_7745c5c3_Var131, templ_7745c5c3_Err = templ.JoinStringErrs(p.Source)2742 templ_7745c5c3_Var131, templ_7745c5c3_Err = templ.JoinStringErrs(p.Source)
2747 if templ_7745c5c3_Err != nil {2743 if templ_7745c5c3_Err != nil {
2748- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 532, Col: 17}2744+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 533, Col: 17}
2749 }2745 }
2750 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var131))2746 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var131))
2751 if templ_7745c5c3_Err != nil {2747 if templ_7745c5c3_Err != nil {
@@ -2758,7 +2754,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
2758 var templ_7745c5c3_Var132 string2754 var templ_7745c5c3_Var132 string
2759 templ_7745c5c3_Var132, templ_7745c5c3_Err = templ.JoinStringErrs(p.Target)2755 templ_7745c5c3_Var132, templ_7745c5c3_Err = templ.JoinStringErrs(p.Target)
2760 if templ_7745c5c3_Err != nil {2756 if templ_7745c5c3_Err != nil {
2761- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 532, Col: 34}2757+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 533, Col: 34}
2762 }2758 }
2763 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var132))2759 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var132))
2764 if templ_7745c5c3_Err != nil {2760 if templ_7745c5c3_Err != nil {
@@ -2771,7 +2767,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
2771 var templ_7745c5c3_Var133 templ.SafeURL2767 var templ_7745c5c3_Var133 templ.SafeURL
2772 templ_7745c5c3_Var133, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.SourceHref))2768 templ_7745c5c3_Var133, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.SourceHref))
2773 if templ_7745c5c3_Err != nil {2769 if templ_7745c5c3_Err != nil {
2774- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 535, Col: 45}2770+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 536, Col: 45}
2775 }2771 }
2776 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var133))2772 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var133))
2777 if templ_7745c5c3_Err != nil {2773 if templ_7745c5c3_Err != nil {
@@ -2784,7 +2780,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
2784 var templ_7745c5c3_Var134 string2780 var templ_7745c5c3_Var134 string
2785 templ_7745c5c3_Var134, templ_7745c5c3_Err = templ.JoinStringErrs(p.Source)2781 templ_7745c5c3_Var134, templ_7745c5c3_Err = templ.JoinStringErrs(p.Source)
2786 if templ_7745c5c3_Err != nil {2782 if templ_7745c5c3_Err != nil {
2787- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 535, Col: 58}2783+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 536, Col: 58}
2788 }2784 }
2789 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var134))2785 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var134))
2790 if templ_7745c5c3_Err != nil {2786 if templ_7745c5c3_Err != nil {
@@ -2797,7 +2793,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
2797 var templ_7745c5c3_Var135 templ.SafeURL2793 var templ_7745c5c3_Var135 templ.SafeURL
2798 templ_7745c5c3_Var135, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.TargetHref))2794 templ_7745c5c3_Var135, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.TargetHref))
2799 if templ_7745c5c3_Err != nil {2795 if templ_7745c5c3_Err != nil {
2800- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 537, Col: 45}2796+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 538, Col: 45}
2801 }2797 }
2802 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var135))2798 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var135))
2803 if templ_7745c5c3_Err != nil {2799 if templ_7745c5c3_Err != nil {
@@ -2810,7 +2806,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
2810 var templ_7745c5c3_Var136 string2806 var templ_7745c5c3_Var136 string
2811 templ_7745c5c3_Var136, templ_7745c5c3_Err = templ.JoinStringErrs(p.Target)2807 templ_7745c5c3_Var136, templ_7745c5c3_Err = templ.JoinStringErrs(p.Target)
2812 if templ_7745c5c3_Err != nil {2808 if templ_7745c5c3_Err != nil {
2813- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 537, Col: 58}2809+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 538, Col: 58}
2814 }2810 }
2815 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var136))2811 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var136))
2816 if templ_7745c5c3_Err != nil {2812 if templ_7745c5c3_Err != nil {
@@ -2823,7 +2819,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
2823 var templ_7745c5c3_Var137 string2819 var templ_7745c5c3_Var137 string
2824 templ_7745c5c3_Var137, templ_7745c5c3_Err = templ.JoinStringErrs(p.AheadText)2820 templ_7745c5c3_Var137, templ_7745c5c3_Err = templ.JoinStringErrs(p.AheadText)
2825 if templ_7745c5c3_Err != nil {2821 if templ_7745c5c3_Err != nil {
2826- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 539, Col: 21}2822+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 540, Col: 21}
2827 }2823 }
2828 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var137))2824 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var137))
2829 if templ_7745c5c3_Err != nil {2825 if templ_7745c5c3_Err != nil {
@@ -2841,7 +2837,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
2841 var templ_7745c5c3_Var138 string2837 var templ_7745c5c3_Var138 string
2842 templ_7745c5c3_Var138, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note)2838 templ_7745c5c3_Var138, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note)
2843 if templ_7745c5c3_Err != nil {2839 if templ_7745c5c3_Err != nil {
2844- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 543, Col: 29}2840+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 544, Col: 29}
2845 }2841 }
2846 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var138))2842 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var138))
2847 if templ_7745c5c3_Err != nil {2843 if templ_7745c5c3_Err != nil {
@@ -2864,7 +2860,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
2864 var templ_7745c5c3_Var139 templ.SafeURL2860 var templ_7745c5c3_Var139 templ.SafeURL
2865 templ_7745c5c3_Var139, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Existing.Href))2861 templ_7745c5c3_Var139, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Existing.Href))
2866 if templ_7745c5c3_Err != nil {2862 if templ_7745c5c3_Err != nil {
2867- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 546, Col: 114}2863+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 547, Col: 114}
2868 }2864 }
2869 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var139))2865 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var139))
2870 if templ_7745c5c3_Err != nil {2866 if templ_7745c5c3_Err != nil {
@@ -2877,7 +2873,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
2877 var templ_7745c5c3_Var140 string2873 var templ_7745c5c3_Var140 string
2878 templ_7745c5c3_Var140, templ_7745c5c3_Err = templ.JoinStringErrs(p.Existing.Label)2874 templ_7745c5c3_Var140, templ_7745c5c3_Err = templ.JoinStringErrs(p.Existing.Label)
2879 if templ_7745c5c3_Err != nil {2875 if templ_7745c5c3_Err != nil {
2880- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 546, Col: 135}2876+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 547, Col: 135}
2881 }2877 }
2882 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var140))2878 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var140))
2883 if templ_7745c5c3_Err != nil {2879 if templ_7745c5c3_Err != nil {
@@ -2900,7 +2896,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
2900 var templ_7745c5c3_Var141 templ.SafeURL2896 var templ_7745c5c3_Var141 templ.SafeURL
2901 templ_7745c5c3_Var141, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Create.Action))2897 templ_7745c5c3_Var141, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Create.Action))
2902 if templ_7745c5c3_Err != nil {2898 if templ_7745c5c3_Err != nil {
2903- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 549, Col: 83}2899+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 550, Col: 83}
2904 }2900 }
2905 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var141))2901 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var141))
2906 if templ_7745c5c3_Err != nil {2902 if templ_7745c5c3_Err != nil {
@@ -2913,7 +2909,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
2913 var templ_7745c5c3_Var142 string2909 var templ_7745c5c3_Var142 string
2914 templ_7745c5c3_Var142, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Create.Source)2910 templ_7745c5c3_Var142, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Create.Source)
2915 if templ_7745c5c3_Err != nil {2911 if templ_7745c5c3_Err != nil {
2916- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 550, Col: 62}2912+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 551, Col: 62}
2917 }2913 }
2918 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var142)2914 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var142)
2919 if templ_7745c5c3_Err != nil {2915 if templ_7745c5c3_Err != nil {
@@ -2926,7 +2922,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
2926 var templ_7745c5c3_Var143 string2922 var templ_7745c5c3_Var143 string
2927 templ_7745c5c3_Var143, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Create.Target)2923 templ_7745c5c3_Var143, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Create.Target)
2928 if templ_7745c5c3_Err != nil {2924 if templ_7745c5c3_Err != nil {
2929- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 551, Col: 62}2925+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 552, Col: 62}
2930 }2926 }
2931 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var143)2927 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var143)
2932 if templ_7745c5c3_Err != nil {2928 if templ_7745c5c3_Err != nil {
@@ -2939,7 +2935,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
2939 var templ_7745c5c3_Var144 string2935 var templ_7745c5c3_Var144 string
2940 templ_7745c5c3_Var144, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Create.Title)2936 templ_7745c5c3_Var144, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Create.Title)
2941 if templ_7745c5c3_Err != nil {2937 if templ_7745c5c3_Err != nil {
2942- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 553, Col: 97}2938+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 554, Col: 97}
2943 }2939 }
2944 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var144)2940 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var144)
2945 if templ_7745c5c3_Err != nil {2941 if templ_7745c5c3_Err != nil {
@@ -2962,7 +2958,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
2962 var templ_7745c5c3_Var145 string2958 var templ_7745c5c3_Var145 string
2963 templ_7745c5c3_Var145, templ_7745c5c3_Err = templ.JoinStringErrs(plural(p.NFiles, "file", "files"))2959 templ_7745c5c3_Var145, templ_7745c5c3_Err = templ.JoinStringErrs(plural(p.NFiles, "file", "files"))
2964 if templ_7745c5c3_Err != nil {2960 if templ_7745c5c3_Err != nil {
2965- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 563, Col: 57}2961+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 564, Col: 57}
2966 }2962 }
2967 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var145))2963 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var145))
2968 if templ_7745c5c3_Err != nil {2964 if templ_7745c5c3_Err != nil {
@@ -2975,7 +2971,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
2975 var templ_7745c5c3_Var146 string2971 var templ_7745c5c3_Var146 string
2976 templ_7745c5c3_Var146, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Adds))2972 templ_7745c5c3_Var146, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Adds))
2977 if templ_7745c5c3_Err != nil {2973 if templ_7745c5c3_Err != nil {
2978- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 563, Col: 97}2974+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 564, Col: 97}
2979 }2975 }
2980 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var146))2976 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var146))
2981 if templ_7745c5c3_Err != nil {2977 if templ_7745c5c3_Err != nil {
@@ -2988,7 +2984,7 @@ func Compare(l Layout, p ComparePage) templ.Component {
2988 var templ_7745c5c3_Var147 string2984 var templ_7745c5c3_Var147 string
2989 templ_7745c5c3_Var147, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Dels))2985 templ_7745c5c3_Var147, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Dels))
2990 if templ_7745c5c3_Err != nil {2986 if templ_7745c5c3_Err != nil {
2991- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 563, Col: 142}2987+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/mr.templ`, Line: 564, Col: 142}
2992 }2988 }
2993 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var147))2989 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var147))
2994 if templ_7745c5c3_Err != nil {2990 if templ_7745c5c3_Err != nil {
@@ -2998,15 +2994,11 @@ func Compare(l Layout, p ComparePage) templ.Component {
2998 if templ_7745c5c3_Err != nil {2994 if templ_7745c5c3_Err != nil {
2999 return templ_7745c5c3_Err2995 return templ_7745c5c3_Err
3000 }2996 }
3001- templ_7745c5c3_Err = viewLink(p.DiffView, "unified", "Unified", "u", p.UnifiedHref).Render(ctx, templ_7745c5c3_Buffer)2997+ templ_7745c5c3_Err = diffViewMenu(p.DiffView).Render(ctx, templ_7745c5c3_Buffer)
3002- if templ_7745c5c3_Err != nil {
3003- return templ_7745c5c3_Err
3004- }
3005- templ_7745c5c3_Err = viewLink(p.DiffView, "split", "Split", "d", p.SplitHref).Render(ctx, templ_7745c5c3_Buffer)
3006 if templ_7745c5c3_Err != nil {2998 if templ_7745c5c3_Err != nil {
3007 return templ_7745c5c3_Err2999 return templ_7745c5c3_Err
3008 }3000 }
3009- templ_7745c5c3_Err = collapseButton().Render(ctx, templ_7745c5c3_Buffer)3001+ templ_7745c5c3_Err = wideButton().Render(ctx, templ_7745c5c3_Buffer)
3010 if templ_7745c5c3_Err != nil {3002 if templ_7745c5c3_Err != nil {
3011 return templ_7745c5c3_Err3003 return templ_7745c5c3_Err
3012 }3004 }
M internal/adapters/web/overlays.templ +1 -0
@@ -30,6 +30,7 @@ templ OverlayHelp(mr bool) {
3030 <div><dt><kbd>g h</kbd></dt><dd>home</dd></div>
3131 <div><dt><kbd>y</kbd></dt><dd>copy a permalink pinned to the commit</dd></div>
3232 <div><dt><kbd>d</kbd> <kbd>u</kbd> <kbd>x</kbd></dt><dd>diff: split / unified / collapse or expand all</dd></div>
33+ <div><dt><kbd>w</kbd></dt><dd>diff: use the whole width of the screen, or not</dd></div>
3334 <div><dt><kbd>e</kbd> <kbd>E</kbd></dt><dd>diff: the whole file in view / every file, with the lines the hunks hide</dd></div>
3435 <div><dt><kbd>n</kbd></dt><dd>merge request: next note in the diff</dd></div>
3536 if mr {
@@ -30,6 +30,7 @@ templ OverlayHelp(mr bool) {
30 <div><dt><kbd>g h</kbd></dt><dd>home</dd></div>30 <div><dt><kbd>g h</kbd></dt><dd>home</dd></div>
31 <div><dt><kbd>y</kbd></dt><dd>copy a permalink pinned to the commit</dd></div>31 <div><dt><kbd>y</kbd></dt><dd>copy a permalink pinned to the commit</dd></div>
32 <div><dt><kbd>d</kbd> <kbd>u</kbd> <kbd>x</kbd></dt><dd>diff: split / unified / collapse or expand all</dd></div>32 <div><dt><kbd>d</kbd> <kbd>u</kbd> <kbd>x</kbd></dt><dd>diff: split / unified / collapse or expand all</dd></div>
33+ <div><dt><kbd>w</kbd></dt><dd>diff: use the whole width of the screen, or not</dd></div>
33 <div><dt><kbd>e</kbd> <kbd>E</kbd></dt><dd>diff: the whole file in view / every file, with the lines the hunks hide</dd></div>34 <div><dt><kbd>e</kbd> <kbd>E</kbd></dt><dd>diff: the whole file in view / every file, with the lines the hunks hide</dd></div>
34 <div><dt><kbd>n</kbd></dt><dd>merge request: next note in the diff</dd></div>35 <div><dt><kbd>n</kbd></dt><dd>merge request: next note in the diff</dd></div>
35 if mr {36 if mr {
M internal/adapters/web/overlays_templ.go +12 -12 generated file: collapsed
M internal/adapters/web/static/css/20-shell.css +3 -0
@@ -133,6 +133,9 @@
133133 align-content: start;
134134 }
135135 .work.has-rail { grid-template-columns: minmax(0, 1fr) var(--rail); }
136+ /* the wide diff (w, ermiteWide): a page with a diff takes the whole width
137+ of the screen; the rail goes to the right edge, the code takes the rest */
138+ html.wide body:has(#diffs) :is(.work, .hdr-top, .tabs, .foot) { max-width: none; }
136139 .rail { display: flex; flex-direction: column; gap: var(--s4); min-width: 0; }
137140 .work-lede { grid-column: 1 / -1; margin-bottom: calc(-1 * var(--s2)); }
138141 main > * + * { margin-top: var(--s4); }
@@ -133,6 +133,9 @@
133 align-content: start;133 align-content: start;
134 }134 }
135 .work.has-rail { grid-template-columns: minmax(0, 1fr) var(--rail); }135 .work.has-rail { grid-template-columns: minmax(0, 1fr) var(--rail); }
136+ /* the wide diff (w, ermiteWide): a page with a diff takes the whole width
137+ of the screen; the rail goes to the right edge, the code takes the rest */
138+ html.wide body:has(#diffs) :is(.work, .hdr-top, .tabs, .foot) { max-width: none; }
136 .rail { display: flex; flex-direction: column; gap: var(--s4); min-width: 0; }139 .rail { display: flex; flex-direction: column; gap: var(--s4); min-width: 0; }
137 .work-lede { grid-column: 1 / -1; margin-bottom: calc(-1 * var(--s2)); }140 .work-lede { grid-column: 1 / -1; margin-bottom: calc(-1 * var(--s2)); }
138 main > * + * { margin-top: var(--s4); }141 main > * + * { margin-top: var(--s4); }
M internal/adapters/web/static/css/50-code.css +7 -4
@@ -79,13 +79,16 @@
7979 & .ln { width: calc(var(--lnw) + 2ch); min-width: calc(var(--lnw) + 2ch); padding: 0 1ch; text-align: right; color: var(--ink-mute); user-select: none; }
8080 & .m { width: 2ch; text-align: center; user-select: none; color: var(--ink-dim); }
8181 & .tx { white-space: pre; }
82- & .hunk td { color: var(--ink-mute); background: var(--paper-alt); padding: 0 1ch; }
82+ /* the hunk headers and the hidden lines stay quiet: a faint band between
83+ the code, so that the eye keeps reading */
84+ & .hunk td, & .gap td { background: color-mix(in srgb, var(--paper-alt) 35%, var(--paper)); }
85+ & .hunk td { color: color-mix(in srgb, var(--ink-mute) 70%, transparent); padding: 0 1ch; }
8386 /* a run of hidden lines: the whole row loads them */
84- & .gap td { padding: 0; background: var(--paper-alt); }
87+ & .gap td { padding: 0; }
8588 & .gap button {
8689 display: block; width: 100%; padding: 2px 1ch; text-align: left; cursor: pointer;
87- font: inherit; color: var(--ink-dim); background: none; border: 0;
88- border-block: 1px dashed var(--border);
90+ font: inherit; color: var(--ink-mute); background: none; border: 0;
91+ border-block: 1px dashed color-mix(in srgb, var(--border) 60%, transparent);
8992 }
9093 & .gap button:hover, & .gap button:focus-visible { color: var(--ink-hi); background: var(--bg-strong); }
9194 & .gap button:disabled { cursor: progress; opacity: .6; }
@@ -79,13 +79,16 @@
79 & .ln { width: calc(var(--lnw) + 2ch); min-width: calc(var(--lnw) + 2ch); padding: 0 1ch; text-align: right; color: var(--ink-mute); user-select: none; }79 & .ln { width: calc(var(--lnw) + 2ch); min-width: calc(var(--lnw) + 2ch); padding: 0 1ch; text-align: right; color: var(--ink-mute); user-select: none; }
80 & .m { width: 2ch; text-align: center; user-select: none; color: var(--ink-dim); }80 & .m { width: 2ch; text-align: center; user-select: none; color: var(--ink-dim); }
81 & .tx { white-space: pre; }81 & .tx { white-space: pre; }
82- & .hunk td { color: var(--ink-mute); background: var(--paper-alt); padding: 0 1ch; }82+ /* the hunk headers and the hidden lines stay quiet: a faint band between
83+ the code, so that the eye keeps reading */
84+ & .hunk td, & .gap td { background: color-mix(in srgb, var(--paper-alt) 35%, var(--paper)); }
85+ & .hunk td { color: color-mix(in srgb, var(--ink-mute) 70%, transparent); padding: 0 1ch; }
83 /* a run of hidden lines: the whole row loads them */86 /* a run of hidden lines: the whole row loads them */
84- & .gap td { padding: 0; background: var(--paper-alt); }87+ & .gap td { padding: 0; }
85 & .gap button {88 & .gap button {
86 display: block; width: 100%; padding: 2px 1ch; text-align: left; cursor: pointer;89 display: block; width: 100%; padding: 2px 1ch; text-align: left; cursor: pointer;
87- font: inherit; color: var(--ink-dim); background: none; border: 0;90+ font: inherit; color: var(--ink-mute); background: none; border: 0;
88- border-block: 1px dashed var(--border);91+ border-block: 1px dashed color-mix(in srgb, var(--border) 60%, transparent);
89 }92 }
90 & .gap button:hover, & .gap button:focus-visible { color: var(--ink-hi); background: var(--bg-strong); }93 & .gap button:hover, & .gap button:focus-visible { color: var(--ink-hi); background: var(--bg-strong); }
91 & .gap button:disabled { cursor: progress; opacity: .6; }94 & .gap button:disabled { cursor: progress; opacity: .6; }
M internal/adapters/web/static/css/60-mr.css +15 -0
@@ -1,6 +1,12 @@
11 @layer components {
22 /* merge requests: the review page. Hue only where it carries a verdict. */
33 .mr-h .show-kv { margin-top: 0; }
4+ /* one card: the header (title, facts) a shade lighter, the description below */
5+ .mr-card {
6+ background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--r); overflow: hidden;
7+ & > .mr-h { background: var(--bg-raised); border: 0; border-radius: 0; }
8+ & > .mr-desc.prose { border: 0; border-top: 1px solid var(--border); border-radius: 0; }
9+ }
410
511 .mr-state[data-state="open"]::before { content: "● "; color: var(--teal); }
612 .mr-state[data-state="merged"]::before { content: "✓ "; color: var(--teal); }
@@ -49,6 +55,15 @@
4955 }
5056 & .kv { margin: 0; }
5157 }
58+ /* the view menu of a diff: the layout and the fold, one row each */
59+ .vmenu {
60+ & > summary::after { content: ""; width: 0; height: 0; margin-left: 2px; border: 4px solid transparent; border-top-color: currentColor; transform: translateY(2px); }
61+ & .menu-pop { left: 0; right: auto; width: 220px; gap: var(--s1); padding: var(--s2); }
62+ & .menu-pop .btn { width: 100%; justify-content: flex-start; border-color: transparent; background: none; }
63+ & .menu-pop .btn:hover { background: var(--bg-raised); }
64+ & .menu-pop .btn[aria-current="true"] { background: var(--bg-raised); color: var(--ink-hi); }
65+ & .menu-pop .btn kbd { margin-left: auto; }
66+ }
5267 .mmenu {
5368 & .d-modes { display: grid; gap: var(--s1); border: 0; padding: 0; margin: 0; }
5469 & .d-modes label, & .d-check {
@@ -1,6 +1,12 @@
1 @layer components {1 @layer components {
2 /* merge requests: the review page. Hue only where it carries a verdict. */2 /* merge requests: the review page. Hue only where it carries a verdict. */
3 .mr-h .show-kv { margin-top: 0; }3 .mr-h .show-kv { margin-top: 0; }
4+ /* one card: the header (title, facts) a shade lighter, the description below */
5+ .mr-card {
6+ background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--r); overflow: hidden;
7+ & > .mr-h { background: var(--bg-raised); border: 0; border-radius: 0; }
8+ & > .mr-desc.prose { border: 0; border-top: 1px solid var(--border); border-radius: 0; }
9+ }
4 10
5 .mr-state[data-state="open"]::before { content: "● "; color: var(--teal); }11 .mr-state[data-state="open"]::before { content: "● "; color: var(--teal); }
6 .mr-state[data-state="merged"]::before { content: "✓ "; color: var(--teal); }12 .mr-state[data-state="merged"]::before { content: "✓ "; color: var(--teal); }
@@ -49,6 +55,15 @@
49 }55 }
50 & .kv { margin: 0; }56 & .kv { margin: 0; }
51 }57 }
58+ /* the view menu of a diff: the layout and the fold, one row each */
59+ .vmenu {
60+ & > summary::after { content: ""; width: 0; height: 0; margin-left: 2px; border: 4px solid transparent; border-top-color: currentColor; transform: translateY(2px); }
61+ & .menu-pop { left: 0; right: auto; width: 220px; gap: var(--s1); padding: var(--s2); }
62+ & .menu-pop .btn { width: 100%; justify-content: flex-start; border-color: transparent; background: none; }
63+ & .menu-pop .btn:hover { background: var(--bg-raised); }
64+ & .menu-pop .btn[aria-current="true"] { background: var(--bg-raised); color: var(--ink-hi); }
65+ & .menu-pop .btn kbd { margin-left: auto; }
66+ }
52 .mmenu {67 .mmenu {
53 & .d-modes { display: grid; gap: var(--s1); border: 0; padding: 0; margin: 0; }68 & .d-modes { display: grid; gap: var(--s1); border: 0; padding: 0; margin: 0; }
54 & .d-modes label, & .d-check {69 & .d-modes label, & .d-check {
M internal/adapters/web/static/js/ermite.js +30 -1
@@ -14,6 +14,7 @@
1414 // 7. The service worker (ermiteInstall).
1515 // 8. Chip lists kept on one line, with a … chip (ermiteFit).
1616 // 9. The layout of the home page, remembered in the browser (ermiteLayout).
17+// 10. The wide diff: the page takes the whole width (ermiteWide).
1718 //
1819 // Preferences are kept by ermiteStore (store.js, loaded first).
1920 (() => {
@@ -553,9 +554,30 @@
553554 return { get: pref.get, set, apply, values };
554555 })();
555556
557+ // The wide diff: on the pages with a diff, the work area takes the whole
558+ // width of the screen, the rail at the right edge and the code in the rest.
559+ // The choice is kept by ermiteStore ("diff-wide": '1' when wide) and shown
560+ // as html.wide, which the styles follow, and as aria-pressed on the
561+ // buttons [data-wide-toggle]. Another tab's change applies here at once.
562+ window.ermiteWide = (() => {
563+ const pref = window.ermiteStore.pref('diff-wide', { values: ['1', ''], fallback: '' });
564+ function apply() {
565+ const wide = pref.get() === '1';
566+ document.documentElement.classList.toggle?.('wide', wide);
567+ for (const b of document.querySelectorAll('[data-wide-toggle]')) b.setAttribute('aria-pressed', String(wide));
568+ }
569+ function toggle() {
570+ pref.set(pref.get() === '1' ? '' : '1');
571+ apply();
572+ }
573+ pref.watch(apply);
574+ apply();
575+ return { toggle, apply };
576+ })();
577+
556578 // 1. Keys.
557579 const single = { j: 'j', k: 'k', G: 'bottom', '/': 'filter', '?': 'help', b: 'refs', f: 'cmd', ':': 'cmd', y: 'permalink',
558- s: 's', t: 't', c: 'c', r: 'r', m: 'm', i: 'i', n: 'next', h: 'left', l: 'right', d: 'split', u: 'unified', x: 'collapse', e: 'expand', E: 'expandAll', Enter: 'open', Escape: 'esc',
580+ s: 's', t: 't', c: 'c', r: 'r', m: 'm', i: 'i', n: 'next', h: 'left', l: 'right', d: 'split', u: 'unified', x: 'collapse', w: 'wide', e: 'expand', E: 'expandAll', Enter: 'open', Escape: 'esc',
559581 // the merge request page (mr.js): the merge menu, mark read
560582 M: 'merge', R: 'read' };
561583 // "g t" is the key "t": the tabs have one event each.
@@ -611,6 +633,13 @@
611633 if (!el || e.button || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey) return;
612634 e.preventDefault();
613635 ermite.fire(el.dataset.fire);
636+ // A choice in a menu closes it.
637+ const menu = el.closest('details.menu');
638+ if (menu) menu.open = false;
639+ });
640+ // A click outside an open menu closes it.
641+ addEventListener('click', (e) => {
642+ for (const d of $$('details.menu[open]')) if (!d.contains(e.target)) d.open = false;
614643 });
615644 for (const a of $$('a[data-fire="refs"]')) {
616645 a.setAttribute('aria-haspopup', 'dialog');
@@ -14,6 +14,7 @@
14 // 7. The service worker (ermiteInstall).14 // 7. The service worker (ermiteInstall).
15 // 8. Chip lists kept on one line, with a … chip (ermiteFit).15 // 8. Chip lists kept on one line, with a … chip (ermiteFit).
16 // 9. The layout of the home page, remembered in the browser (ermiteLayout).16 // 9. The layout of the home page, remembered in the browser (ermiteLayout).
17+// 10. The wide diff: the page takes the whole width (ermiteWide).
17 //18 //
18 // Preferences are kept by ermiteStore (store.js, loaded first).19 // Preferences are kept by ermiteStore (store.js, loaded first).
19 (() => {20 (() => {
@@ -553,9 +554,30 @@
553 return { get: pref.get, set, apply, values };554 return { get: pref.get, set, apply, values };
554 })();555 })();
555 556
557+ // The wide diff: on the pages with a diff, the work area takes the whole
558+ // width of the screen, the rail at the right edge and the code in the rest.
559+ // The choice is kept by ermiteStore ("diff-wide": '1' when wide) and shown
560+ // as html.wide, which the styles follow, and as aria-pressed on the
561+ // buttons [data-wide-toggle]. Another tab's change applies here at once.
562+ window.ermiteWide = (() => {
563+ const pref = window.ermiteStore.pref('diff-wide', { values: ['1', ''], fallback: '' });
564+ function apply() {
565+ const wide = pref.get() === '1';
566+ document.documentElement.classList.toggle?.('wide', wide);
567+ for (const b of document.querySelectorAll('[data-wide-toggle]')) b.setAttribute('aria-pressed', String(wide));
568+ }
569+ function toggle() {
570+ pref.set(pref.get() === '1' ? '' : '1');
571+ apply();
572+ }
573+ pref.watch(apply);
574+ apply();
575+ return { toggle, apply };
576+ })();
577+
556 // 1. Keys.578 // 1. Keys.
557 const single = { j: 'j', k: 'k', G: 'bottom', '/': 'filter', '?': 'help', b: 'refs', f: 'cmd', ':': 'cmd', y: 'permalink',579 const single = { j: 'j', k: 'k', G: 'bottom', '/': 'filter', '?': 'help', b: 'refs', f: 'cmd', ':': 'cmd', y: 'permalink',
558- s: 's', t: 't', c: 'c', r: 'r', m: 'm', i: 'i', n: 'next', h: 'left', l: 'right', d: 'split', u: 'unified', x: 'collapse', e: 'expand', E: 'expandAll', Enter: 'open', Escape: 'esc',580+ s: 's', t: 't', c: 'c', r: 'r', m: 'm', i: 'i', n: 'next', h: 'left', l: 'right', d: 'split', u: 'unified', x: 'collapse', w: 'wide', e: 'expand', E: 'expandAll', Enter: 'open', Escape: 'esc',
559 // the merge request page (mr.js): the merge menu, mark read581 // the merge request page (mr.js): the merge menu, mark read
560 M: 'merge', R: 'read' };582 M: 'merge', R: 'read' };
561 // "g t" is the key "t": the tabs have one event each.583 // "g t" is the key "t": the tabs have one event each.
@@ -611,6 +633,13 @@
611 if (!el || e.button || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey) return;633 if (!el || e.button || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey) return;
612 e.preventDefault();634 e.preventDefault();
613 ermite.fire(el.dataset.fire);635 ermite.fire(el.dataset.fire);
636+ // A choice in a menu closes it.
637+ const menu = el.closest('details.menu');
638+ if (menu) menu.open = false;
639+ });
640+ // A click outside an open menu closes it.
641+ addEventListener('click', (e) => {
642+ for (const d of $$('details.menu[open]')) if (!d.contains(e.target)) d.open = false;
614 });643 });
615 for (const a of $$('a[data-fire="refs"]')) {644 for (const a of $$('a[data-fire="refs"]')) {
616 a.setAttribute('aria-haspopup', 'dialog');645 a.setAttribute('aria-haspopup', 'dialog');
M internal/adapters/web/static/js/mr.js +0 -4
@@ -311,10 +311,6 @@ window.ermiteMR = (() => {
311311 try { sessionStorage.setItem('mr-last-line', lastLine); } catch { /* storage optional */ }
312312 if (next) { e.preventDefault(); location.assign(next); }
313313 });
314- // A click outside an open menu closes it.
315- addEventListener('click', (e) => {
316- for (const d of $$('details.menu[open]')) if (!d.contains(e.target)) d.open = false;
317- });
318314 }
319315
320316 return { core, start, load, reveal, openMerge, closeMenus, menuKey, markRead, focusFiles, stepFiles, leaveFiles, foldFiles, openFile };
@@ -311,10 +311,6 @@ window.ermiteMR = (() => {
311 try { sessionStorage.setItem('mr-last-line', lastLine); } catch { /* storage optional */ }311 try { sessionStorage.setItem('mr-last-line', lastLine); } catch { /* storage optional */ }
312 if (next) { e.preventDefault(); location.assign(next); }312 if (next) { e.preventDefault(); location.assign(next); }
313 });313 });
314- // A click outside an open menu closes it.
315- addEventListener('click', (e) => {
316- for (const d of $$('details.menu[open]')) if (!d.contains(e.target)) d.open = false;
317- });
318 }314 }
319 315
320 return { core, start, load, reveal, openMerge, closeMenus, menuKey, markRead, focusFiles, stepFiles, leaveFiles, foldFiles, openFile };316 return { core, start, load, reveal, openMerge, closeMenus, menuKey, markRead, focusFiles, stepFiles, leaveFiles, foldFiles, openFile };

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 3

Tags 43

↑↓ moveenter openesc close