Fix #270: releases UI redesign + upload crash #279
No reviewers
Labels
No labels
actions
bug
cli
duplicate
enhancement
fork
forum
git storage
help wanted
insights
invalid
issues
moderation
oidc
ownership transfer
packages
pr/merge protection rules
projects
pull requests
question
releases
sponsorships
tags
webhooks
wiki
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
crueber/walhub!279
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/issue-270"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes #270 (three parts: upload crash, list redesign, detail redesign — web-only, no new endpoints, no new deps).
Crash (§1):
Release.jsxonFilereset the file input viae.currentTargetafter the upload await; Solid nullscurrentTargeton yield → TypeError toasted asassetCannot set properties of null. Now captures the input in alet fileInputref, resets the captured element in afinally. Grep audit of all pages: no othere.currentTarget-after-awaithandler (remaining uses are synchronous).List: single-column like Issues — Latest sidebar deleted (folded into the first row:
latestchip + key-asset quick-downloads), heading + toolbar (Releases h2, Refresh, primary New release), All/Drafts/Prereleases client-side pills (filterReleases, counts), name-led divider rows (tag mono, badges,excerptBodyexcerpt, asset count, DateTime), Older pagination, Empty kept (+ filtered-empty text).Detail: name-led h1 (tag fallback) + meta row (tag/badges/date/author/sha), regrouped top-right actions (Edit / Publish primary / Delete danger / Refresh), composer-section edit form, assets as data-table with staged Hashing→Uploading
role=status+ drop zone (page pre-hashes viasha256Hex, digest passed through so the SDK skips its internal hash).Decisions (docs/go/12_web_ui.md same change): #35 sidebar deleted; #50 one-CTA rule superseded (toolbar CTA always, Issues parity).
Tests:
node --test web/test/unit/*.test.js548/548 pass (incl. 6 new filterReleases/excerptBody cases);vite buildclean; served bundle contains all new strings, zero stale sidebar refs. Live API seed verified (push tags → PUT releases → POST asset → list/latest shapes). Browser drive BLOCKED: shared obscura CDP daemon rejects target creation (/json/new empty) and the existing tab refuses attach (No page for session) — no console-error pass possible from here; needs a reviewer with a working browser daemon (list, detail, upload incl. crash scenario, both themes).Release.jsx captured the upload input synchronously from the event (const input = e.currentTarget) but also carried a dead 'let fileInput' with ref={fileInput} - Solid ignores a non-function ref, so it never assigned. Remove both; the event-capture + finally reset is the fix. Doc entry said 'let fileInput ref'; now matches the code.