experiments in a post-browser web
10
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix(mobile): image editor content display + build script asset copy

- Add scrollable wrapper in image editor so content text is visible below image preview
- Fix build-release.sh: copy frontend dist to gen/apple/assets before Rust cache check
(previously skipped on cache hit, deploying stale frontend assets to device)
- Pass item.content through getUnifiedItems() and renderUnifiedItem() to image cards

+51 -24
+5
backend/tauri-mobile/build-release.sh
··· 36 36 echo "Building frontend..." 37 37 npm run build 38 38 39 + # Always copy frontend assets to Xcode location (even on Rust cache hit) 40 + echo "Copying frontend assets..." 41 + rm -rf "$TAURI_DIR/gen/apple/assets" 42 + cp -R "$SCRIPT_DIR/dist" "$TAURI_DIR/gen/apple/assets" 43 + 39 44 cd "$TAURI_DIR" 40 45 41 46 # Check cache unless forced or disabled
+22
backend/tauri-mobile/src/App.css
··· 2864 2864 color: #999; 2865 2865 } 2866 2866 2867 + /* Scrollable area below image preview — holds content text + tags */ 2868 + .editor-image-scrollable { 2869 + flex: 1 1 auto; 2870 + min-height: 0; 2871 + overflow-y: auto; 2872 + -webkit-overflow-scrolling: touch; 2873 + } 2874 + 2875 + /* Image content text in editor */ 2876 + .edit-image-content { 2877 + padding: 0.75rem 1.15rem; 2878 + font-size: 0.875rem; 2879 + line-height: 1.5; 2880 + opacity: 0.85; 2881 + white-space: pre-wrap; 2882 + word-break: break-word; 2883 + } 2884 + 2885 + body.dark .edit-image-content { 2886 + color: #e0e0e0; 2887 + } 2888 + 2867 2889 /* Legacy text editor classes - keep for backwards compatibility */ 2868 2890 .text-editor-overlay { 2869 2891 align-items: stretch;
+24 -24
backend/tauri-mobile/src/App.tsx
··· 2279 2279 if (!item) return null; 2280 2280 const metadata = item.metadata as Record<string, unknown> | undefined; 2281 2281 const title = metadata?.title as string | undefined; 2282 - console.log('[DEBUG EDITOR IMAGE]', JSON.stringify({ id: item.id, hasContent: !!item.content, contentLength: item.content?.length, contentPreview: item.content?.substring(0, 100) })); 2283 - 2284 2282 return ( 2285 2283 <EditorOverlay onDismiss={requestCancelEditingImage} keyboardHeight={keyboardHeight} className="text-editor-overlay"> 2286 - <div style={{ flex: "1 1 auto", minHeight: 0, overflowY: "auto" }}> 2287 - <div className="editor-image-preview"> 2288 - {item.thumbnail ? ( 2289 - <img 2290 - src={`data:image/jpeg;base64,${item.thumbnail}`} 2291 - alt={title || "Preview"} 2292 - className="edit-modal-image" 2293 - /> 2294 - ) : ( 2295 - <div className="image-placeholder"> 2296 - <svg width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"> 2297 - <rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect> 2298 - <circle cx="8.5" cy="8.5" r="1.5"></circle> 2299 - <polyline points="21 15 16 10 5 21"></polyline> 2300 - </svg> 2301 - </div> 2302 - )} 2303 - {title && <div className="edit-image-title">{title}</div>} 2304 - </div> 2305 - <div className="edit-image-content" style={{ padding: "0 16px 12px", fontSize: "14px", opacity: 0.85, lineHeight: "1.5", whiteSpace: "pre-wrap" }}> 2306 - {item.content || `[no content — keys: ${Object.keys(item).join(', ')}]`} 2307 - </div> 2284 + <div className="editor-image-preview"> 2285 + {item.thumbnail ? ( 2286 + <img 2287 + src={`data:image/jpeg;base64,${item.thumbnail}`} 2288 + alt={title || "Preview"} 2289 + className="edit-modal-image" 2290 + /> 2291 + ) : ( 2292 + <div className="image-placeholder"> 2293 + <svg width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"> 2294 + <rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect> 2295 + <circle cx="8.5" cy="8.5" r="1.5"></circle> 2296 + <polyline points="21 15 16 10 5 21"></polyline> 2297 + </svg> 2298 + </div> 2299 + )} 2300 + {title && <div className="edit-image-title">{title}</div>} 2308 2301 </div> 2302 + <div className="editor-image-scrollable"> 2303 + {item.content && ( 2304 + <div className="edit-image-content"> 2305 + {item.content} 2306 + </div> 2307 + )} 2309 2308 <TagsSection 2310 2309 selectedTags={editingImageTags} 2311 2310 availableTags={allTags} ··· 2314 2313 onToggleTag={toggleEditingImageTag} 2315 2314 onAddTag={addEditingImageTag} 2316 2315 /> 2316 + </div> 2317 2317 <EditorButtons 2318 2318 onSave={saveImageChanges} 2319 2319 onCancel={requestCancelEditingImage}