mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-16 16:30:15 +01:00
* feat: working started for feedback implementation. TODO: - needs some refactoring. - needs some UI animations. * feat: working rate functionality * feat: works now as well to reader the already rated responses from the server. * feat: added the option to give feedback in text (optional) * feat: added Dismiss option `x` to the `FeedbackTagOptions` * ✨ feat: Add rating and ratingContent fields to message schema * 🔧 chore: Bump version to 0.0.3 in package.json * ✨ feat: Enhance feedback localization and update UI elements * 🚀 feat: Implement feedback tagging system with thumbs up/down options * 🚀 feat: Add data-provider package to unused i18n keys detection * 🎨 style: update HoverButtons' style * 🎨 style: Update HoverButtons and Fork components for improved styling and visibility * 🔧 feat: Implement feedback system with rating and content options * 🔧 feat: Enhance feedback handling with improved rating toggle and tag options * 🔧 feat: Integrate toast notifications for feedback submission and clean up unused state * 🔧 feat: Remove unused feedback tag options from translation file * ✨ refactor: clean up Feedback component and improve HoverButtons structure * ✨ refactor: remove unused settings switches for auto scroll, hide side panel, and user message markdown * refactor: reorganize import order * ✨ refactor: enhance HoverButtons and Fork components with improved styles and animations * ✨ refactor: update feedback response phrases for improved user engagement * ✨ refactor: add CheckboxOption component and streamline fork options rendering * Refactor feedback components and logic - Consolidated feedback handling into a single Feedback component, removing FeedbackButtons and FeedbackTagOptions. - Introduced new feedback tagging system with detailed tags for both thumbs up and thumbs down ratings. - Updated feedback schema to include new tags and improved type definitions. - Enhanced user interface for feedback collection, including a dialog for additional comments. - Removed obsolete files and adjusted imports accordingly. - Updated translations for new feedback tags and placeholders. * ✨ refactor: update feedback handling by replacing rating fields with feedback in message updates * fix: add missing validateMessageReq middleware to feedback route and refactor feedback system * 🗑️ chore: Remove redundant fork option explanations from translation file * 🔧 refactor: Remove unused dependency from feedback callback * 🔧 refactor: Simplify message update response structure and improve error logging * Chore: removed unused tests. --------- Co-authored-by: Marco Beretta <81851188+berry-13@users.noreply.github.com>
117 lines
3.9 KiB
YAML
117 lines
3.9 KiB
YAML
name: Detect Unused i18next Strings
|
|
|
|
on:
|
|
pull_request:
|
|
paths:
|
|
- "client/src/**"
|
|
- "api/**"
|
|
- "packages/data-provider/src/**"
|
|
|
|
jobs:
|
|
detect-unused-i18n-keys:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
pull-requests: write
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Find unused i18next keys
|
|
id: find-unused
|
|
run: |
|
|
echo "🔍 Scanning for unused i18next keys..."
|
|
|
|
# Define paths
|
|
I18N_FILE="client/src/locales/en/translation.json"
|
|
SOURCE_DIRS=("client/src" "api" "packages/data-provider/src")
|
|
|
|
# Check if translation file exists
|
|
if [[ ! -f "$I18N_FILE" ]]; then
|
|
echo "::error title=Missing i18n File::Translation file not found: $I18N_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
# Extract all keys from the JSON file
|
|
KEYS=$(jq -r 'keys[]' "$I18N_FILE")
|
|
|
|
# Track unused keys
|
|
UNUSED_KEYS=()
|
|
|
|
# Check if each key is used in the source code
|
|
for KEY in $KEYS; do
|
|
FOUND=false
|
|
|
|
# Special case for dynamically constructed special variable keys
|
|
if [[ "$KEY" == com_ui_special_var_* ]]; then
|
|
# Check if TSpecialVarLabel is used in the codebase
|
|
for DIR in "${SOURCE_DIRS[@]}"; do
|
|
if grep -r --include=\*.{js,jsx,ts,tsx} -q "TSpecialVarLabel" "$DIR"; then
|
|
FOUND=true
|
|
break
|
|
fi
|
|
done
|
|
|
|
# Also check if the key is directly used somewhere
|
|
if [[ "$FOUND" == false ]]; then
|
|
for DIR in "${SOURCE_DIRS[@]}"; do
|
|
if grep -r --include=\*.{js,jsx,ts,tsx} -q "$KEY" "$DIR"; then
|
|
FOUND=true
|
|
break
|
|
fi
|
|
done
|
|
fi
|
|
else
|
|
# Regular check for other keys
|
|
for DIR in "${SOURCE_DIRS[@]}"; do
|
|
if grep -r --include=\*.{js,jsx,ts,tsx} -q "$KEY" "$DIR"; then
|
|
FOUND=true
|
|
break
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if [[ "$FOUND" == false ]]; then
|
|
UNUSED_KEYS+=("$KEY")
|
|
fi
|
|
done
|
|
|
|
# Output results
|
|
if [[ ${#UNUSED_KEYS[@]} -gt 0 ]]; then
|
|
echo "🛑 Found ${#UNUSED_KEYS[@]} unused i18n keys:"
|
|
echo "unused_keys=$(echo "${UNUSED_KEYS[@]}" | jq -R -s -c 'split(" ")')" >> $GITHUB_ENV
|
|
for KEY in "${UNUSED_KEYS[@]}"; do
|
|
echo "::warning title=Unused i18n Key::'$KEY' is defined but not used in the codebase."
|
|
done
|
|
else
|
|
echo "✅ No unused i18n keys detected!"
|
|
echo "unused_keys=[]" >> $GITHUB_ENV
|
|
fi
|
|
|
|
- name: Post verified comment on PR
|
|
if: env.unused_keys != '[]'
|
|
run: |
|
|
PR_NUMBER=$(jq --raw-output .pull_request.number "$GITHUB_EVENT_PATH")
|
|
|
|
# Format the unused keys list as checkboxes for easy manual checking.
|
|
FILTERED_KEYS=$(echo "$unused_keys" | jq -r '.[]' | grep -v '^\s*$' | sed 's/^/- [ ] `/;s/$/`/' )
|
|
|
|
COMMENT_BODY=$(cat <<EOF
|
|
### 🚨 Unused i18next Keys Detected
|
|
|
|
The following translation keys are defined in \`translation.json\` but are **not used** in the codebase:
|
|
|
|
$FILTERED_KEYS
|
|
|
|
⚠️ **Please remove these unused keys to keep the translation files clean.**
|
|
EOF
|
|
)
|
|
|
|
gh api "repos/${{ github.repository }}/issues/${PR_NUMBER}/comments" \
|
|
-f body="$COMMENT_BODY" \
|
|
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}"
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Fail workflow if unused keys found
|
|
if: env.unused_keys != '[]'
|
|
run: exit 1
|