ReviewOS

also looking at this

stacks/postline

fix: MVP-readiness fixes — restore lost UI feedback, register safety, analytics error state, mobile + a11y

#31
Merged glennmichael123 wants to merge fix/readiness-batch-1-feedback-timing into main
7 files +123 -29
resources/views/index.stxmodified+7-3
Changes to resources/views/index.stx
@@ -113,7 +113,6 @@
113113 const connectionLabel = root.querySelector('[data-bluesky-connection-label]')
114114 const publishLabel = root.querySelector('[data-bluesky-publish-label]')
115115 const buttons = Array.from(root.querySelectorAll('[data-bluesky-publish], [data-bluesky-publish-top]'))
116 const toast = window.postlineToast?.show
117116 const providerToggles = root.querySelector('[data-provider-toggles]')
118117 const composeImageRow = root.querySelector('[data-compose-image-row]')
119118 const composeImage = root.querySelector('[data-compose-image]')
@@ -162,8 +161,13 @@
162161 let editRemoveImage = false
163162
164163 const setStatus = (message, tone = 'neutral', options = {}) => {
165 if (toast) {
166 toast({
164 // Resolve the toast helper at call time. It's a deferred module that
165 // loads AFTER this inline script parses, so capturing it eagerly (as
166 // this used to) left it undefined on every full page load — silently
167 // dropping all feedback to the console.
168 const show = window.postlineToast?.show
169 if (show) {
170 show({
167171 title: options.title,
168172 message,
169173 tone: tone === 'success' ? 'success' : tone === 'error' ? 'error' : 'info',