Skip to content

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

Open
dadenegarco wants to merge 21 commits intomakeplane:previewfrom
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 21 commits intomakeplane:previewfrom
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

dadenegarco and others added 21 commits February 23, 2026 20:55
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.

@sriramveeraghanta sriramveeraghanta changed the base branch from develop to preview March 17, 2026 18:36
@sriramveeraghanta
Copy link
Member

I have rebased your branch to preview branch. Can you resolve conflicts in this PR.

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.

3 participants