* 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> |
||
|---|---|---|
| .github | ||
| .vscode | ||
| android | ||
| appimage | ||
| assets | ||
| docs | ||
| fdroid | ||
| integration_test | ||
| ios | ||
| lib | ||
| linux | ||
| macos | ||
| pangea_packages/fcm_shared_isolate | ||
| scripts | ||
| snap | ||
| test | ||
| test_driver | ||
| web | ||
| windows | ||
| winuwp | ||
| .env | ||
| .gitignore | ||
| .mailmap | ||
| .metadata | ||
| analysis_options.yaml | ||
| CHANGELOG.md | ||
| config.sample.json | ||
| devtools_options.yaml | ||
| Dockerfile | ||
| l10n.yaml | ||
| LICENSE | ||
| licenses.yaml | ||
| PRIVACY.md | ||
| pubspec.lock | ||
| pubspec.yaml | ||
| README.md | ||
| sentry.properties | ||
| TRANSLATORS_GUIDE.md | ||
Overview
Pangea Chat is a web and mobile platform which lets students ‘learn a language while texting their friends.’ Addressing the gap in communicative language teaching, especially for beginners lacking skill and confidence, Pangea Chat provides a low-stress, high-support environment for language learning through authentic conversations. By integrating human and artificial intelligence, the app enhances communicative abilities and supports educators. Pangea Chat has been grant funded by the National Science Foundation and Virginia Innovation Partnership Corporation based on its technical innovation and potential for broad social impact. Our mission is to build a global, decentralized learning network supporting intercultural learning and exchange.
Pangea Chat Client Setup
- Download VSCode if you do not already have it installed. This is the preferred IDE for development with Pangea Chat.
- Download flutter on your device using this guide: https://docs.flutter.dev/get-started/install
- Test to make sure that flutter is properly installed by running “flutter –version”
- You may need to add flutter to your path manually. Instructions can be found here: https://docs.flutter.dev/get-started/install/macos/mobile-ios?tab=download#add-flutter-to-your-path
- Ensure that Google Chrome is installed
- Install the latest version of XCode
- After downloading XCode, ensure that the iOS simulator runtime is installed. To do this, after initially downloading XCode, a screen will open where you can select the platforms you wish to develop for. Selected iOS and download from there.
- Install the latest version of Android Studio
- After downloading Android Studio, open Android Studio and go through setup wizard
- In Android Studio, open settings -> Android SDK -> SDK tools, then click “Android SDK Command Line Tools” and click OK to run the download
- If you do not have homebrew install on your device, install homebrew by follow the instructions here: https://brew.sh/
- Run “brew install cocoapods” to install cocoapods
- Run “flutter doctor” and for any missing components, follow the instructions from the print out to install / setup
- Clone the client repo
- Uncomment the lines in the pubspec.yaml file in the assets section with paths to .env file
- To run on iOS:
- Run “flutter precache --ios”
- Go to the iOS folder and run “pod install”
- To run on Android:
- Download Android File Transfer here: https://www.android.com/filetransfer/
- To run the app from VSCode terminal:
- On web, run
flutter run -d chrome --hot - Or as a web server (Usage with WSL or remote connect)
flutter run --release -d web-server -web-port=3000 - On mobile device or simulator, run
flutter run –hot -d <DEVICE_NAME>
- On web, run
Special thanks
-
Pangea Chat is a fork of FluffyChat which is a [matrix] client written in Flutter. You can support the primary maker of FluffyChat directly here.
-
Fabiyamada is a graphics designer and has made the fluffychat logo and the banner. Big thanks for her great designs.
-
Advocatux has made the Spanish translation with great love and care. He always stands by my side and supports my work with great commitment.
-
Thanks to MTRNord and Sorunome for developing.
-
Also thanks to all translators and testers! With your help, fluffychat is now available in more than 12 languages.
-
WoodenBeaver sound theme for the notification sound.
-
The Matrix Foundation for making and maintaining the emoji translations used for emoji verification, licensed Apache 2.0