Repository navigation
Conversation
tentamdin
commented
Sep 30, 2026
- ✏️ Edit or delete your prayer requests and intentions
- 📖 Added Yigchung
- 🔔 Group chat notifications now off by default (you choose to turn them on)
- 💬 New feedback option on the home screen
- 📅 Event page polish — reorganized organizer/join layout, cleaner prayer requests
- 🌐 Improved translations and language handling in the reader
- 🐛 Various fixes and refinements to onboarding and events
- Introduced a new feedback button in the HomeSharePrompt widget that opens a feedback URL. - Refactored the share button into a more generic PromptButton to accommodate both sharing and feedback actions. - Updated the build method to include localized labels for the new buttons.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- Added a new feedback system that allows users to submit feedback via a Discord webhook. - Introduced a feedback sheet UI for users to enter their feedback and attach images. - Updated localization files to support feedback-related strings in multiple languages. - Created a DiscordFeedbackClient to handle the submission of feedback reports. - Integrated feedback functionality into the HomeSharePrompt for easy access.
- Introduced a new localized string for "home_share_support" with the message "Your support helps our community grow." - Updated localization files for English, Hindi, Mongolian, Nepali, and Chinese to include the new string. - Modified the HomeSharePrompt widget to display the new support message below the share prompt.
- Updated the Android and iOS build workflows to include the DISCORD_FEEDBACK_WEBHOOK_URL secret. - Modified the create_env_files.sh script to output the DISCORD_FEEDBACK_WEBHOOK_URL in the .env files for development, staging, and production environments. - Enhanced the FeedbackSheet widget to ensure proper layout and usability when the keyboard is displayed, improving user experience for feedback submission. - Added unit tests for the FeedbackSheet to verify functionality and layout under various conditions.
- Added a new localized string for "feedback_images" across various languages including English, Hindi, Mongolian, Nepali, Chinese, and Tibetan. - Updated existing localization files to reflect the new string and modified related feedback UI components to incorporate the label. - Enhanced the FeedbackSheet widget to improve user experience by displaying the new feedback images label.
…guages - Added localized strings for "home_share_support" in Tibetan, Hindi, Mongolian, Nepali, and Chinese. - Updated the corresponding localization files to reflect the new translations. - Ensured the HomeSharePrompt widget displays the updated support message in each language.
…nt list's language Issue #855 (Tara event translation settings). - A translated edition opened under its original (the Tara event's English and Chinese plans, most chant lists) is now this visit's default, not an override. A saved "translation off" stays off, and a remembered translation language or edition replaces the opened one. - In an event, a translated edition keeps the original on, following the event rule. Plans and chants still show the translation alone by default. - A chant picked in a language, from the chant list or a collection item, shows that language whatever the app language. The picked edition's layer stays on until the person changes that switch in the sheet. - Version resolving prefers the remembered edition, then the opened one, then the first. - Reader README updated. Settings stay on the device; syncing them across devices needs a backend endpoint.
Greptile review on #868: only readerOpenedTranslationNeedsRefill was tested, not the refill it triggers. - Split ReaderInitialLayoutApplier.maybeApply: it reads the loaded text and hands off to applyForText (@VisibleForTesting), so tests can run the applier without building a ReaderNotifier. Behaviour unchanged. - Widget tests open the English edition under its Tibetan root from an event and run the applier: nothing saved keeps it; a saved edition or language replaces it; a saved "translation off" stays off; a saved language with nothing to show puts the opened edition back. - Moved the in-memory settings datasource to test/features/reader/fakes/ so both test files share it.
Review fixes on #868. - A chant opened from a language list is pinned to that language as soon as the translated edition opens, not once the text's languages load, so a saved "translation off" no longer shows the Tibetan first. - fillSecondaryWithLanguages keeps a slot already in the candidate's language unless the remembered edition is offered in that language; re-resolving would only clear the slot and put the same edition back.
…55-develop fix(reader): keep saved picks on translated editions and show the chant list's language
… live-sync reader The missed-days count runs from Day 1 regardless of when someone joined, so late joiners of the Tara event saw a backlog of days they never signed up for. PlanDetails now leaves the badge out whenever it was opened from an event, for both the online layout under the stream and the in-person plain layout. My Plans and the home series rows keep it. Picking a search result replaced the reader route without the event, so the live pill, prayer requests and the follow position all vanished. ReaderAppBarOverlay takes an optional search callback and hides the button when it is null; ReaderScreen passes null only while the reader follows a live recitation, so online attendees and ordinary readers keep search. Tests: the live-event PlanDetails test takes a start date, completion map, optional event id and view size, with three new cases (online, in-person, and the same plan outside an event still counting); a new ReaderAppBarOverlay test covers the bar with and without search.
… repeat
The Tolgee pull put the zh translation of connect_event_about_empty into the English file, and translated connect_event_every_date in zh as "Enter {date}".
Stripping ":00" from the formatted time turned "15:00" into a bare "15" in zh and mn. Drop the minutes from the locale's pattern instead, and only for clocks with a day period.
…omers Follow the new event design: the when/where card sits above the description in About, Online is always link-coloured, and tabs read Accumulations, About, Videos. The opening tab is About for newcomers and the accumulation for users who have already joined (is_joined), fixed on first load so joining on the page doesn't switch tabs.
Chore: localization pull from tolgee
- Added new localization strings for language selection and onboarding descriptions across multiple languages. - Updated onboarding screen layouts to improve user experience, including the addition of practice and connection features. - Refactored onboarding screen components for better code organization and readability.
…ed layout - Updated OnboardingScreen5 to use CustomScrollView, enhancing the layout structure. - Maintained existing features while improving scroll behavior and overall user experience.
The Tolgee Sync workflow ran the new `intentions` step before `pull`, so a timeout or error from GET /intentions failed the job and skipped the pull and the sync PR even when Tolgee was healthy. The step is now continue-on-error: the pull and PR go ahead and the missing keys are created on the next run. docs/tolgee.md says the same. The missed-days tests built their start date by subtracting 72 hours from now, which can land on another calendar date across a daylight-saving change. They now step back three calendar days. Both from the Greptile review of #879. Its third finding, that existing intention translations would disappear, does not apply: the old English-text keys held only stale English values and no other language, and the slug keys are already published in all six.
- Live count is auto-disposed and restarts from a newer server count - Delete confirm and failure use prayer request wording - Save stays disabled until an edit changes something - Supporters sheet shows the request's latest text and intention
The intentions step is continue-on-error so an API outage cannot block the pull and the sync PR. That also let a failed key creation pass unnoticed. A final step now fails the run when that step failed, after the pull and the PR have gone out, and the doc says so.
Chore: Prayer request edit and delete
When the yigchung request is slow or fails, the page opens without marks. It was then cached for the full 48h, so the marks stayed missing on later opens. Such pages are now flagged partial and cached for 5 minutes: still served offline, refetched whole soon after when online.
A page saved without its yigchung marks was cached for 5 minutes, and expired entries are deleted on app start, so it was gone for offline reading after a restart. Save it for the usual 48h with an is_partial flag instead; while online, opening it fetches the whole page, falling back to the saved one if that fails.
A saved page without yigchung marks made the reader wait on a full network fetch before showing it. It now opens straight away and is refreshed in the background (one refresh per page at a time). A page fetched without marks no longer replaces a live saved page that has them, so a slower refresh finishing last cannot wipe the marks.
Feat: Add Yigchung
- Tradition step uses checkboxes: pick one or more; "Show me everything" checks every path. Each checked tradition is saved; a retry after a partial failure only resends the ones that failed. - Guard page advances per page so a double tap cannot skip a step, and block repeat taps on the language Continue while it saves. - Let the welcome screen scroll when it cannot fit. - Remove the unused how-it-works screen, old onboarding widgets and their l10n keys; regenerate l10n.
- Freeze tradition choices while a save is in flight, so a late check or uncheck cannot be skipped by the save and still advance the flow. - On retry, delete traditions this flow saved that the user has since unchecked, so they do not stay on the server.
…ified chore(onboarding): enhance onboarding language and tradition screens
fix(events): Tara event card — hide missed days, drop live-reader search, translate prayer intentions by slug
# Conflicts: # lib/features/group_chat/presentation/widgets/new_prayer_request_sheet.dart
Chore: event small changes
fix: padding on the poem and red dot time
|
| echo "CLARITY_ENABLED=${CLARITY_ENABLED-}" | ||
| # All flavors post to the same channel; the message carries no environment | ||
| # tag, so feedback from a test build is indistinguishable from a real one. | ||
| echo "DISCORD_FEEDBACK_WEBHOOK_URL=${DISCORD_FEEDBACK_WEBHOOK_URL-}" |
There was a problem hiding this comment.
Feedback credential ships in builds
The build writes the Discord webhook URL into the .env files bundled with the app. Anyone with a build can extract that URL and post directly to the feedback channel without using the app. Keep the webhook on a server and send feedback through that server.
How this was verified: The build bundles the webhook URL as an asset, and the feedback client posts directly to that URL.
Prompt To Fix With AI
This is a comment left during a code review.
Path: ci/scripts/create_env_files.sh
Line: 72
Comment:
**Feedback credential ships in builds**
The build writes the Discord webhook URL into the `.env` files bundled with the app. Anyone with a build can extract that URL and post directly to the feedback channel without using the app. Keep the webhook on a server and send feedback through that server.
**How this was verified:** The build bundles the webhook URL as an asset, and the feedback client posts directly to that URL.
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.| onSearchPressed: | ||
| liveEventId == null ? () => _handleSearch(context, state) : null, |
There was a problem hiding this comment.
Search stays hidden after recitation
The reader hides search whenever it was opened for a live recitation. Ending that session does not change _liveEventId, so someone who keeps reading still cannot search the text. Show search once the reader no longer follows the live session.
Prompt To Fix With AI
This is a comment left during a code review.
Path: lib/features/reader/presentation/screens/reader_screen.dart
Line: 771-772
Comment:
**Search stays hidden after recitation**
The reader hides search whenever it was opened for a live recitation. Ending that session does not change `_liveEventId`, so someone who keeps reading still cannot search the text. Show search once the reader no longer follows the live session.
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.| try { | ||
| await _dio.post<void>( | ||
| url, | ||
| data: form, | ||
| queryParameters: const {'wait': 'true'}, | ||
| ); | ||
| } on DioException catch (e) { | ||
| throw FeedbackException(_classify(e), e); |
There was a problem hiding this comment.
The new tests check the payload and an unset webhook, but none calls send with a configured webhook and images. Add a test that checks the form the client posts and how it reads error responses. Otherwise, a broken upload or error message could pass the tests unnoticed.
Prompt To Fix With AI
This is a comment left during a code review.
Path: lib/features/feedback/data/discord_feedback_client.dart
Line: 80-87
Comment:
**Feedback uploads lack a test**
The new tests check the payload and an unset webhook, but none calls `send` with a configured webhook and images. Add a test that checks the form the client posts and how it reads error responses. Otherwise, a broken upload or error message could pass the tests unnoticed.
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
| } | ||
| } | ||
| }, | ||
| "event_prayer_people_praying": "{count, plural,\none {# व्यक्ति प्रार्थना कर रहा है}\nother {}\n}", |
There was a problem hiding this comment.
Hindi supporter count disappears
When two or more people support a prayer request, the Hindi event_prayer_people_praying message uses an empty other branch. The request tile and supporters sheet then show no count. Give that branch a message that includes the count.
| "event_prayer_people_praying": "{count, plural,\none {# व्यक्ति प्रार्थना कर रहा है}\nother {}\n}", | |
| "event_prayer_people_praying": "{count, plural,\none {# व्यक्ति प्रार्थना कर रहा है}\nother {{count} व्यक्ति प्रार्थना कर रहे हैं}\n}", |
Prompt To Fix With AI
This is a comment left during a code review.
Path: lib/core/l10n/app_hi.arb
Line: 1176
Comment:
**Hindi supporter count disappears**
When two or more people support a prayer request, the Hindi `event_prayer_people_praying` message uses an empty `other` branch. The request tile and supporters sheet then show no count. Give that branch a message that includes the count.
```suggestion
"event_prayer_people_praying": "{count, plural,\none {# व्यक्ति प्रार्थना कर रहा है}\nother {{count} व्यक्ति प्रार्थना कर रहे हैं}\n}",
```
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.| } | ||
| } | ||
| }, | ||
| "event_prayer_people_praying": "{count, plural,\nother {# མིས་སྨོན་ལམ་འདེབས་བཞིན་ཡོད}\n}", |
There was a problem hiding this comment.
The new prayer-count messages use # where the number should go in Tibetan, Chinese, Mongolian, and Nepali. Their generated text keeps the hash mark, so readers see # instead of the number of people praying. Use the {count} placeholder in these messages.
Prompt To Fix With AI
This is a comment left during a code review.
Path: lib/core/l10n/app_bo.arb
Line: 1167
Comment:
**Prayer count shows a hash**
The new prayer-count messages use `#` where the number should go in Tibetan, Chinese, Mongolian, and Nepali. Their generated text keeps the hash mark, so readers see `#` instead of the number of people praying. Use the `{count}` placeholder in these messages.
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.|
Want your agent to iterate on Greptile's feedback? Try greploops. |