[fa] refactor: centralise CSV cell sanitisation and remap local ports#8724
[fa] refactor: centralise CSV cell sanitisation and remap local ports#8724dadenegarco wants to merge 1544 commits intomakeplane:developfrom
Conversation
…makeplane#8049) * chore: update use_case type from string to array * chore: convert use_case field to JSONField with array support * feat: implement multi-select UI for use case in onboarding * chore: code refactor * chore: revert backend changes * chore: code refactor * chore: code refactor * chore: code refactor
… props and structure (makeplane#8262)
…umns and introduce new login labels (makeplane#8260)
* feat: add no_activity flag to control issue activity tracking during partial updates * refactor: rename no_activity flag to skip_activity for clarity in issue activity tracking * enhance description input handling with migration update support * feat: implement skip_activity flag to conditionally log issue updates during partial updates * refactor: skip-activity * feat: add migration description update check to conditionally log issue updates --------- Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
* chore: run fixes * fix: type, just use hocuspocusservercontext * fix: codemod --------- Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
…ntication adapter (makeplane#8247) * feat: add avatar download and upload functionality in authentication adapter - Implemented `download_and_upload_avatar` method to fetch and store user avatars from OAuth providers. - Enhanced user data saving process to include avatar handling. - Updated `S3Storage` class with a new `upload_file` method for direct file uploads to S3. * feat: enhance avatar download functionality with size limit checks - Added checks for content length before downloading avatar images to ensure they do not exceed the maximum allowed size. - Implemented chunked downloading of avatar images to handle large files efficiently. - Updated the upload process to return None if the upload fails, improving error handling. * feat: improve avatar filename generation with content type handling - Refactored avatar download logic to determine file extension based on the content type from the response headers. - Removed redundant code for extension mapping, ensuring a cleaner implementation. - Enhanced error handling by returning None for unsupported content types. * fix: remove authorization header for avatar download - Updated the avatar download logic to remove the Authorization header when token data is not present, ensuring compatibility with scenarios where authentication is not required. * feat: add method for avatar download headers - Introduced `get_avatar_download_headers` method to centralize header management for avatar downloads. - Updated `download_and_upload_avatar` method to utilize the new header method, improving code clarity and maintainability.
…own management (makeplane#8202) * feat: enhance CustomSelect component with context for dropdown management * refactor: streamline CustomSelect component structure and improve dropdown options rendering
…akeplane#8266) * feat: enhance workspace settings layout and members page with new components * refactor: update workspace settings layout and members page to use default exports * refactor: settings layout import changes * refactor: simplify workspaceSlug usage in settings layout
…upport (makeplane#8251) * chore: add static files collection and update settings for static files support * chore: add WhiteNoise middleware for static file handling * chore(deps): upgrade WhiteNoise to version 6.11.0 and add static file reverse proxy in Caddyfile
* chore: quick actions refactor * chore: lint fix * chore: unified factory for actions * chore: lint fix * * chore: removed redundant files * chore: updated imports * chore: updated interfaces to types * chore: updated undefined handling
…akeplane#8232) * feat: add placeholderOnEmpty functionality to editor components * Update packages/editor/src/core/extensions/placeholder.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * refactor: rename placeholderOnEmpty to showPlaceholderOnEmpty across editor components * chore : make optional --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…#8229) * feat: enhance clipboard functionality for markdown and HTML content * fix: improve error handling and state management in CustomImageNodeView component * fix: correct asset retrieval query by removing workspace filter in DuplicateAssetEndpoint * fix: update meta tag creation in PasteAssetPlugin for clipboard HTML content * feat: implement copyMarkdownToClipboard utility for enhanced clipboard functionality * refactor: replace copyMarkdownToClipboard utility with copyTextToClipboard for simplified clipboard operations * refactor: streamline clipboard operations by replacing copyTextToClipboard with copyMarkdownToClipboard in editor components * refactor: simplify PasteAssetPlugin by removing unnecessary meta tag handling and streamlining HTML processing * feat: implement asset duplication processing on paste for enhanced clipboard functionality * chore:remove async from copy markdown method * chore: add paste html * remove:prevent default * refactor: remove hasChanges from processAssetDuplication return type for simplified asset processing * fix: format options-dropdown.tsx
* feat: add timezone selection to workspace onboarding, creation and settings * refactor: remove timezone selection from workspace creation and onboarding forms
… on save (makeplane#8270) - Added an override for the save method in ChangeTrackerMixin to store changed fields before resetting tracking. - Implemented a new method, _reset_tracked_fields, to ensure subsequent saves detect changes relative to the last saved state. - Updated IssueComment to utilize _changes_on_save for determining changed fields, improving accuracy in tracking modifications.
* chore: timeline chart refactor * fix: format
…ongoDB (makeplane#8241) * feat: enhance APITokenLogMiddleware to support logging to MongoDB - Added functionality to log external API requests to MongoDB, with a fallback to PostgreSQL if MongoDB is unavailable. - Implemented error handling for MongoDB connection and logging operations. - Introduced additional fields for MongoDB logs, including timestamps and user identifiers. - Refactored request logging logic to streamline the process and improve maintainability. * fix: improve MongoDB availability checks in APITokenLogMiddleware - Enhanced the logic for determining MongoDB availability by checking if the collection is not None. - Added a check for MongoDB configuration before attempting to retrieve the collection. - Updated error handling to ensure the middleware correctly reflects the state of MongoDB connectivity. * feat: implement logging functionality in logger_task for API activity - Added a new logger_task module to handle logging of API activity to MongoDB and PostgreSQL. - Introduced functions for safely decoding request/response bodies and processing logs based on MongoDB availability. - Refactored APITokenLogMiddleware to utilize the new logging functions, improving code organization and maintainability. * refactor: simplify MongoDB logging in logger_task and middleware - Removed direct dependency on MongoDB collection in log_to_mongo function, now retrieving it internally. - Updated process_logs to check MongoDB configuration before logging, enhancing error handling. - Cleaned up logger.py by removing unused imports related to MongoDB. * feat: add Celery task decorator to process_logs function in logger_task - Introduced the @shared_task decorator to the process_logs function, enabling asynchronous processing of log data. - Updated function signature to include a return type of None for clarity.
…#8288) * chore: Hide "Pro" Features in Community Edition * refactor: remove time tracking feature and simplify project features list
…#8288) * chore: Hide "Pro" Features in Community Edition * refactor: remove time tracking feature and simplify project features list
…elds makeplane#8517 Disable autocomplete on authentication and security-related forms to prevent browsers from storing sensitive credentials. This affects sign-in, password reset, account security, and onboarding forms across admin, web, and space apps. Modified components: - Auth forms (email, password, unique code, forgot/reset/set password) - Account security pages - Instance setup and profile onboarding - Shared UI components (auth-input, password-input)
…ial characters (makeplane#8529) * chore: update ProjectSerializer to raise validation for special characters in name and identifier * chore: update external endpoints * fix: external api serializer validation * update serializer to send error code * fix: move the regex expression to Project model
* migration: added archived_at in IssueView * fix: lint
…8644) * fix: idor issues in project assets and issue attachements * fix: comments
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Fix gantt chart day numbers to show Jalali values in Shamsi mode (IDayBlock.dayNumber, IWeekBlock.startDayNumber/endDayNumber) - Fix calendar view (month/week) to be fully Jalali-aware: store lookup uses Jalali year/month keys, day tiles show Jalali day numbers, header/navigation uses jalali month arithmetic - Decouple calendar system from UI language: Jalali + English UI now shows English month names (Farvardin, not فروردین) - Switch ShamsiCalendar date picker to persian_en locale - Add docs/fa/README.md with full feature documentation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fa/chore/add rules and tracker
The ShamsiCalendar component was still using persian_fa locale which showed Farsi month names (فروردین) in the date picker. Switched to persian_en locale so Jalali calendar displays English month names (Farvardin) regardless of calendar system setting. Calendar system ≠ UI language: Jalali mode should use English text when the panel language is English. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Change editor container from pl-3 (padding-left only) to px-3 (symmetric padding) so RTL text has equal spacing from the right edge as LTR text has from the left edge - Convert physical CSS properties to logical properties in drag-drop.css (margin-left → margin-inline-start, left → inset-inline-start) - Convert fake cursor border properties to logical (border-left → border-inline-start, margin-right → margin-inline-end) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…greeting dates - Add Yekan Bakh variable font across all apps (web, admin, space) with @font-face declarations, preload links, and font stack integration - Add tiptap-text-direction extension for automatic RTL/LTR detection in rich text editor (paragraphs and headings) - Convert physical CSS properties to logical equivalents in editor, title-editor, and table styles for proper RTL support - Add dir="auto" to base Input and TextArea components for automatic bidi text direction in all form fields - Wrap issue titles with <bdi> in list, kanban, and spreadsheet layouts to isolate RTL text from surrounding LTR layout - Use Intl.DateTimeFormat with en-US-u-ca-persian for Jalali calendar dates in English on home greeting components Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
[fa] feat: Persian font, BiDi support, and RTL fixes
- Build all 6 Docker images in parallel (web, admin, space, live, api, proxy) - Push to GitHub Container Registry (ghcr.io/dadenegarco/plane-fa/*) - Auto-deploy to production server via SSH on push to develop - Production docker-compose uses custom fork images instead of stock Plane Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ci: add GitHub Actions deploy pipeline with GHCR
- Add CSV import wizard with column/status/assignee mapping (API + frontend) - Add ImportJob model, background task, and fuzzy matching utilities - Add deploy workflow (GitHub Actions → GHCR → server) and production docker-compose - Update tooltip component, project settings, and translation keys - Add editor package dependency update Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
[fa] feat: add CSV importer, CI/CD pipeline, and UI improvements
- Space app: wire up setSpaceCalendarSystem in InstanceProvider so Jalali users see correct dates in public Space view (was always Gregorian) - Space app: add English locale to jalaliFormatEN so month names render in English (e.g., "Farvardin" not "فروردین") - CalendarStore: call setCalendarSystem before regenerateCalendar in MobX reaction to fix race condition where calendar could regenerate with the wrong calendar system when user switches preference - UserGreetingsView: use useCalendarSystem() hook instead of getCalendarSystem() so the greeting date updates immediately when user switches calendar system (was delayed up to ~1 minute) - packages/utils: move jalaliFormatEN/jalaliFDTNEN to module level with English locale, use them in setCalendarSystem Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… import mapping Case-insensitive dedup prevents duplicate entries when the same name appears with different casing/whitespace in the CSV. Workspace members and pending invites are now shown in the assignee mapping dropdown, with auto-add to project during import. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add LLM_BASE_URL support so users can point AI features to custom OpenAI-compatible endpoints (Azure, OpenRouter, local proxies, etc.) via GOD MODE settings or environment variables. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…mport CSV/XLSX files from tools like ClickUp store multiple assignees in bracket notation [name1, name2]. The comma split was creating duplicate entries like [name, name], and [name] for the same person. Strip [] before splitting. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… pending invite selection Migrate all import wizard components from deprecated custom-* tokens and raw Tailwind typography to the project's semantic design system (text-primary, bg-layer-*, border-subtle, text-body-sm-medium, etc.). Replace native <select> elements with CustomSearchSelect, Avatar, and Badge components. Make pending workspace invites selectable in assignee mapping with invite:<email> prefix pattern resolved by email lookup in the backend import task. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…e support Replace non-existent CSS variable names (--color-text-primary, --color-bg-surface-2, etc.) with the actual project theme variables (--txt-primary, --bg-surface-2, etc.) that are redefined under @variant dark and adapt automatically to all themes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…er and remap local ports Extract a reusable _clean_cell() function that strips whitespace, brackets, and null-like strings from imported CSV/XLSX values, replacing scattered .strip() / conditional checks across the import task. Remap Redis and MinIO host ports in docker-compose-local.yml to avoid conflicts with other local services. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Tip Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs). 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. Comment |
Summary
_clean_cell()helper inimport_task.pythat strips whitespace, brackets ([],{}), and null-like strings (null,none,n/a, etc.) from imported CSV/XLSX cell values.strip()calls and nested conditionals across all column handlers with the centralised helper6379→6380) and MinIO (9000→9004,9090→9091) host ports indocker-compose-local.ymlto avoid conflicts with other local servicesTest plan
null,N/A,—) and verify they are treated as empty[value],{value}) and confirm brackets are strippeddocker compose -f docker-compose-local.yml upand verify services start on the new ports🤖 Generated with Claude Code