Commit graph

7716 commits

Author SHA1 Message Date
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
34d38ca0e3
chore: if no public courses available for language, link to create course page (#5632) 2026-02-10 12:33:31 -05:00
ggurdin
2f7dfe972b
chore: show close button in choreo error snackbar (#5631) 2026-02-10 12:28:36 -05:00
ggurdin
d3d040d5b6
chore: show construct unlock popup on reach second lemma level (#5630) 2026-02-10 12:26:32 -05:00
ggurdin
21900f115a
chore: add ttl to morph cache and new parts of speech to default morph mapping (#5629) 2026-02-10 12:16:40 -05:00
ggurdin
765d8a944f
chore: add course description tooltip to find a course page (#5628) 2026-02-10 12:02:07 -05:00
ggurdin
6ea71fb4e8
5575 very large gaps between activity details sections (#5625)
* fix: filter instructions markdown

* remove debugprint
2026-02-10 11:25:38 -05:00
ggurdin
5b13323140
fix: update language selection search function (#5624) 2026-02-10 11:07:16 -05:00
ggurdin
4994b75c33
chore: disable polls in bot DMs, fix avatar defaults (#5623) 2026-02-10 10:59:32 -05:00
ggurdin
e657466303
fix: don't show level up banner for unsubscribed users (#5621) 2026-02-10 10:54:01 -05:00
ggurdin
f092f1c03e
chore: include link to courses in empty activty archive tooltip (#5619) 2026-02-10 10:44:32 -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
wcjord
dec473d579
Writing assistance (#5598)
* feat: wa working full stack

* feat: writing assistance made anew

* docs: migrate copilot docs to .github/instructions/ format

- Create choreographer.instructions.md (applyTo: lib/pangea/choreographer/**)
- Create events-and-tokens.instructions.md (applyTo: lib/pangea/events/**,lib/pangea/extensions/**)
- Create modules.instructions.md (applyTo: lib/pangea/**) — full module map
- Track copilot-instructions.md (remove .gitignore rule)
- Add documentation reference table to copilot-instructions.md

Content sourced from docs/copilot/ on writing-assistance branch.

* docs: remove old docs/copilot/ (migrated to .github/instructions/)

* docs: update choreographer + modules docs for writing-assistance audit

- Mark IT (Interactive Translation) as deprecated throughout
- Document new ReplacementTypeEnum taxonomy (grammar, surface, word-choice categories)
- Add AssistanceStateEnum, AutocorrectPopup, feedback rerun flow
- Mark SpanDataRepo/span_details as dead code
- Mark SpanChoiceTypeEnum.bestCorrection/bestAnswer as deprecated
- Add new files to modules listing (autocorrect_popup, start_igc_button, etc.)
- Update API endpoints table with active/deprecated/dead status

* formatting, replace deprecated withOpacity calls

* fix linter issues from deprecated types

* use better error color

* move cloing of overlays into choreographer

* reduce duplicate code on igc_controller, update UI on feedback

* couple of adjustments

* display prompt in span card by type

* fix error in tests

* translations

* simplify span card feedback

---------

Co-authored-by: ggurdin <ggurdin@gmail.com>
2026-02-09 15:55:18 -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
ggurdin
8088b6a605
fix: attach room / event metadata to new token click construct uses on messages (#5607) 2026-02-09 12:18:47 -05:00
ggurdin
53091cf4a6
5515 add more to user profile (#5525)
* feat: add country and about to public profile model

* display about me and country

* translations
2026-02-09 11:14:01 -05:00
Kelrap
a5c82b2753
Make password recovery settings more similar to change password page (#5589)
Co-authored-by: ggurdin <ggurdin@gmail.com>
2026-02-09 10:42:04 -05:00
Kelrap
fbd31f1118
Make course access titles wrap (#5584) 2026-02-09 10:35:36 -05:00
Kelrap
1417d8b944
Line notifications setting button up with rest of page (#5571) 2026-02-09 10:34:52 -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
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
avashilling
e83f76b95b
5385 explore tv static shimmer for loading (#5554)
* glitch static loading prototypes

* feat: shimmer pulse for clickable widget

---------

Co-authored-by: ggurdin <ggurdin@gmail.com>
2026-02-09 10:03:05 -05:00
ggurdin
d09a6b339b
fix: add new parts of speech to function for getting grammar copy (#5586) 2026-02-05 10:13:44 -05:00
ggurdin
04cd818406
fix: don't pop from language selection page when not possible 2026-02-04 13:58:28 -05:00
ggurdin
ee223a94da
fix: include stt for audio messages in level summary request 2026-02-04 09:09:56 -05:00
wcjord
772c0daa88
feat: add new parts of speech (idiom, phrasal verb, compound) and update localization (#5564) 2026-02-03 17:51:28 -05:00
ggurdin
8612f989c6
fix: filter edited events from search results 2026-02-03 10:39:43 -05:00
ggurdin
386275270f
fix: don't show error on cancel add recovery email 2026-02-03 10:28:47 -05:00
ggurdin
5817ee5f0a
fix: one click to close word card in activity vocab 2026-02-03 10:03:45 -05:00
ggurdin
d99936dc62
fix: move use activity image background setting into pangea user-specific style settings 2026-02-03 09:40:43 -05:00
ggurdin
93c8393ab7
fix: update data type of user genders in bot options model 2026-02-03 09:16:38 -05:00
ggurdin
1432ee29e0
Merge pull request #5526 from pangeachat/5421-grammar-practice-todos
5421 grammar practice todos
2026-02-02 16:51:59 -05:00
ggurdin
34ba67983d
fix: update UI on reply / edit event update 2026-02-02 13:27:38 -05:00
ggurdin
04d7490e9d
fix typos, dispose value notifier 2026-02-02 12:53:32 -05:00
ggurdin
1522dd46d1
move try-catch into request permission function 2026-02-02 12:27:32 -05:00
ggurdin
af948eb35d
fix login redirect 2026-02-02 12:21:17 -05:00
Ava Shilling
9717719ec1 Merge branch 'main' into 5421-grammar-practice-todos 2026-02-02 11:34:21 -05:00
Ava Shilling
92aff09a69 fix: missing line 2026-02-02 11:34:15 -05:00
Ava Shilling
d1c6effb2a chore: add morphExampleInfo to activity model 2026-02-02 11:33:32 -05:00
ggurdin
138e0d93e5
notification page navigation 2026-02-02 10:43:36 -05:00
ggurdin
b66aa5f9db
fix: update room summary model (#5543) 2026-01-30 16:06:40 -05:00
ggurdin
fb3365c62d
initial work to add enable notifications to onboarding 2026-01-30 15:54:23 -05:00
ggurdin
1353170a7f
resolve merge conflicts 2026-01-30 15:16:00 -05:00
ggurdin
0cd2d0d9c5
feat: track end date on cancel subscription click and refresh page when end date changes (#5542) 2026-01-30 14:54:18 -05:00
Ava Shilling
10197ae209 fix: use MorphInfoRepo to filter valid morph categories 2026-01-30 14:23:09 -05:00
ggurdin
74be947f0f
fix: use stream to always update saved activity list on language update (#5541) 2026-01-30 13:52:21 -05:00
ggurdin
cf2148d9b6
feat: make deeplinks work for public course preview page (#5540) 2026-01-30 13:29:26 -05:00
Ava Shilling
eba8435fdd fix: only call getUses once in fetchErrors 2026-01-30 13:10:10 -05:00