From bdce5817ea86d028db29113d9ecdadcf07097b36 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 22 Jul 2026 08:43:47 +0200 Subject: [PATCH 1/3] :books: Update changelog --- CHANGES.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 0a940745ae..93d640d543 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,8 +1,6 @@ # CHANGELOG -## 2.17.0 (Unreleased) - -### :boom: Breaking changes & Deprecations +## 2.17.0 ### :rocket: Epics and highlights From 72f3165341ade5213909d6dc277b8f6976149f91 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 22 Jul 2026 10:45:00 +0200 Subject: [PATCH 2/3] :paperclip: Update changelog --- .opencode/skills/update-changelog/SKILL.md | 6 ++++++ CHANGES.md | 3 +++ 2 files changed, 9 insertions(+) diff --git a/.opencode/skills/update-changelog/SKILL.md b/.opencode/skills/update-changelog/SKILL.md index cf15eede73..d5c0ccf2af 100644 --- a/.opencode/skills/update-changelog/SKILL.md +++ b/.opencode/skills/update-changelog/SKILL.md @@ -147,6 +147,12 @@ belongs to. The `gh.py` issues command already includes `issue_type` in every entry's output. **No separate GraphQL query is needed.** +**Preserve highlighted entries:** If an entry is already featured in +`### :rocket: Epics and highlights`, keep it in that section when refreshing a +changelog version. Do not remove a highlighted entry just because issue type +categorization would otherwise place it under `### :sparkles: New features & +Enhancements`. + **Community contribution attribution:** If the issue or its fix PR has the `community contribution` label, add an attribution `(by @)` on the changelog entry line, **before** the GitHub issue/PR references. diff --git a/CHANGES.md b/CHANGES.md index 93d640d543..f2fa5e5aa0 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -165,6 +165,9 @@ - Fix Plugin API validation error when listing shared plugin data keys [#10628](https://github.com/penpot/penpot/issues/10628) (PR: [#10632](https://github.com/penpot/penpot/pull/10632)) - Fix Plugin API silently dropping plugin data written to shared library [#10629](https://github.com/penpot/penpot/issues/10629) (PR: [#10632](https://github.com/penpot/penpot/pull/10632)) - Fix workspace crash when event target is a DOM text node [#10640](https://github.com/penpot/penpot/issues/10640) (PR: [#10641](https://github.com/penpot/penpot/pull/10641)) +- Fix text shape position-data to include required fills in WASM and DOM calculation paths [#10646](https://github.com/penpot/penpot/issues/10646) (PR: [#10650](https://github.com/penpot/penpot/pull/10650)) +- Log expired OIDC tokens as auth failures instead of server errors [#10635](https://github.com/penpot/penpot/issues/10635) (PR: [#10636](https://github.com/penpot/penpot/pull/10636)) +- Return 400 instead of 500 when ImageMagick rejects invalid uploaded images [#10642](https://github.com/penpot/penpot/issues/10642) (PR: [#10643](https://github.com/penpot/penpot/pull/10643)) ## 2.16.2 From e4cddd8536d813c1a83917b5c09e2e62b54f5192 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 22 Jul 2026 10:45:18 +0200 Subject: [PATCH 3/3] :books: Update serena memories --- .serena/memories/critical-info.md | 18 +++++++++--------- .../{workflow/docs.md => docs/core.md} | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) rename .serena/memories/{workflow/docs.md => docs/core.md} (95%) diff --git a/.serena/memories/critical-info.md b/.serena/memories/critical-info.md index a286887ac2..fcc2394424 100644 --- a/.serena/memories/critical-info.md +++ b/.serena/memories/critical-info.md @@ -30,15 +30,15 @@ You are working on the GitHub project `penpot/penpot`, a monorepo. This is a monorepo. Principles that apply to one module do *not* generally apply to others. Do not make assumptions. -- `frontend/`: ClojureScript + SCSS SPA/design editor. -- `backend/`: JVM Clojure HTTP/RPC server with PostgreSQL, Redis, storage, mail, and workers.Runtime services and the task-queue vs Pub/Sub topology that constrains horizontal scaling: `mem:prod-infra/core`. -- `common/`: shared CLJC data types, geometry, schemas, file/change logic, and utilities. -- `render-wasm/`: Rust -> WebAssembly Skia renderer consumed by frontend. -- `exporter/`: ClojureScript/Node headless Playwright SVG/PDF export. -- `mcp/`: TypeScript Model Context Protocol integration. -- `plugins/`: TypeScript plugin runtime/examples and Plugin API types. -- `library/`: design library workflows. -- `docs/`: documentation site. +- `frontend/`: ClojureScript + SCSS SPA/design editor; core conventions: `mem:frontend/core`. +- `backend/`: JVM Clojure HTTP/RPC server with PostgreSQL, Redis, storage, mail, and workers; core conventions: `mem:backend/core`. Runtime services and the task-queue vs Pub/Sub topology that constrains horizontal scaling: `mem:prod-infra/core`. +- `common/`: shared CLJC data types, geometry, schemas, file/change logic, and utilities; core conventions: `mem:common/core`. +- `render-wasm/`: Rust -> WebAssembly Skia renderer consumed by frontend; core conventions: `mem:render-wasm/core`. +- `exporter/`: ClojureScript/Node headless Playwright SVG/PDF export; core conventions: `mem:exporter/core`. +- `mcp/`: TypeScript Model Context Protocol integration; core conventions: `mem:mcp/core`. +- `plugins/`: TypeScript plugin runtime/examples and Plugin API types; core conventions: `mem:plugins/core`. +- `library/`: design library workflows; core conventions: `mem:library/core`. +- `docs/`: documentation site; core workflow and conventions: `mem:docs/core`. The memory is structured in a way that you can get the critical information about the module. You can read it from `mem:/core` diff --git a/.serena/memories/workflow/docs.md b/.serena/memories/docs/core.md similarity index 95% rename from .serena/memories/workflow/docs.md rename to .serena/memories/docs/core.md index 8504e5db1d..4d03b7ddea 100644 --- a/.serena/memories/workflow/docs.md +++ b/.serena/memories/docs/core.md @@ -1,4 +1,4 @@ -# Docs Workflow +# Docs `docs/`: Penpot documentation site; Eleventy. @@ -16,4 +16,4 @@ From `docs/`: - Build: `pnpm run build`. - Watch: `pnpm run watch`. -Documentation changes should follow the existing page structure and rendered Help Center conventions rather than inventing a new style locally. \ No newline at end of file +Documentation changes should follow the existing page structure and rendered Help Center conventions rather than inventing a new style locally.