Skip to content

Modified Pixel for Python - #4271

Merged
sayomaki merged 19 commits into
masterfrom
yilin/pixel
Aug 10, 2026
Merged

Modified Pixel for Python #4271
sayomaki merged 19 commits into
masterfrom
yilin/pixel

Conversation

@yiilinzhang

Copy link
Copy Markdown
Contributor

Description

This PR adds 2 main features for pixel

  1. Allow the admin to upload course documents for pixel via the admin panel. This generates an ai description and saves it to the s3 bucket. This supports the update to python where the new slides can be added to the store when it is ready and the prompt can also be tested and tweaked on the go
  2. Let the chatbot view the current page content so it can provide better responses
  3. Fixed UI bug ther louis cannot be minimised after it is expanded

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update
  • Code quality improvements

How to test

  1. Pull both the frontend and the backend and run the necessary migrations
  2. An S3 bucket also has to be provided with aws creds
  3. Navigate to the admin user login admin panel for pixel setting. After documents have been uploaded the user can test out the chatbot

Checklist

  • I have tested this code
  • I have updated the documentation

@yiilinzhang
yiilinzhang marked this pull request as ready for review August 9, 2026 06:30
@coderabbitai

coderabbitai Bot commented Aug 9, 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: Pro Plus

Run ID: 38b8a1bb-cb89-4361-a304-19da28a509a4

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
📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added admin tools to upload, categorize, edit, rename, delete, and preview Pixelbot documents.
    • Added batch uploads with progress tracking, validation, retry, and metadata editing.
    • Added category creation, renaming, and deletion.
    • Chatbot responses can now use the active editor code and assessment question for context.
  • Improvements

    • Updated chatbot tips and button positioning while the chat is open.
    • Removed the chatbot “Clean” button.
    • Improved document status and release-date display.

Walkthrough

Adds Pixelbot document and category administration APIs and UI, including uploads and editing. Extends RAG messages with editor context. Updates chatbot controls and floating positions.

Changes

Pixelbot document administration

Layer / File(s) Summary
API contracts and requests
src/features/adminPanel/subcomponents/PixelbotDocumentsTypes.ts, src/commons/sagas/RequestsSaga.ts
Adds typed document and category models and requests for listing, previews, uploads, saves, renames, and deletions.
Document directory integration
src/features/adminPanel/subcomponents/PixelbotConfigPanel.tsx, src/features/adminPanel/subcomponents/PixelbotDocumentsPanel.tsx
Adds the document directory, category actions, document actions, map preview, refresh handling, and configuration-panel integration.
Upload and document editing workflows
src/features/adminPanel/subcomponents/AddDocumentsModal.tsx, src/features/adminPanel/subcomponents/DocumentDetailPopup.tsx
Adds batch upload, metadata validation, document editing, saving, status display, and deletion workflows.
Directory presentation
src/features/adminPanel/subcomponents/DocumentDirectory.module.css
Adds styling for directory layouts, controls, upload states, forms, loading indicators, errors, and detail dialogs.

RAG chatbot context and controls

Layer / File(s) Summary
RAG screen context propagation
src/features/ragChat/api.ts, src/pages/academy/ragChatbot/RagChatbot.tsx
Adds optional editor code and assessment question context to RAG message requests.
Floating chatbot controls
src/components/ui/chatbot/ChatBox.tsx, src/components/ui/chatbot/FloatingChatbot.tsx, src/components/ui/chatbot/FloatingChatbotButton.tsx
Removes the Clean control and applies dynamic floating positions while the chat opens and closes.

Estimated code review effort: 4 (Complex) | ~60 minutes

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title identifies Pixel but does not clearly describe the document-management, chatbot, and UI changes. Use a specific title such as "Add Pixel document management and chatbot screen context support".
✅ Passed checks (3 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.
Description check ✅ Passed The description covers the main changes, change type, testing setup, and checklist, although the test steps could be more detailed.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 14

🧹 Nitpick comments (7)
src/features/adminPanel/subcomponents/PixelbotDocumentsPanel.tsx (1)

186-199: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Expose the info popover state to assistive technology.

The button toggles infoOpen but reports no state. Add aria-expanded={infoOpen} so screen reader users learn that the button opens a disclosure.

♻️ Proposed change
           <button
             type="button"
             className={classes.infoButton}
             onClick={() => setInfoOpen(prev => !prev)}
+            aria-expanded={infoOpen}
             aria-label="About this screen"
           >
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/features/adminPanel/subcomponents/PixelbotDocumentsPanel.tsx` around
lines 186 - 199, Update the info toggle button in the PixelbotDocumentsPanel
component to include aria-expanded={infoOpen}, keeping it synchronized with the
existing state used to render the infoPopover.
src/features/adminPanel/subcomponents/DocumentDetailPopup.tsx (2)

37-45: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

The document prop shadows the global document.

Inside this module, document refers to the prop. Any later use of the DOM global, for example document.addEventListener as used in PixelbotDocumentsPanel.tsx at line 87, would silently resolve to the prop and throw at runtime.

Rename the prop, for example to pixelbotDocument.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/features/adminPanel/subcomponents/DocumentDetailPopup.tsx` around lines
37 - 45, Rename the document prop in DocumentDetailPopup and update all
references, including Props and callers, to a non-conflicting name such as
pixelbotDocument so DOM global document access remains unshadowed.

50-55: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Document why the effect depends only on document?.id.

CI reports react-hooks/exhaustive-deps for this effect. Adding document to the array would reset the draft on every parent refresh and discard in-progress edits, because PixelbotDocumentsPanel creates a new documents array on each refresh(). The current dependency list is therefore intentional.

Add a comment and an explicit disable so a later contributor does not "fix" the warning and break editing.

♻️ Proposed change
+  // Reset the draft only when a different document is shown. Depending on `document` itself
+  // would discard in-progress edits, because the parent rebuilds the documents array on every
+  // refresh.
+  // eslint-disable-next-line react-hooks/exhaustive-deps
   useEffect(() => {
     if (document) {
       setDraft(draftFrom(document));
       setMode(initialMode);
     }
   }, [document?.id]);
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/features/adminPanel/subcomponents/DocumentDetailPopup.tsx` around lines
50 - 55, Add an inline comment above the useEffect dependency array explaining
that it intentionally depends only on document?.id to avoid resetting
in-progress edits when parent refreshes recreate the document object, and add a
narrowly scoped react-hooks/exhaustive-deps disable for this effect. Keep the
existing effect behavior unchanged.

Source: Pipeline failures

src/features/adminPanel/subcomponents/AddDocumentsModal.tsx (1)

151-157: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Move the nested setSelectedFileId out of the setBatch updater.

React may invoke a state updater more than once, and StrictMode does so deliberately. Queueing another state update inside the updater is not pure. The current call is idempotent, so there is no visible defect today, but the pattern breaks as soon as the logic gains a non-idempotent step.

Compute the next batch outside the setter.

♻️ Proposed change
-  const removeFile = useCallback((id: string) => {
-    setBatch(prev => {
-      const next = prev.filter(f => f.id !== id);
-      setSelectedFileId(sel => (sel === id ? (next[0]?.id ?? null) : sel));
-      return next;
-    });
-  }, []);
+  const removeFile = useCallback(
+    (id: string) => {
+      const next = batch.filter(f => f.id !== id);
+      setBatch(next);
+      if (selectedFileId === id) {
+        setSelectedFileId(next[0]?.id ?? null);
+      }
+    },
+    [batch, selectedFileId],
+  );
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/features/adminPanel/subcomponents/AddDocumentsModal.tsx` around lines 151
- 157, Update removeFile to compute the filtered next batch outside the setBatch
updater, then update selectedFileId based on that result and return the next
batch from a pure setBatch callback. Preserve the existing fallback to the first
remaining file ID or null when the removed file was selected.

Source: Linters/SAST tools

src/features/adminPanel/subcomponents/DocumentDirectory.module.css (1)

202-216: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Several class blocks have no consumer.

.docHeaderRow, .docHeaderLabel, .emptyLink (lines 274-284), .progressTrack and .progressFill (lines 470-481), and .popupEyebrow (lines 728-734) are not referenced by PixelbotDocumentsPanel.tsx, AddDocumentsModal.tsx, or DocumentDetailPopup.tsx.

.docHeaderRow and .docHeaderLabel describe column headers for the four-column .docRow grid. The panel renders .docRow with no header row, so the Date, Status, and Actions columns have no labels. Confirm whether the header markup was dropped by mistake. Remove the remaining blocks if they are leftovers.

#!/bin/bash
# Check for consumers of the CSS module classes that appear unused.
for cls in docHeaderRow docHeaderLabel emptyLink progressTrack progressFill popupEyebrow; do
  echo "== $cls =="
  rg -n --iglob '*.tsx' --iglob '*.ts' -- "$cls"
done
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/features/adminPanel/subcomponents/DocumentDirectory.module.css` around
lines 202 - 216, Verify whether the document panel’s four-column header markup
was accidentally omitted; if so, add consumers for docHeaderRow and
docHeaderLabel matching the docRow columns. Otherwise remove the unused CSS
blocks docHeaderRow, docHeaderLabel, emptyLink, progressTrack, progressFill, and
popupEyebrow from the stylesheet.
src/commons/sagas/RequestsSaga.ts (2)

1485-1485: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Prefer unknown[] over any[] for the map preview.

The only consumer, handleOpenMapPreview in src/features/adminPanel/subcomponents/PixelbotDocumentsPanel.tsx, passes the value to JSON.stringify. unknown[] satisfies that use and stops any from spreading into callers.

♻️ Proposed change
-export const getPixelbotDocumentMapPreview = async (tokens: Tokens): Promise<any[] | null> => {
+export const getPixelbotDocumentMapPreview = async (tokens: Tokens): Promise<unknown[] | null> => {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/commons/sagas/RequestsSaga.ts` at line 1485, Update the return type of
getPixelbotDocumentMapPreview from any[] | null to unknown[] | null, preserving
its existing behavior and ensuring callers such as handleOpenMapPreview can
still pass the result to JSON.stringify.

1548-1563: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Remove the unused renamePixelbotDocument helper.

renamePixelbotDocument is defined in src/commons/sagas/RequestsSaga.ts, but no tracked file calls it. Remove it unless the document-rename UI is added in this PR.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/commons/sagas/RequestsSaga.ts` around lines 1548 - 1563, Remove the
unused renamePixelbotDocument helper from RequestsSaga.ts, including its request
logic, since no tracked code calls it; do not add replacement behavior unless a
document-rename UI is introduced.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/features/adminPanel/subcomponents/AddDocumentsModal.tsx`:
- Line 22: Replace the UTC-based todayIso calculation in
AddDocumentsModal.tsx#L22-L22 with local getFullYear, getMonth, and getDate
formatting so immediate releases use the admin’s local date. In
PixelbotDocumentsTypes.ts#L71-L77, update pixelbotDocumentStatus to use the same
local-date helper; both sites must produce matching yyyy-mm-dd values.
- Around line 185-203: Update handleSaveAll in
src/features/adminPanel/subcomponents/AddDocumentsModal.tsx (lines 185-203) to
wrap the save flow in try/finally and reset isSaving in finally; also reset
isSaving in handleClose. Update the save handler in
src/features/adminPanel/subcomponents/DocumentDetailPopup.tsx (lines 84-103)
similarly, ensuring isSaving resets whether the save succeeds or throws.
- Around line 380-396: Associate every form label in AddDocumentsModal and
DocumentDetailPopup with its corresponding field by assigning each
input/select/textarea a unique id and matching the label’s htmlFor. Apply this
consistently to the Title, Summary, Category, and Release date fields,
preserving the existing field behavior and values.
- Around line 67-103: Update runUpload to catch rejected uploadPixelbotDocuments
calls and mark every file in the current batch as phase 'error' with a retryable
errorMessage, ensuring setBatch runs when the request or response parsing fails.
Also validate that entries contains one result per file before applying
index-based metadata, treating a short or missing response as a batch failure
rather than silently mismatching files.
- Line 133: Update onDropRejected in AddDocumentsModal to collect the rejected
filenames and display them with showDangerMessage, importing that helper from
the notifications module. Include the accepted file types in the message so
admins understand why the drop was rejected.

In `@src/features/adminPanel/subcomponents/DocumentDetailPopup.tsx`:
- Around line 240-242: Allow saving documents with a null releaseDate by
removing the releaseDate requirement from the Save button’s intent and disabled
conditions in DocumentDetailPopup. Keep saving gated by dirty and isSaving,
preserving the documented undated-document behavior.

In `@src/features/adminPanel/subcomponents/DocumentDirectory.module.css`:
- Around line 1-23: Move the --dd-* custom property declarations from .directory
to :root in DocumentDirectory.module.css so Blueprint dialog portals can resolve
them. In AddDocumentsModal.tsx at lines 249-266, verify .dropzone, .formInput,
.formLabel, and .formSelect use the intended borders and text colors after the
scope fix; DocumentDetailPopup.tsx requires no direct change because it shares
these classes.

In `@src/features/adminPanel/subcomponents/PixelbotConfigPanel.tsx`:
- Around line 31-33: Update the routing prompt containing the document-selection
instructions so the date-based guidance follows an actual current-date injection
into the prompt, alongside the dynamic %DOCUMENT_MAP% content. If the
surrounding prompt-building flow cannot provide today’s date, remove the
date-dependent instruction instead of leaving the model to rely on unavailable
context.

In `@src/features/adminPanel/subcomponents/PixelbotDocumentsPanel.tsx`:
- Around line 238-241: The category rename onKeyDown handler at
src/features/adminPanel/subcomponents/PixelbotDocumentsPanel.tsx:238-241 must
return immediately when e.nativeEvent.isComposing is true before handling Enter
or Escape; apply the same first-statement guard to the new-category onKeyDown
handler at
src/features/adminPanel/subcomponents/PixelbotDocumentsPanel.tsx:324-330.
- Around line 272-308: Run the project formatter on all three affected files. In
src/features/adminPanel/subcomponents/PixelbotDocumentsPanel.tsx lines 272-308,
reformat the over-indented docs.map document-row block and wrap the over-width
lines 202 and 402; in
src/features/adminPanel/subcomponents/AddDocumentsModal.tsx lines 205-207,
reformat the categoryOptions memo arguments and wrap lines 9, 162, 351, and 401;
in src/features/adminPanel/subcomponents/DocumentDetailPopup.tsx lines 68-70,
reformat the categoryOptions memo arguments and wrap lines 141 and 172.
- Around line 226-229: Make both interactive containers keyboard accessible: in
src/features/adminPanel/subcomponents/PixelbotDocumentsPanel.tsx lines 226-229,
update the category row around toggleCategoryOpen to add role="button",
tabIndex={0}, aria-expanded={isOpen}, and an onKeyDown handler that toggles on
Enter or Space; in src/features/adminPanel/subcomponents/AddDocumentsModal.tsx
lines 276-284, update the batch file item to add role="button", tabIndex={0},
and an onKeyDown handler that performs the same file-selection/edit action on
Enter or Space.
- Around line 173-177: Update handleOpenMapPreview to clear the existing
mapPreview immediately before starting getPixelbotDocumentMapPreview, while
preserving the current loading and response handling behavior.
- Around line 270-271: Update the expanded-category rendering condition in
PixelbotDocumentsPanel so the category body renders whenever isOpen is true,
including when docs is empty. Within that body, display the existing emptyRow
style and an appropriate empty-state message for categories with no documents,
while preserving the current document rendering for non-empty categories.

In `@src/features/adminPanel/subcomponents/PixelbotDocumentsTypes.ts`:
- Around line 71-77: Update pixelbotDocumentStatus to derive today from the
local Date components rather than new Date().toISOString(), formatting the local
year, month, and day as yyyy-mm-dd before comparing with releaseDate. Preserve
the existing Live behavior for null dates and the current comparison semantics.

---

Nitpick comments:
In `@src/commons/sagas/RequestsSaga.ts`:
- Line 1485: Update the return type of getPixelbotDocumentMapPreview from any[]
| null to unknown[] | null, preserving its existing behavior and ensuring
callers such as handleOpenMapPreview can still pass the result to
JSON.stringify.
- Around line 1548-1563: Remove the unused renamePixelbotDocument helper from
RequestsSaga.ts, including its request logic, since no tracked code calls it; do
not add replacement behavior unless a document-rename UI is introduced.

In `@src/features/adminPanel/subcomponents/AddDocumentsModal.tsx`:
- Around line 151-157: Update removeFile to compute the filtered next batch
outside the setBatch updater, then update selectedFileId based on that result
and return the next batch from a pure setBatch callback. Preserve the existing
fallback to the first remaining file ID or null when the removed file was
selected.

In `@src/features/adminPanel/subcomponents/DocumentDetailPopup.tsx`:
- Around line 37-45: Rename the document prop in DocumentDetailPopup and update
all references, including Props and callers, to a non-conflicting name such as
pixelbotDocument so DOM global document access remains unshadowed.
- Around line 50-55: Add an inline comment above the useEffect dependency array
explaining that it intentionally depends only on document?.id to avoid resetting
in-progress edits when parent refreshes recreate the document object, and add a
narrowly scoped react-hooks/exhaustive-deps disable for this effect. Keep the
existing effect behavior unchanged.

In `@src/features/adminPanel/subcomponents/DocumentDirectory.module.css`:
- Around line 202-216: Verify whether the document panel’s four-column header
markup was accidentally omitted; if so, add consumers for docHeaderRow and
docHeaderLabel matching the docRow columns. Otherwise remove the unused CSS
blocks docHeaderRow, docHeaderLabel, emptyLink, progressTrack, progressFill, and
popupEyebrow from the stylesheet.

In `@src/features/adminPanel/subcomponents/PixelbotDocumentsPanel.tsx`:
- Around line 186-199: Update the info toggle button in the
PixelbotDocumentsPanel component to include aria-expanded={infoOpen}, keeping it
synchronized with the existing state used to render the infoPopover.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ab196c8f-db63-4cee-a60e-a1a570005236

📥 Commits

Reviewing files that changed from the base of the PR and between b95d572 and 3af057b.

📒 Files selected for processing (12)
  • src/commons/sagas/RequestsSaga.ts
  • src/components/ui/chatbot/ChatBox.tsx
  • src/components/ui/chatbot/FloatingChatbot.tsx
  • src/components/ui/chatbot/FloatingChatbotButton.tsx
  • src/features/adminPanel/subcomponents/AddDocumentsModal.tsx
  • src/features/adminPanel/subcomponents/DocumentDetailPopup.tsx
  • src/features/adminPanel/subcomponents/DocumentDirectory.module.css
  • src/features/adminPanel/subcomponents/PixelbotConfigPanel.tsx
  • src/features/adminPanel/subcomponents/PixelbotDocumentsPanel.tsx
  • src/features/adminPanel/subcomponents/PixelbotDocumentsTypes.ts
  • src/features/ragChat/api.ts
  • src/pages/academy/ragChatbot/RagChatbot.tsx
💤 Files with no reviewable changes (1)
  • src/components/ui/chatbot/ChatBox.tsx

Comment thread src/features/adminPanel/subcomponents/AddDocumentsModal.tsx Outdated
Comment thread src/features/adminPanel/subcomponents/AddDocumentsModal.tsx Outdated
Comment thread src/features/adminPanel/subcomponents/AddDocumentsModal.tsx Outdated
Comment thread src/features/adminPanel/subcomponents/AddDocumentsModal.tsx Outdated
Comment thread src/features/adminPanel/subcomponents/AddDocumentsModal.tsx Outdated
Comment thread src/features/adminPanel/subcomponents/PixelbotDocumentsPanel.tsx Outdated
Comment thread src/features/adminPanel/subcomponents/PixelbotDocumentsPanel.tsx Outdated
Comment thread src/features/adminPanel/subcomponents/PixelbotDocumentsPanel.tsx Outdated
Comment thread src/features/adminPanel/subcomponents/PixelbotDocumentsPanel.tsx
Comment thread src/features/adminPanel/subcomponents/PixelbotDocumentsTypes.ts Outdated
@yiilinzhang yiilinzhang changed the title Yilin/pixel Modified Pixel for Python Aug 9, 2026
@coveralls

coveralls commented Aug 9, 2026

Copy link
Copy Markdown

Coverage Report for CI Build 31365312937

Coverage decreased (-0.02%) to 45.358%

Details

  • Coverage decreased (-0.02%) from the base build.
  • Patch coverage: 17 uncovered changes across 2 files (10 of 27 lines covered, 37.04%).
  • No coverage regressions found.

Uncovered Changes

File Changed Covered %
src/commons/sagas/RequestsSaga.ts 26 10 38.46%
src/features/adminPanel/subcomponents/CourseConfigPanel.tsx 1 0 0.0%

Coverage Regressions

No coverage regressions found.


Coverage Stats

Coverage Status
Relevant Lines: 14621
Covered Lines: 7081
Line Coverage: 48.43%
Relevant Branches: 7858
Covered Branches: 3115
Branch Coverage: 39.64%
Branches in Coverage %: Yes
Coverage Strength: 30.76 hits per line

💛 - Coveralls

@yiilinzhang yiilinzhang self-assigned this Aug 9, 2026
@yiilinzhang
yiilinzhang requested a review from sayomaki August 9, 2026 09:35

@sayomaki sayomaki left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall the changes are good, but there's a few things that I would like to point out and/or ask about.

Comment thread src/components/ui/chatbot/FloatingChatbot.tsx Outdated
Comment thread src/pages/academy/ragChatbot/RagChatbot.tsx
Comment thread src/pages/academy/ragChatbot/RagChatbot.tsx
Comment thread src/features/adminPanel/subcomponents/AddDocumentsModal.tsx Outdated
@martin-henz
martin-henz requested a review from sayomaki August 10, 2026 09:16

@sayomaki sayomaki left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, but do remember to update the category_id changes on the backend! Will leave a comment there.

@sayomaki
sayomaki merged commit 866ce8b into master Aug 10, 2026
10 checks passed
@sayomaki
sayomaki deleted the yilin/pixel branch August 10, 2026 14:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants