Skip to content

fix: wait for initial timeline data and native layout - #159

Merged
RCmerci merged 1 commit into
mainfrom
codex/timeline-startup-readiness-20261110
Nov 10, 2026
Merged

RCmerci merged 1 commit into
mainfrom
codex/timeline-startup-readiness-20261110

Conversation

@RCmerci

@RCmerci RCmerci commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

Summary

Keep the cold-start loading presentation until the bounded initial Timeline feed is complete and the native list has completed its first valid viewport layout. Previously, the first incremental complete=false feed could reveal the Timeline while rows and child previews were still arriving.

  • Do not mark the initial feed loaded until complete=true; keep already-presented content visible during later refreshes.
  • Mount the native list behind the existing loading surface and reveal it on its layout-ready callback. Preserve the shared spinner grace period.
  • Allow an empty viewport to complete the handshake. Scope the cover to the first GraphPages presentation so later routes, refreshes, and pagination are not covered.
  • Add regression coverage for an incomplete initial prefix and native presentation ownership/cancellation.

The gate waits for the bounded initial feed, not the full graph, later pagination, or remote media downloads.

Validation

Validated the exact five-file patch in commit ee6341cb39daf91c3d400367d604b5e26e294760 (patch SHA256 fdaa02e9833466ecb2e1a6ede459c27f50b2bc23dbfe1ed005149313733dcaf5). Its parent is 7b180041ae829f84f0452b7684f167e829909206; subsequent main changes at publication are documentation-only and do not overlap this patch.

  • Initial-feed regression: failed before the fix, passed after the fix.
  • Native presentation owner regressions: RED/GREEN using a focused harness compiled from the production owner and assertions. The full native-list GUI test binary was not run.
  • opam exec --switch logseq-journal-lui -- dune build @all app/native_embed.exe.o: passed.
  • opam exec --switch logseq-journal-lui -- dune runtest --force: passed.
  • Swift frontend parse, python3 tool/test_graph_name.py, and git diff --check: passed.
  • Official native producer and iOS simulator build: passed.
  • Dedicated iPhone 13 / iOS 26.1 simulator with synthetic fixtures: multi-day feed with resolved references and child previews, truly empty feed, missing-key recovery, and background/foreground after first layout all passed. In the recording, the first visible content frame already contains the same first-screen text and row positions as the settled frame.
  • Independent final code review: no remaining actionable findings.

Boundaries and remaining validation

  • Interrupting startup by changing its owner, leaving the visible route, or backgrounding retires the initial native cover. A launch interrupted before first layout does not retain the same layout-wait guarantee on return. This avoids stranding routes such as Favorites that do not own the Timeline layout callback.
  • Simulator builds use the experimental host-restamp route and explicitly report cross_abi_validated=false. Full iOS runtime ABI, physical-device behavior, and a real-account graph have not been validated.
  • spec-dev-tool check --all could not run because the executable is unavailable. No spec or Dune files changed.
  • The prepared dependency switch was left unchanged. Missing Git history objects were supplied from existing same-revision cache copies through an isolated, process-local alternate object database; official provenance checks stayed enabled.

@RCmerci
RCmerci marked this pull request as ready for review November 10, 2026 06:08
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-10T06:10:25.368392Z ee6341c Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@RCmerci
RCmerci merged commit 1a7f738 into main Nov 10, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant