Skip to content

Refine Detail typography, Copy, and native feedback - #62

Merged
RCmerci merged 11 commits into
mainfrom
codex/detail-three-level-20261010
Oct 11, 2026
Merged

RCmerci merged 11 commits into
mainfrom
codex/detail-three-level-20261010

Conversation

@RCmerci

@RCmerci RCmerci commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

Block Detail now uses aligned rows with three regular, primary-color typography tiers (26/21/17pt; target line heights 40/33/27 and paragraph gaps 24/18/12), scaled with Dynamic Type. The existing Detail reducer owns depth, order, expansion and explicit 128-item paging across Open block, Favorites, retry, branch expansion and Load more. The trailing ellipsis exposes Copy through the existing full-subtree paging, formatting, cancellation and clipboard chain, including descendants outside the current UI page; feedback belongs to the current Detail and operation. Native Back, metadata tags, media and the shared Capture/Composer remain connected.

Feedback bars, Favorites sync feedback and bottom controls compose existing LUI EdgeInset, ViewThatFits and Stack elements in OCaml. Root feedback belongs to the native root navigation page and reserves space around its actual content, keeping root controls usable above unresolved attachment errors. Returning from Detail preserves the root error and content identity; retired Detail actions are ignored, and retry updates the original child. The redundant Swift feedback/bottomControls modes are removed.

Existing Swift adapters retain behavior that current LUI APIs cannot express with parity: native soft scroll-edge/page/header presentation, custom Dynamic Type text and scalable row spacing, Detail title/toolbar adaptation, standalone unlock Form/input/accessibility, and Swift-only presenters. The dependency update freezes merged LUI184+185 at 3855125. Journal’s native Detail toolbar now applies the matching button menu/plain style and hides the shared native toolbar background around LUI’s existing capsule. Actual edge taps reproduced a dead upper strip without this host adaptation. Journal does not adopt the new CSS-adjacent properties or broaden the font scope.

Validation on 318f4de29bafc9eee7a637a213c96e60d15729e7:

  • Existing public regressions cover Detail typography/order, Copy ownership, cached tags, 128/128/4 paging, native feedback reservation, stale action fencing and retry cleanup. Existing Copy cancellation/graph-switch coverage remains.
  • Exact-source LUI OCaml/Swift, Journal @all/native embed and the native fixture build pass. The final forced full regression passes in one run: 21 suites / 692 cases, zero failures, including Sync 198 and Application 74.
  • Seven actual isolated iOS Simulator tests pass (245.276s): Files two-file import/Back/root Capture/re-entry/Retry; last-child Capture and draft retention; 390pt keyboard/layout; 320pt AXXXL deep content; Favorites real scroll/soft header; Journal button targets/native toolbar; public LUI Menu comparison.
  • Journal Copy center, four edges and four corners each open the native Menu and execute Copy. Real pasteboard is byte-identical to the full 446-byte Chinese subtree, including unloaded descendants. Ordinary Load more (131×44), Capture/Back (44×44) and explicit Composer Send (36×36) receive actual edge taps and complete their actions. Public LUI Menu also passes all nine points; the adjacent toolbar action increments its public event counter.
  • Exported screenshots were visually reviewed: root controls above retained error, one Detail feedback bar, keyboard layout, AXXXL content and Favorites native soft header. The synthetic app is terminated and GUI released.
  • Independent review covers the minimal four-file update and final evidence. No Dune/spec/global-pin change. Frozen upstream archive independently matches all 437 extracted files. Intermediate failure logs and corrected harness-state assumptions are retained outside the repository.
  • Exact-head Journal CI passed for 318f4de29bafc9eee7a637a213c96e60d15729e7: @all/native embed and all 21 suites / 692 cases. Uploaded LUI, Signal and both Datascript package identities match the frozen snapshot.

Dependency identities: LUI 38551254511c59d9141a8f9b276c78783cbac044, Signal 02e18cdc5e0ad672aa223f638eaa3ba52fc9421e, Datascript 0561660e4894faee250d551ab2a32a6b5c25a5fb.

@chatgpt-codex-connector

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

Copy link
Copy Markdown

Codex Review Summary

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

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-10T15:54:38.086431Z ceb45bd PR opened
ℹ️ 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.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ceb45bdf26

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread app/application.ml
|> Journal_header.detail
~capture_enabled:actions_enabled
~on_capture:(on_action Open_append)
~copy_enabled:(state.graph_ready && Option.is_some detail)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Disable Detail copy while a subtree deletion is pending

When a descendant is deleted from Detail, hide_deleted immediately removes it from the rendered outline but delays the worker deletion during the undo window; this new header action remains enabled because it ignores pending_delete. Copying the root during that window therefore reads the unchanged worker subtree and puts the now-hidden descendant on the clipboard, and it can race the later delete commit. Gate this action on the pending mutation state, as the existing Detail actions already do.

Useful? React with 👍 / 👎.

Comment thread swift/JournalList.swift
Comment on lines +377 to +381
.contentShape(Rectangle())
.onTapGesture {
if actionInteractive(branchAction) { rowEvent(action: branchAction.key, row: row.key) }
}
.accessibilityHint(branchAction.title)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve native disclosure semantics for branch rows

For VoiceOver, Switch Control, or keyboard users, replacing DisclosureGroup with an onTapGesture on otherwise plain row content removes the native expandable-control role and expanded/collapsed state. The added hint and named accessibility action describe an operation, but they do not expose the row's current disclosure state or make it a standard focusable disclosure control; preserve native disclosure semantics or explicitly provide equivalent role, state, and activation behavior while keeping the desired visual treatment.

AGENTS.md reference: AGENTS.md:L11-L11

Useful? React with 👍 / 👎.

@RCmerci RCmerci changed the title Refine Detail typography and add scoped subtree Copy Refine Detail typography, Copy, and native feedback Oct 11, 2026
@RCmerci
RCmerci merged commit 8661001 into main Oct 11, 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