Commit graph

14423 commits

Author SHA1 Message Date
wcjord
f0da1663ce
docs: for subscription service (#5837) 2026-02-27 09:27:56 -05:00
ggurdin
9aee84f42c
5832 disable start activity button if user hasnt selected a role (#5833)
* fix: disable activity session start button if not selected role

* chore: always show text 'confirm' on activity session confirm role button
2026-02-26 16:05:36 -05:00
ggurdin
33e54d3457
feat: lazy load activities (#5828)
* feat: lazy load activities

* updates
2026-02-26 15:35:34 -05:00
ggurdin
aa2496dfee
feat: add feedback flag to analytics activities (#5829) 2026-02-26 15:27:23 -05:00
ggurdin
774432ef49
5825 remove unreferenced writing assistance code (#5826)
* chore: delete span details

* remove IT

* fix null check error

* more cleanup
2026-02-26 14:09:45 -05:00
ggurdin
43628427c1
fix: auto-accept invite resulting from knocks on app launch (#5824) 2026-02-26 13:24:34 -05:00
ggurdin
8cb5ab6e8c
chore: give chat event list loading button icons sized dimensions (#5822) 2026-02-26 12:28:05 -05:00
ggurdin
097a8f06c3
fix: add back spacing between activity preview page CTA buttons (#5821) 2026-02-26 12:20:42 -05:00
ggurdin
107cc42294
fix: only assing token composite keys in practice mode (#5818) 2026-02-26 10:54:52 -05:00
ggurdin
1caa74c668
5759 if session filled redirect from choose role (#5815)
* move activity session page bottom section into its own widget

* activity session full mode

* fix loading of activity session preview on open app via course ping
2026-02-26 10:35:24 -05:00
ggurdin
e1b9a21e1c
fix: don't make looping errored requests to chat history (#5814) 2026-02-25 13:29:49 -05:00
ggurdin
d983f26dd5
fix: consider construct ID invalid if lemma is empty (#5813) 2026-02-25 13:18:14 -05:00
wcjord
473ffbaf24
docs: writing assistance redesign design spec (#5655) (#5696)
* "docs: writing assistance redesign design spec (#5655)

Add comprehensive design doc for the WA redesign:
- AssistanceRing replaces StartIGCButton (segmented ring around Pangea icon)
- Background highlights with category colors (not red/orange error tones)
- Simplified match lifecycle: open → viewed → accepted (no ignore)
- Persistent span card with smooth transitions between matches
- Send always available, no gate on unresolved matches

Remove superseded design docs (SPAN_CARD_REDESIGN_FINALIZED.md,
SPAN_CARD_REDESIGN_Q_AND_A.md, choreographer.instructions.md)."

* feat: replace ignored status with viewed status, initial updates to span card

* resolve merge conflicts

* rebuild input bar on active match update to fix span hightlighting

* cleanup

* allow opening span cards for closed matches

* no gate on sending, update underline colors

* animate span card transitions

* initial updates to add segmented IGC progress ring

* update segment colors / opacities based on match statuses

* use same widget for igc loading and fetched

* more segment animation changes

* fix scrolling and wrap in span card

* better disabled color

* close span card on assistance state change

* remove print statements

* update design doc

* cleanup

---------

Co-authored-by: ggurdin <ggurdin@gmail.com>
2026-02-25 13:07:53 -05:00
ggurdin
77559b9838
fix: in public course preview, filter non-joined members from participant count (#5812) 2026-02-25 12:19:19 -05:00
ggurdin
2a17b401ee
chore: pause activity timer while loading activities (#5809) 2026-02-24 16:57:24 -05:00
ggurdin
c4d9a2d2b3
fix: don't hide emoji match for constructs with assigned emojis (#5807) 2026-02-24 16:46:50 -05:00
ggurdin
bd2530ce43
chore: remove text shadow in wallpaper mode (#5805) 2026-02-24 16:26:08 -05:00
ggurdin
6608876ec6
chore: show banned users list in invite page (#5804) 2026-02-24 16:20:04 -05:00
ggurdin
cd596a6b4f
chore: localize error display in device settings view (#5803) 2026-02-24 16:02:42 -05:00
ggurdin
81dbffd031
chore: hide previos error snackbar in settings notifications before showing another one (#5802) 2026-02-24 15:58:27 -05:00
ggurdin
d9eaf58f05
fix: give default text style to error indicator rich text (#5801) 2026-02-24 15:52:48 -05:00
ggurdin
e4bcda57f6
chore: always show error message on course load error (#5800) 2026-02-24 15:34:59 -05:00
ggurdin
fd319aa105
fix: throw exception if no activities can be loaded in analytics practice session (#5799) 2026-02-24 15:28:17 -05:00
Copilot
a754d16fc3
Use consistent share icon across course share button and invite menu (#5797)
* Initial plan

* Use share_outlined icon instead of upload in ShareRoomButton

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>
2026-02-24 15:03:43 -05:00
ggurdin
caf6c53a0c
chore: replace default synapse error message on knock banned room (#5798) 2026-02-24 15:01:19 -05:00
wcjord
7f1e8f5ea0
feat: client-side knock auto-accept via KnockTracker (#5794)
* 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>
2026-02-24 14:44:36 -05:00
Copilot
54a9a9a500
Fix language dropdown appearing above button on Find A Course page (#5788)
* Initial plan

* Fix Find A Course language dropdown search bar going to top of screen

Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>

* Fix dropdown positioning by adding maxHeight to DropdownStyleData

Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>

* chore: replace autofocus

---------

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>
2026-02-24 14:16:15 -05:00
ggurdin
ecebba63b3
chore: update copy for kicking knocking users (#5795) 2026-02-24 14:09:44 -05:00
ggurdin
8c5b52eb45
chore: hide emoji tab text, make whole search bar clickable (#5790) 2026-02-24 13:39:55 -05:00
ggurdin
91e03f7212
fix: save correct form for emoji uses, match example message tokens by lemma as fallback (#5787) 2026-02-24 13:24:08 -05:00
Kelrap
22c69df097
Use pulsing animation for activity end button (#5770) 2026-02-23 14:08:11 -05:00
ggurdin
acc8283269
chore: only exclude activity chats from bot options update function if showActivityChatUI (#5773) 2026-02-23 14:04:18 -05:00
ggurdin
c1b88c6dbd
fix: centralize activity constructs type in ActivityTypeEnum, skip over invalid morph uses (#5767) 2026-02-23 11:05:07 -05:00
wcjord
859cb78339
feat: fetch languages directly from CMS (#5764)
* feat: fetch languages directly from CMS

- Switch language_repo.dart to fetch from CMS REST API (public, no auth)
- Parse CMS paginated response format (docs[] envelope)
- Rename getLanguages URL to cmsLanguages in urls.dart
- Add 15 unit tests for CMS response parsing
- Add design docs: course-plans, layout instructions

* formatting

---------

Co-authored-by: ggurdin <ggurdin@gmail.com>
2026-02-23 10:21:10 -05:00
wcjord
9ada5f6748
fix: upload Sentry source maps correctly for both staging and production (#5763)
- Remove SENTRY_RELEASE override in staging that caused a release tag
  mismatch (commit SHA vs pubspec version). The sentry_dart_plugin now
  auto-detects the same release name the SDK sends at runtime.
- Add update_sentry job to production release workflow (was missing entirely).
- Hardcode SENTRY_ORG and SENTRY_PROJECT since they were never set as
  GitHub environment variables, causing silent upload failures.
2026-02-23 10:12:58 -05:00
wcjord
6b83b2d8a8
Add client testing instructions doc (#5762)
Creates .github/instructions/testing.instructions.md documenting:
- Test stack (flutter test, Playwright, axe-core)
- Current state of unit, integration, and e2e tests
- CI workflows (integrate.yaml, e2e-tests.yml)
- Commands for running tests locally
- Manual testing guidance
2026-02-23 09:00:32 -05:00
wcjord
b14d79ddff docs: update copilot instructions and add reference links for UX priorities and design system 2026-02-22 18:21:33 -05:00
ggurdin
117a03089e
5720 vocab practice should have feedback flag (#5761)
* chore: split up analytics activity page widgets into separate files

* started analytics practice refactor

* refactor how UI updates are triggered in analytics practice page

* some fixes
2026-02-20 13:25:21 -05:00
Kelrap
d4884e6215
Make emoji search view look like other emoji picker tabs (#5756) 2026-02-19 10:53:53 -05:00
ggurdin
e933df7e36
chore: update icon color for error indicator (#5757) 2026-02-19 10:51:22 -05:00
ggurdin
c9d70ab5d8
5719 level up issues (#5750)
* fix: ensure accuracy of XP before level to fix offset issue

* chore: remove level-up summaries
2026-02-18 15:45:32 -05:00
ggurdin
13700d9a9a
chore: skip short audio in audio practice (#5749) 2026-02-18 15:10:56 -05:00
ggurdin
f7539c184f
5721 practice example message improvements (#5748)
* organized analytics practice session repo

* refactor target generation for grammar error activities

* improve grammar error target generation

* more improvements to target generation
2026-02-18 14:55:54 -05:00
ggurdin
5c645904d0
chore: Move module location above module summary (#5746) 2026-02-18 13:18:08 -05:00
ggurdin
06c2047f77
fix: refresh knocking users indicator on space ID change (#5745) 2026-02-18 13:11:38 -05:00
ggurdin
2dae236706
chore: update copy of state event expand button when expanded (#5744) 2026-02-18 13:05:20 -05:00
wcjord
f6a048ca3e
feat: embed STT transcription in audio event content (#5731)
* feat: embed STT transcription in audio event content

Before sending the audio event, the client now fetches the STT
transcript first, then embeds it under 'user_stt' in the event
content. This mirrors the 'original_sent' pattern for text messages
and lets the bot read the transcript immediately without downloading
audio or calling choreo.

- Add ModelKey.userStt constant
- Rewrite onVoiceMessageSend to get transcript before sending audio
- Update getSpeechToTextLocal() to check userStt before botTranscription

* chore: replace inaccurate comment with TODO referencing #5730

* formatting

* fix pangea comments

* feat: make stt translations relate to pangea message events instead of stt representation events

* clean up pangea event types

---------

Co-authored-by: ggurdin <ggurdin@gmail.com>
2026-02-18 12:39:38 -05:00
ggurdin
edcc1e9b43
fix: clear last result on start new file search (#5739) 2026-02-18 10:43:06 -05:00
avashilling
03745fff89
5702 audio practice tweaks (#5724)
* feat: add transcription and translation to audio practice

* fix: make sure answer form matches word in audio

and optimize distractor/answer selection with one pass through the list

* feat: audio practice progress bar

* fix: simplify audio logic
2026-02-18 09:52:15 -05:00
ggurdin
af9b9b4e1f
chore: brighten igc underlines (#5736) 2026-02-18 09:45:34 -05:00