wcjord
38e908c33c
docs: add User Feedback section to toolbar reading assistance instructions ( #5839 )
...
* docs: add User Feedback section to toolbar reading assistance instructions
Describes the shared feedback pattern for word cards (existing) and
translations (planned). References #5838 .
* feat: allow users to flag translations
* make flag button smaller
---------
Co-authored-by: ggurdin <ggurdin@gmail.com>
2026-03-02 13:01:03 -05:00
ggurdin
72249b4766
fix: don't mark blocked constructs as unused ( #5844 )
2026-02-27 14:50:17 -05:00
ggurdin
c4d9a2d2b3
fix: don't hide emoji match for constructs with assigned emojis ( #5807 )
2026-02-24 16:46:50 -05:00
ggurdin
91e03f7212
fix: save correct form for emoji uses, match example message tokens by lemma as fallback ( #5787 )
2026-02-24 13:24:08 -05:00
ggurdin
e933df7e36
chore: update icon color for error indicator ( #5757 )
2026-02-19 10:51:22 -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
wcjord
f6a048ca3e
feat: embed STT transcription in audio event content ( #5731 )
...
* feat: embed STT transcription in audio event content
Before sending the audio event, the client now fetches the STT
transcript first, then embeds it under 'user_stt' in the event
content. This mirrors the 'original_sent' pattern for text messages
and lets the bot read the transcript immediately without downloading
audio or calling choreo.
- Add ModelKey.userStt constant
- Rewrite onVoiceMessageSend to get transcript before sending audio
- Update getSpeechToTextLocal() to check userStt before botTranscription
* chore: replace inaccurate comment with TODO referencing #5730
* formatting
* fix pangea comments
* feat: make stt translations relate to pangea message events instead of stt representation events
* clean up pangea event types
---------
Co-authored-by: ggurdin <ggurdin@gmail.com>
2026-02-18 12:39:38 -05:00
ggurdin
58513051f7
fix: always pass pos and morph when available on request TTS ( #5716 )
2026-02-16 16:00:28 -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
ggurdin
5cd6007346
fix: attach metadata for emoji constructs on specific message event ( #5689 )
2026-02-13 10:18:29 -05:00
avashilling
b8af6234d5
5595 make this nicer looking ( #5683 )
...
* feat: nicer unsubscribed word card
with a small shimmer animation placeholder, and audio on word click
* create new widget instead of returning widget from function
* translations
---------
Co-authored-by: ggurdin <ggurdin@gmail.com>
2026-02-12 14:23:26 -05:00
ggurdin
77c54dc41a
chore: prevent users from setting their l1 to their l2
2026-02-12 10:14:47 -05:00
wcjord
0e681c4d68
feat: phonetic transcription v2 migration ( #5640 )
...
* docs: add PT v2 and token-info-feedback design docs
- Add phonetic-transcription-v2-design.instructions.md (client PT v2 migration)
- Add token-info-feedback-v2.instructions.md (client token feedback v2 migration)
* fix: update applyTo path for token info feedback v2 migration
* feat: Refactor phonetic transcription to v2 models and repository (in progress)
* feat: PT v2 migration - tts_phoneme rename, v1 cleanup, disambiguation, TTS integration
* feat: Update phonetic transcription v2 design document for endpoint changes and response structure
* docs: fix stale _storageKeys claim in pt-v2 design doc
* style: reformat PT v2 files with Dart 3.10 formatter (Flutter 3.38)
* feat: add speakingRate to TTS request model (default 0.85)
Passes speaking_rate to the choreo TTS endpoint. Default preserves
current behavior; can be overridden for single-word playback later.
* feat: use normal speed (1.0) for single-word TTS playback
The 0.85x slowdown is helpful for full sentences but makes single
words sound unnaturally slow. tts_controller._speakFromChoreo now
sends speakingRate=1.0. Full-sentence TTS via pangea_message_event
still defaults to 0.85.
* style: clean up formatting and reduce line breaks in TtsController
* fix: env goofiness
* formatting, fix linter issues
* don't return widgets from functions
---------
Co-authored-by: ggurdin <ggurdin@gmail.com>
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
2026-02-10 16:29:26 -05:00
ggurdin
b4ae6ca770
fix: in empty content token practice button in emoji mode, always show user set emoji ( #5633 )
2026-02-10 12:43:55 -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
8088b6a605
fix: attach room / event metadata to new token click construct uses on messages ( #5607 )
2026-02-09 12:18:47 -05:00
avashilling
27740f2967
chore: add audio on match in practice ( #5580 )
...
* chore: add audio on match in practice
* play audio for target instead of choice
* remove debugprint
---------
Co-authored-by: ggurdin <ggurdin@gmail.com>
2026-02-09 10:17:59 -05:00
ggurdin
5817ee5f0a
fix: one click to close word card in activity vocab
2026-02-03 10:03:45 -05:00
ggurdin
7c8820754c
fix: Don't shimmer disabled translation button ( #5505 )
2026-01-28 16:53:17 -05:00
ggurdin
8c7d64c0cc
chore: more onboarding tweaks ( #5499 )
2026-01-28 15:31:58 -05:00
ggurdin
c455c37f23
fix: better message offset defaults ( #5497 )
2026-01-28 14:56:08 -05:00
Kelrap
95e0f8052f
Use vocab symbol for newly collected words ( #5489 )
2026-01-28 13:19:40 -05:00
ggurdin
172f1c96f8
chore: onboarding updates ( #5485 )
2026-01-28 11:28:54 -05:00
Kelrap
f130c35016
Disable l1 translation for audio messages
2026-01-23 10:46:38 -05:00
ggurdin
ea9a7570de
chore: update disabled toolbar button color
2026-01-22 16:49:49 -05:00
ggurdin
baa9324229
fix: add more space between text and underline for highlighted tokens ( #5332 )
2026-01-22 11:02:51 -05:00
ggurdin
ed1ade783a
chore: Remove sentence-level pronunciation ( #5306 )
2026-01-21 10:53:16 -05:00
ggurdin
529f12e028
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
2026-01-21 10:44:21 -05:00
ggurdin
573ee4dddd
Merge pull request #5277 from pangeachat/5260-message-options-reorganization
...
chore: move regeneration button down to toolbar
2026-01-20 14:52:08 -05:00
ggurdin
79926a9ade
moved some logic around
2026-01-20 14:51:44 -05:00
ggurdin
eafa8f60f0
chore: replace message toolbar language mismatch popup with button in disabled snackbar
2026-01-20 12:33:25 -05:00
Ava Shilling
445ed0338d
chore: move regeneration button down to toolbar
2026-01-20 12:04:30 -05:00
ggurdin
257fb465be
chore: reload info in word card in vocab details after submitting token feedback
2026-01-19 12:18:27 -05:00
ggurdin
ca3a866b8b
resolve merge conflict
2026-01-16 10:29:11 -05:00
ggurdin
d36ae65154
chore: analytics details page tweaks
2026-01-16 09:42:08 -05:00
ggurdin
38ff0022fa
normalize target construct selection for activity targets
2026-01-15 13:39:30 -05:00
ggurdin
f5a75b9f8b
cleanup
2026-01-15 13:13:56 -05:00
ggurdin
af92158fa1
update activity models to reduce duplicate data
2026-01-15 12:47:44 -05:00
ggurdin
326e5c3241
fix example messages for grammar activities, make practice activity model a sealed class
2026-01-15 09:59:28 -05:00
ggurdin
bb73892c18
fix: add custom token underline widget to make all text underlines equal height ( #5170 )
2026-01-12 11:27:56 -05:00
ggurdin
2b118e8185
fix: add reaction notifier to rebuild reaction picker and reaction display on reaction change ( #5151 )
2026-01-09 10:49:36 -05:00
ggurdin
33d8df3125
fix: disable emoji setting for non-L2 constructs ( #5148 )
2026-01-09 10:10:33 -05:00
ggurdin
c4adac38f0
fix: fix practice record construct id assignment for morph activities ( #5133 )
2026-01-08 11:39:30 -05:00
ggurdin
d512571792
feat: allow users to update bot's voice settings ( #5119 )
2026-01-07 14:33:35 -05:00
ggurdin
1b6dd5bd3f
chore: don't show practice tooltip if mode is complete ( #5108 )
2026-01-07 11:29:09 -05:00
ggurdin
af395d0aeb
4825 vocabulary practice ( #4826 )
...
* chore: move logic for lastUsedByActivityType into ConstructIdentifier
* feat: vocab practice
* add vocab activity progress bar
* fix: shuffle audio practice choices
* update UI of vocab practice
Added buttons, increased text size and change position, cards flip over and turn red/green on click and respond to hover input
* add xp sparkle, shimmering choice card placeholder
* spacing changes
fix padding, make choice cards spacing/sizing responsive to screen size, replace shimmer cards with stationary circle indicator
* don't include duplicate lemma choices
* use constructID and show lemma/emoji on choice cards
add method to clear cache in case the results was an error, and add a retry button on error
* gain xp immediately and take out continue session
also refactor the choice cards to have separate widgets for each type and a parent widget to give each an id for xp sparkle
* add practice finished page with analytics
* Color tweaks on completed page and time card placeholder
* add timer
* give XP for bonuses and change timer to use stopwatch
* simplify card logic, lock practice when few vocab words
* merge analytics changes and fix bugs
* reload on language change
- derive XP data from new analytics
- Don't allow any clicks after correct answer selected
* small fixes, added tooltip, added copy to l10
* small tweaks and comments
* formatting and import sorting
---------
Co-authored-by: avashilling <165050625+avashilling@users.noreply.github.com>
2026-01-07 10:13:34 -05:00
ggurdin
5aa3d759e0
fix: remove reaction subscription to prevent overlay jumping ( #5100 )
2026-01-07 09:31:05 -05:00
ggurdin
5563e43a4c
fix: disable new token collection for token not in L2
2026-01-06 15:09:46 -05:00
ggurdin
581288f220
remove duplicate subscription cancel
2026-01-06 14:17:49 -05:00