Skip to content

[fa] refactor: centralise CSV cell sanitisation and remap local ports#8724

Open
dadenegarco wants to merge 1544 commits intomakeplane:developfrom
dadenegarco:fa/refactor-import-clean-cell-and-local-ports
Open

[fa] refactor: centralise CSV cell sanitisation and remap local ports#8724
dadenegarco wants to merge 1544 commits intomakeplane:developfrom
dadenegarco:fa/refactor-import-clean-cell-and-local-ports

Conversation

@dadenegarco
Copy link

Summary

  • Extract a reusable _clean_cell() helper in import_task.py that strips whitespace, brackets ([], {}), and null-like strings (null, none, n/a, etc.) from imported CSV/XLSX cell values
  • Replace scattered .strip() calls and nested conditionals across all column handlers with the centralised helper
  • Remap Redis (6379→6380) and MinIO (9000→9004, 9090→9091) host ports in docker-compose-local.yml to avoid conflicts with other local services

Test plan

  • Import a CSV/XLSX file containing null-like values (null, N/A, ) and verify they are treated as empty
  • Import a file with bracket-wrapped values ([value], {value}) and confirm brackets are stripped
  • Verify existing import functionality (title, description, status, priority, dates, assignees, labels, parent linking) works correctly
  • Run docker compose -f docker-compose-local.yml up and verify services start on the new ports

🤖 Generated with Claude Code

aaryan610 and others added 30 commits December 8, 2025 15:16
…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
* 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
anmolsinghbhatia and others added 28 commits February 17, 2026 00:21
…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>
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>
@CLAassistant
Copy link

CLAassistant commented Mar 8, 2026

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
12 out of 13 committers have signed the CLA.

✅ sangeethailango
✅ anmolsinghbhatia
✅ sriramveeraghanta
✅ vamsikrishnamathala
✅ iam-vipin
✅ stelmsk
✅ dheeru0198
✅ conny3496
✅ JayashTripathy
✅ aaryan610
✅ b-saikrishnakanth
✅ prateekshourya29
❌ dadenegarco
You have signed the CLA already but the status is still pending? Let us recheck it.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 8, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

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: defaults

Review profile: CHILL

Plan: Pro

Run ID: 5f080cb5-7e65-40ea-ae4b-55073fe0ea82

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
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


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 and usage tips.

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.