Commit graph

71 commits

Author SHA1 Message Date
ggurdin
aa2496dfee
feat: add feedback flag to analytics activities (#5829) 2026-02-26 15:27:23 -05:00
ggurdin
2a17b401ee
chore: pause activity timer while loading activities (#5809) 2026-02-24 16:57:24 -05:00
ggurdin
fd319aa105
fix: throw exception if no activities can be loaded in analytics practice session (#5799) 2026-02-24 15:28:17 -05:00
ggurdin
c1b88c6dbd
fix: centralize activity constructs type in ActivityTypeEnum, skip over invalid morph uses (#5767) 2026-02-23 11:05:07 -05:00
ggurdin
117a03089e
5720 vocab practice should have feedback flag (#5761)
* chore: split up analytics activity page widgets into separate files

* started analytics practice refactor

* refactor how UI updates are triggered in analytics practice page

* some fixes
2026-02-20 13:25:21 -05:00
ggurdin
13700d9a9a
chore: skip short audio in audio practice (#5749) 2026-02-18 15:10:56 -05:00
ggurdin
f7539c184f
5721 practice example message improvements (#5748)
* organized analytics practice session repo

* refactor target generation for grammar error activities

* improve grammar error target generation

* more improvements to target generation
2026-02-18 14:55:54 -05:00
ggurdin
edcc1e9b43
fix: clear last result on start new file search (#5739) 2026-02-18 10:43:06 -05:00
avashilling
03745fff89
5702 audio practice tweaks (#5724)
* feat: add transcription and translation to audio practice

* fix: make sure answer form matches word in audio

and optimize distractor/answer selection with one pass through the list

* feat: audio practice progress bar

* fix: simplify audio logic
2026-02-18 09:52:15 -05:00
ggurdin
58513051f7
fix: always pass pos and morph when available on request TTS (#5716) 2026-02-16 16:00:28 -05:00
wcjord
8a3979c61b
feat: unified use-type-aware practice scoring (#5703)
* feat: unified use-type-aware practice scoring on ConstructUses

- Add practiceScore() and practiceTier to ConstructUses for shared
  scoring across message practice and standalone practice
- Add isChatUse, isAssistedChatUse, isIncorrectPractice getters to
  ConstructUseTypeEnum with exhaustive switches
- Add PracticeTier enum (suppressed/active/maintenance)
- Wire into PracticeSelectionRepo and AnalyticsPracticeSessionRepo
- 28 unit tests covering tier classification, scoring, and ordering

Closes #5700

* formatting, fix linting issue

* move some stuff around

---------

Co-authored-by: ggurdin <ggurdin@gmail.com>
2026-02-16 12:13:46 -05:00
ggurdin
3537cd5fd4
feat: add language indicators to analytics database entries (#5692)
* feat: add language indicators to analytics database entries

* better handling for database reinit

* don't clear database is last update not set
2026-02-13 15:06:21 -05:00
avashilling
1de440156c
feat: unsubscribed page in vocab practice (#5694)
* feat: unsubscribed page in vocab practice

* fix uncaught unsubscribed error

---------

Co-authored-by: ggurdin <ggurdin@gmail.com>
2026-02-13 14:36:40 -05:00
Ava Shilling
a05796e6de fix: give XP to clicked choice in audio practice
Or, upon wrong click give XP to chosen activity token
2026-02-11 16:46:38 -05:00
Ava Shilling
526681255e chore: shuffle tokens before choosing answers 2026-02-11 15:50:50 -05:00
Ava Shilling
c1b18ab29c chore: dispose audio player between questions
by adding a valuekey, so that the audio stops playing during next question
2026-02-11 15:13:47 -05:00
Ava Shilling
ce83b928cb chore: remove unused audio choice card 2026-02-11 15:06:58 -05:00
Ava Shilling
044ae521d2 chore: dont allow reclicking choices 2026-02-11 15:06:42 -05:00
ggurdin
e8428783e6
Fluffychat merge 2 (#5590)
* build: Reenable shrink resources and minify in gradle

* build: (deps): bump image from 4.6.0 to 4.7.1

Bumps [image](https://github.com/brendan-duncan/image) from 4.6.0 to 4.7.1.
- [Changelog](https://github.com/brendan-duncan/image/blob/main/CHANGELOG.md)
- [Commits](https://github.com/brendan-duncan/image/commits)

---
updated-dependencies:
- dependency-name: image
  dependency-version: 4.7.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build: (deps): bump file_picker from 10.3.7 to 10.3.8

Bumps [file_picker](https://github.com/miguelpruivo/flutter_file_picker) from 10.3.7 to 10.3.8.
- [Release notes](https://github.com/miguelpruivo/flutter_file_picker/releases)
- [Changelog](https://github.com/miguelpruivo/flutter_file_picker/blob/master/CHANGELOG.md)
- [Commits](https://github.com/miguelpruivo/flutter_file_picker/compare/v10.3.7...v10.3.8)

---
updated-dependencies:
- dependency-name: file_picker
  dependency-version: 10.3.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat: Improved search

* build: Use matrix sdk vom pub.dev again

* chore: Follow up better search

* build: (deps): bump image from 4.7.1 to 4.7.2

Bumps [image](https://github.com/brendan-duncan/image) from 4.7.1 to 4.7.2.
- [Changelog](https://github.com/brendan-duncan/image/blob/main/CHANGELOG.md)
- [Commits](https://github.com/brendan-duncan/image/commits)

---
updated-dependencies:
- dependency-name: image
  dependency-version: 4.7.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: Make cross signing self sign mandatory for bootstrap

* chore: Update user device keys before creating bootstrap

* fix: Better wait for secrets after verification bootstrap

* refactor: Remove native imaging and enable web worker

* refactor: Remove unused html onfocus streams

* build: (deps): bump flutter_foreground_task from 9.1.0 to 9.2.0

Bumps [flutter_foreground_task](https://github.com/Dev-hwang/flutter_foreground_task) from 9.1.0 to 9.2.0.
- [Changelog](https://github.com/Dev-hwang/flutter_foreground_task/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Dev-hwang/flutter_foreground_task/commits)

---
updated-dependencies:
- dependency-name: flutter_foreground_task
  dependency-version: 9.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(translations): Translated using Weblate (Uzbek)

Currently translated at 99.7% (823 of 825 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/uz/

* chore(translations): Translated using Weblate (Russian)

Currently translated at 99.8% (824 of 825 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/ru/

* chore(translations): Translated using Weblate (Norwegian Bokmål)

Currently translated at 90.9% (750 of 825 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/nb_NO/

* chore(translations): Translated using Weblate (Galician)

Currently translated at 100.0% (825 of 825 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/gl/

* chore(translations): Translated using Weblate (Basque)

Currently translated at 99.7% (823 of 825 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/eu/

* chore(translations): Translated using Weblate (Ukrainian)

Currently translated at 100.0% (825 of 825 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/uk/

* chore(translations): Translated using Weblate (Estonian)

Currently translated at 100.0% (825 of 825 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/et/

* chore(translations): Translated using Weblate (Dutch)

Currently translated at 100.0% (825 of 825 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/nl/

* chore(translations): Translated using Weblate (Russian)

Currently translated at 100.0% (825 of 825 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/ru/

* chore(translations): Translated using Weblate (Spanish)

Currently translated at 95.2% (788 of 827 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/es/

* chore(translations): Translated using Weblate (Spanish)

Currently translated at 96.3% (797 of 827 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/es/

* chore(translations): Translated using Weblate (Russian)

Currently translated at 100.0% (825 of 825 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/ru/

* chore(translations): Translated using Weblate (Russian)

Currently translated at 100.0% (825 of 825 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/ru/

* fix: Broken ruzzian plurals

* chore(translations): Translated using Weblate (Norwegian Bokmål)

Currently translated at 91.2% (753 of 825 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/nb_NO/

* chore(translations): Translated using Weblate (Bengali)

Currently translated at 4.5% (38 of 827 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/bn/

* chore(translations): Translated using Weblate (French)

Currently translated at 82.3% (679 of 825 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/fr/

* build: (deps): bump translations_cleaner from 0.0.5 to 0.1.0

Bumps [translations_cleaner](https://github.com/Chinmay-KB/translations_cleaner) from 0.0.5 to 0.1.0.
- [Changelog](https://github.com/Chinmay-KB/translations_cleaner/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Chinmay-KB/translations_cleaner/commits)

---
updated-dependencies:
- dependency-name: translations_cleaner
  dependency-version: 0.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(translations): Translated using Weblate (German)

Currently translated at 99.2% (821 of 827 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/de/

* chore(translations): Translated using Weblate (Estonian)

Currently translated at 100.0% (827 of 827 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/et/

* build: Bump version to 2.4.0

* build: (deps): bump sqflite_common_ffi from 2.3.6 to 2.3.7+1

Bumps [sqflite_common_ffi](https://github.com/tekartik/sqflite) from 2.3.6 to 2.3.7+1.
- [Commits](https://github.com/tekartik/sqflite/compare/sqflite_common_ffi_v2.3.6...sqflite_common_ffi/v2.3.7)

---
updated-dependencies:
- dependency-name: sqflite_common_ffi
  dependency-version: 2.3.7+1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(translations): Translated using Weblate (Czech)

Currently translated at 66.1% (547 of 827 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/cs/

* chore(translations): Translated using Weblate (Czech)

Currently translated at 72.7% (602 of 827 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/cs/

* chore(translations): Translated using Weblate (German)

Currently translated at 99.8% (826 of 827 strings)

Translation: FluffyChat/Translations
Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/de/

* chore: Add security.md file

* fix: Locale unlocalized strings

* build: (deps): bump matrix from 4.1.0 to 5.0.0

Bumps [matrix](https://github.com/famedly/matrix-dart-sdk) from 4.1.0 to 5.0.0.
- [Release notes](https://github.com/famedly/matrix-dart-sdk/releases)
- [Changelog](https://github.com/famedly/matrix-dart-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/famedly/matrix-dart-sdk/compare/v4.1.0...v5.0.0)

---
updated-dependencies:
- dependency-name: matrix
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: Notifications on web correctly managed when tab not focused

* chore: Add changelog for android

* chore: Remove duplicated localization

* fix: Sign in label

* chore: Versionize fcm shared isolate

* build: Remove unused packag

* build: (deps): bump package_info_plus from 8.3.1 to 9.0.0

Bumps [package_info_plus](https://github.com/fluttercommunity/plus_plugins/tree/main/packages/package_info_plus) from 8.3.1 to 9.0.0.
- [Release notes](https://github.com/fluttercommunity/plus_plugins/releases)
- [Commits](https://github.com/fluttercommunity/plus_plugins/commits/package_info_plus-v9.0.0/packages/package_info_plus)

---
updated-dependencies:
- dependency-name: package_info_plus
  dependency-version: 9.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat: Display particle animation on login page

* chore: Use fixed version of fcm shared isolate

* fix: apk crash on some platforms due new flutter version

* chore: Correct kotlin format

* fix iOS notifications

* fluffychat merge

* fluffychat merge

* fluffychat merge

* fluffychat merge

* fluffychat merge

* fluffychat merge

* add missing type annotations

* update matrix version

* fluffychat merge

* fluffychat merge

* fix notification on click actions

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Christian Kußowski <c.kussowski@famedly.com>
Co-authored-by: Krille-chan <christian-kussowski@posteo.de>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: BeMeritus <bemerituss@gmail.com>
Co-authored-by: Frank Paul Silye <frankps@gmail.com>
Co-authored-by: josé m. <correoxm@disroot.org>
Co-authored-by: xabirequejo <xabi.rn@gmail.com>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Priit Jõerüüt <jrthwlate@users.noreply.hosted.weblate.org>
Co-authored-by: Jelv <post@jelv.nl>
Co-authored-by: Дмитрий Михирев <bizdelnick@gmail.com>
Co-authored-by: Kimby <kimbyqs@gmail.com>
Co-authored-by: Christian <christian-pauly@posteo.de>
Co-authored-by: Kom nake <kominak310@svcache.com>
Co-authored-by: hugues de keyzer <komputilisto@hugues.info>
Co-authored-by: nautilusx <translate@disroot.org>
Co-authored-by: Šebestová <ka.sebestova.cz@gmail.com>
2026-02-10 08:01:12 -05:00
ggurdin
e123cad092
merge prod into main 2026-02-09 16:12:58 -05:00
ggurdin
6b33ae6ce8
Merge main into prod (#5603)
* fix: restrict height of dropdowns in user menu popup

* chore: make sso button order consistent

* fix: use latest edit to make representations

* chore: show tooltip on full phonetic transcription widget

* chore: shrink tooltip text size

Also give it maxTimelineWidth in chat to match other widgets placement, and give slightly less padding between icons

* feat: show audio message transcripts in vocab practice

* moved some logic around

* chore: check for button in showMessageShimmer

* fix: show error message when not enough data for practice

* fix: clear selected token in activity vocab display on word card dismissed

* chore: throw expection while loading practice session is user is unsubscribed

* fix: account for blocked and capped constructs in analytics download model

* chore: save voice in TTS events and re-request if requested voice doesn't match saved voice

* Fix grammar error null error

and only reload current question upon encountering error

* fix: filter RoomMemberChangeType.other events from timeline

* chore: store font size settings per-user

* fix: oops, don't return null from representationByLanguage (#5301)

* feat: expose construct level up stream

* 5259 bot settings   language settings (#5305)

* feat: add voice to user model

* update bot settings on language / learning settings update

* use room summary to determine member count

* translations

* chore: Remove sentence-level pronunciation (#5306)

* fix: use sync stream to update analytics requests indicator (#5307)

* fix: disable text scaling in learning progress indicators (#5313)

* fix: don't auto-play bot audio message if another audio message is playing (#5315)

* fix: restrict when analytics practice session loss popup is shown (#5316)

* feat: rise and fade animation for construct levels

* fix: hide info about course editing in join mode (#5317)

* chore: update knock copy (#5318)

* fix: switch back to flutter's built in dropdown for cerf level dropdown menu (#5322)

* fix: fix public room sheet navigation (#5323)

* fix: update some Russion translations (#5324)

* feat: bring back old course pages (#5328)

* fix: add more space between text and underline for highlighted tokens (#5332)

* chore: close emoji picker on send message (#5336)

* chore: add copy asking user to search for users in invite public tab (#5338)

* chore: hide invite all in space button if everyone from space is already in room (#5340)

* fix: enable language mismatch popup for activity langs that match l1 (#5341)

* chore: remove set status button in settings (#5343)

* chore: hide option to seperate chat types (#5345)

* add translations for error questions

and some spacing tweaks to improve layout and overflow issues

* forgot to push file and formatting

* feat: enable emoji search (#5350)

* re-enable choice notifier

* fix syntax

* fix: reset audio player after auto-playing bot voice message (#5353)

* fix: set explicit height for expanded nav rail item section (#5356)

* fix: move onTap call up a level in widget tree (#5359)

* chore: increase hitbox size of mini analytics navigation buttons

* chore: clamp number of points shown in gain points animation

* chore: reverse change to cefr level display in saved activities

* chore: empty analytics usage dots display update

* simplify growth animation

remove stream, calculate manually with the analytics feedback for XP, new vocab and new morphs

* chore: update disabled toolbar button color

* cleanup

* Limit activity role to 2 lines, use ellipses if needed

* fetch translation on activity target generation

* Disable l1 translation for audio messages

* fix: use token offset and length to determine where to highlight in example messages

* Hide view status toggle in style view

* Hide status message when viewing profile

* Add tooltip to course analytics button

* feat: add progress bar to IT bar

* chore: show loading indicator on recording dialog start up

* fix: prevent out-of-date lemma loading futures from overriding new futures

* chore: If IGC change is different by a whitespace, apply automatically

* chore: prevent UI block on save activity

* chore: Darken Screen further on Activity End Popup

* chore: show shimmer on full activity role indicator

* fix: use event stream for construct level animation

* remove async function for analytics in chat

and sort imports

* chore: block notification permission request on app launch

* fix: uncomment shouldShowActivityInstructions

* feat: use image as activity background

- add switch tile in settings to toggle
- if set, remove image from activity summary widget

* feat: add alert to notification settings to enable notifications

* translations

* add back bot settings widgets

* chore: If link, treat as regular message

* feat: highlight chat with support

* fix: reset bypassExitConfirmation on session-level error

* Add default images when activity doesn't have image

* feat: Bring back language setting in bot avatar popup

* chore: better match tooltip style

* chore: update constant in level equation to make 6000 xp ~level 10

* chore: keep input focused after send

* chore: if mobile keyboard open on show toolbar, close it and still show toolbar

* fix: add padding to bottom of main chat list to make all items visible

* chore: Expand role card if needed/available space

* fix: account for smaller screens

* fix: remove public course route between find a course and public course preview

* fix: prevent avatar flickering on expand nav rail

* fix: only allow one line of text in grammar match choices

* chore: Default courses to public but restricted

* chore: Keep cursor as hand when mousing over word-card emojis

* fix: use unique storage key for morph info cache

* fix: give morph definition a fixed height to prevent other element from jumping around

* chore: Search for course filter not saved when open new course page

* fix: Prevent Grammar Practice Blank Fill-Ins (#5464)

* feat: filter out new constructs with category 'other' (#5454)

* fix: always show scroll bars in activity user summary widgets (#5465)

* fix: distinguish constuct level up animations by construct ID instead of count (#5468)

* chore: Keep Tooltip until word enters Catagory (#5469)

* feat: filter 'other' constructs from existing analytics data (#5473)

* fix: don't include error span as choice in grammar error practice if the translation contains the error span (#5474)

* chore: translation button style update

translation appears in message bubble like in chat with a pressable button and sound effect

* 5415 if invalid lemma definition breaks practice (#5466)

* skip error causing lemmas in practice

* update progress on skipping

and play audio/update value after loading question, so a skipped questions isn't displayed

* remove unnecessary line and comment

* fix: don't label room as activity room if activityID is null (#5480)

* chore: onboarding updates (#5485)

* chore: update logic for which bot chats are targeted for bot options update on language update, add retry logic (#5488)

* chore: ensure grammar category has example and multiple choices

* chore: add subtitle to chat with support tile (#5494)

* Use vocab symbol for newly collected words (#5489)

* Show different course plan page if 500 error is detected (#5478)

* Show different course plan page if 500 error is detected

* translations

---------

Co-authored-by: ggurdin <ggurdin@gmail.com>

* chore: In user search, append needed decorators (#5495)

* Move login/signup back buttons closer to center of screen (#5496)

* fix: better message offset defaults (#5497)

* chore: more onboarding tweaks (#5499)

* chore: don't give normalization errors or single choices

* chore: update room summary model (#5502)

* fix: Don't shimmer disabled translation button (#5505)

* chore: skip recently practiced grammar errors

wip: only partially works due to analytics not being given to every question

* feat: initial updates to public course preview page (#5453)

* feat: initial updates to public course preview page

* chore: account for join rules and power levels in RoomSummaryResponse

* load room preview in course preview page

* seperate public course preview page from selected course page

* display course admins

* Add avatar URL and display name to room summary. Get courseID from room summary

* don't leave page on knock

* fix: on IT closed, only replace source text if IT manually dismissed to prevent race condition with accepted continuance stream for single-span translation (#5510)

* fix: reset IT progress on send and on edit (#5511)

* chore: show close button on error snackbar (#5512)

* fix: make analytics practice view scrollable, fix heights of top elements to prevent jumping around (#5513)

* fix: save activities to analytics room for corresponding language (#5514)

* chore: make login and signup views more consistent (#5518)

* fix: return capped uses

allows all grammar error targets to be searched for recent uses and filtered out, even maxed out ones

* fix: prevent activity title from jumping on phonetic transcription load (#5519)

* chore: fix inkwell border radius in activity summary (#5520)

* fix: listen to scroll metrics to update scroll down button (#5522)

* chore: update copy for auto-igc toggle (#5523)

* chore: error on empty audio recording (#5524)

* chore: show correct answer hint button

and don't show answer description on selection of correct answer

* make grammar icons larger and more spaced

* chore: update bot target gender on user settings gender update (#5528)

* fix: use correct stripe management URL in staging environment (#5530)

* fix: update activity analytics stream on reinit analytics (#5532)

* chore: add padding to extended activity description (#5534)

* chore: don't add artificial profile to DM search results (#5535)

* fix: update language chips materialTapTargetSize (#5538)

* fix: add exampleMessage to AnalyticsActivityTarget

and remove it from PracticeTarget

* fix: only call getUses once in fetchErrors

* feat: make deeplinks work for public course preview page (#5540)

* fix: use stream to always update saved activity list on language update (#5541)

* fix: use MorphInfoRepo to filter valid morph categories

* feat: track end date on cancel subscription click and refresh page when end date changes (#5542)

* initial work to add enable notifications to onboarding

* notification page navigation

* chore: add morphExampleInfo to activity model

* fix: missing line

* fix login redirect

* move try-catch into request permission function

* fix typos, dispose value notifier

* fix: update UI on reply / edit event update

* fix: update data type of user genders in bot options model

* fix: move use activity image background setting into pangea user-specific style settings

* fix: one click to close word card in activity vocab

* fix: don't show error on cancel add recovery email

* fix: filter edited events from search results

* feat: add new parts of speech (idiom, phrasal verb, compound) and update localization (#5564)

* fix: include stt for audio messages in level summary request

* fix: don't pop from language selection page when not possible

* fix: add new parts of speech to function for getting grammar copy (#5586)

* chore: bump version to 4.1.17+7

---------

Co-authored-by: Ava Shilling <165050625+avashilling@users.noreply.github.com>
Co-authored-by: Kelrap <kel.raphael3@outlook.com>
Co-authored-by: Kelrap <99418823+Kelrap@users.noreply.github.com>
Co-authored-by: wcjord <32568597+wcjord@users.noreply.github.com>
2026-02-09 15:56:43 -05:00
avashilling
507fee84fe
5327 audio activities (#5596)
* feat: sentence based audio activities

WIP

* chore: fix up audio activities

- add continue button and show example message upon selecting correct answers
- token and lemma fixes
- fully fetch audio before displaying activity
- don't repeat messages in the same session

* chore: cleanup unnecessary widget

* merge conflict
2026-02-09 15:42:01 -05:00
avashilling
27776a2896
5582 grammar tweaks (#5594)
* feat: add hint counter for grammar activities

- fade out hint button to morph info in category questions

- animated transitions for smoother hint display

* chore: copy change and variable completion message

* chore: only fetch necessary types in fetchErrors

to end up with more grammar errors, but still only use one getUses call

* translations

---------

Co-authored-by: ggurdin <ggurdin@gmail.com>
2026-02-09 10:32:50 -05:00
Ava Shilling
9717719ec1 Merge branch 'main' into 5421-grammar-practice-todos 2026-02-02 11:34:21 -05:00
Ava Shilling
d1c6effb2a chore: add morphExampleInfo to activity model 2026-02-02 11:33:32 -05:00
Ava Shilling
10197ae209 fix: use MorphInfoRepo to filter valid morph categories 2026-01-30 14:23:09 -05:00
Ava Shilling
eba8435fdd fix: only call getUses once in fetchErrors 2026-01-30 13:10:10 -05:00
Ava Shilling
3cf6918394 fix: add exampleMessage to AnalyticsActivityTarget
and remove it from PracticeTarget
2026-01-30 12:41:46 -05:00
Ava Shilling
a84ded27af make grammar icons larger and more spaced 2026-01-29 16:48:25 -05:00
Ava Shilling
0cb3d472c7 chore: show correct answer hint button
and don't show answer description on selection of correct answer
2026-01-29 16:17:55 -05:00
Ava Shilling
aa597b8698 Merge branch 'main' into 5421-grammar-practice-todos 2026-01-29 14:36:00 -05:00
ggurdin
3630b84c7d
fix: prevent activity title from jumping on phonetic transcription load (#5519) 2026-01-29 14:15:51 -05:00
Ava Shilling
1f47aecb13 fix: return capped uses
allows all grammar error targets to be searched for recent uses and filtered out, even maxed out ones
2026-01-29 14:13:14 -05:00
ggurdin
85a2b9efe9
fix: make analytics practice view scrollable, fix heights of top elements to prevent jumping around (#5513) 2026-01-29 12:45:08 -05:00
Ava Shilling
fbb43fee6e chore: skip recently practiced grammar errors
wip: only partially works due to analytics not being given to every question
2026-01-28 17:14:18 -05:00
Ava Shilling
f486269ee1 chore: don't give normalization errors or single choices 2026-01-28 15:39:38 -05:00
Ava Shilling
5f540e9d16 chore: ensure grammar category has example and multiple choices 2026-01-28 12:30:16 -05:00
Ava Shilling
44673a4149 Merge branch 'main' into 5421-grammar-practice-todos 2026-01-28 09:19:07 -05:00
avashilling
fc277350f5
5415 if invalid lemma definition breaks practice (#5466)
* skip error causing lemmas in practice

* update progress on skipping

and play audio/update value after loading question, so a skipped questions isn't displayed

* remove unnecessary line and comment
2026-01-28 09:11:03 -05:00
Ava Shilling
44566e4374 chore: translation button style update
translation appears in message bubble like in chat with a pressable button and sound effect
2026-01-27 17:03:05 -05:00
ggurdin
0583409b09
fix: don't include error span as choice in grammar error practice if the translation contains the error span (#5474) 2026-01-27 16:50:34 -05:00
ggurdin
61f18aa403
fix: Prevent Grammar Practice Blank Fill-Ins (#5464) 2026-01-27 14:43:02 -05:00
ggurdin
e2ec54a780
fix: give morph definition a fixed height to prevent other element from jumping around 2026-01-27 14:23:54 -05:00
ggurdin
cb7bb14a62
fix: only allow one line of text in grammar match choices 2026-01-27 13:46:22 -05:00
ggurdin
f511371aa9
feat: Bring back language setting in bot avatar popup 2026-01-26 16:42:10 -05:00
ggurdin
74b71c5389
fix: reset bypassExitConfirmation on session-level error 2026-01-26 14:17:05 -05:00
ggurdin
558d8fdc50
fetch translation on activity target generation 2026-01-23 10:30:26 -05:00
Ava Shilling
5938b15820 fix syntax 2026-01-22 13:43:48 -05:00
Ava Shilling
dd8d35962f re-enable choice notifier 2026-01-22 13:42:54 -05:00
Ava Shilling
c881f61c4f forgot to push file and formatting 2026-01-22 13:06:57 -05:00