Modal Esc/overflow polish, artist-scoped post scroll, failing-sources Logs button #43
Reference in New Issue
Block a user
Delete Branch "dev"
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?
Summary
Three coupled follow-up landings from the modal/posts/downloads UX session on 2026-06-01.
4c56cf1— modal Esc fix + Provenance 2.5-card overflowisTextEntry(ev.target)for every key, so the autofocused TagAutocomplete trapped Escape. Now Escape closes the modal even from text inputs, unless a nested Vuetify overlay is open (.v-overlay--active— menus, FandomPicker, suggestion 3-dot menu) in which case that overlay handles its own Esc..fc-prov__cardswithmax-height: 270px; overflow-y: auto;— keeps the Tags section at a consistent position regardless of provenance count; the half-clipped third card hints there's more below.fb605af— anchored posts view inherits artist_id/platform on scrollOperator-flagged: clicking a post title from the modal's Provenance card opens
/posts?post_id=N&artist_id=Ascoped correctly, but the bidirectional infinite-scroll then pulled UNFILTERED global posts. Root cause:loadAround/loadOlder/loadNewerinposts.jsonly sent{around, cursor, direction}— never the filters. Backend supported them on every path; frontend just wasn't passing.Fix:
loadAround(postId, filters)stores the snapshot;_aroundParams(extra)mixes the filters into all three calls;PostsView.loadAroundAndAnchorpassesartist_id+platformfrom the route query.94e7d20— Logs button on failing-sources rollup rowsEach row in the "X sources are failing" rollup gets a
Logstext button next to RETRY. Clicking it callsdownloadsStore.loadLastForSource(source.id)— two-steps viaGET /api/downloads?source_id=N&limit=1(most recent event) then the existingloadOne(id)for the full detail payload — and opens the sameDownloadDetailModalthe event-row clicks use. Surfaces stdout/stderr/error/files-written/duration for troubleshooting without leaving the Downloads tab.Test plan
/posts?post_id=N&artist_id=A; scroll up/down and confirm only that artist's posts load.Logsbutton on each row; clicking opens the DownloadDetailModal for the most recent event of that source.Operator-flagged 2026-06-01: clicking a Provenance post title from the view modal opens the post in the posts feed scoped to that artist (`/posts?post_id=N&artist_id=A`), but the older/newer infinite-scroll loaded UNFILTERED global posts instead of staying in the artist's stream. Root cause: the posts store's loadAround/loadOlder/loadNewer sent only `{around, cursor, direction}` — never the `artist_id` / `platform` filters. Backend `/api/posts` accepts them on every path (post_feed_service.scroll filters via `Source.artist_id`); the frontend just wasn't passing them. Fix: - `posts.js` `loadAround(postId, filters)` now takes the filter snapshot and stores it. `_aroundParams(extra)` mixes the active filters into around/cursor calls. - `PostsView.vue` `loadAroundAndAnchor` passes `artist_id` + `platform` from the route query.