Skip to content

Feat(extension, client): extension dist discord webhook#322

Merged
constantly-dev merged 10 commits intodevelopfrom
feat/#321/extension-dist-discord-webhook
Mar 19, 2026
Merged

Feat(extension, client): extension dist discord webhook#322
constantly-dev merged 10 commits intodevelopfrom
feat/#321/extension-dist-discord-webhook

Conversation

@constantly-dev
Copy link
Member

@constantly-dev constantly-dev commented Mar 19, 2026

📌 Related Issues

관련된 Issue를 태그해주세요. (e.g. - close #25)

📄 Tasks

  • Discord Webhook 전송 함수 구현 (scripts/zip.mjs)
  • 빌드 완료 후 자동으로 dist 폴더 압축 및 디스코드 전송 스크립트 연결
  • Extension 및 Client 프로젝트 내 이미지 관리 전략 수정 (source ->
    각 apps public/assets)
  • 관련 컴포넌트(LevelInfoCard, MyLevelItem, Footer 등)의 Icon을 img 태그로 리팩터링

⭐ PR Point (To Reviewer)

1. Discord Webhook 빌드 자동화

이제 root에서 pnpm share:ext 명령어 하나로 빌드 -> 압축 -> 디스코드 전송이 한 번에 이루어집니다.

이제 팀원들이 수동으로 빌드 파일을 주고받을 필요 없이 채널에서 바로 확인 가능합니다.


2. SVG Sprite 빌드 용량 최적화

문제 원인:

현재 우리 프로젝트는 모든 아이콘을 하나의 HTML에 박아넣는 SVG Sprite 방식을 사용합니다.

하지만 source 폴더에 단순 아이콘이 아닌 고해상도 이미지(Base64가 포함된 SVG)가 섞여 들어가면서, Icon 컴포넌트 사용 여부와 상관없이 모든 이미지가 popup.html에 주입되어 용량이 20MB까지 넘어가는 현상이 발생했습니다.

image

해결 방안:

  • 에셋 분리: 4KB 이상의 무거운 이미지성 SVG들을 source 폴더에서 제거하고 각 앱의 public/assets 폴더로 이동시켰습니다.

  • 렌더링 방식 변경: 용량이 큰 일러스트나 3D 이미지는 Icon 컴포넌트(Sprite 참조) 대신 정석적인 img 태그를 사용하도록 변경했습니다.

  • 결과: popup.html 용량이 20MB -> 300KB 수준으로 최적화되었으며 디스코드 전송 제한(25MB) 문제를 근본적으로 해결했습니다.

이는 어쩔 수 없는 trade-off 같아요. sprite방식이 한번에 source를 불러와서 하나의 Icon 컴포넌트로 컨트롤하니까 매번 불러올 때는 빠르게 로딩이 가능하지만, 사용하지 않는 source도 전부 불러와야 하기 때문에 크기가 커지고 초기 로딩이 느려져요.

그래서 이를 확장 프로그램에서 사용하지 않는 tooltip svg 등도 다 포함이 되어 용량이 많이 커져 discord 웹훅도 작동을 안하는 것이었어요.

또한 애초에 design-system이라는 패키지 자체도 extension/client 등 팀에서 여러 환경에 공통으로 사용하는 에셋(체크 아이콘 등)만 두는 것이 의미상으로도 맞기 때문에 이렇게 리팩 작업을 하게 되었어요.

혹시나 제가 틀릴 수 있으니 다른 방법이나 좋은 접근이 있다면 편하게 말씀해주세요!!!

Summary by CodeRabbit

릴리스 노트

  • Refactor

    • 아이콘 컴포넌트를 SVG 이미지로 대체하여 렌더링 방식 개선
    • 디자인 시스템 아이콘 정의 최적화
  • Chores

    • 확장 프로그램 빌드 및 공유 자동화 스크립트 추가
    • GitHub Actions 워크플로우를 통한 배포 프로세스 자동화
    • 빌드 설정 개선 및 개발 의존성 추가
    • Sourcemap 생성 비활성화로 빌드 최적화

@vercel
Copy link

vercel bot commented Mar 19, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
pinback-client-client Ready Ready Preview, Comment Mar 19, 2026 0:45am
pinback-client-landing Ready Ready Preview, Comment Mar 19, 2026 0:45am

@coderabbitai
Copy link

coderabbitai bot commented Mar 19, 2026

Warning

Rate limit exceeded

@constantly-dev has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 27 minutes and 12 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 178d21dd-72a7-4e28-a885-44441e46e9a9

📥 Commits

Reviewing files that changed from the base of the PR and between 6285ced and 5a9eb54.

📒 Files selected for processing (4)
  • .github/workflows/share-extension.yml
  • apps/client/src/shared/components/sidebar/MyLevelItem.tsx
  • apps/extension/scripts/zip.mjs
  • apps/extension/src/pages/DuplicatePop.tsx

Walkthrough

디자인 시스템의 Icon 컴포넌트 사용을 정적 SVG <img>로 대체하고, 확장 프로그램 배포용 ZIP 생성·Discord 업로드 스크립트 및 관련 패키·워크플로를 추가하며, 사용되지 않는 아이콘 이름들을 레지스트리에서 제거합니다.

Changes

Cohort / File(s) Summary
클라이언트 아이콘 대체
apps/client/src/pages/level/components/LevelInfoCard.tsx, apps/client/src/pages/myBookmark/components/footer/Footer.tsx, apps/client/src/pages/onBoarding/components/footer/Footer.tsx, apps/client/src/pages/remind/components/footer/Footer.tsx, apps/client/src/shared/components/sidebar/MyLevelItem.tsx, apps/landing/src/components/Footer.tsx
디자인 시스템 Icon 컴포넌트 사용을 /assets/*.svg 정적 <img>로 교체. aria-labelalt로 접근성 변경, object-cover/object-contain 스타일 적용.
Extension 배포 자동화
apps/extension/scripts/zip.mjs, apps/extension/package.json, apps/extension/.gitignore, apps/extension/vite.config.ts, .github/workflows/share-extension.yml
dist를 ZIP으로 생성해 Discord 웹훅으로 업로드하는 스크립트 추가, share:dev 스크립트·의존성(adm-zip, form-data) 추가, out/ 무시, sourcemap 비활성화, GitHub Actions 워크플로 추가.
design-system 아이콘 레지스트리
packages/design-system/src/icons/iconNames.ts
chippi_profile, dotori, palms, saved, tooltip_1~tooltip_5, 등 사용되지 않는 아이콘 이름 삭제 및 파생 IconName 변경.
경미한 UI·포맷 변경
apps/extension/src/pages/DuplicatePop.tsx, package.json
dotori 아이콘을 이모지(🌰)로 대체 및 포맷 정리, 루트 package.jsonshare:ext 스크립트 추가.

Sequence Diagram(s)

sequenceDiagram
    participant Build as Build Process
    participant Script as zip.mjs Script
    participant FS as File System
    participant Discord as Discord Webhook
    participant Proc as Node Process

    Build->>Script: pnpm build:dev 실행 후 스크립트 호출
    Script->>FS: dist/ 존재 여부 확인
    FS-->>Script: dist/ 존재 확인
    Script->>FS: out/ 생성, 기존 zip 제거
    Script->>FS: adm-zip으로 dist/ 압축 -> out/pinback-ext-dev.zip
    FS-->>Script: zip 생성 완료
    Script->>Discord: 메시지(타임스탬프) + zip 파일 업로드 (multipart/form-data)
    alt 업로드 성공
        Discord-->>Script: 200 응답
        Script->>Proc: 정상 종료 (exit 0)
    else 업로드 실패 (예: 413)
        Discord-->>Script: 에러 응답
        Script->>Discord: 실패 알림 전송 (비동기)
        Script->>Proc: 에러 로깅 후 종료 (exit 1)
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

🛠️ Feature, frontend

Suggested reviewers

  • jllee000
  • jjangminii

🐰
아이콘이 뛰놀며 파일을 묶고
Zip 하나 들고 디스코드로 달려가네
레지스트리 한켠 가벼워지고
자동화 휘파람 불며 빛나네 ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목 'Feat/#321/extension dist discord webhook'는 Discord 웹훅을 통한 extension dist 자동 전송이라는 변경사항의 주요 목표를 명확하게 요약합니다.
Description check ✅ Passed PR 설명은 필수 템플릿 섹션(관련 Issues, Tasks, PR Point)을 모두 포함하며, Discord 웹훅 자동화와 SVG 에셋 최적화에 대해 상세히 설명합니다.
Linked Issues check ✅ Passed PR의 변경사항은 #321 (extension dist Discord 전송 자동화) 요구사항을 완벽하게 충족합니다. #25는 Progress 컴포넌트로 무관합니다.
Out of Scope Changes check ✅ Passed 모든 변경사항이 #321의 범위 내입니다: Discord 웹훅 스크립트, SVG 에셋 분리, Icon 컴포넌트를 img 태그로 리팩터링한 것이 모두 용량 최적화 및 자동화 목표에 직결됩니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/#321/extension-dist-discord-webhook
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot requested review from jjangminii and jllee000 March 19, 2026 12:15
@github-actions github-actions bot added the feat 기능 개발하라 개발 달려라 달려 label Mar 19, 2026
@github-actions
Copy link

github-actions bot commented Mar 19, 2026

✅ Storybook chromatic 배포 확인:
🐿️ storybook

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🧹 Nitpick comments (1)
apps/extension/src/pages/DuplicatePop.tsx (1)

1-1: 변수명 오타(extesionPop)는 정리하는 것을 권장합니다.

동작에는 영향 없지만 추후 검색성과 가독성에 불리합니다. extensionPop처럼 일관된 명명으로 맞추는 편이 좋습니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/extension/src/pages/DuplicatePop.tsx` at line 1, The imported variable
name extesionPop in DuplicatePop.tsx is misspelled; rename the import identifier
to extensionPop (and update all its usages in this file, e.g., any JSX or
references to extesionPop) so the symbol is consistently and correctly named
across the module to improve readability and searchability.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/client/src/shared/components/sidebar/MyLevelItem.tsx`:
- Around line 36-41: The img in MyLevelItem.tsx is inside an aria-hidden region
so its current alt text conflicts with accessibility semantics; if the image is
purely decorative, change the <img> element's alt to an empty string (alt="") to
reflect that and keep or remove aria-hidden as appropriate; locate the img in
the MyLevelItem component (the <img src="/assets/chippi_profile.svg" ... />
node) and update its alt to "" so the image is treated as decorative by
assistive tech.

In `@apps/extension/package.json`:
- Around line 13-14: The "share:dev" script uses the Node.js "--env-file" flag
(requires Node >=20.6.0) while the root package.json's engines.node still allows
">=18", causing failures for Node 18/19 when running "share:dev" or "share:ext";
fix by either updating engines.node to ">=20.6.0" to match the flag requirement,
or remove the CLI flag and load .env.development inside the script (e.g.,
require/initialize dotenv or use node -r dotenv/config in the script that calls
scripts/zip.mjs) so "share:dev" and "share:ext" work on older supported Node
versions.

In `@apps/extension/scripts/zip.mjs`:
- Around line 11-12: 현재 ZIP_NAME과 ZIP_PATH가 하드코딩되어 있어 프로덕션 빌드도 dev
아카이브(pinback-ext-dev.zip)로 덮어쓰입니다; 수정 방법은 ZIP_NAME을 고정 문자열 대신 빌드 모드(예: argv 또는
process.env.BUILD_MODE / process.env.NODE_ENV)로 결정하도록 변경하고 ZIP_PATH는 그 값에 따라
생성하도록 바꾸세요; 또한 apps/extension의 package.json에서 호출하는 'zip' 및 'share:dev' 스크립트가 필요
시 모드 인자나 환경변수를 전달하도록 업데이트해 서로 다른 모드별 파일명(pinback-ext-dev.zip vs pinback-ext.zip
등)을 사용하게 하십시오.
- Around line 77-82: The failure notification is being fire-and-forget via
uploadToDiscord(failMessage).catch(...) and then process.exit(1) is called
immediately, risking the Discord message not being sent; change the flow to
await uploadToDiscord(failMessage) (handle errors with try/catch or .catch and
log) before calling process.exit(1) so the notification finishes sending,
ensuring you still log the final errorMsg and then call process.exit(1).

In `@apps/extension/src/pages/DuplicatePop.tsx`:
- Around line 18-27: The two buttons in DuplicatePop.tsx (the button elements
wired to onLeftClick and onRightClick) lack explicit type attributes which can
cause accidental form submission when this component is used inside a form;
update both button elements to include type="button" to prevent unintended
submit behavior while preserving their onClick handlers.
- Around line 10-13: The <img> tag in the DuplicatePop component is missing an
alt attribute which breaks screen reader accessibility; update the <img> (using
the extesionPop source in DuplicatePop.tsx) to include an empty alt attribute
(alt="") since the image is decorative so screen readers will ignore it.

---

Nitpick comments:
In `@apps/extension/src/pages/DuplicatePop.tsx`:
- Line 1: The imported variable name extesionPop in DuplicatePop.tsx is
misspelled; rename the import identifier to extensionPop (and update all its
usages in this file, e.g., any JSX or references to extesionPop) so the symbol
is consistently and correctly named across the module to improve readability and
searchability.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 6ecbf60e-4e93-44bd-ad45-39b1a906d58f

📥 Commits

Reviewing files that changed from the base of the PR and between a122099 and 61c163e.

⛔ Files ignored due to path filters (14)
  • apps/client/public/assets/chippi_profile.svg is excluded by !**/*.svg
  • apps/client/public/assets/palms.svg is excluded by !**/*.svg
  • apps/client/public/assets/tooltip_1.svg is excluded by !**/*.svg
  • apps/client/public/assets/tooltip_2.svg is excluded by !**/*.svg
  • apps/client/public/assets/tooltip_3.svg is excluded by !**/*.svg
  • apps/client/public/assets/tooltip_4.svg is excluded by !**/*.svg
  • apps/client/public/assets/tooltip_5.svg is excluded by !**/*.svg
  • apps/landing/public/palms.svg is excluded by !**/*.svg
  • packages/design-system/src/icons/source/dotori.svg is excluded by !**/*.svg
  • packages/design-system/src/icons/source/extension_pop.svg is excluded by !**/*.svg
  • packages/design-system/src/icons/source/extension_thumb.svg is excluded by !**/*.svg
  • packages/design-system/src/icons/source/logout_chippi.2512.svg is excluded by !**/*.svg
  • packages/design-system/src/icons/source/saved.svg is excluded by !**/*.svg
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (13)
  • apps/client/src/pages/level/components/LevelInfoCard.tsx
  • apps/client/src/pages/myBookmark/components/footer/Footer.tsx
  • apps/client/src/pages/onBoarding/components/footer/Footer.tsx
  • apps/client/src/pages/remind/components/footer/Footer.tsx
  • apps/client/src/shared/components/sidebar/MyLevelItem.tsx
  • apps/extension/.gitignore
  • apps/extension/package.json
  • apps/extension/scripts/zip.mjs
  • apps/extension/src/pages/DuplicatePop.tsx
  • apps/extension/vite.config.ts
  • apps/landing/src/components/Footer.tsx
  • package.json
  • packages/design-system/src/icons/iconNames.ts
💤 Files with no reviewable changes (1)
  • packages/design-system/src/icons/iconNames.ts

Comment on lines +13 to +14
"zip": "pnpm build:prod && node scripts/zip.mjs",
"share:dev": "pnpm build:dev && node --env-file=.env.development scripts/zip.mjs"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

Node.js --env-file flag support when introduced version

💡 Result:

The --env-file flag was introduced in Node.js version 20.6.0.

Citations:


🏁 Script executed:

# Verify the actual package.json files and scripts
find . -name "package.json" -path "*/extension/*" -o -name "package.json" -path "./package.json" | head -20

Repository: Pinback-Team/pinback-client

Length of output: 115


🏁 Script executed:

# Check root package.json for engine declaration
cat -n package.json | grep -A 2 -B 2 '"node"'

Repository: Pinback-Team/pinback-client

Length of output: 198


🏁 Script executed:

# Check apps/extension/package.json for the scripts and dependencies
cat -n apps/extension/package.json

Repository: Pinback-Team/pinback-client

Length of output: 2172


🏁 Script executed:

# Search for share:ext script in all package.json files
grep -r "share:ext" . --include="package.json"

Repository: Pinback-Team/pinback-client

Length of output: 147


🏁 Script executed:

# Also search in any script files
grep -r "share:ext" . --include="*.mjs" --include="*.js" --include="*.json"

Repository: Pinback-Team/pinback-client

Length of output: 147


share:dev 스크립트가 지원 엔진 범위 내에서 작동하지 않습니다.

node --env-file 플래그는 Node.js 20.6.0부터 지원되지만, 루트 package.json (Line 47)에서는 여전히 engines.node: >=18을 허용하고 있습니다. Node 18과 19 환경에서 share:dev 및 이를 호출하는 share:ext 스크립트가 실패합니다.

엔진 하한을 >=20.6.0 이상으로 올리거나, .env.development 파일을 스크립트 내부(dotenv 등)에서 로드하는 방식으로 변경해야 합니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/extension/package.json` around lines 13 - 14, The "share:dev" script
uses the Node.js "--env-file" flag (requires Node >=20.6.0) while the root
package.json's engines.node still allows ">=18", causing failures for Node 18/19
when running "share:dev" or "share:ext"; fix by either updating engines.node to
">=20.6.0" to match the flag requirement, or remove the CLI flag and load
.env.development inside the script (e.g., require/initialize dotenv or use node
-r dotenv/config in the script that calls scripts/zip.mjs) so "share:dev" and
"share:ext" work on older supported Node versions.

Comment on lines +11 to +12
const ZIP_NAME = 'pinback-ext-dev.zip';
const ZIP_PATH = path.join(OUT_DIR, ZIP_NAME);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

프로덕션 빌드도 pinback-ext-dev.zip로 덮어써집니다.

이 스크립트는 apps/extension/package.json Line 13의 zip과 Line 14의 share:dev에서 공용으로 호출되는데, 파일명이 하드코딩돼 있어서 프로덕션 아카이브도 dev 이름으로 생성되고 같은 out/pinback-ext-dev.zip를 재사용합니다. 모드별 파일명은 인자나 환경변수로 분리하는 편이 안전합니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/extension/scripts/zip.mjs` around lines 11 - 12, 현재 ZIP_NAME과 ZIP_PATH가
하드코딩되어 있어 프로덕션 빌드도 dev 아카이브(pinback-ext-dev.zip)로 덮어쓰입니다; 수정 방법은 ZIP_NAME을 고정
문자열 대신 빌드 모드(예: argv 또는 process.env.BUILD_MODE / process.env.NODE_ENV)로 결정하도록
변경하고 ZIP_PATH는 그 값에 따라 생성하도록 바꾸세요; 또한 apps/extension의 package.json에서 호출하는 'zip'
및 'share:dev' 스크립트가 필요 시 모드 인자나 환경변수를 전달하도록 업데이트해 서로 다른 모드별
파일명(pinback-ext-dev.zip vs pinback-ext.zip 등)을 사용하게 하십시오.

Copy link
Collaborator

@jjangminii jjangminii left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확실히 웹훅으로 관리하는 방식이 효율적일거 같아요-! 고생하셨습니다.

Client 레벨페이지에서만 쓰이는 툴팁이미지를 사이즈가 작아 아이콘으로 인식했었어요.. 자세한 용량 크기는 몰랐는데 확실히 문제가 많았네요.
덕분에 디스코드로 dist파일 보내기에 문제없어져서 다향이에요-!
이부분은 유의하겠습니다🥹

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/share-extension.yml:
- Around line 27-30: The workflow injects VITE_DISCORD_WEBHOOK_URL but the
extension packer (apps/extension/scripts/zip.mjs) expects DISCORD_WEBHOOK_URL
and throws if missing; fix by aligning names — either change the workflow to
export DISCORD_WEBHOOK_URL instead of VITE_DISCORD_WEBHOOK_URL, or update
zip.mjs to read VITE_DISCORD_WEBHOOK_URL (or fallback to DISCORD_WEBHOOK_URL)
before the early-throw check so the Discord webhook value is present when
zip.mjs validates and sends the notification.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: ab973c35-853b-4bff-b91e-55ff08fc0b43

📥 Commits

Reviewing files that changed from the base of the PR and between 61c163e and 6285ced.

📒 Files selected for processing (1)
  • .github/workflows/share-extension.yml

Comment on lines +27 to +30
- name: Build and Share Extension
env:
VITE_DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
run: pnpm share:ext
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

웹훅 환경 변수명이 스크립트와 달라 업로드가 실패합니다.

Line 29에서 VITE_DISCORD_WEBHOOK_URL를 주입하지만, apps/extension/scripts/zip.mjs는 Line 8에서 DISCORD_WEBHOOK_URL를 읽고 Line 43-44에서 없으면 즉시 예외를 던집니다. 현재 설정이면 Discord 전송 단계가 실패합니다.

수정 제안 (diff)
       - name: Build and Share Extension
         env:
-          VITE_DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
+          DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
         run: pnpm share:ext
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Build and Share Extension
env:
VITE_DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
run: pnpm share:ext
- name: Build and Share Extension
env:
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
run: pnpm share:ext
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/share-extension.yml around lines 27 - 30, The workflow
injects VITE_DISCORD_WEBHOOK_URL but the extension packer
(apps/extension/scripts/zip.mjs) expects DISCORD_WEBHOOK_URL and throws if
missing; fix by aligning names — either change the workflow to export
DISCORD_WEBHOOK_URL instead of VITE_DISCORD_WEBHOOK_URL, or update zip.mjs to
read VITE_DISCORD_WEBHOOK_URL (or fallback to DISCORD_WEBHOOK_URL) before the
early-throw check so the Discord webhook value is present when zip.mjs validates
and sends the notification.

@constantly-dev constantly-dev changed the title Feat/#321/extension dist discord webhook Feat(extension, client): extension dist discord webhook Mar 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feat 기능 개발하라 개발 달려라 달려

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feat] extension dist 파일 빌드 시 discord 전송 자동화 프로세스 구축

2 participants