penpot/penpot

bug: Inflationary use of "Undo"-Steps for colors and numeric values

pr0pz opened this issue · 0 comments

Steps To Reproduce

  1. Start self hosted version with docker compose
  2. Open or start a project

For colors:
3. Upload an image
4. Start the color picker tool with "i"
5. Click and hold mouse button (like for drag and drop) and slide the mouse pointer through different colors, then release the mouse button

For numeric values:
3. Create a text element
4. Go to font-size: hold shift + arrow up/down key to change the font size (like ten times up, 2times down)

Expected behavior

When holding shift or the mouse button, I expect the final result to be one UNDO step, because I'm playing around with the values and haven't decided yet.

Actual behavior

Every step along the way is saved as UNDO, which kinda inflates/bloats the undo/redo function. I have to click ctrl + z a zillion times to bet back to the original value.

  • When I hold the mouse down: all kind of colors are saved into undo (and also recent colors - see video).
  • Same goes for numeric values: While playing around with the values holding shift, every value along the way is saved into undo, not just the one where I stopped.

These are two examples while I'm playing around (holding mouse down or shift) with some values as designer and just expect to hit "ctrl + z" once to go back to the original value.

Screenshots or video

penpot-undo_colors.mp4

Desktop (please complete the following information)

  • OS: macos sonoma 14.4.1
  • Browser: Arc 1.39.1

Smartphone (please complete the following information)

No response

Environment (please complete the following information)

Self-Hosted:

  • OS: macos sonoma 14.4.1
  • Docker Desktop: 4.28.0 (139021)
  • Compose: v2.24.6-desktop.1
docker-compose.yaml
---
version: "3.5"

networks:
  penpot:

volumes:
  penpot_postgres_v15:
  penpot_assets:

services:
  penpot-frontend:
    image: "penpotapp/frontend:latest"
    restart: always
    ports:
      - 9001:80

    volumes:
      - penpot_assets:/opt/data/assets

    depends_on:
      - penpot-backend
      - penpot-exporter

    networks:
      - penpot

    labels:
      - "traefik.enable=true"

    environment:
      - PENPOT_FLAGS=enable-registration enable-login-with-password

  penpot-backend:
    image: "penpotapp/backend:latest"
    restart: always

    volumes:
      - penpot_assets:/opt/data/assets

    depends_on:
      - penpot-postgres
      - penpot-redis

    networks:
      - penpot
    environment:
      - PENPOT_FLAGS=enable-registration enable-login-with-password disable-email-verification enable-smtp enable-prepl-server
      - PENPOT_PUBLIC_URI=http://localhost:9001
      - PENPOT_DATABASE_URI=postgresql://penpot-postgres/penpot
      - PENPOT_DATABASE_USERNAME=penpot
      - PENPOT_DATABASE_PASSWORD=penpot
      - PENPOT_REDIS_URI=redis://penpot-redis/0
      - PENPOT_ASSETS_STORAGE_BACKEND=assets-fs
      - PENPOT_STORAGE_ASSETS_FS_DIRECTORY=/opt/data/assets
      - PENPOT_TELEMETRY_ENABLED=true
      - PENPOT_SMTP_DEFAULT_FROM=no-reply@example.com
      - PENPOT_SMTP_DEFAULT_REPLY_TO=no-reply@example.com
      - PENPOT_SMTP_HOST=penpot-mailcatch
      - PENPOT_SMTP_PORT=1025
      - PENPOT_SMTP_USERNAME=
      - PENPOT_SMTP_PASSWORD=
      - PENPOT_SMTP_TLS=false
      - PENPOT_SMTP_SSL=false

  penpot-exporter:
    image: "penpotapp/exporter:latest"
    restart: always
    networks:
      - penpot

    environment:
      - PENPOT_PUBLIC_URI=http://penpot-frontend
      - PENPOT_REDIS_URI=redis://penpot-redis/0

  penpot-postgres:
    image: "postgres:15"
    restart: always
    stop_signal: SIGINT

    volumes:
      - penpot_postgres_v15:/var/lib/postgresql/data

    networks:
      - penpot

    environment:
      - POSTGRES_INITDB_ARGS=--data-checksums
      - POSTGRES_DB=penpot
      - POSTGRES_USER=penpot
      - POSTGRES_PASSWORD=penpot

  penpot-redis:
    image: redis:7
    restart: always
    networks:
      - penpot

  penpot-mailcatch:
    image: sj26/mailcatcher:latest
    restart: always
    expose:
      - '1025'
    ports:
      - "1080:1080"
    networks:
      - penpot

Frontend Stack Trace

No response

Backend Stack Trace

No response

Additional context

No response