Fix rsky-pds createRecord/putRecord hanging indefinitely with no error logs. Use when: (1) createSession succeeds but createRecord never returns, (2) No error appears in PDS logs despite request hanging for 60+ seconds, (3) PDS health endpoint works but write operations hang, (4) readiness probes intermittently fail on rsky-pds pod. Root cause: PDS_CRAWLERS env var configures crawler notification URLs that are called via reqwest HTTP client WITHOUT any timeout in crawlers.rs. If the crawler URL is unreachable from the cluster, every write hangs forever. Also: setting PDS_CRAWLERS="" produces [""] (one empty string element) which causes a "builder error" instead — must fully unset the env var.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix Wayback Machine CDX API returning empty results or timing out from cloud/datacenter IPs (Cloud Run, AWS Lambda, GCE, etc.) while working fine locally. Use when: (1) CDX queries timeout or return 0 bytes from Cloud Run/cloud functions but work from local machine, (2) urllib.request.urlopen times out for web.archive.org from server, (3) Wayback Machine CDX silently returns empty from datacenter IPs with no HTTP error, (4) Need to run CDX-dependent scripts on Cloud Run or similar cloud compute. Workaround: fetch locally, upload to cloud storage, import on cloud compute.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix 404 errors for frontend JS files when using Vite proxy. Use when: (1) Browser shows "Failed to load resource: 404" for JS/JSX files that exist on disk, (2) Vite serves HTML instead of JavaScript for module imports, (3) You have a client folder named "api" (or similar) AND a Vite proxy configured for "/api". The proxy intercepts requests for client-side files when folder names match proxy paths. Applies to Vite, Vite+React, Vite+Vue projects with dev server proxy configuration.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix JSON parse errors when fetching archived API responses from Wayback Machine. Use when: (1) Getting "Expecting value: line 1 column 1 (char 0)" JSON decode errors from archived URLs, (2) Wayback returns HTML instead of expected JSON/raw content, (3) Crawling archived REST APIs or JSON endpoints from web.archive.org. The `id_` modifier returns raw content without the Wayback toolbar wrapper.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix Flutter home feed / main screen stuck on loading spinner after login when using Riverpod StreamProvider that watches GoRouter location changes. Use when: (1) Screen shows BrandedLoadingIndicator or CircularProgressIndicator permanently after successful auth redirect, (2) Widget watches a route-type-gating provider that returns AsyncValue.loading() intermittently, (3) Logs show route location oscillating between stale and current paths during post-login transition (e.g., /welcome/* after /home/0), (4) Provider chain has double-gate: widget gates on pageContext AND data provider also gates on pageContext. Distinct from riverpod-infinite-rebuild-loop (rapid rebuilds) — this causes permanent loading state, not infinite rebuilds.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Before removing code that looks redundant, wasteful, or "wrong" based on log observations or code review instinct, grep the test suite for tests whose names describe the exact behavior you're about to remove. A test whose title literally describes the "weird" thing (e.g. "calls play() even when player reports playing", "retries even when first call succeeded", "skips cache even when fresh") is a load-bearing workaround, and the production log you're reacting to is probably the workaround working as designed — not a bug. Use when: (1) Tempted to remove a function call that "looks redundant" based on a production log, (2) About to "simplify" a conditional that seems to always take the same branch, (3) Reviewing code and thinking "why would anyone write this?", (4) A log line shows a state that seems impossible or contradictory (e.g. playing=true but positionMs=0 for seconds), (5) CI surfaces a failing test whose name describes exactly what your fix removed.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix SQLite "database disk image is malformed" errors caused by corrupted FTS5 indexes. Use when: (1) UPDATE/INSERT fails with "stepping, database disk image is malformed" but PRAGMA integrity_check returns "ok", (2) Only specific records fail to update while others succeed, (3) Records contain dirty text with tabs, newlines, or unusual characters that were inserted into FTS5-indexed columns. The misleading error message suggests disk corruption, but the actual issue is FTS5 index corruption from malformed text content.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix slow Flutter app startup caused by blocking network operations during initialization. Use when: (1) App takes several seconds to show first frame, (2) Startup logs show sequential network operations (WebSocket connections, API calls), (3) Services initialize during startup that aren't needed until user authenticates. Covers: converting sequential network ops to parallel with Future.wait(), deferring service initialization until actually needed (lazy init), and identifying blocking operations in Riverpod/provider initialization chains.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix Monte Carlo project completion simulations that give identical dates for all sub-groups (milestones, priorities, epics). Use when: (1) All sub-group predictions converge to the same date despite different remaining counts, (2) Proportional throughput scaling produces flat/identical results, (3) Applying overall scope rate to individual sub-groups causes simulations to hit max_weeks cap and never converge, (4) Building project forecasting tools that predict completion for sub-groups of a larger backlog. Covers hypergeometric draw model for milestones and cumulative priority model for sequential priorities.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix "ref.listen can only be used within the build method of a ConsumerWidget" assertion error in Flutter Riverpod 3.x. Use when: (1) ConsumerStatefulWidget crashes with "Failed assertion: line 492 pos 7: 'debugDoingBuild'" in flutter_riverpod consumer.dart, (2) ref.listen is called inside initState, addPostFrameCallback, or any lifecycle method other than build(), (3) All widget tests fail with this assertion from scheduler callback. Applies to flutter_riverpod 3.0+ with ConsumerStatefulWidget.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix "content disappears after publishing" bugs caused by REST API indexing lag. Use when: (1) User publishes content but it doesn't appear in their feed/profile, (2) REST API returns stale data immediately after write operations, (3) Async indexing backends (ClickHouse, Elasticsearch, etc.) haven't processed new events, (4) Content shows briefly then vanishes on refresh. Applies to any system with separate write path (WebSocket/direct DB) and read path (REST API with async indexing).
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix macOS app hard crashes (EXC_CRASH / SIGKILL) caused by accessing TCC-protected APIs without the matching Info.plist usage description key. Use when: (1) App crashes immediately when touching Photos, Contacts, Calendar, Reminders, Location, Microphone, Camera, Screen Recording, etc., (2) Crash report shows `Exception: EXC_CRASH (SIGKILL)` with `Termination namespace: TCC`, (3) Crash stack includes `TCC.__TCC_CRASHING_DUE_TO_PRIVACY_VIOLATION__`, (4) Termination details contain "This app has crashed because it attempted to access privacy-sensitive data without a usage description", (5) Flutter macOS publish / gallery-save flow crashes on Gal.putVideo, PHPhotoLibrary, CNContactStore, etc. Critical distinction: macOS does NOT return a deny error — it SIGKILLs the process. This skill also covers the NSPhotoLibraryUsageDescription vs NSPhotoLibraryAddUsageDescription distinction that trips many apps.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix silent data loss when mutating Nostr replaceable events (Kind 0 profile, Kind 3 contact/follow list, Kind 10002 relay list, etc.) in client apps. Use when: (1) Following someone wipes the user's entire follow list, (2) Updating profile metadata loses existing fields, (3) Fresh browser session or mobile login causes data loss on first action, (4) Replaceable event mutation uses stale or null cached state. Root cause: Nostr replaceable events are full-replace (no partial update), so publishing based on stale/unloaded cache overwrites the canonical version. Applies to any Nostr client using React, Flutter, or similar reactive frameworks where query state may not be loaded when a mutation fires.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix Gorse 0.5.x recommendation engine silently disabled or degraded due to config incompatibility with 0.4. Use when: (1) Gorse 0.5 recommendations are poor/empty despite having data, (2) collaborative filtering appears disabled even though [recommend.collaborative] section exists, (3) migrating Gorse config from 0.4 to 0.5, (4) old config keys like [recommend.popular], [recommend.neighbors], [recommend.online], [recommend.offline] are being used with Gorse 0.5. Critical: type="mf" must be explicitly set in [recommend.collaborative] or CF is silently disabled (default "none").
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix iOS AVPlayer "CoreMediaErrorDomain error -12939 - byte range length mismatch" or similar video streaming failures when a proxy/edge/CDN service sits between the client and object storage (GCS, S3, R2). Use when: (1) iOS video fails with -12939 "byte range length mismatch - should be length 2 is length N", (2) curl with Range: bytes=0-1 returns full file instead of 2 bytes, (3) one URL path works with Range but another path to the same storage doesn't, (4) proxy advertises Accept-Ranges: bytes but returns 200 with full file for range requests. The root cause is typically a proxy handler that constructs a new request to the backend without forwarding the client's Range header.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix "DownloadObjectRequest not found" error in google-cloud-storage Rust crate. Use when: (1) Trying to download objects from GCS using the Rust SDK, (2) Looking for a download request type in http::objects::download module, (3) Compile error about missing type. The download_object method uses GetObjectRequest from the get module, not a separate DownloadObjectRequest type.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix content serving failures caused by metadata (KV store, database) being out of sync with actual storage (GCS, S3, filesystem). Use when: (1) Content exists in storage but API returns "processing" or "not ready", (2) Webhook callbacks that update metadata failed silently, (3) Backfill scripts generated content but didn't update status records, (4) HLS/transcoded content exists but transcode_status is not "Complete", (5) Handler checks metadata status BEFORE checking if content actually exists in storage.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix NDK (Nostr Dev Kit) operations hanging indefinitely when relay connections stall. Use when: (1) App freezes during fetchEvents or publish calls, (2) No timeout errors despite network issues, (3) Relay connection appears stuck, (4) Using NDK with unstable or slow relays. NDK operations have no built-in timeout - wrap with Promise.race.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix features broken by REST API responses that flatten Nostr events, losing tag data. Use when: (1) A feature works for WebSocket-loaded events but not REST API-loaded ones, (2) A model field (like sha256, textTrackRef) is null for REST API data but set for WebSocket data, (3) REST API returns denormalized fields (d_tag, video_url) but omits raw tags array, (4) hasSubtitles/hasFeature returns false for REST-loaded videos. Common in Nostr clients that use both REST APIs (for analytics/bulk queries) and WebSocket (for real-time events).
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix "count shows X but list shows empty" bugs when querying related events (comments, reactions, zaps, reposts) for Nostr addressable events (Kind 30000-39999). Use when: (1) REST API shows engagement count > 0 but WebSocket query returns empty, (2) Comments/reactions exist but app shows "No comments yet" or similar, (3) Working with NIP-22 comments, NIP-25 reactions, or NIP-18 reposts on Kind 34235/34236 video events or other addressable events. Root cause: clients may reference addressable events using either E tag (event ID) or A tag (kind:pubkey:d-tag format), and querying only one tag misses events tagged with the other.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix misleading Flutter/Dart test failures where expected data is empty ([]) or default values instead of the mocked response, caused by stale Mockito generated mocks or missing stubs being silently swallowed by try/catch in provider/repository code. Use when: (1) Test expects non-empty data but gets [], (2) Mock stubs for a method are set up but the code under test returns fallback/empty results, (3) A PR added new methods to a service class and tests that previously passed now fail with misleading "expected X, actual: empty" assertions, (4) "Generated files are out of date" CI error alongside test failures. The root cause is MissingStubError thrown by unstubbed mock methods, caught by production try/catch blocks, causing silent fallback to empty state.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix NIP-46 nostrconnect:// URLs not being recognized by signer apps (Amber, nsec.app, nsecBunker). Use when: (1) QR code or URL paste fails in signer app despite valid-looking URL, (2) Using metadata JSON object instead of separate query params, (3) Implementing client-initiated NIP-46 connections. The NIP-46 spec requires name/url/image as separate query parameters, not a metadata JSON object.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix Flutter PageView "snap back" or scroll position reset issues on provider/state rebuilds. Use when: (1) PageView scrolls then snaps back to previous page after state update, (2) Scroll position resets when Riverpod/Provider rebuilds, (3) Feed scrolls back to top on data refresh, (4) PageView loses position after orientation change or widget rebuild.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新
Fix Riverpod "Cannot use Ref or modify other providers inside life-cycles/selectors" crash in @riverpod provider bodies. Use when: (1) Crash during provider disposal with this exact error message, (2) Using keepAlive() with timer-based disposal, (3) Async callbacks (.then, .catchError) try to use ref.read() or ref.invalidateSelf(), (4) Error occurs after ref.onCancel/onResume/onDispose callbacks fire. Solution: wrap ref operations in try-catch or avoid using ref in async callbacks entirely.
日本語の概要は準備中です。原文の説明を表示しています。
divinevideo/divine-mobile☆ 2662026年10月16日 更新