v1.3.1

makeplane/planev1.3.1May 14, 2026by github-actions[bot]

AI Summary

Focuses on security fixes including ORM injection prevention and path traversal mitigation, alongside refactoring efforts like removing the Intercom integration and optimizing sub-issue queries.

Key Highlights

  • Multiple security patches for ORM field injection and path traversal.
  • Webhook SSRF protection via IP allowlist.
  • Intercom integration and chat support components removed.

New Features

  • Webhook IP allowlist protection
  • Sub-issue query performance optimization
  • Intercom integration removal

Full Release Notes

## ✨ Improvements

- **Scrollbar in keyboard shortcuts modal**
- **Skip role & use-case steps for self-hosted instances**

## 🐛 Bug Fixes

- **Prevent ORM field injection via analytics segment parameter** —
  Security fix (GHSA-93x3-ghh7-72j3). Centralizes analytics field allowlists into `VALID_ANALYTICS_FIELDS` / `VALID_YAXIS` and adds defense-in-depth validation in `build_graph_plot()` and `extract_axis()` so no caller can pass arbitrary field references to Django `F()` expressions. Also adds missing segment validation to `SavedAnalyticEndpoint`.
- **Enforce workspace membership on V2 asset endpoints** —
  Security fix (GHSA-qw87-v5w3-6vxx). Adds `@allow_permission` to all `WorkspaceFileAssetEndpoint` methods and scopes `DuplicateAssetEndpoint`'s source asset lookup to workspaces where the caller is an active member.
- **Sanitize filenames in upload paths to prevent path traversal** — 
  Security fix (GHSA-v57h-5999-w7xp). Server-side filename sanitization across all file upload endpoints; defense-in-depth against S3 key pollution. Handles Windows-style paths and leading-dot/whitespace edge cases.
- **Replace `IS_SELF_MANAGED` toggle with `WEBHOOK_ALLOWED_IPS` allowlist** — 
  Webhook SSRF protection: blocks all private/internal IPs by default; only specific networks listed in `WEBHOOK_ALLOWED_IPS` (comma-separated IPs/CIDRs) are permitted. Re-validates URL at send time to prevent DNS rebinding, sanitizes error messages, and guards mixed IPv4/IPv6 allowlists.
- **Strip whitespace and handle null values in instance configuration** — 
  Sanitizes patched instance config values: trims leading/trailing whitespace and converts `null` to `""` instead of the literal string `"None"`.
- **Update border for project timezone** — [WEB-6785] 
- **Update Twitter icon and links to X** — 
- **Optimize sub-issue query performance** —
  Adds optimized annotations and subqueries to the sub-issue listing path.

## 🔧 Refactor & Chore

- **Remove Intercom integration and chat support components**
  Intercom is no longer used. Removes all related frontend components, hooks, custom events, API config, types, and i18n keys.
- **Add project context to relations API** 
- **Suppress CodeQL file coverage deprecation warning** 
  Explicitly opts into the new default behavior where CodeQL skips computing file coverage on PRs for improved analysis performance.
- **Update CODEOWNERS for apps and deployments**
- **Add Claude Code skills for PR descriptions and release notes**

## 📦 Dependencies

- Bump `axios` 1.15.0 → 1.15.2, `uuid` 13.0.0 → 14.0.0; add pnpm overrides pinning `postcss` >=8.5.10 and `follow-redirects` >=1.16.0
- Bump `Django` 4.2.29 → 4.2.30, `cryptography` 46.0.6 → 46.0.7, `axios` 1.13.5 → 1.15.0, `lodash` 4.17.23 → 4.18.1 
- Bump `vite` 7.3.1 → 7.3.2
- Bump `pytest` 9.0.2 → 9.0.3
- Bump `lxml` 6.0.0 → 6.1.0