Skip to content

Add semantic domain, citation form, and lexeme form tasks - #2616

Merged
hahn-kev merged 6 commits into
developfrom
claude/tasks-feature-review-b6173b
Sep 4, 2026
Merged

Add semantic domain, citation form, and lexeme form tasks#2616
hahn-kev merged 6 commits into
developfrom
claude/tasks-feature-review-b6173b

Conversation

@hahn-kev-bot

@hahn-kev-bot hahn-kev-bot commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

A user and requested more filters for tasks, especially around audio for headwords and semantic domains:
image

Per our team meeting we added headword:
image

entries show up only when both lexeme form and citation form are empty.

image
AI-generated summary

Adds three new provide-missing tasks to the FwLite viewer guided data-entry workflow (frontend/viewer/src/project/tasks/):

  • Missing Semantic domain (sense) — added to makeSenseTasks. Because semantic domains are an array (not a writing-system string), it uses a custom getSemanticDomainsValue helper for the done-screen chip and an isComplete check of "has ≥1 domain". Filter: Senses=null|Senses.SemanticDomains=null.
  • Missing Citation form <ws> (entry) — per vernacular writing system. Filter: CitationForm[<ws>]=.
  • Missing Lexeme form <ws> (entry) — per vernacular writing system. Filter: LexemeForm[<ws>]=.

The citation/lexeme form tasks introduce the first entry-level task generator (makeEntryTasks); subjects() and the editor primitives already supported subjectType: 'entry' and these fields, so no UI or backend changes were needed. listTasks() now yields entry → sense → example tasks.

Test fixtures now look tasks up by id instead of positional index, so they survive reordering of the generators (the new semantic-domain task shifts the array).

New user-visible strings were extracted into all locale catalogs via pnpm i18n:extract.

Note: The Missing Citation form task will surface entries whose citation form is deliberately blank (equal to the lexeme form), so its todo count may look large. Working as intended; flagging in case it proves noisy.

A Missing Translation task (example sentences) was considered but left for a follow-up PR, since it requires a new server-side gridify filter for Senses.ExampleSentences.Translations.

Test plan

  • vitesttasks-service.test.ts 15/15 pass (7 new cases across the three tasks)
  • svelte-check — 0 errors
  • eslint — clean
  • pnpm i18n:extract — new strings extracted into all 8 locale catalogs

Adds three new provide-missing tasks to the FwLite viewer guided
data-entry workflow:

- Missing Semantic domain (sense)
- Missing Citation form <ws> (entry)
- Missing Lexeme form <ws> (entry)

The citation/lexeme form tasks introduce the first entry-level task
generator (makeEntryTasks). Semantic domain uses a custom
value/complete check since it is an array field rather than a
writing-system string.

Test fixtures now look tasks up by id instead of positional index so
they survive reordering of the generators.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Team

Run ID: 38ad6b66-f1dd-42cc-bb62-914bed747052

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Team

Run ID: 561b72fa-2f05-4853-aef9-ac116aebf495

📥 Commits

Reviewing files that changed from the base of the PR and between 373f542 and f999896.

📒 Files selected for processing (10)
  • frontend/viewer/src/locales/en.po
  • frontend/viewer/src/locales/es.po
  • frontend/viewer/src/locales/fr.po
  • frontend/viewer/src/locales/id.po
  • frontend/viewer/src/locales/ko.po
  • frontend/viewer/src/locales/ms.po
  • frontend/viewer/src/locales/sw.po
  • frontend/viewer/src/locales/vi.po
  • frontend/viewer/src/project/tasks/tasks-service.test.ts
  • frontend/viewer/src/project/tasks/tasks-service.ts

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

Changes

The task service now creates semantic-domain and vernacular entry tasks. Tests cover the new task types and ID-based lookup. Eight locale catalogs add the corresponding task messages.

Task coverage

Layer / File(s) Summary
Semantic and entry task generation
frontend/viewer/src/project/tasks/tasks-service.ts
TasksService adds missing semantic-domain, headword, citation-form, and lexeme-form tasks. listTasks() includes entry tasks.
Task generation tests
frontend/viewer/src/project/tasks/tasks-service.test.ts
Tests add fixtures and validate semantic-domain and entry task filtering, subjects, values, and completion.
Task message catalogs
frontend/viewer/src/locales/{en,es,fr,id,ko,ms,sw,vi}.po
Locale catalogs add messages for missing fields, semantic-domain selection, and form input prompts.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk: ⚪ Minimal · up to f9998

Completed entry tasks are excluded by the existing entry query filters, and no merge-blocking issue remains.

Suggested reviewers: hahn-kev

Poem

A rabbit checks each task in line
Semantic domains now shine
Headwords hop from blank to bright
Forms appear in morning light
New catalog words take flight

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 2 files. (8 skipped: 8 … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly summarizes the main changes: adding semantic-domain, citation-form, and lexeme-form tasks. It is concise and specific.
Description check ✅ Passed The description directly explains the new task types, entry-level task generation, headword behavior, tests, and localization changes.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 2 files. (8 skipped: 8 unsupported.)

✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/tasks-feature-review-b6173b

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added the 💻 FW Lite issues related to the fw lite application, not miniLcm or crdt related label Sep 2, 2026
@argos-ci

argos-ci Bot commented Sep 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Argos notifications ↗︎

Build Status Details Updated (UTC)
default (Inspect) ✅ No changes detected - Sep 4, 2026, 4:19 AM
e2e (Inspect) ✅ No changes detected - Sep 4, 2026, 4:30 AM

hahn-kev and others added 4 commits September 3, 2026 09:33
Per-writing-system entry task that shows both the lexeme form and
citation form fields and filters on both being empty. A headword is
considered present when either form has a value (citation form wins,
matching the headword convention), so isComplete/getSubjectValue check
both fields rather than a single one.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The provide-missing task prompts now switch on the writing system's
isAudio flag, so audio writing systems prompt "Record a ..." rather
than "Type a ...".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The close (X) button in the task subject drawer sat centered under the
progress bar; position it absolutely in the top-right corner instead.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Anchor the close (X) button to the drawer content rather than the
header so it sits up in line with the grabber handle.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@hahn-kev

hahn-kev commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator

I decided to move the close button
image

Comment thread frontend/viewer/src/project/tasks/tasks-service.ts
@hahn-kev
hahn-kev merged commit 014db7b into develop Sep 4, 2026
15 checks passed
@hahn-kev
hahn-kev deleted the claude/tasks-feature-review-b6173b branch September 4, 2026 04:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

💻 FW Lite issues related to the fw lite application, not miniLcm or crdt related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants