Commit graph

13157 commits

Author SHA1 Message Date
ggurdin
48c681c074
Merge pull request #5611 from pangeachat/merge-prod-into-main
Merge prod into main
2026-02-09 16:14:11 -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
wcjord
27e5387804 chore: bump version to 4.1.17+7 2026-02-08 09:29:29 -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
2230e0857e
Merge pull request #5578 from pangeachat/5572-stuck-when-go-back-in-onboarding
fix: don't pop from language selection page when not possible
2026-02-04 13:59:03 -05:00
ggurdin
04cd818406
fix: don't pop from language selection page when not possible 2026-02-04 13:58:28 -05:00
ggurdin
e83e0200ac
Merge pull request #5566 from pangeachat/5565-client-should-send-audio-transcription-instead-of-audio-content-body-to-construct-summary
fix: include stt for audio messages in level summary request
2026-02-04 09:10:41 -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
ab94c4be33
Merge pull request #5560 from pangeachat/5550-pre-edit-messages-show-in-chat-search
fix: filter edited events from search results
2026-02-03 10:40:21 -05:00
ggurdin
8612f989c6
fix: filter edited events from search results 2026-02-03 10:39:43 -05:00
ggurdin
71670728ff
Merge pull request #5559 from pangeachat/5551-password-recovery-page-behavior
fix: don't show error on cancel add recovery email
2026-02-03 10:30:15 -05:00
ggurdin
386275270f
fix: don't show error on cancel add recovery email 2026-02-03 10:28:47 -05:00
ggurdin
1393fa69f2
Merge pull request #5558 from pangeachat/5552-click-multiple-times-to-close-word-card
fix: one click to close word card in activity vocab
2026-02-03 10:04:15 -05:00
ggurdin
5817ee5f0a
fix: one click to close word card in activity vocab 2026-02-03 10:03:45 -05:00
ggurdin
bf609f1b5f
Merge pull request #5557 from pangeachat/5553-activity-image-chat-background-setting-not-working
fix: move use activity image background setting into pangea user-spec…
2026-02-03 09:41:58 -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
ef09e58e94
Merge pull request #5556 from pangeachat/5555-users-genders-should-be-a-dictionary-keyed-by-user-id
fix: update data type of user genders in bot options model
2026-02-03 09:17:12 -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
a41d96dff3
Merge pull request #5549 from pangeachat/5548-edit-section-of-input-bar-not-going-away-automatically
fix: update UI on reply / edit event update
2026-02-02 13:30:24 -05:00
ggurdin
34ba67983d
fix: update UI on reply / edit event update 2026-02-02 13:27:38 -05:00
ggurdin
2fa8b3a511
Merge pull request #5420 from pangeachat/5399-more-intentional-request-to-allow-notifications
5399 more intentional request to allow notifications
2026-02-02 12:56:16 -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
85c3ff3590
Merge branch 'main' into 5399-more-intentional-request-to-allow-notifications 2026-01-30 16:21:51 -05:00
ggurdin
84ab4ea6eb
Merge pull request #5544 from pangeachat/merge-prod-into-main
Merge prod into main
2026-01-30 16:07:57 -05:00
ggurdin
468050027b
Merge branch 'production' into merge-prod-into-main 2026-01-30 16:07:23 -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