dc1ad7f95d01

show six scrollable profile activity rows (v3.0.124)

time
2026-09-29 21:23 UTC · 1 week ago
machine
Junes-MacBook-Pro.local
agent
gpt-6-sol
session
compact profile and form layout
parent
51905dc98553
4 files package.json+1 −1public/css/kepr.css+7 −0src/pages/profile.ts+2 −1tests/front.test.ts+2 −0
package.json+1 −1
@@ -1,6 +1,6 @@11 {22 	"name": "kepr",3-	"version": "3.0.123",3+	"version": "3.0.124",44 	"private": true,55 	"type": "module",66 	"scripts": {

view file

public/css/kepr.css+7 −0
@@ -2052,6 +2052,13 @@20522052 	margin-bottom: 16px;20532053 	letter-spacing: 0.2em;20542054 }2055+.profile-timeline {2056+	display: grid;2057+	grid-auto-rows: 2.25rem;2058+	max-height: 13.5rem;2059+	overflow-y: auto;2060+	scrollbar-width: thin;2061+}20552062 .profile-event {20562063 	display: grid;20572064 	grid-template-columns: 96px 12px minmax(0, 1fr) auto;

view file

src/pages/profile.ts+2 −1
@@ -143,7 +143,8 @@143143 144144 function activity(recent: RecentSave[]): Html {145145 	if (recent.length === 0) return html`<p class="profile-empty-state">no activity yet</p>`;146-	return html`<div class="profile-timeline">${recent.map(146+	return html`<div class="profile-timeline" tabindex="0"147+role="region" aria-label="recent activity">${recent.map(147148 		({ repo, save }) =>148149 			html`<div class="profile-event"><a class="profile-event-repo" href="/${149150 				repo

view file

tests/front.test.ts+2 −0
@@ -163,6 +163,8 @@163163 164164 	test("recent activity and the hex backdrop use real public saves only", async () => {165165 		const html = await body("/@ada");166+		expect(html).toContain('class="profile-timeline" tabindex="0"');167+		expect(html).toContain('role="region" aria-label="recent activity"');166168 		for (const save of realSaves()) {167169 			expect(html).toContain(`<span class="hex-col">${save.id}</span>`);168170 			expect(html).toContain(`href="/alpha/saves/${save.id}">${save.message}</a>`);

view file