You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The installable native iOS skeleton authenticates but does not yet preserve the working desktop Albatross experience in four core loops:
Today flattens the stored Daily Report to a single string instead of rendering the actual brief artifact and its actions.
Calendar can silently present no useful events and does not distinguish sync/data failure from a valid empty window.
Work lists Areas as inert rows; Area living briefs and linked events/mail/tasks/Work are not reachable.
Rich email blocks remote resources by default in a way that makes image-heavy message content appear absent behind a misleading “Load Remote Images” action.
Scope
Repair these four vertical slices without introducing a second architecture or seed data. Preserve the authenticated five-tab shell, typed routing direction, desktop autonomy policy, and native Apple navigation/controls.
Acceptance criteria
Today renders the latest stored Daily Report artifact with its title/status/progress and safe action routing; a structured/native fallback remains useful when an artifact is unavailable.
Cached briefs survive relaunch/offline use and loading, empty, partial, failed, large Dynamic Type, and VoiceOver states are explicit.
Calendar maps provider timestamps safely, rejects malformed event payloads instead of converting them to 1970, shows real current/upcoming events, and distinguishes valid empty, offline/cache, sync needed, and query failure.
Calendar event rows navigate to a useful event detail state.
Work Area rows are clearly tappable and navigate to an Area detail screen.
Area detail renders the server-owned living brief and linked mail, events, tasks, projects/plans/Work supported by the existing Area home contract, with loading/empty/error/retry states.
Rich email HTML is readable immediately. Scripts/forms/arbitrary navigation remain blocked; tracking/privacy behavior must not hide the message body behind a misleading content button.
No native feature code invents seed data or hides API/decode failures as valid empty state.
Research is recorded in docs/mobile/research/native-product-parity.md, including Apple, Mobbin, desktop, state-matrix, and rejected-pattern notes.
Focused Swift/TypeScript tests cover report decoding/cache, calendar date mapping/failure, Area detail routing/decoding, HTML security/readability, and related error-state contracts.
Required lint/typecheck/focused tests and the iOS build pass.
The signed app is installed and the four loops are checked on the connected physical iPhone.
Product constraints
iOS 27+, Swift 6, SwiftUI-first.
Today remains the default cold start.
Desktop Albatross owns content semantics; Apple owns native navigation and controls; Mobbin supplies journey/state grounding; Albatross identity lives in content, restrained typography/color, and motion.
The server/Convex/provider state remains authoritative. The native cache is for immediate/offline reads, not a second truth.
Protected provider actions continue through the desktop approval/autonomy policy.
Problem
The installable native iOS skeleton authenticates but does not yet preserve the working desktop Albatross experience in four core loops:
Scope
Repair these four vertical slices without introducing a second architecture or seed data. Preserve the authenticated five-tab shell, typed routing direction, desktop autonomy policy, and native Apple navigation/controls.
Acceptance criteria
docs/mobile/research/native-product-parity.md, including Apple, Mobbin, desktop, state-matrix, and rejected-pattern notes.Product constraints