From f79795e6fe88d2fdf7786cfba7a6acaf1b8ff907 Mon Sep 17 00:00:00 2001 From: JJ Date: Fri, 17 Jul 2026 12:45:38 +0800 Subject: [PATCH 1/2] fix(release): drop subsections left empty by the changelog filter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The path filter removes bullets but their `### ` heading carries no [sha] to match on, so it survived alone. packages/core/CHANGELOG.md shipped 14 of its 38 subsections empty — headings like "### 🏡 Chore" with nothing underneath. Buffer each subsection and emit it only if at least one bullet survived. Co-Authored-By: Claude Opus 4.8 (1M context) --- scripts/lib/scope-changelog.sh | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/scripts/lib/scope-changelog.sh b/scripts/lib/scope-changelog.sh index 9f0c537..c07d252 100755 --- a/scripts/lib/scope-changelog.sh +++ b/scripts/lib/scope-changelog.sh @@ -55,20 +55,41 @@ filter_changelog_by_paths() { # # `## ` matches version headings only: `### Fixes` has no space in the third # column, so subsection headings don't increment the counter. + # Subsections are buffered rather than streamed, so that a `### 🏡 Chore` + # whose every bullet got filtered out is dropped along with its bullets. + # Otherwise the heading survives (it carries no [sha] to match on) and the + # published changelog shows empty sections — packages/core/CHANGELOG.md had + # 14 of 38 subsections empty that way. awk -v sha_file="$sha_file" ' + function flush() { + if (nbuf > 0 && kept_bullets > 0) for (i = 1; i <= nbuf; i++) print buf[i] + nbuf = 0; kept_bullets = 0 + } + function sha_dropped(line, sha) { + if (match(line, /\[[a-f0-9]{7,12}\]/) == 0) return 0 + sha = substr(line, RSTART + 1, RLENGTH - 2) + return (sha in keep) ? 0 : 1 + } BEGIN { while ((getline line < sha_file) > 0) keep[line] = 1 close(sha_file) } /^## / { sections++ } { - if (sections >= 2) { print; next } - if (match($0, /\[[a-f0-9]{7,12}\]/) > 0) { - sha = substr($0, RSTART + 1, RLENGTH - 2) - if (!(sha in keep)) next + # Everything from the second `## ` down is released history: flush any + # pending subsection, then copy through verbatim. + if (sections >= 2) { flush(); print; next } + if (/^### /) { flush(); buf[++nbuf] = $0; next } + if (nbuf > 0) { + if (sha_dropped($0)) next + buf[++nbuf] = $0 + if (/^- /) kept_bullets++ + next } + if (sha_dropped($0)) next print } + END { flush() } ' "$CHANGELOG" > "${CHANGELOG}.tmp" mv "${CHANGELOG}.tmp" "$CHANGELOG" rm -f "$sha_file" From a0a5b91dcff997db1967aee8d25e24f3a7618bab Mon Sep 17 00:00:00 2001 From: JJ Date: Fri, 17 Jul 2026 12:45:39 +0800 Subject: [PATCH 2/2] fix(changelog): restore history eroded by the path filter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Recovers what the whole-file filter deleted over successive releases. Each entry is taken from its own tag's copy, where it was still intact — only older entries were eroded by later releases: packages/core 9 bullets → 65 apps/extension 8 bullets → 205 packages/expo 7 bullets → 29 Not a verbatim restore. sdk-v0.3.0 and sdk-v0.4.0 predate the filter (b1bb22c landed 15 minutes after sdk-v0.4.0), so their sections were never scoped and carried dashboard-only commits — restoring those as-is would trade one wrong changelog for another. Every recovered section gets the scoping rule applied retroactively, so the result is what each release would have written had the filter existed and worked. For sdk-v0.4.1/0.4.2 that's a no-op. Nothing is invented: every line comes from the file as it existed at that tag, and the only edit is dropping bullets whose commits didn't touch the artifact. Bullets labelled `dashboard:` that genuinely touched packages/shared are kept on purpose — the rule is paths, not the commit's scope label. Expo is scoped to packages/{expo,sdk-utils,shared}; the old release-expo.sh also passed packages/recorder, which expo doesn't depend on. The root CHANGELOG.md was never filtered and is untouched. Already-published npm tarballs keep their eroded copy — this fixes the repo and every future publish. Co-Authored-By: Claude Opus 4.8 (1M context) --- apps/extension/CHANGELOG.md | 226 +++++++++++++++++++++++++++++++----- packages/core/CHANGELOG.md | 101 +++++++++------- packages/expo/CHANGELOG.md | 42 +++---- 3 files changed, 275 insertions(+), 94 deletions(-) diff --git a/apps/extension/CHANGELOG.md b/apps/extension/CHANGELOG.md index 2c15df3..dcf1890 100644 --- a/apps/extension/CHANGELOG.md +++ b/apps/extension/CHANGELOG.md @@ -1,6 +1,5 @@ # Changelog - ## extension-v0.1.4 [compare changes](https://github.com/Ripwords/ReproJs/compare/extension-v0.1.3...extension-v0.1.4) @@ -23,27 +22,20 @@ ### 🚀 Enhancements - -### 🔥 Performance - +- **shared:** Add volume series to AdminOverviewDTO ([c0e3a70](https://github.com/Ripwords/ReproJs/commit/c0e3a70)) ### 🩹 Fixes +- **release:** Scope each package's CHANGELOG to its own paths ([b1bb22c](https://github.com/Ripwords/ReproJs/commit/b1bb22c)) +- **sdk-ui:** Stop annotation shortcuts firing while typing text labels ([4ff661f](https://github.com/Ripwords/ReproJs/commit/4ff661f)) ### 💅 Refactors - -### 📖 Documentation - +- **comments:** Move CreateCommentBody schema to @reprojs/shared ([0d14acd](https://github.com/Ripwords/ReproJs/commit/0d14acd)) ### 🏡 Chore - -### ✅ Tests - - -### 🤖 CI - +- **release:** Sdk-v0.4.1 ([6524efc](https://github.com/Ripwords/ReproJs/commit/6524efc)) ### ❤️ Contributors @@ -55,27 +47,60 @@ ### 🚀 Enhancements +- **shared:** Add AdminOverviewDTO for admin overview dashboard ([f76efdb](https://github.com/Ripwords/ReproJs/commit/f76efdb)) +- **shared:** Add 'manager' to ProjectRole enum ([2996a41](https://github.com/Ripwords/ReproJs/commit/2996a41)) +- **shared:** Add source discriminator and mobile device fields to ReportContext/SystemInfo ([2f6effc](https://github.com/Ripwords/ReproJs/commit/2f6effc)) +- **shared:** Add source and devicePlatform to ReportSummaryDTO ([95ed429](https://github.com/Ripwords/ReproJs/commit/95ed429)) +- **expo:** Config normalizer and internal context shape ([50e2018](https://github.com/Ripwords/ReproJs/commit/50e2018)) +- **shared:** ReportSummaryDTO.assignees (array); TriagePatchInput.assigneeIds ([572ae66](https://github.com/Ripwords/ReproJs/commit/572ae66)) +- **shared:** Add milestone + githubAssigneeLogins to reports DTOs ([4c64078](https://github.com/Ripwords/ReproJs/commit/4c64078)) +- **integrations:** PushOnEdit UI toggle for GitHub integration ([dfd32b2](https://github.com/Ripwords/ReproJs/commit/dfd32b2)) +- **integration-api:** Expose autoCreateOnIntake toggle ([1574a7d](https://github.com/Ripwords/ReproJs/commit/1574a7d)) +- **shared:** Comment DTOs ([2485a18](https://github.com/Ripwords/ReproJs/commit/2485a18)) +- **github:** Create custom labels in linked repo from the picker ([18ad810](https://github.com/Ripwords/ReproJs/commit/18ad810)) +- **sdk-utils:** Add canonical theme tokens shared by web and expo SDKs ([989d8e3](https://github.com/Ripwords/ReproJs/commit/989d8e3)) +- **sdk-utils:** Add Attachment shape and validateAttachments helper ([a6c8159](https://github.com/Ripwords/ReproJs/commit/a6c8159)) +- **ui:** Add themeToCssVars helper that emits flame/mist tokens as CSS vars ([1a2e692](https://github.com/Ripwords/ReproJs/commit/1a2e692)) +- **ui:** Inject flame/mist CSS vars into shadow root at mount ([91a883b](https://github.com/Ripwords/ReproJs/commit/91a883b)) +- **ui:** Add PrimaryButton, SecondaryButton, FieldLabel, StepIndicator, WizardHeader ([61404b5](https://github.com/Ripwords/ReproJs/commit/61404b5)) +- **ui:** Add StepDetails (replaces step-describe in 3-step wizard) ([1077c55](https://github.com/Ripwords/ReproJs/commit/1077c55)) +- **ui:** Add StepReview with 'Included in this report' summary ([da15040](https://github.com/Ripwords/ReproJs/commit/da15040)) +- **ui:** Replace 2-step wizard with annotate → details → review flow ([25c916f](https://github.com/Ripwords/ReproJs/commit/25c916f)) +- **ui:** Add AttachmentList with hybrid thumbnail + chip rendering ([b8070d6](https://github.com/Ripwords/ReproJs/commit/b8070d6)) +- **sdk-web:** Add user attachments end-to-end ([46af0bb](https://github.com/Ripwords/ReproJs/commit/46af0bb)) +- **shared:** Add user-file kind and filename field to AttachmentDTO ([dd715e5](https://github.com/Ripwords/ReproJs/commit/dd715e5)) +- **ui:** Side-by-side details layout + paste-to-attach screenshots ([4452729](https://github.com/Ripwords/ReproJs/commit/4452729)) +- **ui:** Inflight toast + clamav scan visibility ([23b9349](https://github.com/Ripwords/ReproJs/commit/23b9349)) +- **dashboard:** Show clamav scan report on user-file attachments ([368d63b](https://github.com/Ripwords/ReproJs/commit/368d63b)) +- **expo:** Pick attachments from Photos / Files / Clipboard ([0cc0bf5](https://github.com/Ripwords/ReproJs/commit/0cc0bf5)) +- **extension:** Retheme popup + options to flame/mist tokens ([2708f72](https://github.com/Ripwords/ReproJs/commit/2708f72)) ### 🩹 Fixes +- **docs:** Update URLs after repo rename to ReproJs ([ee6ff03](https://github.com/Ripwords/ReproJs/commit/ee6ff03)) +- **sdk-utils:** Hermes-safe newShapeId — fall back when crypto.randomUUID missing ([a3c218b](https://github.com/Ripwords/ReproJs/commit/a3c218b)) +- **github:** Subscribe to issue_comment/label/milestone/member events + activity feed tag rendering ([40e160c](https://github.com/Ripwords/ReproJs/commit/40e160c)) ### 💅 Refactors - -### 📖 Documentation - +- **sdk-utils:** Extract ring-buffer from @reprojs/ui ([998a4e1](https://github.com/Ripwords/ReproJs/commit/998a4e1)) +- **sdk-utils:** Extract redact from @reprojs/ui ([0b1406b](https://github.com/Ripwords/ReproJs/commit/0b1406b)) +- **sdk-utils:** Extract breadcrumbs from @reprojs/ui ([eceb072](https://github.com/Ripwords/ReproJs/commit/eceb072)) +- **sdk-utils:** Extract annotation tool geometry from @reprojs/ui ([bac4449](https://github.com/Ripwords/ReproJs/commit/bac4449)) +- **dev:** Move hardcoded tunnel host + demo endpoint out of tracked files ([17ae31c](https://github.com/Ripwords/ReproJs/commit/17ae31c)) +- **assignees:** Github-only, drop dashboard-user linking ([557d2d6](https://github.com/Ripwords/ReproJs/commit/557d2d6)) +- **ui:** Switch styles to CSS custom properties from sdk-utils tokens ([ede8899](https://github.com/Ripwords/ReproJs/commit/ede8899)) ### 🏡 Chore +- **sdk-utils:** Scaffold package ([abd9d08](https://github.com/Ripwords/ReproJs/commit/abd9d08)) +- **github-app:** Default auto_create_on_intake to true for new installs ([a7fbab1](https://github.com/Ripwords/ReproJs/commit/a7fbab1)) +- **release:** Sdk-v0.4.0 ([5868b7e](https://github.com/Ripwords/ReproJs/commit/5868b7e)) ### ✅ Tests - -### 🎨 Styles - - -### 🤖 CI - +- **shared:** Align ReportSummaryDTO test with new assignees/milestone shape ([9dca620](https://github.com/Ripwords/ReproJs/commit/9dca620)) +- **extension:** Rename Playwright e2e spec to .e2e.ts so bun test skips it ([11149b5](https://github.com/Ripwords/ReproJs/commit/11149b5)) ### ❤️ Contributors @@ -88,39 +113,182 @@ ### 🚀 Enhancements - -### 🔥 Performance - +- **shared:** Add zod schemas and DTOs for projects, users, settings ([705e1be](https://github.com/Ripwords/ReproJs/commit/705e1be)) +- **shared:** Add report context, intake input, and viewer DTOs ([d6a934e](https://github.com/Ripwords/ReproJs/commit/d6a934e)) +- **dashboard:** Add reports viewer page and embed-key management in settings ([da7aaf5](https://github.com/Ripwords/ReproJs/commit/da7aaf5)) +- **sdk:** Add config resolution with tests ([29228d6](https://github.com/Ripwords/ReproJs/commit/29228d6)) +- **sdk:** Add context gatherer with tests ([93347dd](https://github.com/Ripwords/ReproJs/commit/93347dd)) +- **sdk:** Add screenshot wrapper with tests ([27df685](https://github.com/Ripwords/ReproJs/commit/27df685)) +- **sdk:** Add intake client and public init/open/close/identify API ([b19a4b5](https://github.com/Ripwords/ReproJs/commit/b19a4b5)) +- **sdk-ui:** Add Launcher and Reporter Preact components with scoped styles ([189e175](https://github.com/Ripwords/ReproJs/commit/189e175)) +- **sdk-ui:** Wire UI mount, static import from core, CSS inlined as text ([8000003](https://github.com/Ripwords/ReproJs/commit/8000003)) +- **sdk-ui:** Add demo playground served by Bun on :4000 ([0d81746](https://github.com/Ripwords/ReproJs/commit/0d81746)) +- **sdk-ui:** Add annotation types and install @preact/signals ([cd2e627](https://github.com/Ripwords/ReproJs/commit/cd2e627)) +- **sdk-ui:** Add remappable shortcut map with tests ([a04dc29](https://github.com/Ripwords/ReproJs/commit/a04dc29)) +- **sdk-ui:** Add viewport transform helpers with tests ([61bd3d5](https://github.com/Ripwords/ReproJs/commit/61bd3d5)) +- **sdk-ui:** Add annotation store with undo/redo via Preact signals ([ea619e1](https://github.com/Ripwords/ReproJs/commit/ea619e1)) +- **sdk-ui:** Add deterministic word-wrap with tests ([a3a4e6f](https://github.com/Ripwords/ReproJs/commit/a3a4e6f)) +- **sdk-ui:** Add pure render function with per-shape drawing and tests ([393fdcf](https://github.com/Ripwords/ReproJs/commit/393fdcf)) +- **sdk-ui:** Add flatten(bg, shapes) for submit-time rasterization ([8eaf66d](https://github.com/Ripwords/ReproJs/commit/8eaf66d)) +- **sdk-ui:** Add ToolHandler interface and arrow tool with tests ([fb1b07c](https://github.com/Ripwords/ReproJs/commit/fb1b07c)) +- **sdk-ui:** Add rect tool with normalization and tests ([968dd89](https://github.com/Ripwords/ReproJs/commit/968dd89)) +- **sdk-ui:** Add pen tool with pressure-aware downsampling and tests ([6904ee5](https://github.com/Ripwords/ReproJs/commit/6904ee5)) +- **sdk-ui:** Add highlight tool with tests ([5cd7f35](https://github.com/Ripwords/ReproJs/commit/5cd7f35)) +- **sdk-ui:** Add text tool drag-rect phase with tests ([8f3dab1](https://github.com/Ripwords/ReproJs/commit/8f3dab1)) +- **sdk-ui:** Add interactive Canvas with Pointer Events, pan, zoom, and text input overlay ([4a7d3e4](https://github.com/Ripwords/ReproJs/commit/4a7d3e4)) +- **sdk-ui:** Add tool picker (tools + palette + stroke + undo/redo/clear) ([4633948](https://github.com/Ripwords/ReproJs/commit/4633948)) +- **sdk-ui:** Add wizard step 2 (describe + annotated preview) ([4b9463d](https://github.com/Ripwords/ReproJs/commit/4b9463d)) +- **sdk-ui:** Add wizard step 1 (annotation canvas + tool picker + shortcuts) ([3e00855](https://github.com/Ripwords/ReproJs/commit/3e00855)) +- **sdk-ui:** Replace Reporter with two-step wizard; widen onSubmit with screenshot ([8a48b9b](https://github.com/Ripwords/ReproJs/commit/8a48b9b)) +- **sdk-ui:** Add bounded RingBuffer for collectors ([35fb23c](https://github.com/Ripwords/ReproJs/commit/35fb23c)) +- **sdk-ui:** Add safe serializer with truncation + default string redactors ([7d4add2](https://github.com/Ripwords/ReproJs/commit/7d4add2)) +- **sdk-ui:** Add redaction engine (cookies, headers, URL params, bodies) ([54e2802](https://github.com/Ripwords/ReproJs/commit/54e2802)) +- **sdk-ui:** Add systemInfo snapshot with inline type (swapped in Task 11) ([a8efc20](https://github.com/Ripwords/ReproJs/commit/a8efc20)) +- **sdk-ui:** Add cookies collector with redaction ([ffb5148](https://github.com/Ripwords/ReproJs/commit/ffb5148)) +- **sdk-ui:** Add breadcrumbs collector backing feedback.log() ([4866dd2](https://github.com/Ripwords/ReproJs/commit/4866dd2)) +- **sdk-ui:** Add console collector (log/info/warn/error/debug) with stack on warn+error ([3ceb50c](https://github.com/Ripwords/ReproJs/commit/3ceb50c)) +- **sdk-ui:** Add network collector (fetch + XHR) with body/header/URL redaction ([aab1f1b](https://github.com/Ripwords/ReproJs/commit/aab1f1b)) +- **sdk-ui:** Add registerAllCollectors orchestration with beforeSend sandbox ([9d35872](https://github.com/Ripwords/ReproJs/commit/9d35872)) +- **shared:** Add SystemInfo/CookieEntry/LogsAttachment + extend ReportContext ([80e524e](https://github.com/Ripwords/ReproJs/commit/80e524e)) +- **sdk:** Wire collectors into init, expose feedback.log(), send logs multipart ([2cb48b7](https://github.com/Ripwords/ReproJs/commit/2cb48b7)) +- **sdk-ui:** Capture uncaught window errors + unhandled rejections as error entries ([4bfaa84](https://github.com/Ripwords/ReproJs/commit/4bfaa84)) +- **sdk-ui:** Enrich captured fetch metadata (body descriptors, Content-Length size, Request headers) ([215d307](https://github.com/Ripwords/ReproJs/commit/215d307)) +- **sdk-ui:** Deep-inspect request bodies + demo harness for full capture ([f7df3a0](https://github.com/Ripwords/ReproJs/commit/f7df3a0)) +- **shared:** Add triage enums + Event/Patch/Bulk DTOs; extend ReportSummaryDTO ([8b4123c](https://github.com/Ripwords/ReproJs/commit/8b4123c)) +- **db:** Add github_issue_* columns on reports + github_unlinked event kind ([e65fce3](https://github.com/Ripwords/ReproJs/commit/e65fce3)) +- **shared:** Add GitHub integration Zod DTOs ([badd95b](https://github.com/Ripwords/ReproJs/commit/badd95b)) +- **dashboard:** Drawer GitHub row — linked/unlinked/unlink dialog + DTO extension ([2679168](https://github.com/Ripwords/ReproJs/commit/2679168)) +- **dashboard:** Project overview page + drop project slug ([273a177](https://github.com/Ripwords/ReproJs/commit/273a177)) +- **auth:** Email domain sign-up gate; drop install-name setting ([69a08aa](https://github.com/Ripwords/ReproJs/commit/69a08aa)) +- **shared:** Anti-abuse fields on intake + daily cap on projects ([817f821](https://github.com/Ripwords/ReproJs/commit/817f821)) +- **sdk:** Honeypot input + dwell tracking ([cb41a6c](https://github.com/Ripwords/ReproJs/commit/cb41a6c)) +- **recorder:** Scaffold package ([8859019](https://github.com/Ripwords/ReproJs/commit/8859019)) +- **recorder:** Rrweb-compatible event type definitions ([735657a](https://github.com/Ripwords/ReproJs/commit/735657a)) +- **recorder:** Size+time-bounded event buffer with eviction ([3b0a61e](https://github.com/Ripwords/ReproJs/commit/3b0a61e)) +- **recorder:** Masking predicate with strict/moderate/minimal modes ([23a2ad3](https://github.com/Ripwords/ReproJs/commit/23a2ad3)) +- **recorder:** Gzip events with truncate-and-retry for size cap ([6a013bb](https://github.com/Ripwords/ReproJs/commit/6a013bb)) +- **recorder:** Two-way DOM-node id map ([9521502](https://github.com/Ripwords/ReproJs/commit/9521502)) +- **recorder:** Serialize DOM nodes to rrweb-compatible shape with masking ([04b4920](https://github.com/Ripwords/ReproJs/commit/04b4920)) +- **recorder:** Full-snapshot emitter (Meta + FullSnapshot events) ([84900d5](https://github.com/Ripwords/ReproJs/commit/84900d5)) +- **recorder:** MutationObserver wrapper with masking on newly-added nodes ([839e599](https://github.com/Ripwords/ReproJs/commit/839e599)) +- **recorder:** Input, mouse-interaction, scroll, viewport observers ([39c1262](https://github.com/Ripwords/ReproJs/commit/39c1262)) +- **recorder:** Orchestrator + public API (start/stop/pause/resume/flushGzipped) ([aa7ebe7](https://github.com/Ripwords/ReproJs/commit/aa7ebe7)) +- **sdk:** Replay collector adapter; wire into registerAllCollectors ([530a9d2](https://github.com/Ripwords/ReproJs/commit/530a9d2)) +- **shared:** IntakeResponse schema with replayStored/replayDisabled flags ([f399f49](https://github.com/Ripwords/ReproJs/commit/f399f49)) +- **sdk:** Core submit path attaches replay part; honors replayDisabled response ([6c1346a](https://github.com/Ripwords/ReproJs/commit/6c1346a)) +- **dashboard:** Project settings toggle for replay ([2265eb1](https://github.com/Ripwords/ReproJs/commit/2265eb1)) +- **dashboard:** Replace native confirm() with in-app confirm dialogs ([f587750](https://github.com/Ripwords/ReproJs/commit/f587750)) +- **sdk-core:** Pixel-perfect screen-capture path via getDisplayMedia ([a93a239](https://github.com/Ripwords/ReproJs/commit/a93a239)) +- **sdk:** Pause replay buffer while the report wizard is open ([bd64ef3](https://github.com/Ripwords/ReproJs/commit/bd64ef3)) +- **shared:** Project invitation DTOs and inputs ([f7f38e3](https://github.com/Ripwords/ReproJs/commit/f7f38e3)) +- **extension:** Scaffold apps/extension MV3 + crxjs skeleton ([62a36a5](https://github.com/Ripwords/ReproJs/commit/62a36a5)) +- **extension:** Add chrome.storage.local config wrapper ([9a03d07](https://github.com/Ripwords/ReproJs/commit/9a03d07)) +- **extension:** Add origin matching utility ([b9fd648](https://github.com/Ripwords/ReproJs/commit/b9fd648)) +- **extension:** Add chrome.permissions helpers ([e1b166e](https://github.com/Ripwords/ReproJs/commit/e1b166e)) +- **extension:** Add SDK sync script ([1d940b8](https://github.com/Ripwords/ReproJs/commit/1d940b8)) +- **extension:** Inject SDK via chrome.scripting on tab load ([5384731](https://github.com/Ripwords/ReproJs/commit/5384731)) +- **extension:** Popup shell + config list component ([1720e78](https://github.com/Ripwords/ReproJs/commit/1720e78)) +- **extension:** Add-config form with permission request ([282f7ce](https://github.com/Ripwords/ReproJs/commit/282f7ce)) +- **extension:** Sync icons from dashboard SVG at build time ([613f82b](https://github.com/Ripwords/ReproJs/commit/613f82b)) +- **extension:** Proxy SDK fetch through the service worker ([ff40433](https://github.com/Ripwords/ReproJs/commit/ff40433)) +- **extension:** Redesign popup/options + fix first-add race ([318666d](https://github.com/Ripwords/ReproJs/commit/318666d)) +- **extension:** Remember last intake endpoint in Add form ([e9f7b91](https://github.com/Ripwords/ReproJs/commit/e9f7b91)) +- **extension:** Pre-fill Add form with active tab's origin ([ef78c25](https://github.com/Ripwords/ReproJs/commit/ef78c25)) ### 🩹 Fixes +- **sdk-ui:** Inline CSS into IIFE bundle via generated string module ([31a1789](https://github.com/Ripwords/ReproJs/commit/31a1789)) +- **sdk-ui:** Render draft text-box outline + stop shortcuts leaking into textarea ([2c7dbb2](https://github.com/Ripwords/ReproJs/commit/2c7dbb2)) +- **sdk-ui:** Render bg and shapes at the same transform; honor DPR ([e812f3b](https://github.com/Ripwords/ReproJs/commit/e812f3b)) +- **sdk-ui:** Use navigator.userAgentData.platform to avoid MacIntel on Apple Silicon ([b436a57](https://github.com/Ripwords/ReproJs/commit/b436a57)) +- **sdk-ui:** Submit via button onClick instead of native form submit ([7044f93](https://github.com/Ripwords/ReproJs/commit/7044f93)) +- **sdk-ui:** Remove
from describe step to stop navigation on submit ([4521d91](https://github.com/Ripwords/ReproJs/commit/4521d91)) +- **sdk-ui:** Demo form submit preventDefault + real fetch + breadcrumb ([0f0b783](https://github.com/Ripwords/ReproJs/commit/0f0b783)) +- **sdk-ui:** URL-encode demo cookie values so space-bearing ones actually land ([385fd4f](https://github.com/Ripwords/ReproJs/commit/385fd4f)) +- **sdk:** Widget shadow root now closed mode (host scripts cannot reach in) ([b00b7d2](https://github.com/Ripwords/ReproJs/commit/b00b7d2)) +- **sdk:** RingBuffer.drain() actually clears the buffer after snapshot ([3f42d49](https://github.com/Ripwords/ReproJs/commit/3f42d49)) +- **recorder:** Restore Date.now default clock; inject fixed `now` in tests ([849bf33](https://github.com/Ripwords/ReproJs/commit/849bf33)) +- **recorder,dashboard:** Address 8 final-review findings for session replay ([4c084fd](https://github.com/Ripwords/ReproJs/commit/4c084fd)) +- **dashboard:** Shiki JS engine (no WASM), kbd SSR hydration ([9be43d8](https://github.com/Ripwords/ReproJs/commit/9be43d8)) +- **security:** Rate-limit invites, cap pagination offset, guard redact all:true ([b5830e6](https://github.com/Ripwords/ReproJs/commit/b5830e6)) +- **sdk:** IIFE bundle was broken — regex didn't match @reprokit scope ([8f11a52](https://github.com/Ripwords/ReproJs/commit/8f11a52)) +- **core:** Make init() a no-op under SSR ([1fe9289](https://github.com/Ripwords/ReproJs/commit/1fe9289)) +- **sdk-core:** Exclude widget host via filter callback instead of hiding it ([3c5853c](https://github.com/Ripwords/ReproJs/commit/3c5853c)) +- **sdk-core:** Skip and add excludeSelectors to capture ([e5145f5](https://github.com/Ripwords/ReproJs/commit/e5145f5)) +- **recorder:** Extract CSSOM rules and absolutize URLs in full snapshot ([ad8e527](https://github.com/Ripwords/ReproJs/commit/ad8e527)) +- **sdk:** Close lifecycle gaps in pause/resume, capture, and reporter ([dce4455](https://github.com/Ripwords/ReproJs/commit/dce4455)) +- **shared:** Allow null inviterEmail in InvitationDetailDTO ([9e672e2](https://github.com/Ripwords/ReproJs/commit/9e672e2)) +- **extension:** Tsconfig types reference "bun" not "bun-types" ([682a979](https://github.com/Ripwords/ReproJs/commit/682a979)) +- **extension:** Guard against double SDK injection ([6de3900](https://github.com/Ripwords/ReproJs/commit/6de3900)) +- **extension:** Close the double-inject race properly ([f077804](https://github.com/Ripwords/ReproJs/commit/f077804)) +- **core:** Remove DOM fallback from screenshot auto mode ([a4ec71b](https://github.com/Ripwords/ReproJs/commit/a4ec71b)) +- **ui:** Cancelling the capture prompt closes the reporter ([3f3a7b7](https://github.com/Ripwords/ReproJs/commit/3f3a7b7)) +- **extension:** Harden bootRepro + add proxy diagnostics ([81367ac](https://github.com/Ripwords/ReproJs/commit/81367ac)) +- **intake:** Accept X-Repro-Origin from extension SW proxy ([84a683d](https://github.com/Ripwords/ReproJs/commit/84a683d)) +- **extension:** ⚠️ Harden SW proxy (security review F1/F3/F6/F7) ([1bded3e](https://github.com/Ripwords/ReproJs/commit/1bded3e)) +- **security:** ⚠️ Close H1/H2/M2/M3/M4 from pre-publish audit ([1f7b72a](https://github.com/Ripwords/ReproJs/commit/1f7b72a)) +- **core:** Prevent screenshot hang and broken-image glyphs ([0f9f684](https://github.com/Ripwords/ReproJs/commit/0f9f684)) +- **recorder:** Align event pipeline with rrweb-player expectations ([b51ae61](https://github.com/Ripwords/ReproJs/commit/b51ae61)) +- **extension:** Re-inject SDK on page refresh ([b5f9db4](https://github.com/Ripwords/ReproJs/commit/b5f9db4)) ### 💅 Refactors +- Drop redundant/loose type casts ([afbb44e](https://github.com/Ripwords/ReproJs/commit/afbb44e)) +- **auth:** Simplify invite flow — first sign-in promotes invited → active ([f9c0088](https://github.com/Ripwords/ReproJs/commit/f9c0088)) +- **shared:** Z.string().email() → z.email() for Zod 4 ([e6408dc](https://github.com/Ripwords/ReproJs/commit/e6408dc)) +- **ts-hygiene:** Tighten unsafe casts, drop unneeded ones, share Member type ([851a464](https://github.com/Ripwords/ReproJs/commit/851a464)) +- **dashboard:** Extract priorityColor + relativeTime; drop ProjectMemberRole alias ([52c7004](https://github.com/Ripwords/ReproJs/commit/52c7004)) +- **recorder:** Drop unjustified \`as unknown as\` on stylesheet read ([4889dcd](https://github.com/Ripwords/ReproJs/commit/4889dcd)) ### 📖 Documentation - Close open question #2 (recorder format); recorder package no longer pending ([#2](https://github.com/Ripwords/ReproJs/issues/2)) +- **spec:** Sub-project F — dashboard frontend overhaul design ([d13c716](https://github.com/Ripwords/ReproJs/commit/d13c716)) ### 📦 Build +- **sdk:** Make @reprokit/core a self-contained publishable package ([95d8992](https://github.com/Ripwords/ReproJs/commit/95d8992)) ### 🏡 Chore +- Add packages/shared placeholder ([a96c8fe](https://github.com/Ripwords/ReproJs/commit/a96c8fe)) +- **sdk:** Scaffold @feedback-tool/sdk package with tsdown dual build ([550b7cf](https://github.com/Ripwords/ReproJs/commit/550b7cf)) +- **sdk-ui:** Scaffold @feedback-tool/ui with Shadow DOM host helper ([30e4690](https://github.com/Ripwords/ReproJs/commit/30e4690)) +- **demo:** Set real project key for local testing ([17d49fb](https://github.com/Ripwords/ReproJs/commit/17d49fb)) +- **dashboard:** App icons (viewfinder + dot) + PWA manifest ([e6e6077](https://github.com/Ripwords/ReproJs/commit/e6e6077)) +- **lint:** Clear all 48 oxlint warnings ([08d5745](https://github.com/Ripwords/ReproJs/commit/08d5745)) +- Remove dead/redundant code — audit round 5 (hygiene) ([4cee560](https://github.com/Ripwords/ReproJs/commit/4cee560)) +- Update deps and scripts ([27ba9d3](https://github.com/Ripwords/ReproJs/commit/27ba9d3)) +- **recorder:** Align package config with core — ES2020, bun-types, esModuleInterop ([c009473](https://github.com/Ripwords/ReproJs/commit/c009473)) +- Update z.string().uuid() to z.uuid() ([996c4aa](https://github.com/Ripwords/ReproJs/commit/996c4aa)) +- **brand:** Rename feedback-tool → repro ([3d38dcc](https://github.com/Ripwords/ReproJs/commit/3d38dcc)) +- **brand:** Publish under @reprokit scope ([b73ef50](https://github.com/Ripwords/ReproJs/commit/b73ef50)) +- **release:** V0.1.0 — infra for changelogen + CI + docs ([095da26](https://github.com/Ripwords/ReproJs/commit/095da26)) +- **release:** V0.1.1 ([a704e7c](https://github.com/Ripwords/ReproJs/commit/a704e7c)) +- **brand:** Rename @reprokit → @reprojs across npm + Docker + GitHub ([cdd9dc7](https://github.com/Ripwords/ReproJs/commit/cdd9dc7)) +- **release:** V0.1.3 ([a9ee679](https://github.com/Ripwords/ReproJs/commit/a9ee679)) +- **release:** Sdk-v0.1.4 ([2d92295](https://github.com/Ripwords/ReproJs/commit/2d92295)) +- **release:** Sdk-v0.1.5 ([048daa7](https://github.com/Ripwords/ReproJs/commit/048daa7)) +- **release:** Sdk-v0.1.6 ([033c128](https://github.com/Ripwords/ReproJs/commit/033c128)) +- **release:** Sdk-v0.2.0 ([320cfad](https://github.com/Ripwords/ReproJs/commit/320cfad)) +- **release:** Sdk-v0.2.1 ([73414c3](https://github.com/Ripwords/ReproJs/commit/73414c3)) +- **release:** Sdk-v0.3.0 ([0a88ed6](https://github.com/Ripwords/ReproJs/commit/0a88ed6)) +- **release:** Extension changelog config + fix SDK repo casing ([34aa3bc](https://github.com/Ripwords/ReproJs/commit/34aa3bc)) ### ✅ Tests - -### 🎨 Styles - +- **sdk-ui:** Add pointer-flow integration tests for each annotation tool ([2a493a4](https://github.com/Ripwords/ReproJs/commit/2a493a4)) +- **extension:** Playwright MV3 injection coverage ([2b3cbfd](https://github.com/Ripwords/ReproJs/commit/2b3cbfd)) ### 🤖 CI +- **sdk-release:** Generate CHANGELOG and GitHub Release for @reprojs/core ([5603973](https://github.com/Ripwords/ReproJs/commit/5603973)) #### ⚠️ Breaking Changes +- **extension:** ⚠️ Harden SW proxy (security review F1/F3/F6/F7) ([1bded3e](https://github.com/Ripwords/ReproJs/commit/1bded3e)) +- **security:** ⚠️ Close H1/H2/M2/M3/M4 from pre-publish audit ([1f7b72a](https://github.com/Ripwords/ReproJs/commit/1f7b72a)) ### ❤️ Contributors - JJ - diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 11f3b22..0109982 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -8,9 +8,6 @@ - **sdk-ui:** Decode screenshots via createImageBitmap so host CSPs can't block capture ([00c23a6](https://github.com/Ripwords/ReproJs/commit/00c23a6)) -### 🏡 Chore - - ### ✅ Tests - **sdk-ui:** Add a strict-CSP route to the demo playground ([b57883a](https://github.com/Ripwords/ReproJs/commit/b57883a)) @@ -25,27 +22,16 @@ ### 🚀 Enhancements - -### 🔥 Performance - +- **shared:** Add volume series to AdminOverviewDTO ([c0e3a70](https://github.com/Ripwords/ReproJs/commit/c0e3a70)) ### 🩹 Fixes +- **release:** Scope each package's CHANGELOG to its own paths ([b1bb22c](https://github.com/Ripwords/ReproJs/commit/b1bb22c)) +- **sdk-ui:** Stop annotation shortcuts firing while typing text labels ([4ff661f](https://github.com/Ripwords/ReproJs/commit/4ff661f)) ### 💅 Refactors - -### 📖 Documentation - - -### 🏡 Chore - - -### ✅ Tests - - -### 🤖 CI - +- **comments:** Move CreateCommentBody schema to @reprojs/shared ([0d14acd](https://github.com/Ripwords/ReproJs/commit/0d14acd)) ### ❤️ Contributors @@ -57,27 +43,58 @@ ### 🚀 Enhancements +- **shared:** Add AdminOverviewDTO for admin overview dashboard ([f76efdb](https://github.com/Ripwords/ReproJs/commit/f76efdb)) +- **shared:** Add 'manager' to ProjectRole enum ([2996a41](https://github.com/Ripwords/ReproJs/commit/2996a41)) +- **shared:** Add source discriminator and mobile device fields to ReportContext/SystemInfo ([2f6effc](https://github.com/Ripwords/ReproJs/commit/2f6effc)) +- **shared:** Add source and devicePlatform to ReportSummaryDTO ([95ed429](https://github.com/Ripwords/ReproJs/commit/95ed429)) +- **expo:** Config normalizer and internal context shape ([50e2018](https://github.com/Ripwords/ReproJs/commit/50e2018)) +- **shared:** ReportSummaryDTO.assignees (array); TriagePatchInput.assigneeIds ([572ae66](https://github.com/Ripwords/ReproJs/commit/572ae66)) +- **shared:** Add milestone + githubAssigneeLogins to reports DTOs ([4c64078](https://github.com/Ripwords/ReproJs/commit/4c64078)) +- **integrations:** PushOnEdit UI toggle for GitHub integration ([dfd32b2](https://github.com/Ripwords/ReproJs/commit/dfd32b2)) +- **integration-api:** Expose autoCreateOnIntake toggle ([1574a7d](https://github.com/Ripwords/ReproJs/commit/1574a7d)) +- **shared:** Comment DTOs ([2485a18](https://github.com/Ripwords/ReproJs/commit/2485a18)) +- **github:** Create custom labels in linked repo from the picker ([18ad810](https://github.com/Ripwords/ReproJs/commit/18ad810)) +- **sdk-utils:** Add canonical theme tokens shared by web and expo SDKs ([989d8e3](https://github.com/Ripwords/ReproJs/commit/989d8e3)) +- **sdk-utils:** Add Attachment shape and validateAttachments helper ([a6c8159](https://github.com/Ripwords/ReproJs/commit/a6c8159)) +- **ui:** Add themeToCssVars helper that emits flame/mist tokens as CSS vars ([1a2e692](https://github.com/Ripwords/ReproJs/commit/1a2e692)) +- **ui:** Inject flame/mist CSS vars into shadow root at mount ([91a883b](https://github.com/Ripwords/ReproJs/commit/91a883b)) +- **ui:** Add PrimaryButton, SecondaryButton, FieldLabel, StepIndicator, WizardHeader ([61404b5](https://github.com/Ripwords/ReproJs/commit/61404b5)) +- **ui:** Add StepDetails (replaces step-describe in 3-step wizard) ([1077c55](https://github.com/Ripwords/ReproJs/commit/1077c55)) +- **ui:** Add StepReview with 'Included in this report' summary ([da15040](https://github.com/Ripwords/ReproJs/commit/da15040)) +- **ui:** Replace 2-step wizard with annotate → details → review flow ([25c916f](https://github.com/Ripwords/ReproJs/commit/25c916f)) +- **ui:** Add AttachmentList with hybrid thumbnail + chip rendering ([b8070d6](https://github.com/Ripwords/ReproJs/commit/b8070d6)) +- **sdk-web:** Add user attachments end-to-end ([46af0bb](https://github.com/Ripwords/ReproJs/commit/46af0bb)) +- **shared:** Add user-file kind and filename field to AttachmentDTO ([dd715e5](https://github.com/Ripwords/ReproJs/commit/dd715e5)) +- **ui:** Side-by-side details layout + paste-to-attach screenshots ([4452729](https://github.com/Ripwords/ReproJs/commit/4452729)) +- **ui:** Inflight toast + clamav scan visibility ([23b9349](https://github.com/Ripwords/ReproJs/commit/23b9349)) +- **dashboard:** Show clamav scan report on user-file attachments ([368d63b](https://github.com/Ripwords/ReproJs/commit/368d63b)) +- **expo:** Pick attachments from Photos / Files / Clipboard ([0cc0bf5](https://github.com/Ripwords/ReproJs/commit/0cc0bf5)) ### 🩹 Fixes +- **docs:** Update URLs after repo rename to ReproJs ([ee6ff03](https://github.com/Ripwords/ReproJs/commit/ee6ff03)) +- **sdk-utils:** Hermes-safe newShapeId — fall back when crypto.randomUUID missing ([a3c218b](https://github.com/Ripwords/ReproJs/commit/a3c218b)) +- **github:** Subscribe to issue_comment/label/milestone/member events + activity feed tag rendering ([40e160c](https://github.com/Ripwords/ReproJs/commit/40e160c)) ### 💅 Refactors - -### 📖 Documentation - +- **sdk-utils:** Extract ring-buffer from @reprojs/ui ([998a4e1](https://github.com/Ripwords/ReproJs/commit/998a4e1)) +- **sdk-utils:** Extract redact from @reprojs/ui ([0b1406b](https://github.com/Ripwords/ReproJs/commit/0b1406b)) +- **sdk-utils:** Extract breadcrumbs from @reprojs/ui ([eceb072](https://github.com/Ripwords/ReproJs/commit/eceb072)) +- **sdk-utils:** Extract annotation tool geometry from @reprojs/ui ([bac4449](https://github.com/Ripwords/ReproJs/commit/bac4449)) +- **dev:** Move hardcoded tunnel host + demo endpoint out of tracked files ([17ae31c](https://github.com/Ripwords/ReproJs/commit/17ae31c)) +- **assignees:** Github-only, drop dashboard-user linking ([557d2d6](https://github.com/Ripwords/ReproJs/commit/557d2d6)) +- **ui:** Switch styles to CSS custom properties from sdk-utils tokens ([ede8899](https://github.com/Ripwords/ReproJs/commit/ede8899)) ### 🏡 Chore +- **release:** Extension changelog config + fix SDK repo casing ([34aa3bc](https://github.com/Ripwords/ReproJs/commit/34aa3bc)) +- **sdk-utils:** Scaffold package ([abd9d08](https://github.com/Ripwords/ReproJs/commit/abd9d08)) +- **github-app:** Default auto_create_on_intake to true for new installs ([a7fbab1](https://github.com/Ripwords/ReproJs/commit/a7fbab1)) ### ✅ Tests - -### 🎨 Styles - - -### 🤖 CI - +- **shared:** Align ReportSummaryDTO test with new assignees/milestone shape ([9dca620](https://github.com/Ripwords/ReproJs/commit/9dca620)) ### ❤️ Contributors @@ -90,24 +107,15 @@ ### 🚀 Enhancements +- **shared:** Project invitation DTOs and inputs ([f7f38e3](https://github.com/Ripwords/reprojs/commit/f7f38e3)) ### 🩹 Fixes - -### 📖 Documentation - - -### 🏡 Chore - - -### ✅ Tests - - -### 🤖 CI - - -#### ⚠️ Breaking Changes - +- **shared:** Allow null inviterEmail in InvitationDetailDTO ([9e672e2](https://github.com/Ripwords/reprojs/commit/9e672e2)) +- **core:** Remove DOM fallback from screenshot auto mode ([a4ec71b](https://github.com/Ripwords/reprojs/commit/a4ec71b)) +- **ui:** Cancelling the capture prompt closes the reporter ([3f3a7b7](https://github.com/Ripwords/reprojs/commit/3f3a7b7)) +- **core:** Prevent screenshot hang and broken-image glyphs ([0f9f684](https://github.com/Ripwords/reprojs/commit/0f9f684)) +- **recorder:** Align event pipeline with rrweb-player expectations ([b51ae61](https://github.com/Ripwords/reprojs/commit/b51ae61)) ### ❤️ Contributors @@ -119,12 +127,15 @@ ### 🚀 Enhancements +- **sdk:** Pause replay buffer while the report wizard is open ([bd64ef3](https://github.com/Ripwords/reprojs/commit/bd64ef3)) ### 🩹 Fixes +- **sdk:** Close lifecycle gaps in pause/resume, capture, and reporter ([dce4455](https://github.com/Ripwords/reprojs/commit/dce4455)) ### 💅 Refactors +- **recorder:** Drop unjustified \`as unknown as\` on stylesheet read ([4889dcd](https://github.com/Ripwords/reprojs/commit/4889dcd)) ### ❤️ Contributors @@ -136,15 +147,15 @@ ### 🚀 Enhancements +- **sdk-core:** Pixel-perfect screen-capture path via getDisplayMedia ([a93a239](https://github.com/Ripwords/reprojs/commit/a93a239)) ### 🩹 Fixes - -### 🏡 Chore - +- **recorder:** Extract CSSOM rules and absolutize URLs in full snapshot ([ad8e527](https://github.com/Ripwords/reprojs/commit/ad8e527)) ### 🤖 CI +- **sdk-release:** Generate CHANGELOG and GitHub Release for @reprojs/core ([5603973](https://github.com/Ripwords/reprojs/commit/5603973)) ### ❤️ Contributors diff --git a/packages/expo/CHANGELOG.md b/packages/expo/CHANGELOG.md index c9931e3..71eb1ea 100644 --- a/packages/expo/CHANGELOG.md +++ b/packages/expo/CHANGELOG.md @@ -1,9 +1,5 @@ # Changelog -All notable changes to `@reprojs/expo` will be documented in this file. - -Generated by [`changelogen`](https://github.com/unjs/changelogen) on each release cut via `bun run release:expo`. - ## expo-v0.3.0 [compare changes](https://github.com/Ripwords/ReproJs/compare/expo-v0.2.0...expo-v0.3.0) @@ -20,9 +16,6 @@ Generated by [`changelogen`](https://github.com/unjs/changelogen) on each releas - **expo:** Add expo-document-picker + expo-image-picker to install snippet ([d7aad2e](https://github.com/Ripwords/ReproJs/commit/d7aad2e)) -### 🏡 Chore - - ### ❤️ Contributors - JJ @@ -33,27 +26,34 @@ Generated by [`changelogen`](https://github.com/unjs/changelogen) on each releas ### 🚀 Enhancements +- **shared:** ReportSummaryDTO.assignees (array); TriagePatchInput.assigneeIds ([572ae66](https://github.com/Ripwords/ReproJs/commit/572ae66)) +- **shared:** Add milestone + githubAssigneeLogins to reports DTOs ([4c64078](https://github.com/Ripwords/ReproJs/commit/4c64078)) +- **integrations:** PushOnEdit UI toggle for GitHub integration ([dfd32b2](https://github.com/Ripwords/ReproJs/commit/dfd32b2)) +- **integration-api:** Expose autoCreateOnIntake toggle ([1574a7d](https://github.com/Ripwords/ReproJs/commit/1574a7d)) +- **shared:** Comment DTOs ([2485a18](https://github.com/Ripwords/ReproJs/commit/2485a18)) +- **github:** Create custom labels in linked repo from the picker ([18ad810](https://github.com/Ripwords/ReproJs/commit/18ad810)) +- **sdk-utils:** Add canonical theme tokens shared by web and expo SDKs ([989d8e3](https://github.com/Ripwords/ReproJs/commit/989d8e3)) +- **sdk-utils:** Add Attachment shape and validateAttachments helper ([a6c8159](https://github.com/Ripwords/ReproJs/commit/a6c8159)) +- **shared:** Add user-file kind and filename field to AttachmentDTO ([dd715e5](https://github.com/Ripwords/ReproJs/commit/dd715e5)) +- **expo:** Add pickFiles wrapper over expo-document-picker ([d664505](https://github.com/Ripwords/ReproJs/commit/d664505)) +- **expo:** Add AttachmentList for the mobile wizard ([b2162d3](https://github.com/Ripwords/ReproJs/commit/b2162d3)) +- **expo:** Add attachments to the wizard's Details step ([9e64cea](https://github.com/Ripwords/ReproJs/commit/9e64cea)) +- **expo:** Submit user-file attachments as attachment[N] multipart parts ([716d4b6](https://github.com/Ripwords/ReproJs/commit/716d4b6)) +- **dashboard:** Show clamav scan report on user-file attachments ([368d63b](https://github.com/Ripwords/ReproJs/commit/368d63b)) +- **expo:** Pick attachments from Photos / Files / Clipboard ([0cc0bf5](https://github.com/Ripwords/ReproJs/commit/0cc0bf5)) ### 🩹 Fixes +- **expo:** Make clipboard paste actually work ([641faad](https://github.com/Ripwords/ReproJs/commit/641faad)) ### 💅 Refactors - -### 📖 Documentation - - -### 🏡 Chore - +- **assignees:** Github-only, drop dashboard-user linking ([557d2d6](https://github.com/Ripwords/ReproJs/commit/557d2d6)) +- **expo:** Re-export shared theme tokens from sdk-utils ([9ddc528](https://github.com/Ripwords/ReproJs/commit/9ddc528)) ### ✅ Tests - -### 🎨 Styles - - -### 🤖 CI - +- **shared:** Align ReportSummaryDTO test with new assignees/milestone shape ([9dca620](https://github.com/Ripwords/ReproJs/commit/9dca620)) ### ❤️ Contributors @@ -66,11 +66,13 @@ Generated by [`changelogen`](https://github.com/unjs/changelogen) on each releas ### 🩹 Fixes +- **expo:** Resolve @reprojs/* at build time so published package installs ([428a937](https://github.com/Ripwords/ReproJs/commit/428a937)) ### 🏡 Chore +- **expo:** Silence intentional no-await-in-loop in FIFO queue test ([b39575c](https://github.com/Ripwords/ReproJs/commit/b39575c)) +- **expo:** Add changelogen config so release:expo tags as expo-v* ([a6dce39](https://github.com/Ripwords/ReproJs/commit/a6dce39)) ### ❤️ Contributors - JJ -