Skip to content

Fix lesson Markdown, topic opt-in, profile keyboard, and photo uploads - #458

Merged
Muawiya-contact merged 17 commits into
developfrom
codex/fix-454-457-product-polish
Oct 24, 2026
Merged

Muawiya-contact merged 17 commits into
developfrom
codex/fix-454-457-product-polish

Conversation

@Muawiya-contact

@Muawiya-contact Muawiya-contact commented Oct 24, 2026 •

Copy link
Copy Markdown
Member

What changed

  • Lesson Markdown (Fix Markdown rendering for concepts and code samples #454): Keep the existing learner and reviewer/owner Markdown components as the single entry point on each platform. Add safe, bounded syntax highlighting for supported fenced code, horizontal scrolling for long mobile code lines, readable heading and inline-code styling, and plain labels for rejected links. Raw HTML stays inert; stored Markdown is unchanged.
  • Topic opt-in (Start users with no followed topics and guide them to choose interests #455): Migration 0131 stops the Auth signup trigger from following every active topic. Migration 0132 removes the same default from all four Supabase Edge first-request paths, and the FastAPI fallback also starts with no follows. The server already treats zero follows as personalization_required; the mobile Home screen now shows the interests action immediately when the last follow is removed, including when an older assignment is cached. Existing users' follows and signed-out demo preferences are preserved. The Following screen now shows pending sync, surfaces local save/refresh failures, and does not roll back a durable choice when only the catalog cache write fails. A refresh also waits for an in-flight local follow write, so an older server response cannot restore the last topic after the learner unfollows it. It waits before advancing its revision, so a failed local save can still roll back while offline.
  • Profile keyboard (Fix mobile profile inputs being obscured by the virtual keyboard #456): Keep the preferred-name and bio fields reachable through keyboard-aware scrolling, iOS avoidance, and safe-area bottom space. Focus changes scroll the active field into view on compact screens.
  • Profile photos (Fix profile photo uploads from gallery and camera #457): Prepare gallery/camera assets as JPEG before upload, at up to 1600 px and 5 MiB with smaller retry sizes. The request MIME now matches verified JPEG bytes. Preparation, HTTP validation/rate-limit/server, and transport failures have distinct messages; a failed save keeps the previous avatar and selected photo available for retry.
  • Native release compatibility: Set app version and native runtime to 1.10.16 for the new expo-image-manipulator module, with a matching What's New card. Updates for this version will target only the new native build.

Validation

  • Disposable PostgreSQL: schema/signup contract (2), daily selection (8), followed-topic/selection (20), fallback bootstrap (2), and Edge first-request bootstrap plus schema contract (5) tests passed.
  • Mobile: TypeScript check and all 103 Node tests passed after a clean lockfile install; Expo web export completed. Browser checks passed in light and dark themes for empty-topic onboarding, Markdown safety/layout and long code scrolling, and gallery/camera photo conversion, HTTP/transport errors, retry, and compact profile inputs. An additional browser flow passed for first follow, lesson, refresh, last unfollow, and empty-state refresh. A new regression test reproduced stale-refresh restoration during a pending last-unfollow write on the old code, then passed with the fix. A second regression reproduced failed-enqueue rollback being suppressed by an offline refresh; it also failed before the correction and now passes.
  • Reviewer/owner web: 22 Vitest tests passed; production build passed using dummy public configuration.
  • The release version and runtime both resolve to 1.10.16; tag v1.10.16 is unused. The combined diff passed git diff --check. The branch incorporates current develop and its three mobile Dependabot updates with a clean lockfile resolution. No production migration, APK build, or release was run.

Release note

expo-image-manipulator is a new native dependency. The release must build and distribute the 1.10.16 APK and test keyboard behavior, camera, and HEIC/HEIF conversion on supported devices. Existing 1.10.8 runtime installations will stay on their compatible update stream; they must install the new binary to receive this release. Apply migrations 0131 and 0132 in order through the normal protected schema gate before the matching app release. The 1.10.16 What's New card highlights topic choice, clearer lesson/code rendering, and profile editing/photo preparation.

Closes #454
Closes #455
Closes #456
Closes #457

@chatgpt-codex-connector

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 ⚠️ Failed 2026-10-24T09:14:20.276568Z
We couldn’t complete this review. Comment @codex review to try again.
2cab6b7 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

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@Muawiya-contact Muawiya-contact left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

LGTM

@Muawiya-contact
Muawiya-contact merged commit 1e6cfd9 into develop Oct 24, 2026
3 checks passed
@Muawiya-contact
Muawiya-contact deleted the codex/fix-454-457-product-polish branch October 24, 2026 17:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant