-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Release: π Release v2.0.0 #240
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
β¨ μ΄κΈ° νλ‘μ νΈ μ€μ
Co-authored-by: jinlee1703 <jinlee1703@gmail.com>
π PULL_REQUEST_TEMPLATE.md μμ±
π μλ¬ μ½λ 곡ν΅ν λ° μΈν°νμ΄μ€ μμ±
* chore: common λͺ¨λμ spring-core μμ‘΄μ± μ£Όμ && infra λͺ¨λμ jwt μμ‘΄μ± μ£Όμ * feat: Auth μμ μ€μ * feat: JwtProvider μΈν°νμ΄μ€ μ μ * feat: domain & field zero μμ μμ± * feat: Jwt μμΈ μμ μ€μ * feat: Jwt μμΈ ν΄λμ€ * fix: ReasonCode Zero bit μΆκ° * feat: JwtErrorCodeUtil μμ± * chore: application.yml profile λΆλ¦¬ * feat: AT, RT Qualifier λͺ©μ 컀μ€ν μ΄λ Έν μ΄μ μμ± * chore: jwt secret key & expiration time νκ²½λ³μ μ£Όμ * rename: provider annotation λ€μ΄λ° λ³κ²½ -> μ λ΅ * feat: common λͺ¨λμ DateUtil μΆκ° * feat: access token claim dto && provider μμ± * test: AccessTokenProvider test μμ± * fix: test givenμ μΆμ½ * refactor: AT Claims key μμκ°μΌλ‘ λͺ μμ νλ μ§μ * feat: refresh token dto && payload key μμν * feat: refresh token provider μμ± * test: μλͺ μ‘°μ ν ν° μλ¬ κ²μ¦ * rename: getSubInfoFromToken -> getJwtClaimsFromToken λ©μλλͺ λ³κ²½ * rename: JwtProvider μ£Όμ μμ λ° λ©μλ μμ λ³κ²½ * fix: ν ν° λ§λ£μ μμΈ νΈλ€λ§ * test: ν ν° λ§λ£ μ, true λ°ν κ²μ¬ ν μ€νΈ μ½λ μΆκ° * fix: isTokenExpired() λ©μλ μμΈ νΈλ€λ§ λ‘μ§ μμ : ν μ€νΈ μ±κ³΅
* chore: mysql & jpa & queryDsl gradle μμ‘΄μ± μΆκ° * chore: queryDsl generated λλ ν 리 git μΆμ μ κ±° * chore: jdbc, jpa application.yml μ€μ μΆκ° * chore: extenal-api λͺ¨λ application.yml κ·Έλ£Ή μΆκ° * chore: jpa μ€μ profile λΆλ¦¬ && profile κ·Έλ£Ή μΆκ° * chore: infra λͺ¨λ application.yml κ·Έλ£Ή μΆκ° * feat: Jpa config * feat: QueryDsl config * chore: EnalbeJpaAuditing auditorAwareRef μ€μ μ κ±° * fix: config λλ ν 리 μμ
* chore: commit-lint κ΄λ ¨ ν¨ν€μ§ μ€μΉ * chore: .gitignoreμ node_modules μΆκ° * chore: commit convention λ±λ‘ * chore: commit-lint μ μ©
* chore: infra λͺ¨λ λ΄ redis μμ‘΄μ± μ£Όμ (api) * chore: domain λͺ¨λ λ΄ redis μμ‘΄μ± μ£Όμ (implementation) * chore: redis νκ²½λ³μ μ€μ * feat: Domain Redis Connection Bean Qualify Annotation μμ± * feat: Domain Redis CacheManager Qualify Annotation μμ± * feat: Domain Redis Template Qualify Annotation μμ± * chore: domain λͺ¨λ redis config μμ± * feat: Infra Redis CacheManager Qualify Annotation μμ± * feat: SecurityUser Redis CacheManager Qualify Annotation μμ± * feat: Oidc Redis CacheManager Qualify Annotation μμ± * chore: infra λͺ¨λ cache config μ€μ
* chore: external-api λͺ¨λ springdoc-openapi 2.4.0 μμ‘΄μ± μ£Όμ * chore: external-api λͺ¨λ λ΄ openapi μ€μ μΆκ° * chore: swagger config μμ± * fix: application profile prod -> dev
* fix: reason code zero bit μ κ±° && 500λ²λ 0λ² bit μμ μΆκ° * test: caused-by-test μμ μλ¬μ½λ μμ (ν΅κ³Ό νμΈ) * fix: jwt-error-code λ³κ²½λ reason codeλ‘ μμ
* chore: test api directory .gitignore κ²½λ‘ μΆκ° * feat: μ±κ³΅ μλ΅ ν΄λμ€ μ μ * feat: error-response κ³΅ν΅ μλ΅ ν΄λμ€ μμ± * fix: success μλ΅ nocontent() μλ΅ null -> empty object * feat: method argument not valid μ μ μμΈ μ²λ¦¬ * fix: reason 422 error type mismatch μ½λ μΆκ° * feat: missing request header μ μ μμΈ μ²λ¦¬ * feat: request json parsing μ€ν¨ μ μ μμΈ μ²λ¦¬ * feat: missing request parameter μ μ μμΈ μ²λ¦¬ * feat: μ‘΄μ¬νμ§ μλ url μμ² μ μ μμΈ μ²λ¦¬ * feat: 500 internal server error μ μ μμΈ μ²λ¦¬ * feat: npe & exception μ μ μμΈ μ²λ¦¬ * fix: response status annotation μ²λ¦¬ * style: intellij code convention setting μΆκ°νμ¬ reformat
* feat: db, application νμ νλ³ν μΈν°νμ΄μ€ μμ± * feat: code <-> enum λ³ν util μμ± * feat: custom converter ꡬνμ μν μΆμ ν΄λμ€ μμ± * style: api & domain package κ²½λ‘ μμ * feat: create, update auditable μΆμ ν΄λμ€ μμ± * feat: role type enum & conveter μ μ * feat: visibility type enum & conveter μ μ * rename: visibility to profile-visibility ν΄λμ€λͺ μμ * fix: converter μμ±μ μμ * feat: user entity μμ± * feat: user jpa data repository μμ± * fix: μλ¬ μ²΄κ³ 7μ리 μ -> 4μ리 μ * test: 4μ리μ μλ¬ μ²΄κ³ κΈ°λ° ν μ€νΈ μ½λ μμ * fix: reason code 400λ²λ 4λ² invalid request μΆκ° * feat: user error code & exception μ μ * feat: user domain service μμ± * feat: user domain service create λ©μλ μΆκ° * feat: user domain service exists λ©μλ μΆκ° * fix: jwt error code λ΄μμ domain, field code μ κ±° * chore: query-dsl generated κ²½λ‘ .gitignore * fix: profile-visibility converter μ€μ£Όμ μμ * fix: test api μμ * chore: ν¨ν€μ§ κ²½λ‘ μμ μΌλ‘ μΈν test ν¨ν€μ§ κ²½λ‘ μμ * rename: caused by '7μ리 μλ¬μ½λ' μ£Όμ μμ
* feat: white space validator μμ± * rename: not-white space μ£Όμ μΆκ° * feat: μ νλ²νΈ μΈμ¦ μμ² dto μμ± * rename: cerification -> verification λ¨μ΄ μμ * feat: refresh token redis entity μμ± * feat: refresh token repository μμ± * fix: refresh token ttl time unit seconds -> milliseconds * feat: refresh token service ꡬν * feat: μ΄λͺ¨μ§ μ ν¨μ± κ²μ¦ μ΄λ Έν μ΄μ μμ± * feat: ν¨μ€μλ μ ν¨μ± κ²μ¦ μ΄λ Έν μ΄μ μμ± * feat: μΌλ° νμκ°μ dto μμ± * fix: μΌλ° νμκ°μ dto code νλ μΆκ° * feat: jwt tokens νΈμ dto ν΄λμ€ μμ± * fix: refresh token ttl timeunit milliseconde -> seconds * feat: jwts μμ± mapper μ μ * fix: refresh token provider primary bean μ κ±° * feat: cookie util μμ± * style: jwts dto ν΄λμ€ ν¨ν€μ§ κ²½λ‘ μμ * fix: jwt auth mapper ν ν° μμ± λ‘μ§ μμ * feat: νμκ°μ usecase ꡬν(μΈμ¦λ²νΈ λ―ΈνμΈ) * feat: auth controller sign up api κ°λ°© * style: test λͺ¨λ λ΄ κ²½λ‘ μμ * rename: sign-up dto μ νλ²νΈ μμ λ¬Έμ μμ * fix: phone pattern \n μ κ±° * fix: not empty -> not blank validation check λ³κ²½ * fix: cookie util max age int -> long * fix: auth controller cookie util μμ‘΄μ± μ£Όμ * test: auth controller 7κ°μ§ μλλ¦¬μ€ μ ν¨μ± κ²μ¬ * test: νλ λλ½ μλλ¦¬μ€ μΆκ° && cookie ν€λ κ²μ¦ μμ * fix: jwt mapperμμ rt providerμ access claim -> refresh claim μμ
* chore: .gitignoreμ .env νμΌ κ²½λ‘ μΆκ° * feat: dockerfile μμ± * fix: dockerfileμ profileμ localμμ devλ‘ μμ
* feat: μΈμ¦λ²νΈ μ‘μ dto μμ± * feat: μΈμ¦λ²νΈ μ μ‘ & κ²μ¦ API μ€κ³ * chore: domain λͺ¨λ redis unit test λͺ©μ embedded-redis μμ‘΄μ± μΆκ° * chore: redis test λΌμ΄λΈλ¬λ¦¬ embedded -> container * test: redis container config μμ± * chore: domain λͺ¨λ test application.yml μμ± * chore: redis template bean primary μΆκ° * feat: phone validation code(νμκ°μ , μμ΄λ/λΉλ°λ²νΈ μ°ΎκΈ°) μμ μ§μ * test: phone validation repository ν μ€νΈ μμ± * feat: phone validation repository μμ± * test: phone validation repository μμ ν μ€νΈ μΌμ΄μ€ μΆκ° * feat: phone verification service μμ± * feat: validation code converter μμ± * feat: web config μ€μ * feat: μ νλ²νΈ μΈμ¦/κ²μ¦ dto codetype νλ μΆκ° * fix: phone verification repository save μ, expires_at λ°ν * fix: phone verification service create λ©μλ, expires_at λ°ν * rename: read by phone error log 문ꡬ μμ * feat: phone verification μλ¬ μ½λ μ μ * feat: phone verification μλ¬ ν΄λμ€ μ μ * feat: sns dto ν΄λμ€ μ μΈ * feat: sms provider μΈν°νμ΄μ€ μ μ * rename: request time -> request at λ³μλͺ μμ * feat: infra module component scan λͺ©μ μ application ν΄λμ€ μμ± * feat: aws sms provider mock ꡬν체 μμ± * style: infra μμ ν¨ν€μ§ pennyway μΆκ° -> λλ ν 리 μ΄λ * rename: code -> phone-verificatio-code ν΄λμ€λͺ μμ * fix: μ¬μ©μμκ² code type μ λ ₯λ°λ νλ & converter μ κ±° * fix: μΈμ¦λ²νΈ κ²μ¦ dtoλ΄ code νλ 볡ꡬ * feat: phone verification mapper ν΄λμ€ μ μ * feat: μ½λ λΆμΌμΉ μ error λ°ννλλ‘ μμ * rename: saveCode -> sendCode * feat: μΈμ¦λ²νΈ κ²μ¦ μλ΅ dto μμ± * rename: of -> value of * feat: auth use case μ νλ²νΈ μΈμ¦ μΆκ° * fix: global exception handlerλ΄ global error exception status μ½μ λ©μλ μμ * rename: send_time, expire_time -> send_at, expires_at νλλͺ μμ * fix: μ±κ³΅ μλ΅ μνμ½λ 2000000 -> 2000 μμ * fix: hash table -> value && ttl μ μ© * feat: user find by phone λ©μλ μΆκ° * fix: μΈμ¦λ²νΈ κ²μ¦ μ oauth user μ¬λΆ νμΈ νλ μΆκ° * fix: user notify νλ feed-comment-notify -> chat-notify μμ * feat: user κ³μ μ°λ helper class μ μ * feat: μ νλ²νΈ μΈμ¦ μ±κ³΅ μ ttl rollback λ©μλ μΆκ° * fix: transaction λ΄ exception λ°μ μ rollback -> sync helperμ transaction μ΄λ Έν μ΄μ μ κ±° * fix: user auth use case μμ‘΄μ± μ£Όμ λ° λΆκΈ° μ²λ¦¬ λ‘μ§ μΆκ° * test: auth controller validation test κ²½λ‘ μμ * rename: phone verification mapper λ©μλ μ£Όμ μΆκ° * test: user sync helper ν΄λμ€ test μμ± * fix: μ΄λ―Έ νμκ°μ ν μ μ μΈ κ²½μ°, μΈμ¦ μ½λ cache μ κ±° * fix: verify-code-res κΈ°μ‘΄ μ¬μ©μ μ‘΄μ¬ν μ λ°ν νλ μΆκ° * fix: user-sync-helperμμ oauth κ³μ μμΌλ©΄ username λ°ν * fix: auth user case μΌλ° νμκ°μ μ΄λ ₯ μκ³ , oauth κ³μ μμΌλ©΄ username λ°ν * rename: phone verification repository remove() -> delete() * rename: phone-verification-code -> phone-verification-type * fix: web config μ κ±°
* feat: ci workflow μμ± * feat: cd workflow μμ± * fix: mysql actions step μμ * fix: docker image νκ·Έ μ κ±° * fix: cd νμ΄νλΌμΈ trigger λΈλμΉλͺ μμ (develop->dev)
* feat: ci workflow μμ± * feat: cd workflow μμ± * fix: mysql actions step μμ * fix: docker image νκ·Έ μ κ±° * fix: cd νμ΄νλΌμΈ trigger λΈλμΉλͺ μμ (develop->dev) * fix: gradle build κ³Όμ μΆκ° * fix: gradle build κ³Όμ μΆκ° * fix: cd νμ΄νλΌμΈ μμ μμ * fix: cd νμ΄νλΌμΈ μμ μμ μ¬ν μμ * fix: gradlew κΆν μμ * fix: ν μ€νΈ μ€ν¨ μ€λ₯ ν΄κ²°
* chore: external-api λͺ¨λ spring boot starter security μμ‘΄μ± μ£Όμ * chore: security config μ€μ * chore: method security config μ€μ * fix: κΈ°μ‘΄ api μΈκ° κΆν is-anonymousλ‘ μ ν * fix: security config μΈμ¦, μΈκ° μμΈ νν° μ κ±° (λ‘κ·ΈμΈ μμ μ μΆκ°) * fix: user sync helper oauth λ°ν μμ * test: user sync helper λ©μλ λ°ν νμ μμ * test: username λ°ν κ²μ¦ μΆκ° * fix: pennyway infra application @spring boot application μ΄λ Έν μ΄μ μ κ±° * test: μ±κ³΅ μλ΅ κ°μ²΄ code κ° 2000μΌλ‘ μμ * chore: spring security test μμ‘΄μ± μ£Όμ * test: auth controller μ±κ³΅ μλ΅ set cookie ν€λ μ‘΄μ¬ μ¬λΆ νλ¨μΌλ‘ μμ * chore: sub project test λΈλ μΆκ° * feat: security user details & service μ μ * chore: local νκ²½ λ΄ logging level μ 보 μΆκ° * fix: user sync helper transaction μ κ±°
* feat: add default server error handler * feat: add message-id in the error response's header * fix: include request message headers in the error message
β¦ed successfully (#214) * fix: add sender-name & message-id-header field in the send-message-command * fix: success message send to client after finished chat send process * fix: extract x-message-id header at the send-message-controller * fix: convert header parameter type to string * style: convert send-message-service like kotlin
* feat: add chat-member-delete method in rdb-service * feat: add read-chat-member-by-chat-member-id method in rdb-service and repository * fix: when search chat-member entity by chat-member-id, exclude chat-room-id * fix: delete sql-delete annotation in the chat-member entity * fix: remove delete method and add update method in chat-member-rdb-service * feat: impl chat-room-leave-service * feat: add chatroom leave usecase * feat: add is-exists method with chat-room-id, user-id, chat-member-id in repository * feat: impl is-exists method in rdb service for adding chat-member-id condition * feat: add authorization method in the chat-member-service * feat: add chat leave controller * feat: add is_admin method in chat-member entity * feat: add check chat-member-size to leave admin in the chat-room entity * fix: add admin leave validation rule * feat: add chat room delete method in chat-room-rdb-service * feat: add admin-cannot-leave error code * fix: sperate business logic from service * style: add log to alter normal member status is changed * feat: add association mapping helper method chat-room with chat-member * test: chat room leave collection unit test * test: chat room leave integration test * docs: chatroom leave controller swagger docs * test: disable chat-room-detaill-integration-test temporarily * test: resolve chat-room-detail-integration test error
* chore: add kotlin reflection dependency in the socket module * style: remove unnecessary log in preauthorize-spel-parser * feat: impl pre-authorizer using kolin trailing lambda * test: authorization test * chore: add logback xml in socket test module * test: pre-authorize benchmark
* feat: chat-member-ban-command * rename: modify admin-id to user-id cause it isn't identicated already * feat: add not-admin errorcode * feat: impl chat-member-ban-service * feat: add ban-chat-member usecase * feat: ban-chat-member controller * docs: chat member ban api swagger
* feat: create chat-room-patch-command * feat: add update method to chat-room-rdb-service * feat: impl chat-room-patch-service * fix: add static factory method to command * feat: add chatroom-req update dto * feat: impl chat-room-patch-helper * feat: add update chat room usecase * feat: add has_admin_permission method to the chat-room-manager * feat: impl chat-room update controller * docs: write swagger
* docs: fix leave chat room exception wrong constant * style: extract user validation check rule from the business collection * test: update test
* chore: ignore log directory * feat: logging xml * chore: add log property in the external-api-module * chore: external-api logging setting * chore: external-api logback-spring.xml * fix: external-api log total-size-cap to 10mb * chore: add file max capacity * chore: ignore logs directory * chore: socket log config setting * chore: socket server logback setting
* feat: add chat-room-delete-command * feat: chat-member delete by chat-room-id query * feat: impl service logic * style: using var key-word * fix: add static factory method to the command * rename: from find-by-chat-room-id to find-by-chat-member-id in chat-member-repository * style: add chat-room-delete-status-log in the delete-service * test: chat-room-delete-service-integration-test * rename: from delete-chat-room to execute in the chat-room-delete-service * feat: chat room delete usecase * feat: chat-room-delete controller * docs: chat-room delete api swagger * chore: fix log setting simple
* fix: change from id to user_id in the has-admin-permission method * fix: revising external-api log policy * fix: revising socket log policy * fix: delete chat-room-id field in chat room update request * fix: add chat-room-id parameter
* feat: add chatroom-read method for admin view in the chat-room-search-service * feat: add get-chatroom method for admin view in the usecase * feat: add admin view dto in the chat room res * feat: add mappter to convert chatroom entity to admin-view res dto * feat: add api which get chatroom for admin
β¦I in Version 2 (#225) * fix: add notify_enabled field into the chat-room-detail * fix: add notify_enabled select field when chat-member select query * feat: add chat-room detail response dto for v2 * feat: add method to map entity to detail dto v2 * feat: add v2 usecase * docs: write about getting chat room v2 api swagger * feat: impl v2 chat room controller * fix: deprecate v2 get-my-chat-rooms api * test: fix given clauses for chat-room-detail
* feat: add chat-room-toggle-command * feat: impl chat-room-notification-toggle-service * feat: add static factory method $ validator in command * test: service layer slice test for transation verifying * feat: add notification turn on/off usecase * style: move toggle service from chat-member-usecase to chat-room-usecase * feat: open notification turn on/off api * docs: write notification turn on/off api swagger
β¦tity (#228) * fix: add restriction to filter deleted_at is null in the chat-room * test: check that added 'is null' query into the count query
* feat: add method is-object-exist in the aws-s3-adapter * fix: delete background-image url validation condition * fix: apply chat room image change scenario in the chat-room-patch-helper * fix: all static factory method delete from the chat room res dto * fix: apply object-prefix to the chat room's background-image-url * fix: wrong validation of chatroom-patch-helper-test background image url * test: apply modification about chat room detail's static factory method are deleted * fix: add get-object-prefix in the chat-member usecase * test: chat-room-patch-helper s3 flow check * feat: add 422 error to storage error code * fix: helper class's exception handling * test: apply prefix test to create chat room * style: change to var keyword
* fix: change chat member search method in the leave service * fix: change parameter controller and use case * docs: fix leave chat room api's swagger docs * test: fix test
* feat: add delegate action to the chat member entity * feat: chat room admin delegate operation * fix: apply correct error type to the chat member's delegate method * test: add exceptional scenario to the test * feat: delegate service * rename: add log field to chat-member's to-string() * test: happy path integration test * feat: add exception for trying delete to member who joined other chat room * test: about delegating chat member who joined other chat romm * feat: add filter to check active member * feat: apply distributed lock in the delete method before start with * fix: apply command to the service parameter * feat: delegate usecase * feat: delegate controller * feat: add not_same_chat_room error code to chat-member-error-code * fix: chat member will throw 409 error when try to delegate chat member who joined other chat room * docs: write swagger * test: fix expected error when try to delegate other chat room's member * fix: distributed lock's key is null due to changing parameter type
* fix: delete chat-member-search-service * fix: add profile-img field to the result view * fix: handle to aftermatch by deleting chat-member-search-serivce * test: add profile image url parameter * fix: add profile image url to chat-member-res * fix: replace method to create member detail with function * fix: replace method to create member detail with function in chat-member-mapper * fix: add object-prefix to mapper * test: add aws s3 adapter dependency * fix: add profile image field to custom-chat-member-repo-impl
* feat: add spending list read method with day to spending repository * feat: add spending list read method with day to spending service * feat: impl daily spending aggregate service * test: aggregate slice test * fix: change return type to pair * rename: fix test name * feat: spending-chat-share-event * feat: add spending-chat-share-exchange-properties * chore: add spending chat share property to infra yml * feat: impl spending chat share event handler * fix: spending-on-dates type error in the spending-chat-share-event * feat: impl spending-chat-share-helper * feat: add share-to-chat-room to spending usecase * feat: add invalid share type error code to spending-error-code * feat: impl spending share enum type * feat: add spending-chat-share-query dto * feat: add missing-share-param error code to spending error code * feat: add share-spending api to controller * docs: write swagger docs about spending share api * chore: apply binder & queue & event handler for share to chat room * fix: invalid validation in the spending chat share event's name field * feat: add share constant to the message category type * feat: add default create message method to the send-message-command * fix: add sender id field to spending-chat-share-event * fix: add user id to event parameter when publish event * feat: impl sending-share-event listener * fix: add headers to send message command * refactor: convert spending-share-event-listener to kotlin * fix: add date field to spending-chat-share-event * fix: add date to chat message's header
β¦tion Messages (#234) * fix: substring s3 prefix from image url in the chat room image exist validation * fix: infinity message send error handle * test: remove obj prefix from mock test
β¦#235) * fix: move date to payload * chore: add jackson config to socket module
* feat: add aready joined error code to chat room error code * fix: add joined member validation in chat member join service * fix: rollback chat room error code * test: the same user's multi requests thest
) * chore: cut log max history back 7 to 3 * refactor: impl chat-member-join-operation * feat: add chat member join command & result * fix: type fix in the opration constructor * refactor: separate chat room business logic from the api service * fix: change from chat-room-id to chat-room-entity in the join result dto * fix: add member-name field and plus current-member-count in the join result dto * refactor: chat-member-join-helper * refactor: apply helper to usecase * fix: match-password validation bug * test: chat-member-join-operation-test * test: chat-member-join-service integration test * refactor: delete original services and unit test * fix: extend lease time to 10 seconds * feat: add read chat member method by chat room id * feat: add create and read by chat member id method to rdb service * refactor: modify method to check the current member number * refactor: move current member count to domain logic * fix: change user field from refrence to value type in the chat-member entity * fix: handle change propagation * style: remove unnecesary step * fix: add unactivated member filtering
* chore: add admin account environment * feat: admin mode phone verification * chore: add default value to admin env
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
μμ μ΄μ
Release v2.0.0
μμ μ¬ν
리뷰μ΄κ° μ€μ μ μΌλ‘ νμΈν΄μΌ νλ λΆλΆ
λ°κ²¬ν μ΄μ