* feat: client-side knock auto-accept via KnockTracker
Replace server-side AutoAcceptInviteIfKnocked (removed in
synapse-pangea-chat PR #21) with client-side KnockTracker.
- Record knocked room IDs in Matrix account data (org.pangea.knocked_rooms)
- Auto-join when invite arrives for a previously knocked room
- Migrate storage from GetStorage to Matrix account data for
cross-device sync and reinstall persistence
- Add joining-courses.instructions.md design doc
* formatting
* centralizes calls to knock-storage related functions
---------
Co-authored-by: ggurdin <ggurdin@gmail.com>
* feat: add voice to user model
* update bot settings on language / learning settings update
* use room summary to determine member count
* translations
* update lemma meaning and phonetic transcription repos
* chore: simplify progress bar widget
* Remove instructions from chat view, and add profile explanation to course participant page
* Translate courseParticipantTooltip
* fix: in course chats list, sort activities by activity ID
* use different text in chat/course participant tooltips
* depress disabled toolbar buttons
* fix: load course images on course load
* fix: on add course plan to space, set m.space.child power level to 0
* chore: add label to emoji selector in vocab analytics
* chore: increase text sizes in activity summary
* fix: don't show open sessions if user has selected a role
* feat: add button to regenerate latest bot message
* chore: update morph meaning repo
* chore: increase text size and spacing in language selection page, consume language locale emojis
* feat: on first select lemma emoji, show snackbar with explanation
* chore: use builder to style pressable buttons based on height
* chore: add tooltips to each practice mode
* initial work to add shimmer to match activity options
* show word card in image toolbar mode
* use the same widget for word card and vocab details emoji pickers
* add shimmer background to match choices
* fix: close previous snackbar before opening new mode disabled snackbar
* fix: refresh course details when course ID changes in course details
* chore: keep message button depressed
* only show emoji selection shimmer if no emoji is selected
* don't show reaction picker in emoji mode
* lemma emoji picker style updates
* update loading indicators in word zoom card
* feat: show word card in vocab details page
* practice buttons shimmer
* fixed height audio player
* more practice mode updates
* more practice tweaks
* add space between rows of tokens in practice mode
* conditional top padding for practice tooltips
* feat: send message info in lemma info request
* chore: Focus on word meanings in reaction choices
* fix: restrict width of morph icon in practice token button
* chore: Expand word card for meanings
* chore: When first grammar question active, shimmer choices
* chore: Swap seed for hyphen for not-yet-chosen emojis in analytics
* chore: Level attention to emoji and audio icons
* fix: fix non-token vertical spacing in practice mode
* fix: close message overlay when screen size changes
* feat: While audio is playing, allow clicking of word to move audio to that spot
* feat: play audio on token click and on construct click in vocab analytics
* chore: snackbar close button
* feat: Stay in audio mode after end of audio
* chore: more word card spacing adjustments
* fix: use construct id json in route for analytics details page
* feat: custom SSO login/signup dialog
* chore: add content to distinguish system edit from manual edit
* Make input bar suggestion text vertically centered when shrinking
* Add Pangea comments
* Add background to make dark mode icon stand out in own message grammar
practice
* chore: re-style sso popup
* fix: progress bar min width
* fix: change how screen width metric changes are tracked
* simplify
* fix: fix carousel scroll issue
* fix: set emoji placeholder text colot
* fix: when not in column mode, don't add padding to top of practice tooltip
* chore: prevent running IGC on empty message
* fix: allow translation of bot audio transcripts
* feat: analytics database
* fix: update analytics profile room IDs on change, set via parameter in analytics room knock request (#4949)
* chore: center title in add a course page (#4950)
* fix: update spacing of activity participant indicators to make them narrower, make user activity summary highlight row scrollable (#4951)
* fix: remove clicked new token from new tokens cache immeadiatley instead of waiting for new token animation to finish (#4952)
* What now button takes user to top of course plan page (#4946)
* Add scrollController to course details pages
* Make what now button refresh details tab if needed, remove scrollController
* 4907 construct details changes (#4961)
* chore: remove delegation analytics page
* feat: vocab construct analytics level bar
* chore: analytics mobile navigation
* feat: cap construct XP
* Add background to regeneration request background (#4960)
* chore: reduce padding between lines of message in practice mode (#4962)
* chore: don't show message regeneration button if message has already been regenerated (#4963)
* fix: prevent request regeneration button from altering message height (#4964)
* fix: only animate top portion of activity status bar (#4965)
* fix: fix white box error and add opacity variation to construct levels in progress bar (#4966)
* fix: don't close word card on click (#4967)
* feat: after user exits IT three times, show them a popup with the option to disable automatic language assistance (#4968)
* feat: allow token feedback for word card in vocab analytics (#4900)
* feat: allow token feedback for word card in vocab analytics
* fix: remove duplicate global keys
* 4726 word card in arabic goes way to the side (#4970)
* fix: initial work for word card positioning on RTL system
* fix: fix practice mode animation for RTL languages
* chore: close lemma emoji snackbar on parent widget disposed (#4972)
* fix: remove user summary testing code (#4974)
* feat: On hover of the Nav Bar, expand to show current icon tooltip text (#4976)
* feat: On hover of the Nav Bar, expand to show current icon tooltip text
* animate menu transition
* chore: delete construct navigation (#4984)
* chore: Use hyphen instead of seed/sprout/flower in list view (#4985)
* chore: update analytics page on construct update (#4987)
* fix: fix word card overlay in mobile vocab details page (#4988)
* fix: Latest sent message sinks when clicked on Mobile (#4989)
* fix: don't highlight new tokens until analytics initialize (#4990)
* chore: calculate times closed out of IT based on all message in session (#4991)
* chore: add feedback response dialog (#4992)
* chore: move request generation button into message bubble (#4993)
* fix: show request regen button in overlay message (#4996)
* fix: separate block construct and update construct updates in vocab list view (#4998)
* feat: Do gold shimmer every 5 seconds on unselected emojis (#4999)
* simplify message token renderer (#4994)
* simplify message token renderer
* token rendering and new word collection for tokens in activity summary / menu
* make tokens hoverable
* Model key cleanup (#4983)
* refactor: Group redundant ModelKey entries
* Add python script to find and replace hardcoded ModelKey values
* Edited Python script to not automatically use ModelKey for files not
already using it
* refactor: Ran script and accepted obvious changes
* rename 'duration' model key
---------
Co-authored-by: ggurdin <ggurdin@gmail.com>
* fix: return bot local stt, ensure stt rep exists in request stt translation function (#5003)
* chore: set max lines for word card phonetic transcription (#5005)
* chore: Don't show shimmer for unavailable modes (#5006)
* chore: Delay until screen darkening (#5009)
* chore: add focus node to vocab list view search bar (#5011)
* chore: collapse navigation rail on navigate (#5013)
* When user saves course edits, return to details page (#5012)
* fix: don't lowercase construct keys in morph analytics list view (#5014)
* 4860 dms all chats (#5015)
* feat: initial work for dms => all chats
* more navigation updates
* change all chats tooltip
* fix: set exact reactions length in overlay (#5016)
* fix: fix message list rendering (#5017)
* chore: disable lemma emoji selection for word card in token feedback dialog (#5026)
* fix: don't add XP update if no new construct uses were added (#5027)
* chore: hide request regeneration button in practice mode (#5028)
* chore: use root navigator for chat details dialogs (#5029)
* fix: rebuild word card on new word overlay dismissed (#5030)
* Ensure consistency of pressable button height after animation (#5025)
* Ensure consistency of pressable button height after animation
* Use variable instead of hardcoded value
* fix: fix overlay reactions bouncing around (#5031)
* fix: add horizontal padding to prevent choice animation cutoff (#5032)
* 4919 further optimizing message info (#5033)
* remove original sent from message content
* don't add null fields to message content JSON
* fix: only show disable language assistance popup is user manually closes IT (#5034)
* fix: only exclude xp gained analytics events if blocked constructs has entry (#5035)
* fix: on analytics DB init, don't clear DB unless stored userID doesn't match client userID (#5036)
* don't log missing POS error for POS 'other' (#5039)
* don't long missing POS error for POS 'other'
* don't long error for missing grammar copy if lemma is 'other'
* chore: rebuild input bar hint text on language update (#5042)
* fix: clear database on reinitialize (#5045)
* chore: default to reactions maxWidth null if not available (#5047)
* fix: remove duplicate navigator pop in member actions popup (#5048)
* Reduce gap between lines in practice modes (#5041)
* fix: prevent word card overflow in vocab details (#5049)
* chore: style tokens in transcription like other clickable tokens (#5055)
* fix: always align space nav rail children to the left (#5059)
* chore: update message analytics feedback popup background color (#5061)
* chore: increase padding in span card scroll view to prevent choice animation overflow (#5062)
* chore: Don't use dropdown if only one item (#5063)
* chore: Disable ability to send video/files (slash anything else that the bot doesn’t know what to do with) in bot chats (#5065)
* chore: show more specific error in audio recording dialog (#5068)
* chore: stack expanded space navigation menu over screen in one column mode (#5069)
* feat: when screen size gets too short, show warning dialog (#5070)
* 5053 can get points from lemma with max score (#5078)
* make uses a private field for ConstructUses
* expose capped list of uses in ConstructUses
* filter capped construct uses in getUses
* fix: don't show send button if error in recording dialog (#5079)
* chore: allow users to highlight main word in word card
* fix: in emoji picker, don't set selected emoji based on old stream data
* remove duplicate subscription cancel
* fix: fix recording dialog import error
* fix: disable new token collection for token not in L2
* chore: use activity plan CEFR level in saved activity display
* chore: apply border to dialog directly in delete space dialog (#5093)
* chore: hide nav rail item tooltips when expanded (#5094)
* chore: reduce min height of span card feedback section (#5095)
* chore: force span card to always go above input bar (#5096)
* fix: always enable small screen warning dialog on web (#5097)
* fix: add new blocks to merge table before fetching previous constructs when calculating points added by construct update (#5098)
* fix: remove reaction subscription to prevent overlay jumping (#5100)
* 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>
* feat: Directing to click messages with shimmer (#5106)
* fix: use standard loading dialog on submit delete space dialog (#5107)
* chore: don't show practice tooltip if mode is complete (#5108)
* chore: don't restrict token length (#5112)
* fix: in recording dialog, throw exception on permission denied (#5114)
* chore: remove margin from last entry in user activity summary list (#5115)
* chore: make emoji choice shimmer background match word card background (#5116)
* feat: allow users to update bot's voice settings (#5119)
* fix: hide ability to change bot chat settings from non-admins (#5120)
* fix: remove extra text from end of download file name (#5121)
* fix: remove invalid expanded widget (#5124)
* fix: add guard to prevent showing screen size popup when expanding screen after showing popup (#5127)
* chore: normalize accents in vocab search (#5128)
* chore: base level icon spacing on xp needed to reach level in vocab details (#5131)
* chore: add padding to bottom of vocab list view so practice button doesn't block last vocab entries (#5132)
* fix: fix practice record construct id assignment for morph activities (#5133)
* fix: coerce existing aggregate analytics database entries into correct format before merging to avoid data loss (#5136)
* feat: make construct aggregated case-insensitive (#5137)
* chore: prevent user from spamming disabled vocab practice button (#5138)
* fix: reset voice on langauge update (#5140)
* chore: make emoji base shimmer transparent (#5142)
* chore: update sort order in space participants list (#5144)
* chore: remove padding from last entry in activity list (#5146)
* fix: disable emoji setting for non-L2 constructs (#5148)
* fix: add reaction notifier to rebuild reaction picker and reaction display on reaction change (#5151)
* chore: decrease text sizes in vocab practice complete page in one column mode (#5152)
* chore: hide download button in download dialogs if download is complete (#5157)
* fix: show morph as unlocked in analytics if ever used (#5158)
* chore: reduce span card spacing to reduce unneeded scroll (#5160)
* chore: reduce span card spacing to reduce unneeded scroll
* remove debugging code
* fix: don't double space ID on navigation (#5163)
* chore: reduce negative points to 1 (#5162)
To eliminate the chance of having negative total, minimum upon completion now is 30XP
* fix: remove duplicates from answer choices (#5161)
* fix: use canonical activity time in display for completed activity (#5164)
* chore: refresh language cache to add voices (#5165)
* chore: don't show loading dialog on reaction redaction (#5166)
* build: bump version
---------
Co-authored-by: Kelrap <kel.raphael3@outlook.com>
Co-authored-by: Kelrap <99418823+Kelrap@users.noreply.github.com>
Co-authored-by: avashilling <165050625+avashilling@users.noreply.github.com>
* 3871 activity session issues feedback (#3874)
* fix: add header when fetching image from CMS
* fix: only show activity start page is all roles have never been full
* chore: disable archive button until summary loads
* chore: still save activity analytics summary even if there's a choreo error when fetching summary
* chore: pass location image URL as topic image URL (#3876)
* feat: add local cache for activity session analytics (#3878)
* fix: in new courses, set course_user state event power level to 0 (#3882)
* fix: make activity summary request cache keys unique, use in-memory cache instead of local storage, remove items from cache on error or on state event sent successfully (#3885)
* chore: widen summary cards (#3888)
* Replaced references to spaces with courses in intl files and calls (#3884)
* Replaced references to spaces with courses in intl files and calls
* Change learning community reference to 'public course'
---------
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* chore: update delete course description (#3889)
* 3890 activity start page changes (#3901)
* comment out unreferenced files
* decouple courses, topics, and activities
* update start page
* disable 'join open session' button
* feat: activity dropdown menu
* fix: always initialize course info after fetching (#3907)
* chore: show role goal in text abut button on activity launch page and in tooltip above input bar (#3910)
* chore: go to course settings tab after archiving activity, show check over completed activites (#3913)
* fix: remove dollar sign from copy (#3914)
* fix: update payload accessToken on new login (#3916)
* 3915 course chat view updates (#3919)
* Removes Proper Noun from default analytics morph list (#3918)
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* Level up popup tweaks (#3917)
* Use L10n for 'Level up' text
* Replace drop down button with close button
---------
Co-authored-by: ggurdin <ggurdin@gmail.com>
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* chore: update how activity summary description expansion button layout works (#3930)
* fix: add analytics listener to activity stats menu (#3931)
* fix: don't show join message when user dismisses activity role goal message (#3932)
* chore: hide activity role tooltip when it bar is open (#3933)
* fix: fix null check error in activity role tooltip (#3935)
* fix: when fetching translation, only consider a message to have included IT if the sent message body matches the message at the end of choreo (#3936)
* chore: update messaging in subscription management (#3937)
* feat: join activity session on open app via ping (#3944)
* chore: don't show ping unread badge (#3946)
* fix: Correctly fetch activity images (#3943)
* fix fetching images and parsing url
* small fix for getting activity image URLs
---------
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
Co-authored-by: ggurdin <ggurdin@gmail.com>
* Set thumbVisibility true for grammar activity scrolling (#3942)
* Set thumbVisibility true for grammar activity scrolling
* always show scrollbar
---------
Co-authored-by: ggurdin <ggurdin@gmail.com>
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* reload space hierarchy on invite update (#3949)
* 3927 analytics tweaks (#3953)
* analytics page updates
* add back download buttons
* some activity / invite page tweaks (#3958)
* Wrap invite course avatar in MapClipper (#3957)
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* Add period to end of languageLevelA2Desc (#3959)
* fix: put back pangea controller init in chat list (#3965)
* fix: show bot avatar in open roles indicator (#3966)
* fix: on cancel registration, pop future loading dialog (#3967)
* chore: adjust actvity participant text colot (#3968)
* fix: always reload course on ID change (#3969)
* chore: increase size of text in archived activity popup (#3970)
* feat: add edit course page (#3971)
* 3962 usability test todos (#3973)
* in new course pages, show images
* in space analytics, if no available languages, pick user's l2
* chore: add cooldown on ping participants
* replace image loading icon with shimmer
* update activity launch page buttons, sort activities in topics by number of participants (#3974)
* chore: topic is completed if user has finished number of activities equal to number of 2 person activities in topic (#3983)
* feat: always show new tokens with green underlines (#3984)
* 3873 add superlatives for most vocab grammar and xp (#3977)
* add grammar and vocab superlatives
- adds superlatives to the summary cards for each user
- WIP, doesn't include XP superlative yet and it continuously reinitializes state which reloads the superlatives
* get analytic superlatives from saved state event
Revert activity user summaries widget to stateless, get info from saved state event instead of awaiting it, and fix some spacing issues.
* add xp superlative
- simplify 3 loop logic into one
- change from constant updates to only generate superlatives on analytics save
* sort imports
* put analytics loading inside buttonControlledCarouselView
* delete commented out code
* return superlative map instead of setting value
* chore: on new token update, clear whole new token cache in case there are identical tokens (#3985)
* fix: fix calculation of completed activities (#3986)
* chore: collection seed always fades up and out (#3987)
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* 3988 activitycourse tweaks (#3989)
* chore: set course and activity descriptions
* chore: remove redundant results button
* 3921 display unsubscribed errors for users (#3991)
* url cleanup
* chore: display unsubscribed errors differently
* chore: show user menu on click participant item (#3992)
* fix: Reintroduce shared isolate (#3981)
* initial scripts n actions
* custom cshared isolate
* kitlin fixes
* integrate and token fix
* executable and gstreamer
* disable check dupes, fix gstreamer
* another linux update, removed 2 android builds
* new updates
* final android attempt
* formatting
---------
Co-authored-by: ggurdin <ggurdin@gmail.com>
* chore: add snackbar message after pinging course participants (#3995)
* fix: don't show green underlines on own messages (#3997)
* 3803 indented bullets displayed strangely (#3999)
* make markdown function the same as matrix sdk
* fix: fix newline issues in html messages
* fix: replace build-web script (#4000)
* fix: try to fix build again (#4001)
* chore: don't allow hover of non-selectable activity participants items (#4002)
* 3895 emoji sequence on clicking the words in a sentence of the target language (#4004)
* cleanup
* feat: toolbar emoji mode
* Add dark/light mode check for unassigned participant label color (#4006)
* chore: update emoji button color (#4015)
* chore: move analytics tooltips inside scrollviews (#4016)
* chore: update icon and border of find a course nav rail item (#4005)
* chore: Improve translation script and translate vi, es, et (#3555)
* improve translation script
* update translation script, more translates for es, et, vi
* chore: fix click cursor showing on hover of disabled activity participant widget (#4020)
* chore: add hint text to text fields in course edit page (#4022)
* chore: add placeholder to image in course editting page (#4024)
* chore: show snackbar on course edit save (#4025)
* 4017 usability test todos 91725 (#4026)
* chore: add ability to toggle show password in signup and login pages
* chore: update text in register popup
* chore: disable save edits button if no changes in course edit page (#4033)
* chore: don't animate in-chat tooltips (#4034)
* chore: add scrollbar to topic activities list (#4035)
* Morph analytics scroll (#4032)
* Move download button above scroll view
* Make morph analytics spacing consistent with vocab analytics spacing
* feat: add ability to add course to existing space (#4037)
* fix: don't attempt to load analytics until your is logged in (#4047)
* feat: integrate room preview endpoint (#4014)
* feat: integrate room preview endpoint
* initial work for intermediary activity page
* Update lib/pangea/activity_sessions/activity_session_start/activity_session_start_page.dart
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update lib/pangea/activity_sessions/activity_session_start/activity_session_start_page.dart
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update lib/pangea/chat_settings/utils/room_summary_extension.dart
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* formatting
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* 3934 activity summary card visual changes (#4013)
* visual tweaks and confetti rain on results generation
* create star rain widget to trigger when activity finishes
* delete commented out lines
* use new star confetti widget in levelup
---------
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* Set height of activity creation sized box to 0 (#4048)
* 4036 playtest 91825 (#4051)
* chore: improve constrast in message practice
* fix typo
* chore: disable learning settings save button until change is made
* show word card on click vocab in activity dropdown
* Playtest updates (#4054)
* update emoji mode icon and tooltip
* upload CMS url instead of uploading image bytes to matrix
* re-init subscription controller after setting account creation date
* fix: don't allow new users to steal roles (#4055)
* chore: render activity instruction markdown (#4056)
* chore: disable hover effect on loading span card icons (#4057)
* fix: fix needed participants copy (#4058)
* update course plan repo search to correctly query (#4065)
* chore: fix practice mode icon / border contrast (#4067)
* chore: only show emoji button for save-vocab tokens, fix alignment for non-token text (#4071)
* fix: fix button visibility in activity start page (#4073)
* chore: use synapse room_preview to determine which activities users have completed (#4078)
* fix: don't reset edits using the room's title and description (#4080)
* chore: on web, show analytics in course chat view (#4085)
* chore: show user menu on click avatar in topic participant list (#4086)
* fix: fix toolbar buttons on mobile (#4087)
* chore: on course load error, show option to add a different course plan to space (#4089)
* fix: check if can invite to course when deciding if show invite button in activity session in course without enough users, disable instead of hiding (#4095)
* chore: shuffle practice tokens before selecting the ones to include (#4097)
* feat: show instruction overlay on first gain points in activity pointing user to click activity stats button (#4099)
* chore: add descriptions for analytics categories (#4100)
* chore: fix copy issue (#4102)
* fix: make invite button go to course invite page (#4103)
* chore: make autoIGC true for new accounts (#4105)
* 4110 playtest 92325 (#4121)
* style activity role tooltip like instruction inline tooltips
* style updates to activity details
* don't show token underlines in practice mode
* show loading activity analytics
* use all construct types to calculate activity analytics, include audio messages in activity summary request
* update chat context menus for activities
* fix positioning on menu in main chat list
* chore: update activity session notification to open activity start page without joining activity (#4122)
* chore: add copy to describe writing analytics (#4123)
* feat: new onboarding flow (#4112)
* feat: new onboarding flow
* go to course details page on click course template in setup page
* update route redirects
* style tweaks
* chore: add gold shimmer to active token practice buttons (#4131)
* chore: remove unnecessary spacing (#4132)
* fix: don't show end activity button until activity has started (#4134)
* chore: add no courses found indicator (#4135)
* chore: update course edit saving logic (#4136)
* chore: add loading indicator to course settings page (#4137)
* fix: use outer context when navigating via course chat popup (#4139)
* chore: update some copy in filter dropdowns (#4140)
* chore: make terms and conditions links work (#4141)
* chore: remove unnecessary padding (#4143)
* fix: hide activity role tooltip during translation (#4145)
* fix: always allow show menu on click activity participant (#4146)
* chore: remove text scaling in emoji mode (#4147)
* chore: increase size of user activity summary widgets (#4149)
* chore: make whole upper acitivty summary clickable to expand (#4150)
* fix: always set vocab as default tab in analytics page (#4151)
* build: fix lints for new flutter version (#4154)
* chore: changes to chat list main view (#4158)
* chore: changes to chat list main view
* remove onboarding page
* Make underlines translucent so lower parts of letters can be seen (#4160)
* 4142-allow-giving-of-activity-feedback (#4144)
* feat: activity feedback repo
* add UI for giving activity feedback
---------
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
Co-authored-by: ggurdin <ggurdin@gmail.com>
* fix: don't dispose new word overlay animation early (#4168)
* 4152 onboarding tweaks (#4163)
* filter courses by short lang codes
* reduce padding in course details page
* update home / registration routes
* refactor: replace find your people page with new course page from onboarding
* chore: on course search, always load course IDs from server (#4174)
* fix: fix double analytics view in two column mode (#4175)
* feat: on create course, go to invite page while course creation loads (#4178)
* chore: give activity goal tooltip max width (#4179)
* chore: remove horizontal offset from pressable button widget (#4180)
* chore: in space analytics tab on small screens show language code in language dropdown (#4182)
* chore: in reading asssitance input bar, if all practice activities for message are completed, show all done message (#4183)
* 4181 japanese words grouped when should be separate (#4184)
* fix: only continue pickup up adjacent tokens while they are punctuation
* uncomment commented out code
* chore: when igc has matches, make send button color disabled instead of red (#4185)
* chore: don't show choreo error on timeout after canceling translation (#4189)
* consume image sizes from cms, surface course plan activity locations apis (#4187)
* 4152 onboarding tweaks (#4190)
* filter courses by short lang codes
* reduce padding in course details page
* update home / registration routes
* refactor: replace find your people page with new course page from onboarding
* chore: add redirect to onboarding course plan page if user not in course
* chore: re-style onboarding buttons (#4196)
* chore: match vocab lemma irrespective of case, use static message in activity stats dropdown (#4205)
* chore: show word card in click vocab word in activity summary (#4206)
* feat: integrate course translation group (#4209)
* integrate course translation group
* Update lib/pangea/payload_client/models/course_plan/cms_course_plan_translation_group.dart
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* formatting
---------
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: ggurdin <ggurdin@gmail.com>
* chore: wait for user to send at least 3 text or audio messages before showing overlay with instructions about clicking activity status button
* fix: disable ping course participants button if there are no no-bot users in course to ping
* chore: show 'all done' message in practice activity bar for each activity type (#4212)
* Decrease unselected igc underline to 20% opacity (#4214)
* 4199 prevent activity menu tooltip from being interfered with my other overlays to ensure it always shows (#4215)
* don't show activity dropdown instructions if word card is open
* block other overlays from openning when tutorial overlay is open
* remove duplicate open overlay data, don't wait for construct banners to close if overlay fails to open
* chore: show selected archived activity, add tooltip to archived activity analytics view (#4217)
* feat: use cached space code to join space on create account (#4224)
* chore: hide course filters in onboarding pages (#4226)
* feat: show warning popup on l2/activity language mixup (#4229)
* chore: add some debugging statement for staging logout issue (#4234)
* fix: on SSO registration, pass langcode to onboarding pages (#4235)
* fix: refresh expired course cache (#4240)
* Adjust unread badge height to compensate for activity header height (#4213)
* Adjust unread badge height to compensate for activity header height
* Limit height instead of hardcoding values
* Hide course analytics download button on mobile (#4241)
* 4242 change course redirect (#4245)
* feat: connect with synapse public courses endpoint
* intergate course IDs into response model
* remove course redirect, update user's l2 on return to language selection page
* display on public courses page to go to page to make your own and display on make your on page to skip to rooms
* fix: hide activity finished status message for archived activities (#4246)
* fix: fix join with code redirect for non-spaces (#4248)
* 4172 color inconsistency of activity elements (#4247)
* activity menu color consistency
And some sizing changes, made the stats button box much smaller
* revert activity button size changes
Also make text bigger to fill box, and make menu/summary buttons solid colors so the shadow under the button works.
* feat: allow users to give token feedback in word card
* feat: set initial L2 via cached space code course target language if available (#4264)
* fix: fix onboarding redirect on login (#4265)
* Updating logo with Vector svg Image (#4263)
* Updated Logo with SVG image & adjusted margins to keep things center
* Un-formated the Index.html
* Remove invite option from participants widget in DM (#4256)
* chore: padding adjustment in selected course view (#4267)
* chore: on invite, also invite to course parent (#4268)
* fix: don't show language mismatch warning popup if activity lang matches L1 (#4269)
* fix: don't update profile until user controller initialized, redirect to rooms from SSO login, in create account page redirect to language selection page if no language available (#4274)
* feat: add selected course page for public courses, redirect there on click public course, filter out already-joined public courses (#4276)
* chore: remove l1 and CERF course filters from start course and public courses pages, update styling of l2 dropdown (#4278)
* integrate original course topic activity field (#4295)
* fix: fix start your own course link in public courses page (#4306)
* change seed to new vocab bubble (#4305)
* change seed to new vocab bubble
and tweak the animation to fade in, then rise/fade out since this looks better than spinning in.
* formatting
---------
Co-authored-by: ggurdin <ggurdin@gmail.com>
* Make users return to activity session when use invite back button (#4288)
* feat: add notification volume setting (#4310)
* chore: enable activity stats button if someone else finishes the activity (#4311)
* chore: on play with bot timeout, show warning popup (#4312)
* chore: show activity stats cutout tooltip on other user finish activity (#4316)
* 4307 bot in dms and activity chats only (#4319)
* remove bot settings files
* exclude bot in invite page
* listen to language / CERF level changes and update bot DM settings
* Update lib/pangea/common/controllers/pangea_controller.dart
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: don't assume that list of IDs to fetch and list of fetched objects are the same length (#4322)
* chore: remove background color from activity goal tooltip (#4324)
* fix: prevent word card title from bouncing around (#4325)
* fix: on join activity with role, preload activity participants list to get accurate list of assigned roles (#4326)
* chore: give max width to activity participant indicator widgets (#4327)
* fix: add value key based on selected tab to course settings widget to force refresh on navigate from finished activity (#4331)
* fix: prevent overflows in token info feedback dialog on mobile, add more specific unsubscribed error in future loading dialog (#4333)
* fix: fix storage of selected language not working on mobile (#4334)
* chore: reduce padding around message in new trip page (#4335)
* chore: more specific error message on not found course with code (#4336)
* chore: dismiss last snackbar before show invite snackbar (#4337)
* chore: switch order of buttons in space delete dialog (#4338)
* chore: add custom map icons (#4339)
* chore: add create at and updated at fields to course plan model (#4340)
* chore: add leave space description (#4341)
* refactor: remove ability to directly edit lemma defintions and morph assignments (#4347)
* Organize course repos (#4262)
* integrate CoursePlansRepo.translateActivity, translateTopic, translateCoursePlan
* move translation functions to requisite files
* integrate translation endpoint
* refactor: reorganize course-related repos, add request and response model classes
* remove l2s from translation requests
* update translation request and response models, use translation endpoint to get course info, cache courses with L1s in cache key
* update topics repo to use translation endpoint
* use activity translation endpoint
* refactor: incremental loading of individual course info, account for discrepancy between translated IDs and original IDs
* incremental loading of course batches
* Update lib/pangea/course_plans/courses/course_plan_room_extension.dart
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* cleanup
* cleanup
* fix: some name changes
* formatting
---------
Co-authored-by: WilsonLe <leanhminh2907@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: wcjord <32568597+wcjord@users.noreply.github.com>
* fix: use same context in show and hide token feedback snackbar to fix closing functionality (#4349)
* fix: filter courses only by short lang code (#4350)
* fix: filter courses only by short lang code
* Update lib/pangea/course_creation/course_search_provider.dart
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update lib/pangea/login/pages/public_trip_page.dart
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: always call setState on update target language filter
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add select all button to the delete space dialog (#4353)
* Initial plan
* Add select all button to delete space dialog
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* Style select all button as CheckboxListTile
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* update copy
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
Co-authored-by: ggurdin <ggurdin@gmail.com>
* 4354 room stuck indefinitely loading (#4357)
* fix: stop loading course if course plan provider if courseId is null
* don't allow padding of null string to loadCoursePlan
* fix: reload space course after updating course state event, wait for … (#4359)
* fix: reload space course after updating course state event, wait for course ID update in sync after returning from add course to space function
* Update lib/pangea/course_settings/course_settings.dart
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: filter out public courses for which course ID failed to load (#4360)
* 3976 making emoji selection more of an activity (#4255)
* add shimmer in vocab page when no emoji selected
* fix shimmer in 2 column mode and add XP for first emoji selection
* add xp sparkle on emoji selection
* formatting, imports, widget name typo fix
* dont rebuild analytics page on every analytics stream update
* remove listener
* move animation and selection visual after slow function
for better visual flow and hopefully not noticeable stutter
* change transformTargetId into variable, update local display state before awaiting saving to analytics room
---------
Co-authored-by: ggurdin <ggurdin@gmail.com>
* Hide vocab analytics instructions when filtering or searching (#4362)
* Initial plan
* Hide instructions tooltip when searching or filtering vocabulary
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* Hide activity end prompt text when activity is archived (#4364)
* Initial plan
* Hide activity end prompt when activity is archived
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* fix: stop rebuilding whole course settings tab on screen size change (#4368)
* Fix foreground notification navigation to activity sessions for course pings (#4369)
* Initial plan
* Fix foreground notification navigation to activity sessions
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* Add clarifying comments to notification handling code
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* Refactor to reduce duplicate code between _onOpenNotification and goToRoom
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* chore: fix foreground notif small icon
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
Co-authored-by: ggurdin <ggurdin@gmail.com>
* fix: show screen loading in course settings until activity roles are … (#4374)
* fix: show screen loading in course settings until activity roles are completly loaded
* show loading indicator over activity card on load course summary
* Update lib/pages/chat_details/chat_details.dart
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: on load course topics, also load location media to get topic images (#4376)
* Add "Share course" tooltip to ShareRoomButton (#4375)
* Initial plan
* Add 'Share course' tooltip to ShareRoomButton
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* Move shareCourse localization to end of intl_en.arb
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* Remove L1 (base language) display from course info chips (#4378)
* Initial plan
* Remove L1 display from courses
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* chore: only show unlocalized language options in course search target language dropdowns (#4380)
* fix: after add course to existing space, push redirect route to refresh page (#4381)
* fix: update isActivityStarted to rely on assignedRoles instead of directly using state event (#4382)
* add XP animation on match activity tokens (#4373)
* 4379 show participants in public courses selection (#4383)
* chore: trip body / icons updates
* chore: display participant count in public courses page, update trip-related copy
* fix: add base language dropdown to language selection page on identic… (#4384)
* fix: add base language dropdown to language selection page on identical target and system language
* Update lib/pangea/login/utils/lang_code_repo.dart
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: add cms api url to activity image paths to load properly (#4385)
* fix: don't mutate activity JSON image_url (#4386)
* Update onboarding language selection text to "Choose a target language" (#4393)
* Initial plan
* Update chooseLanguage text to "Choose a target language"
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* Update IT help message and remove unreferenced InstructionsEnum entries (#4391)
* Initial plan
* Update IT help message and remove unreferenced enum entries
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* Revert changes to non-English .arb files
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* remove unreferenced copy
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
Co-authored-by: ggurdin <ggurdin@gmail.com>
* fix: alway hide back button in add course page (#4404)
* Move word card feedback notification from bottom to top of screen (#4402)
* Initial plan
* Replace bottom SnackBar with top overlay notification for word card feedback
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
* auto-close top token feedback snackbar after delay
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
Co-authored-by: ggurdin <ggurdin@gmail.com>
* chore: add level bar / analytics to space details page on mobiel (#4405)
* chore: add skip button to add course page (#4407)
* chore: message on empty vocab filter (#4410)
* chore: add tooltip to describe vocab highlighting in activity dropdown menu (#4412)
* fix: don't delete archived activities on delete space (#4414)
* fix: don't delete archived activities on delete space
* use one list of futures in delete space function
* fix: refresh chat list on join with link (#4417)
* chore: make word card close and flag button the same styling and vertically aligned (#4419)
* fix: if a new user gets to account create page without target language in local storage or from course, direct them back to language selection (#4422)
* fix: handle room code on join with code (#4427)
* fix: push route on start to make add course page app bar back button work as expected (#4430)
* chore: update translations (#4188)
* translate more l1s
* Update translations for multiple languages (ar, bn, he, hi, id, ko, pt, ru, th, tr, zh)
* partial translations
* Add translations for Irish, Galician, Hungarian, Lithuanian, Slovenian, and Telugu
- Complete translations for 6 additional languages using OpenAI translation script
- Irish (ga): 1,612 translations added
- Galician (gl): 1,614 translations added
- Hungarian (hu): 1,615 translations added
- Lithuanian (lt): 1,927 translations added
- Slovenian (sl): 2,288 translations added
- Telugu (te): 2,388 translations added
These additions bring the total completed languages to 29 out of 47 (62% completion rate)
* Add translations for Estonian, Belarusian, and Greek
- Estonian (et): 164 translations added
- Belarusian (be): 2,392 translations added
- Greek (el): 2,342 translations added
These additions bring the total completed languages to 32 out of 47 (68% completion rate)
* Add Hebrew translations - Hebrew (he): 2,143 translations added - This brings the total completed languages to 33 out of 47 (70 percent completion rate)
* Add Arabic and Bengali translations - Arabic (ar): 1,692 translations added - Bengali (bn): 2,388 translations added - Total: 35 out of 47 languages complete (74 percent completion rate)
* Add Interlingua and Interlingue translations - Interlingua (ia): 2,378 translations added - Interlingue (ie): 2,149 translations added - Total: 37 out of 47 languages complete (79 percent completion rate)
* Add Georgian translations
* Add Esperanto translations
* Add Turkish translations
* Add Persian translations
* Add Romanian translations
* Improve translation script error handling
- Add JSON parsing error handling with retry logic
- Use simpler prompts on retry attempts
- Clean up markdown formatting from responses
- Skip failed chunks gracefully instead of crashing
- Successfully handle previously failing languages
* Update Georgian and add Romanian translations
* Add Serbian, Latvian, Slovak, Tamil and Basque translations
Successfully completed:
- Serbian (sr): 2062 translations
- Latvian (lv): 1614 translations
- Slovak (sk): 2158 translations
- Tamil (ta): 1696 translations
- Basque (eu): 1615 translations
Script improvements:
- Added metadata reconciliation error handling
- Successfully handles JSON parsing errors with retry logic
* fix needed translation generation script
* feat: translate missing keys for 49 languages and improve translation script
- Successfully translated 12,000+ keys across 49 languages (98% completion)
- Enhanced JSON error handling in translate script to recover from parsing errors
- Fixed metadata type issues for unreadChats placeholder in fil, pt_PT, and yue locales
- Added comprehensive run_all_translations.py script for batch translation
- Resolved duplicate yue locale conflicts
- Only Tibetan (bo) remains with 40 keys due to complex character encoding issues
Languages completed:
- Vietnamese, Portuguese (BR/PT), Romanian, Russian, Slovak, Slovenian
- Serbian, Swedish, Tamil, Telugu, Thai, Turkish, Ukrainian, Cantonese
- Chinese (Simplified/Traditional), and 34 other languages with 17 keys each
* fix not compilling error
* catch up with needed translations
* chore: on no courses found for language, log error (#4434)
* fix: fix scrolling in delete space dialog (#4436)
* build: bump version number
* chore: remove vocab tooltip from activity dropdown menu and update copy in end activity button (#4445)
* removed old code (#4446)
* change xp icon to star (#4431)
* fix: on login, don't open two separate databases (#4449)
* fix: register UIA listener on create login client, instead of on login (#4451)
* fix: on click space nav item use context.push to refresh course settings page (#4462)
* chore: add activity roles to activity summary request model (#4479)
* build: bump version number
---------
Co-authored-by: Kelrap <99418823+Kelrap@users.noreply.github.com>
Co-authored-by: Wilson <leanhminh2907@gmail.com>
Co-authored-by: avashilling <165050625+avashilling@users.noreply.github.com>
Co-authored-by: Brord van Wierst <brordvwierst@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: wcjord <32568597+wcjord@users.noreply.github.com>
Co-authored-by: Alexa "Tig" Harriss <alexa.harriss@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>