ReviewOS

also looking at this

stacks/lastsoulultra

LSU's own coaching surface, and what auditing the site turned up

#12
Merged glennmichael123 wants to merge claude/last-soul-ultra-web-6e0718 into main
86 files +3943 -1190

Review threads live on the whole diff, not on one commit, so none are shown here - a thread's line means something in the branch's final form, and painting it into an intermediate step would put it on code it is not about.

resources/components/SiteFooter.stxmodified+1-0
Changes to resources/components/SiteFooter.stx
@@ -27,6 +27,7 @@
2727<div class="footer-col lsu-sz7xmlte">
2828<div class="footer-head lsu-sz7xmlte">Info</div>
2929<a href="/sponsorship" class="lsu-sz7xmlte">Sponsorship</a>
30<a href="/coaching" class="lsu-sz7xmlte">Coaching</a>
3031<a href="/contact" class="lsu-sz7xmlte">Contact &amp; FAQ</a>
3132<a href="/imprint" class="lsu-sz7xmlte">Imprint</a>
3233<a href="/privacy" class="lsu-sz7xmlte">Privacy</a>
tests/coaching-surface.test.tsmodified+9-0
Changes to tests/coaching-surface.test.ts
@@ -226,3 +226,12 @@ describe('the microphone the feedback module needs', () => {
226226 expect(headersFor(path)['Permissions-Policy']).toBeUndefined()
227227 })
228228})
229
230describe('reaching coaching from the rest of the site', () => {
231 const chrome = ['resources/components/SiteNav.stx', 'resources/components/SiteFooter.stx']
232
233 it('is linked from the navigation and the footer', async () => {
234 for (const path of chrome)
235 expect(await Bun.file(path).text()).toContain('href="/coaching"')
236 })
237})