'''Who this is for.''' Support staff taking tickets about family meal sharing: sending a meal to a Family Group, logging one that arrived, and the on/off switch. The member-facing guides are [https://loopa.mobieus.io/know/sharing-a-meal-with-your-family Sharing a meal with your family], [https://loopa.mobieus.io/know/logging-a-meal-your-family-shared Logging a meal your family shared] and [https://loopa.mobieus.io/know/family-meal-sharing-on-or-off Turning family meal sharing on or off].
== The shape of the feature, in one paragraph ==
A member sends a '''frozen copy''' of one of their own logged meals to the rest of their Loopa Family Group. Each recipient can log it (at any portion, on any past day, in any meal slot), modify it and reshare their version, or ignore it. What a recipient logs is their own diary entry from that moment on. A meal nobody acts on expires after seven days.
== "I can't see the share button" ==
Four things have to be true, and they fail in this order:
'''The tenant has family groups.''' Loopa and dev do. Everywhere else the routes 404 and no client renders anything.
'''The member is in a Family Group.''' Not in one, no button. Point them at [https://loopa.mobieus.io/know/family-group-creating Creating a family group].
'''Their sharing switch is on.''' You → Preferences → Family meal sharing.
'''They hold Premium.''' Every member of a live group does, through the group. A member whose organizer's subscription lapsed will meet the purchase sheet.
The same four decide the '''Share with family?''' switch on the food they are adding, with one addition: it appears when '''logging''' a food, not when editing one already in the diary. Editing an entry deletes the old row and writes a new one, so a switch there would re-offer the same food every time somebody fixed a typo in it. Sharing an entry that already exists is its own control on the row.
== "I turned the switch on and it logged but did not share" ==
'''That is the feature working, and it is telling them why.''' The food is written first and nothing can unwrite it, so a share that cannot go out is reported rather than failing the log. The app shows the server's own sentence; ask the member to read it back:
- '''"You are not in a family group"'''. They left, or were removed.
- '''"Family meal sharing is turned off for your account"'''. Their own switch, in Preferences.
- '''"Nobody in your family group can receive meals right now"'''. Everybody else has opted out or a block is in play. Do not say which; see the section below.
- '''"Sharing meals with your family is part of Loopa Premium"'''. The group is not covering them. Check the organizer's subscription.
- '''Anything else'''. The offer genuinely failed to send. The food is logged; they can share it again from the row in their diary. If it repeats, escalate.
== "Can I send a saved meal without eating it?" ==
Yes. '''Health → Food → My Meals''', then '''Share''' on the meal. Nothing is written to their own day. A recipe saved as four servings is offered as one serving, not the whole batch. If a member reports the family being offered four times the calories, that is a defect worth escalating.
== "It says I need Premium to share" ==
Correct, and it is the '''group's own''' entitlement key, not a new one, so anybody actually covered by a live Family Group is already through it. A member seeing this is a member whose group is not covering them: check the organizer's subscription first, not the sharing feature.
'''Receiving and logging is free.''' If a member reports a paywall on '''logging''' a shared meal, that is a defect. Escalate it. Logging a shared meal is ordinary food logging.
== "I shared it and nobody got it" ==
Ask how many recipients the confirmation said. The count only ever includes members who '''can''' receive right now, and there are two silent exclusions:
- somebody who has turned family meal sharing '''off''';
- somebody who has '''blocked''' the sender, or whom the sender has blocked.
'''Neither side is told, and that is deliberate.''' Do not tell a member which of their relatives has opted out or blocked them. The whole point of both controls is that they are not announced. Say that the people shown are the ones able to receive right now.
If the count was '''zero''', the send is refused outright with "Nobody in your family group can receive meals right now" rather than looking like it worked.
== "The meal changed after I sent it" / "it didn't change" ==
It does not change, by design. The share is a '''copy taken at the moment of sending'''. Editing or deleting the original in the sender's own diary does not reach the recipients, and nothing a recipient logs reaches back to the sender.
A member expecting an edit to propagate is describing the feature working correctly. If they want the corrected version out, they send it again.
== "It disappeared before I logged it" ==
Seven days. Expiry is evaluated when the app reads the list '''and''' by a nightly sweep, so there is no window where a member sees a card that will not work.
Anything they already logged is untouched. Check their food log for the date rather than the share.
== "I logged it twice" / "logging did nothing" ==
The recipient row is claimed with a conditional update, so two devices tapping Log at the same moment produce '''one''' diary entry; the second gets a 409 and writes nothing. A member who says nothing happened has usually already logged it. Look for the entry on the date they chose, which defaults to the '''sender's''' date, not today.
== "The portion is wrong" ==
Portion is 0.1× to 10× and is '''refused''' outside that rather than quietly clamped. The numbers scale; the food names and drink types do not. A nutrient the original food never carried stays blank rather than becoming a scaled zero.
== "Somebody sent me something inappropriate" ==
Two paths, and both exist in the app:
- '''Report this meal''' on the card. It lands in the ordinary moderation queue as
category = family,type = family_meal_share, with the meal name in the description, and it clears the meal off their list at the same time. - '''Block the member''' from their profile. A blocked member's meals never reach them again, in either direction, and the block is not disclosed.
== "I turned it off and my meals vanished" ==
Hidden, not deleted. Turning the switch back on before those meals expire brings all of them back. Say that plainly. A member who thinks data was destroyed will not try the switch again.
== The switch, and what it is not ==
One setting, both directions, every group. It is '''free to change at any tier'''. It does '''not''' affect their Premium, their group membership, the shared pantry, or anything already in their diary.
It is reachable in three places, all writing the same value: '''You → Preferences''' in the app, '''Health → Settings''' on the web, and the '''Stop sharing meals''' button in Your Data.
== What to escalate ==
- A '''paywall on a free action''': logging, dismissing, the inbox, or the preference write.
- A member '''in a live group''' meeting the purchase sheet on share, where the organizer's subscription is genuinely active.
- A shared meal whose '''numbers do not match''' what the sender logged.
- Any sign that a '''non-member''' could open a share. That is a boundary defect, not a support question. Escalate immediately with the share id and both accounts.
== What is deliberately not built ==
- '''No photograph crosses accounts.''' The plate photo stays in the sender's own encrypted storage. A member asking to see the picture is asking for something that does not exist.
- '''No sender notification''' when a recipient logs or ignores. The sent view carries the tally.
- '''No web inbox.''' Sending and receiving are phone features; the web carries the on/off switch only.
'''Who this is for.''' Support staff taking tickets about family meal sharing: sending a meal to a Family Group, logging one that arrived, and the on/off switch. The member-facing guides are [https://loopa.mobieus.io/know/sharing-a-meal-with-your-family Sharing a meal with your family], [https://loopa.mobieus.io/know/logging-a-meal-your-family-shared Logging a meal your family shared] and [https://loopa.mobieus.io/know/family-meal-sharing-on-or-off Turning family meal sharing on or off]. == The shape of the feature, in one paragraph == A member sends a '''frozen copy''' of one of their own logged meals to the rest of their Loopa Family Group. Each recipient can log it (at any portion, on any past day, in any meal slot), modify it and reshare their version, or ignore it. What a recipient logs is their own diary entry from that moment on. A meal nobody acts on expires after seven days. == "I can't see the share button" == Four things have to be true, and they fail in this order: # '''The tenant has family groups.''' Loopa and dev do. Everywhere else the routes 404 and no client renders anything. # '''The member is in a Family Group.''' Not in one, no button. Point them at [https://loopa.mobieus.io/know/family-group-creating Creating a family group]. # '''Their sharing switch is on.''' You → Preferences → Family meal sharing. # '''They hold Premium.''' Every member of a live group does, through the group. A member whose organizer's subscription lapsed will meet the purchase sheet. The same four decide the '''Share with family?''' switch on the food they are adding, with one addition: it appears when '''logging''' a food, not when editing one already in the diary. Editing an entry deletes the old row and writes a new one, so a switch there would re-offer the same food every time somebody fixed a typo in it. Sharing an entry that already exists is its own control on the row. == "I turned the switch on and it logged but did not share" == '''That is the feature working, and it is telling them why.''' The food is written first and nothing can unwrite it, so a share that cannot go out is reported rather than failing the log. The app shows the server's own sentence; ask the member to read it back: * '''"You are not in a family group"'''. They left, or were removed. * '''"Family meal sharing is turned off for your account"'''. Their own switch, in Preferences. * '''"Nobody in your family group can receive meals right now"'''. Everybody else has opted out or a block is in play. Do not say which; see the section below. * '''"Sharing meals with your family is part of Loopa Premium"'''. The group is not covering them. Check the organizer's subscription. * '''Anything else'''. The offer genuinely failed to send. The food is logged; they can share it again from the row in their diary. If it repeats, escalate. == "Can I send a saved meal without eating it?" == Yes. '''Health → Food → My Meals''', then '''Share''' on the meal. Nothing is written to their own day. A recipe saved as four servings is offered as one serving, not the whole batch. If a member reports the family being offered four times the calories, that is a defect worth escalating. == "It says I need Premium to share" == Correct, and it is the '''group's own''' entitlement key, not a new one, so anybody actually covered by a live Family Group is already through it. A member seeing this is a member whose group is not covering them: check the organizer's subscription first, not the sharing feature. '''Receiving and logging is free.''' If a member reports a paywall on '''logging''' a shared meal, that is a defect. Escalate it. Logging a shared meal is ordinary food logging. == "I shared it and nobody got it" == Ask how many recipients the confirmation said. The count only ever includes members who '''can''' receive right now, and there are two silent exclusions: * somebody who has turned family meal sharing '''off'''; * somebody who has '''blocked''' the sender, or whom the sender has blocked. '''Neither side is told, and that is deliberate.''' Do not tell a member which of their relatives has opted out or blocked them. The whole point of both controls is that they are not announced. Say that the people shown are the ones able to receive right now. If the count was '''zero''', the send is refused outright with "Nobody in your family group can receive meals right now" rather than looking like it worked. == "The meal changed after I sent it" / "it didn't change" == It does not change, by design. The share is a '''copy taken at the moment of sending'''. Editing or deleting the original in the sender's own diary does not reach the recipients, and nothing a recipient logs reaches back to the sender. A member expecting an edit to propagate is describing the feature working correctly. If they want the corrected version out, they send it again. == "It disappeared before I logged it" == Seven days. Expiry is evaluated when the app reads the list '''and''' by a nightly sweep, so there is no window where a member sees a card that will not work. Anything they already logged is untouched. Check their food log for the date rather than the share. == "I logged it twice" / "logging did nothing" == The recipient row is claimed with a conditional update, so two devices tapping Log at the same moment produce '''one''' diary entry; the second gets a 409 and writes nothing. A member who says nothing happened has usually already logged it. Look for the entry on the date they chose, which defaults to the '''sender's''' date, not today. == "The portion is wrong" == Portion is 0.1× to 10× and is '''refused''' outside that rather than quietly clamped. The numbers scale; the food names and drink types do not. A nutrient the original food never carried stays blank rather than becoming a scaled zero. == "Somebody sent me something inappropriate" == Two paths, and both exist in the app: * '''Report this meal''' on the card. It lands in the ordinary moderation queue as `category = family`, `type = family_meal_share`, with the meal name in the description, and it clears the meal off their list at the same time. * '''Block the member''' from their profile. A blocked member's meals never reach them again, in either direction, and the block is not disclosed. == "I turned it off and my meals vanished" == Hidden, not deleted. Turning the switch back on before those meals expire brings all of them back. Say that plainly. A member who thinks data was destroyed will not try the switch again. == The switch, and what it is not == One setting, both directions, every group. It is '''free to change at any tier'''. It does '''not''' affect their Premium, their group membership, the shared pantry, or anything already in their diary. It is reachable in three places, all writing the same value: '''You → Preferences''' in the app, '''Health → Settings''' on the web, and the '''Stop sharing meals''' button in Your Data. == What to escalate == * A '''paywall on a free action''': logging, dismissing, the inbox, or the preference write. * A member '''in a live group''' meeting the purchase sheet on share, where the organizer's subscription is genuinely active. * A shared meal whose '''numbers do not match''' what the sender logged. * Any sign that a '''non-member''' could open a share. That is a boundary defect, not a support question. Escalate immediately with the share id and both accounts. == What is deliberately not built == * '''No photograph crosses accounts.''' The plate photo stays in the sender's own encrypted storage. A member asking to see the picture is asking for something that does not exist. * '''No sender notification''' when a recipient logs or ignores. The sent view carries the tally. * '''No web inbox.''' Sending and receiving are phone features; the web carries the on/off switch only.