QuranFlow v14 — what changed and why

One meeting: Aug 18, Kamran with Sr. Yasmine and Lejla, walking a deck Yasmine had assembled from feedback forwarded by teachers and students. Forty-three items, U-404 to U-446, continuing the unified register. A small, sharp round: nothing structural, one centerpiece — messaging — a batch of single-screen fixes with reasons behind each, and one thing to own, which is why it goes first below. Yasmine's context for the round, on the record: "the bazillion messages of this is so cool and this is so amazing" from the coaches. This is polish on a build people like.

Built Aug 18 Live on the hub

Every screenshot is a link. Click a Before to open that screen in the previous build (v13), an After to open it in the current app — it opens live in a new tab, and you can keep tapping from wherever you land.

1 · The states, take two

"I wrote and practiced and all of that we don't want that." — Yasmine. Lejla, on the model settled the week before: "was that included it wasn't included in this revision." Kamran: "it should have been."

  • Decided Aug 11, missed in v13. The single submission state model was settled in the previous meeting U-341 and the v13 build guide translated it as an addition — the states gained "rejected" and "revoked" — so nobody removed the old words. "Practiced" and "Heard" were still in the code on Aug 18, and Lejla found them. It ships first this time.U-435
  • The model, said once and everywhere: Awaiting review → In review (locked) → Feedback ready, with Returned and Taken back as the exits, and unsubmitted before any of it. Students, coaches and the admin portal are specified on the same vocabulary — that was the point of the original decision and it is the point now.U-435
  • The dead words cannot come back quietly. "Practiced" and "heard" are now a mechanical assertion in the build check rather than a thing somebody has to remember. That is the actual fix for how this was missed.
  • S25 — the eyebrow no longer duplicates the pill underneath it, and the take-back is available exactly until the coach opens the submission, which is the rule as decided.
  • S50 — the archive speaks the same five states as every other surface. Week 6 still reads Returned, with her note and an invitation to record it again.
Before
After
S25 In review — one eyebrow, one pill, and take it back until she opens it
Before
After
S50 Assignments — the archive in the same five words

2 · Messaging — the round's centerpiece

"Several people mentioned messages... the number one thing." — from the collected feedback, read out by Yasmine. And on the current app, when notifications broke: "we missed so many messages from students."

  • S26 gains a way to answer her. "Message your coach about this feedback" sits at the foot of the feedback screen — the sanctioned path, at the moment a student has something to ask.U-426
  • It lands in the coach's one inbox, tagged. The thread arrives in C15 marked "About Week 8 submission" rather than living inside the submission. Lejla asked for exactly this — "a singular inbox for the teacher" with the message tagged "like submission eight" — because the current app buries replies under old submissions, which is how they get missed.U-426
  • Voice and text, both directions. A message presents in the format it was sent; a transcription is one tap away rather than the default. Voice matters here — it is how a pronunciation point gets made — so the recording is not quietly replaced by text.U-427
  • 2x playback beside every real player — submissions, feedback, voice messages. Lejla: "it's a huge time saver," and it exists in the current app.U-428
  • Messages is a main tab of the coach app, in the slot the schedule merge freed, and it carries its unread count. The bar it replaced a row of has to say at least what the row said.U-415
  • The coach header gains the notification bell, and with it access to the announcement board — the same inbox students have, coach-shaped.U-416
  • The general "message your teacher" entry stays where it is, tucked in You. That is deliberate — Kamran: "you've got to be a little bit careful about how easy you want to make it." Lejla kept it there. The feedback-scoped channel is the sanctioned path.U-425
Before
After
S26 Feedback — a way to answer her, at the foot of the screen
Before
After
C15 Messages — one inbox, and the submission each message is about
Before
After
C10 Coach home — the bell above, Messages in the bar below
After · S45
S45 — the tag travels with the message, and messages about feedback do not use the weekly allowance
After · S47
S47 — the bell now opens a coach-shaped inbox

3 · One schedule for the coach

"I'm okay with having, like, the full schedule, but for there to be like filtering button in the my schedule so you can exclude, like one to one." — Lejla. Yasmine: "they could go together at this point in time."

The meeting's verdict, in one line: a coach plans her day as one day.

  • The Appointments tab is gone. Live classes and one-to-ones share one schedule behind an Everything · Live classes · Appointments filter. The terminology is the meeting's: live classes covers level classes, QRCs, office hours and occasional events like orientation and workshops; appointments are the one-to-ones.U-414
  • The cohort chips are replaced by a cohort tag on the row. Lejla: "this filtering is not needed, but there could be an indication" — a tag on the item itself. Yasmine's scenario, two cohorts teaching in one afternoon, which the filters split apart, is now the fixture you are looking at.U-411
  • My schedule / Full semester stays. "That would be helpful. Yes."U-412
  • Reminders and add-to-calendar moved to a quiet settings panel — "doesn't need to be in the main screen."U-413
  • "8 registered" is gone. With no per-event opt-in for live sessions, there is nothing to count, and a number nobody can act on is worse than no number.U-420
  • The queue's waiting time reads days plus hours — "1d 6h", hours alone under a day — counted from the moment the student submitted. Weekend arithmetic was considered and dropped as too complicated once time zones are involved; from the student's side, the clock simply runs.U-404U-405
  • No overdue coloring, at any age. Lejla: "no special signalization that it's, like, overdue if we are not including the weekends." The number is the information.U-406
  • Coach notes carry dates, and the profile answers "which intake, which level, when" — "Fall 2024 intake · Level I completed Dec 2024". Students return years after their last level, and an undated note about one of them is a trap.U-408
  • One coach app serves every coach profile. Live-classes-only, Year-2-appointments-only, or any mix: sections that do not apply render blank rather than gated or hidden behind an error. Yasmine's framing — "if it's not relevant to you it would just be blank."U-446
Before
After
C07 Schedule — one day, one list, cohort on the row
Before · C17
After · C07 filtered
The appointments tab became a view — C17's content, one filter inside Schedule
Before
After
C01 Queue — "1d 6h", and nothing colored to shame her
Before
After
C05 Record — which intake, which level, when

4 · Three screens retired

Two of them were v13's open proposals, drawn so that this meeting could decide them. It did. The third was merged rather than lost.

  • C13, the live-class roster — cut. Lejla: "Screen isn't needed." Sessions run in Zoom, and marking attendance against a roster that can run to 250 names is not work anyone will do. What survives is a backend data point rather than a screen: a count of Join clicks per session, reportable in the admin portal, which is what the attendance and donor numbers actually need.U-418U-419
  • C12, the per-submission reply surface — superseded. The reply channel five of eight coaches asked for was accepted, in tagged-thread form: the student writes from S26 and it lands in the coach's one inbox tagged with the week. C12 drew the opposite pattern — a reply held inside the submission — which is precisely how the current app loses messages. Recorded in the decision log as resolved-superseded, not cut.U-426
  • C17, Appointments — merged, in section 3. Its content is a filter on the schedule now. Nothing it did has gone away.U-414
Cut · C13
C13 — the roster screen, as drawn in v13. Live classes stay in Zoom
Superseded · C12
Instead · S45
C12 → the tagged thread — same need, answered in the inbox instead of inside the submission

Retired this round

C12C13C17 — codes are never reused; they join v13's S18, S36, S40

5 · Booking and appointments

"When clicking cancel the cancel button there should be a pop-up button asking them are you sure you want to cancel?" — from the deck, and Lejla's reason for agreeing: "people do be mist clicking."

  • The plan note is a footnote now, not the opening block. How many appointments you still have to book is worth saying and not worth the top of the screen: "it's too prominent for something that's supposed to be like just like a small note."U-438
  • Teacher choice is multi-select — the chips are bubbles you can pick several of, and the summary says "2 teachers". S62 matches, so a student who picks two on S33 does not hit a single-select seam one screen later.U-439
  • Cancel asks before it acts.U-440
  • A swap says exactly what moved — "Swapped. Thu 3 Apr · 6:00 PM is now Thu 3 Apr · 9:40 AM, with Ustadha Maryam." That also covers the rare case of two students reaching for the same slot at once: the outcome is stated rather than assumed.U-441
  • The full date sits under Time — "May 5", not just a weekday and a time — on both the upcoming appointment and the past one.U-442
Before
After
S33 Book a 1:1 — more than one teacher, and the plan note moved down
Before
After
S35 — the full date, a confirmed swap, and a cancel that asks
Before
After
S71 — the 1:1 that already happened, dated the same way
After · S62
S62 — the day view matches: multi-select teachers, Riyadh naming

6 · The calendar knows the semester

Lejla, asking for the semester's start, end and breaks on the month: "maybe just including like a week number that indicates which week we are on." Yasmine: "that's good feedback I love that idea."

  • The semester's anchors are on the month — orientation, Week 1, the mid-semester break, semester end — drawn as quiet gold rules rather than event dots, because they are not things you attend, they are the shape of the term.U-436
  • A week rail names every row (W4…W15), and the selected day's week appears in its header, so "which week is this" is answered without counting.U-436
  • A "Semester dates" card lists the anchors in words underneath, including the ones outside the month on screen.U-436
  • Both calendar modes carry it — the live month and the booked month are the same calendar with different contents.U-436
  • Sourced from the admin semester setup. These dates already exist there, so this is display-side work, not a new thing for anyone to maintain.U-436
Before
After
S64 — anchors, and the week each row belongs to
After · S65
S65 — the same rail on the booked month

7 · Small fixes with reasons

  • S15 — the time-zone control is a real picker. It had a dropdown arrow that did nothing: tapping cycled through zones one at a time. Fourteen zones, in a list that opens.U-421
  • S39 — "Add to calendar" answers. It confirms with "On your calendar", and the RSVP block now says who it informs rather than leaving the student guessing what the tap did. The hand-off to the device's native calendar is specified for the dev build. Scope was decided in the meeting and is deliberately narrow: live sessions and appointments only.U-424
  • S16 — notification reminders default ON. The meeting's call on per-event opt-in was that there should not be one, and Kamran's reading of the default followed from it: "you kind of want everyone to turn it on." Anything can be turned off in Settings, by category.U-420
  • S43 — You reads account, then support. Gone: the Display section, the Announcements entry (redundant with Today and the bell), and the "All versions" dev link, which was a shortcut of Kamran's that had no business shipping. Telegram stays. The support copy now reaches the program team and the student counselor, not only troubleshooting — the row is marked copy-pending because the final wording is Yasmine's.U-432U-433
Before
After
S15 — a picker that opens
Before
After
S39 Live session — "On your calendar", and who the RSVP tells
After · S16
S16 — reminders on by default, and calmly said
Before
After
S43 You — account, then support

8 · Also in this build, and what is still open

Also in this build

  • "Coach" replaces "Coach (TA)" as the entrance name. Reaffirmed canon, and Yasmine's reason for it: "the word assistant makes you feel like you're not qualified." Lejla: "they're all teachers."U-434
  • Tour captions updated where the screens changed — a caption that still named the Appointments tab would be wrong the moment the tab went.
  • S26 and S25 share one eyebrow idiom, so a student moving between the two reads the same line in the same place.

Open, and owed

  • The rescheduling exception — moving a session sooner without being blocked by next week's booking. It was read from the deck, the conversation moved on, and it never got a verdict. Lejla's call.U-437
  • The booking walkthrough Lejla and Yasmine owe. Neither has properly exercised the flow, and it was the biggest thing built last round: "if you do do something, do go through this."U-443
  • Yasmine's copy pass. The support row is marked copy-pending in the build; final wording across the app is still hers.U-432
  • C12 and C13 are recorded in the decision log — superseded and cut respectively, with the reasoning, so neither comes back as an open question.