From bba02473d5b063b5f4f8eb80430cc543e585c59b Mon Sep 17 00:00:00 2001 From: Madalena Melo Date: Tue, 2 Dec 2025 09:21:05 +0100 Subject: [PATCH 1/3] :books: Update subtitles in the new user guide cards (#7823) Co-authored-by: Andres Gonzalez --- docs/user-guide/account-teams/index.njk | 6 +++--- docs/user-guide/design-systems/index.njk | 10 +++++----- docs/user-guide/design-systems/libraries.njk | 2 +- docs/user-guide/designing/index.njk | 10 +++++----- docs/user-guide/export-import/index.njk | 4 ++-- docs/user-guide/first-steps/index.njk | 4 ++-- docs/user-guide/index.njk | 16 ++++++++-------- docs/user-guide/prototyping-testing/index.njk | 4 ++-- 8 files changed, 28 insertions(+), 28 deletions(-) diff --git a/docs/user-guide/account-teams/index.njk b/docs/user-guide/account-teams/index.njk index 8e421413e4..cd9d2cab63 100644 --- a/docs/user-guide/account-teams/index.njk +++ b/docs/user-guide/account-teams/index.njk @@ -10,19 +10,19 @@ desc: Begin with the Penpot user guide! Get quickstarts, shortcuts, and tutorial
  • Your account →

    -

    Ways to start with Penpot

    +

    Access your account settings and manage personal access tokens

  • Teams →

    -

    Info of interest about Penpot

    +

    Create and manage your teams

  • Comments →

    -

    Info of interest about Penpot

    +

    Give and receive feedback right over your designs

  • diff --git a/docs/user-guide/design-systems/index.njk b/docs/user-guide/design-systems/index.njk index 2fbed27d6e..3e23c6275a 100644 --- a/docs/user-guide/design-systems/index.njk +++ b/docs/user-guide/design-systems/index.njk @@ -10,31 +10,31 @@ desc: Begin with the Penpot user guide! Get quickstarts, shortcuts, and tutorial
  • Assets →

    -

    Ways to start with Penpot

    +

    Store elements and styles to easily reuse them

  • Libraries →

    -

    Info of interest about Penpot

    +

    Organize and manage your stored elements with Libraries

  • Components →

    -

    Speed your design workflow

    +

    Speed your design workflow with reusable components

  • Variants →

    -

    Info of interest about Penpot

    +

    Group components into a single, customizable one

  • Design Tokens →

    -

    Info of interest about Penpot

    +

    Synchronize visual elements across your designs

  • diff --git a/docs/user-guide/design-systems/libraries.njk b/docs/user-guide/design-systems/libraries.njk index 43547a5682..f640c91074 100644 --- a/docs/user-guide/design-systems/libraries.njk +++ b/docs/user-guide/design-systems/libraries.njk @@ -5,7 +5,7 @@ desc: Use Penpot's libraries for reusable design elements! Learn to create, mana ---

    Libraries

    -

    Libraries may include components, graphics, colors and typographies. Learn how to create and manage them to better organize the pieces of your designs and speed your workflow.

    +

    Libraries may include components, colors and typographies. Learn how to create and manage them to better organize the pieces of your designs and speed your workflow.

    File libraries

    Each file has its own file library which is where the assets that belong to this file are stored.

    diff --git a/docs/user-guide/designing/index.njk b/docs/user-guide/designing/index.njk index a72660daf0..b41cdfdd62 100644 --- a/docs/user-guide/designing/index.njk +++ b/docs/user-guide/designing/index.njk @@ -10,31 +10,31 @@ desc: Begin with the Penpot user guide! Get quickstarts, shortcuts, and tutorial
  • Workspace basics →

    -

    Workspace basics

    +

    Get to know the Workspace, where designs are created

  • Layers →

    -

    Info of interest about Penpot

    +

    Objects available in Penpot and how to get the most of them

  • Color & Strokes→

    -

    Info of interest about Penpot

    +

    Styling options available for each layer

  • Text & Typography→

    -

    Info of interest about Penpot

    +

    Styling text content & using custom fonts

  • Flexible layouts →

    -

    Info of interest about Penpot

    +

    Create designs that adapt automatically

  • diff --git a/docs/user-guide/export-import/index.njk b/docs/user-guide/export-import/index.njk index 562bfe0771..48b4bcbd04 100644 --- a/docs/user-guide/export-import/index.njk +++ b/docs/user-guide/export-import/index.njk @@ -10,13 +10,13 @@ desc: Begin with the Penpot user guide! Get quickstarts, shortcuts, and tutorial
  • Export/Import Penpot files →

    -

    Ways to start with Penpot

    +

    How to export and import your Penpot files

  • Exporting layers →

    -

    Exporting layers

    +

    How to export elements from your design into different file formats

  • diff --git a/docs/user-guide/first-steps/index.njk b/docs/user-guide/first-steps/index.njk index 96e85c69a8..c26777b24f 100644 --- a/docs/user-guide/first-steps/index.njk +++ b/docs/user-guide/first-steps/index.njk @@ -16,7 +16,7 @@ desc: Begin with the Penpot user guide! Get quickstarts, shortcuts, and tutorial
  • Interface tour →

    -

    Info of interest about Penpot

    +

    Take a tour of Penpot's main areas

  • @@ -28,7 +28,7 @@ desc: Begin with the Penpot user guide! Get quickstarts, shortcuts, and tutorial
  • Tutorials & info →

    -

    Info of interest about Penpot

    +

    Useful resources to better understand Penpot

  • diff --git a/docs/user-guide/index.njk b/docs/user-guide/index.njk index cb5bc597ce..d017f151c2 100644 --- a/docs/user-guide/index.njk +++ b/docs/user-guide/index.njk @@ -22,49 +22,49 @@ eleventyNavigation:
  • Layers

    -

    Ways to start with Penpot

    +

    Objects available in Penpot and how to get the most of them

  • Flexible layouts

    -

    Create designs that adapt automatically.

    +

    Create designs that adapt automatically

  • Components

    -

    Ways to start with Penpot

    +

    Speed your design workflow with reusable components

  • Variants

    -

    Penpot's main areas and features

    +

    Group components into a single, customizable one

  • Design Tokens

    -

    Penpot's main areas and features

    +

    Synchronize visual elements across your designs

  • Inspect design

    -

    Ways to start with Penpot

    +

    Get production-ready code

  • Prototyping

    -

    Ways to start with Penpot

    +

    Build interactive prototypes to mimic your product behaviour

  • Libraries

    -

    Ways to start with Penpot

    +

    Organize and manage your stored elements with Libraries

  • diff --git a/docs/user-guide/prototyping-testing/index.njk b/docs/user-guide/prototyping-testing/index.njk index 9a9ff0a0b3..b326e1ccd1 100644 --- a/docs/user-guide/prototyping-testing/index.njk +++ b/docs/user-guide/prototyping-testing/index.njk @@ -10,13 +10,13 @@ desc: Begin with the Penpot user guide! Get quickstarts, shortcuts, and tutorial
  • Prototyping →

    -

    Ways to start with Penpot

    +

    Build interactive prototypes to mimic your product behaviour

  • Testing: View mode →

    -

    Info of interest about Penpot

    +

    Test your designs and play the interactions

  • From 6b8091bb9095db18d9fd1798b26e04cba8889337 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 1 Dec 2025 20:43:23 +0100 Subject: [PATCH 2/3] :sparkles: Make devenv https and http2 capable (#7871) Making it more similar on how it runs on production environments and improves large amount of files loading thanks to http2. --- backend/scripts/_env | 1 + docker/devenv/Dockerfile | 36 ++++++++++++++++++++++++++++++ docker/devenv/docker-compose.yaml | 2 ++ docker/devenv/files/Caddyfile | 29 ++++++++++++++++++++++++ docker/devenv/files/init.sh | 4 +++- docker/devenv/files/nginx.conf | 5 ++--- docker/devenv/files/selfsigned.crt | 22 ++++++++++++++++++ docker/devenv/files/selfsigned.key | 28 +++++++++++++++++++++++ 8 files changed, 123 insertions(+), 4 deletions(-) create mode 100644 docker/devenv/files/Caddyfile create mode 100644 docker/devenv/files/selfsigned.crt create mode 100644 docker/devenv/files/selfsigned.key diff --git a/backend/scripts/_env b/backend/scripts/_env index 1e4408efe8..f5cca5538b 100644 --- a/backend/scripts/_env +++ b/backend/scripts/_env @@ -3,6 +3,7 @@ export PENPOT_MANAGEMENT_API_KEY=super-secret-management-api-key export PENPOT_SECRET_KEY=super-secret-devenv-key export PENPOT_HOST=devenv +export PENPOT_PUBLIC_URI=https://localhost:3449 export PENPOT_FLAGS="\ $PENPOT_FLAGS \ diff --git a/docker/devenv/Dockerfile b/docker/devenv/Dockerfile index b837b19a52..4f2a16115d 100644 --- a/docker/devenv/Dockerfile +++ b/docker/devenv/Dockerfile @@ -101,6 +101,38 @@ RUN set -eux; \ corepack enable; \ rm -rf /tmp/nodejs.tar.gz; + +################################################################################ +## CADDYSERVER SETUP +################################################################################ + +FROM base AS setup-caddy + +ENV CADDY_VERSION=2.10.2 + +RUN set -eux; \ + ARCH="$(dpkg --print-architecture)"; \ + case "${ARCH}" in \ + aarch64|arm64) \ + BINARY_URL="https://github.com/caddyserver/caddy/releases/download/v${CADDY_VERSION}/caddy_${CADDY_VERSION}_linux_arm64.tar.gz"; \ + ;; \ + amd64|x86_64) \ + BINARY_URL="https://github.com/caddyserver/caddy/releases/download/v${CADDY_VERSION}/caddy_${CADDY_VERSION}_linux_amd64.tar.gz"; \ + ;; \ + *) \ + echo "Unsupported arch: ${ARCH}"; \ + exit 1; \ + ;; \ + esac; \ + curl -LfsSo /tmp/caddy.tar.gz ${BINARY_URL}; \ + mkdir -p /tmp/caddy; \ + cd /tmp/caddy; \ + tar -xf /tmp/caddy.tar.gz; \ + chown -R root /tmp/caddy; \ + mv /tmp/caddy/caddy /usr/bin/; \ + rm -rf /tmp/caddy.tar.gz; \ + rm -rf /tmp/caddy; + ################################################################################ ## JVM SETUP ################################################################################ @@ -393,6 +425,7 @@ COPY --from=setup-utils /opt/utils /opt/utils COPY --from=setup-rust /opt/cargo /opt/cargo COPY --from=setup-rust /opt/rustup /opt/rustup COPY --from=setup-rust /opt/emsdk /opt/emsdk +COPY --from=setup-caddy /usr/bin/caddy /usr/bin/caddy COPY files/nginx.conf /etc/nginx/nginx.conf COPY files/nginx-mime.types /etc/nginx/mime.types @@ -403,6 +436,9 @@ COPY files/vimrc /root/.vimrc COPY files/tmux.conf /root/.tmux.conf COPY files/sudoers /etc/sudoers +COPY files/Caddyfile /home/ +COPY files/selfsigned.crt /home/ +COPY files/selfsigned.key /home/ COPY files/start-tmux.sh /home/start-tmux.sh COPY files/start-tmux-back.sh /home/start-tmux-back.sh COPY files/entrypoint.sh /home/entrypoint.sh diff --git a/docker/devenv/docker-compose.yaml b/docker/devenv/docker-compose.yaml index 89580ef8b4..30b0dde4d0 100644 --- a/docker/devenv/docker-compose.yaml +++ b/docker/devenv/docker-compose.yaml @@ -33,6 +33,8 @@ services: - 3447:3447 - 3448:3448 - 3449:3449 + - 3449:3449/udp + - 3450:3450 - 6006:6006 - 6060:6060 - 6061:6061 diff --git a/docker/devenv/files/Caddyfile b/docker/devenv/files/Caddyfile new file mode 100644 index 0000000000..221c93e349 --- /dev/null +++ b/docker/devenv/files/Caddyfile @@ -0,0 +1,29 @@ +{ + auto_https off +} + +localhost:3449 { + reverse_proxy localhost:4449 + tls /home/selfsigned.crt /home/selfsigned.key + + log { + format console + output file /home/penpot/penpot/logs/caddy.access.log { + roll_size 10MB # Create new file when size exceeds 10MB + roll_keep 5 # Keep at most 5 rolled files + roll_keep_for 14d # Delete files older than 14 days + } + } +} + +http://localhost:3450 { + reverse_proxy localhost:4449 + log { + format console + output file /home/penpot/penpot/logs/caddy.access.log { + roll_size 10MB # Create new file when size exceeds 10MB + roll_keep 5 # Keep at most 5 rolled files + roll_keep_for 14d # Delete files older than 14 days + } + } +} diff --git a/docker/devenv/files/init.sh b/docker/devenv/files/init.sh index 2f809ebbb9..f4a7af4978 100755 --- a/docker/devenv/files/init.sh +++ b/docker/devenv/files/init.sh @@ -2,4 +2,6 @@ set -e nginx -tail -f /dev/null +mkdir -p penpot/logs +caddy start -c /home/Caddyfile +tail -f /dev/null; diff --git a/docker/devenv/files/nginx.conf b/docker/devenv/files/nginx.conf index 481ae826aa..6af0fef033 100644 --- a/docker/devenv/files/nginx.conf +++ b/docker/devenv/files/nginx.conf @@ -12,7 +12,7 @@ http { sendfile on; tcp_nopush on; tcp_nodelay on; - keepalive_timeout 0; + keepalive_timeout 100; types_hash_max_size 2048; server_tokens off; @@ -55,7 +55,7 @@ http { proxy_cache_key "$host$request_uri"; server { - listen 3449 default_server; + listen 4449 default_server; server_name _; client_max_body_size 300M; @@ -231,7 +231,6 @@ http { } add_header Cache-Control "no-store"; - add_header Connection close always; # This header is what we need to use on prod # add_header Cache-Control "public, must-revalidate, max-age=0"; try_files $uri /index.html$is_args$args /index.html =404; diff --git a/docker/devenv/files/selfsigned.crt b/docker/devenv/files/selfsigned.crt new file mode 100644 index 0000000000..75023df03e --- /dev/null +++ b/docker/devenv/files/selfsigned.crt @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIUa3THJQSn1+ErK65g1jDL0tjUkBYwDQYJKoZIhvcNAQEL +BQAwXzELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBUxvY2FsMQ4wDAYDVQQHDAVMb2Nh +bDEOMAwGA1UECgwFTG9jYWwxDDAKBgNVBAsMA0RldjESMBAGA1UEAwwJbG9jYWxo +b3N0MB4XDTI1MTIwMjA4MjUyM1oXDTI2MTIwMjA4MjUyM1owXzELMAkGA1UEBhMC +VVMxDjAMBgNVBAgMBUxvY2FsMQ4wDAYDVQQHDAVMb2NhbDEOMAwGA1UECgwFTG9j +YWwxDDAKBgNVBAsMA0RldjESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyVIlfpIPE+QyL/q7IQOilEA7wEOZ6wbsh2Fr +59H1gSLFvgoCxI6RVUkQ/MFRnw/r1ZbAqRpc2xAl5a9Ml14q20Zlj6dAHsWX6O2J +EwNsD18dQmX3BncnjV3yCZM2iQcMFKuXG4KQNdIQNNvdIgtlrHYp0ohS9s3XC7cj +KxNrm/pW9EAXfn9AYDd/qER090L2E4ipP9m/5l3MjinNc4l2kpH9rLOgb79H0RLt +PK3/KP8ErZhAvzdmDBAdM5Z5K37b+TfB/kSVNUKL6qyw5CCjlShERLhBNprlnRfz +tHNIQ1RHq3qJJN19ZnJrLqICuQ5ztvj7hBDiOSV0LnmyKgXr6wIDAQABo28wbTAd +BgNVHQ4EFgQUPL8WGf6z/wB8TimJBx1zybsIeikwHwYDVR0jBBgwFoAUPL8WGf6z +/wB8TimJBx1zybsIeikwDwYDVR0TAQH/BAUwAwEB/zAaBgNVHREEEzARgglsb2Nh +bGhvc3SHBH8AAAEwDQYJKoZIhvcNAQELBQADggEBACMMVyR3kbNxnzuUc2lahKH4 +cPXVWOsvCvnDtjzm41XmKjUJTbtjn3p5d/ZmLbZ4zzIQULfWXO3XG/HevkvVo0g6 +6pJXTXc6C6ZhFG0rIYMcPPzmGmalDV5n+lUaCVx5XbFFxvRQ7893auwhRATdwGs+ +xiMyYbE2w9otKqyDItmJZJ5nW6vmXJ42YHxlXF18u9U88xqtOSMd5xZahbsmw7Gg +A4/o4TPoAX5QfA306sL443WaczsF7bmsTf9qcYa/3xxQkP5Seyqx8ePWpS22qysE +jG6XPpymxb6sb2mVaFBAzhEMb/eBvE9nRAopxmB7uV4TbqC51K/U3uo6jFX4Jbw= +-----END CERTIFICATE----- diff --git a/docker/devenv/files/selfsigned.key b/docker/devenv/files/selfsigned.key new file mode 100644 index 0000000000..f770216185 --- /dev/null +++ b/docker/devenv/files/selfsigned.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDJUiV+kg8T5DIv ++rshA6KUQDvAQ5nrBuyHYWvn0fWBIsW+CgLEjpFVSRD8wVGfD+vVlsCpGlzbECXl +r0yXXirbRmWPp0AexZfo7YkTA2wPXx1CZfcGdyeNXfIJkzaJBwwUq5cbgpA10hA0 +290iC2WsdinSiFL2zdcLtyMrE2ub+lb0QBd+f0BgN3+oRHT3QvYTiKk/2b/mXcyO +Kc1ziXaSkf2ss6Bvv0fREu08rf8o/wStmEC/N2YMEB0zlnkrftv5N8H+RJU1Qovq +rLDkIKOVKEREuEE2muWdF/O0c0hDVEereokk3X1mcmsuogK5DnO2+PuEEOI5JXQu +ebIqBevrAgMBAAECggEABqtE+LNn8nW9v98jcc2IBjc2g4D5yVJaZYWxqGVJJ7T6 +Lfhw7Qf4AoZAHM9en9FMM7Ahw7hO2SboynoLJHyHGOp1FNQqiJptFNdBkjKr0rqI +4pk0HK+3zLQO/4gz50gne0vP3qZtlorV5Jpf8e/Et3jWm9XOQcTB2e6AKL4k827B +dv4Tld+/7PoZVXjahfrUWuIZr5mzyF1eUkD8sPOpdr3HJxSueqsOMjbG8XMRqCQ+ +5eCWWSW5yPQlMr7M7cXM+a0k73Xn1sKl7fP3/9byji25zxGUaMu5RA1kw0Oqseid +RXuRxGphGZgnx1aFxDAPg3FtmGch7/Cc6WfqboOL0QKBgQD4GZO1gGaE8cg4lvuo +ZUX2YJu6UJuNOmuhfvG3ui4WO9PHy3btc2q+3kutSuBcyIjhi+qbXasBcX/QOOJF +udyTZc5PopNkJojS4JdXAZCiu5sKI3lp4DIt9qNISlXGgrJgdxGUO+DzarBctXdn +BSwXFw5hcjJjl7wsPGQl1tBTQwKBgQDPuz5MEM5ZeUe9CT5sQDq/ld0u4aL5AHmx +aaA2gzDgd9l2R5wHX6wLzjoVWXOmeqaYzJopt2JN4iXrtbjWkyePgZeZMyWoyJ/v +clW9bi8HM9f9EpPr7czSj9sLUnsjd9cuTD+JuXK//jRGbRpw7r7nWtLHImjj6d2v +APZRq0v2OQKBgBcESG/OObSbubeGSlKVEqiIzem7ELNJeDLDVCl3XE8zvbILbj0Z +OA39EYhCKg5xjEFgeaNwTS0VGoZ2wIc3dv81sq4wpvvjl035CBFKU+DFBt0p7Vml +MwKQnxVV0B9agLHyWe8mnvf2LeZr72ffUvfRa8QelA4pRYvVDnV0OF+BAoGAW6rM ++tQPuvwB5DFIEozlX9XKHP4E5MyI5vktceDCmMtKcx92gup9CVif2Pv4ROaqzZK8 +FNyPzL6W7UTrpASb2H/fXgNsAudFbGyP2V/d8Ne34D1qeRoe4GwKxRxIqoYftpZ/ +E096i66pcsqCeINiSsWRbb6JesmgwbEzAScOBkECgYEA6O/Dibc9PaqRpaiE6Qut +S3W/Rr1Pd1jbN4rOVI2TFCgMJQmc6jOdq2fCntR9acsa8HPx+djOlXTUBPKBZ/Ae +p8umRdXVWcNMnwWVWHt7tsEuR/gYkxQ5xjXeS1VDPnEre9+EaevMBuVs8HdRsKQO +uzvNGeAFEfqwIqn7CFQ+ndU= +-----END PRIVATE KEY----- From eeaf28bb2501addb4a17da48767941df441adfe6 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 2 Dec 2025 13:27:09 +0100 Subject: [PATCH 3/3] :paperclip: Disable caddy logging --- docker/devenv/files/Caddyfile | 17 ----------------- docker/devenv/files/init.sh | 1 - 2 files changed, 18 deletions(-) diff --git a/docker/devenv/files/Caddyfile b/docker/devenv/files/Caddyfile index 221c93e349..307a4edbd9 100644 --- a/docker/devenv/files/Caddyfile +++ b/docker/devenv/files/Caddyfile @@ -5,25 +5,8 @@ localhost:3449 { reverse_proxy localhost:4449 tls /home/selfsigned.crt /home/selfsigned.key - - log { - format console - output file /home/penpot/penpot/logs/caddy.access.log { - roll_size 10MB # Create new file when size exceeds 10MB - roll_keep 5 # Keep at most 5 rolled files - roll_keep_for 14d # Delete files older than 14 days - } - } } http://localhost:3450 { reverse_proxy localhost:4449 - log { - format console - output file /home/penpot/penpot/logs/caddy.access.log { - roll_size 10MB # Create new file when size exceeds 10MB - roll_keep 5 # Keep at most 5 rolled files - roll_keep_for 14d # Delete files older than 14 days - } - } } diff --git a/docker/devenv/files/init.sh b/docker/devenv/files/init.sh index f4a7af4978..bb7a44e627 100755 --- a/docker/devenv/files/init.sh +++ b/docker/devenv/files/init.sh @@ -2,6 +2,5 @@ set -e nginx -mkdir -p penpot/logs caddy start -c /home/Caddyfile tail -f /dev/null;