Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
0cb62e3
docs(README): 메모 저장 기능 문서 정리
yeo-li Nov 17, 2025
c86b9cd
test(MemoTest): 메모 클래스 테스트 코드 작성
yeo-li Nov 19, 2025
957c928
feat(Memo): 메모 클래스 구현
yeo-li Nov 19, 2025
7d1fd1f
test(MemoService): 메모 생성 테스트 코드 작성
yeo-li Nov 19, 2025
1bcaddd
feat(MemoService): 메모 생성 메서드 구현
yeo-li Nov 19, 2025
1cef531
chore(plugin.xml): Git4Idea 의존성 추가
yeo-li Nov 19, 2025
6027f0f
chore(build.gradle): Junit, Git4Idea 의존성 추가
yeo-li Nov 19, 2025
1b4b3bd
feat(MemoService): createMemo() 로거 추가
yeo-li Nov 19, 2025
200966e
docs(README): 메모 생성 기능 구현 완료
yeo-li Nov 19, 2025
38a12c8
chore(ServiceContainerUtil): 테스트용 JetBrains SDK 자동 생성
yeo-li Nov 19, 2025
cbdb5b5
Merge pull request #19 from yeo-li/feat/save-memo
yeo-li Nov 19, 2025
9b9b41b
test(MemoStateTest): Memo 도메인 변환 성공 테스트 코드 작성
yeo-li Nov 22, 2025
1f7656c
feat(MemoState): MemoState 구현
yeo-li Nov 22, 2025
136a110
feat(Memo): id, createdAt, updatedAt 필드가 없는 생성자 추가
yeo-li Nov 22, 2025
327422a
feat(MemoRepository): MemoRepository 구현
yeo-li Nov 22, 2025
d4c3f0e
test(MemoTest): MemoState로 변환 성공 테스트 코드 작성
yeo-li Nov 22, 2025
cee791f
test(MemoServiceTest): 테스트 메서드 형식 변경
yeo-li Nov 22, 2025
6a03015
refactor(MemoService): 메모서비스 생성자에 Project 추가
yeo-li Nov 22, 2025
bbb1f7c
chore(Gitignore): .idea/ 추가
yeo-li Nov 22, 2025
e0cbf4b
chore(Gradle): gradle.xml 삭제
yeo-li Nov 22, 2025
1feb136
Merge pull request #21 from yeo-li/feat/save-memo
yeo-li Nov 22, 2025
e80f46d
docs(README): 메모 조회 기능 문서 작성
yeo-li Nov 22, 2025
234c96e
feat(MemoService): 메모 전체 조회 기능 구현
yeo-li Nov 22, 2025
87d6b44
refactor(MemoRepositroy): 메모 저장 기능 호출 시, Memo를 파라미터로 받도록 리팩토링
yeo-li Nov 22, 2025
7db961b
test(MemoServiceTest): 메모 전체 조회 기능 테스트 코드 작성
yeo-li Nov 22, 2025
bd7e8be
chore(Build): Mokito 의존성 추가
yeo-li Nov 22, 2025
a221767
Merge pull request #22 from yeo-li/feat/get-memo
yeo-li Nov 22, 2025
bc51fde
docs(README): 메모 삭제 기능 문서 작성
yeo-li Nov 22, 2025
ec24994
test(MemoServiceTest): 메모 삭제 기능 테스트 코드 작성
yeo-li Nov 22, 2025
a01f6c5
feat(MemoService): 메모 삭제 기능 구현
yeo-li Nov 22, 2025
7708cdf
docs(README): 메모 삭제 기능 구현 완료
yeo-li Nov 22, 2025
4f5cd67
Merge pull request #23 from yeo-li/feat/delete-memo
yeo-li Nov 22, 2025
b2794f1
docs(README): 메모 수정 기능 구현 시작
yeo-li Nov 22, 2025
d1230c5
test(MemoServiceTest): 메모 수정 기능 테스트 코드 작성
yeo-li Nov 22, 2025
37a80c1
feat(MemoRepository): findMemoById 구현
yeo-li Nov 22, 2025
8d931b2
feat(Memo): update 메서드 작성
yeo-li Nov 22, 2025
3fd78ad
feat(MemoService): 메모 수정 기능 구현
yeo-li Nov 22, 2025
c410995
docs(README): 메모 수정 기능 구현 완료
yeo-li Nov 22, 2025
1a68e62
Merge pull request #24 from yeo-li/feat/update-memo
yeo-li Nov 22, 2025
2b581cf
docs(README): 메모 추출 기능 구현 시작
yeo-li Nov 22, 2025
2055510
test(MemoTest): 메모 추출 형식 반환 메서드 테스트 코드 작성
yeo-li Nov 22, 2025
5f63497
feat(Memo): 메모 추출 형식 반환 메서드 구현
yeo-li Nov 22, 2025
ef05fe0
test(MemoTest): 메모 추출 헤더 반환 메서드 테스트 코드 작성
yeo-li Nov 22, 2025
633a178
feat(Memo): 메모 추출 헤더 반환 메서드 구현
yeo-li Nov 22, 2025
beb4c98
refactor(Memo): 메모 추출 기능 시간 포맷 변경
yeo-li Nov 22, 2025
ae737de
test(MemoServiceTest): 메모 전체 내용 반환 메서드 테스트 코드 작성
yeo-li Nov 22, 2025
03d5fbe
feat(MemoService): 메모 전체 내용 반환 메서드 구현
yeo-li Nov 22, 2025
af77d04
test(MemoServiceTest): 메모 txt 파일로 추출 성공 테스트 코드 작성
yeo-li Nov 22, 2025
7b6ee16
feat(MemoService): 메모 txt 파일 저장 구현
yeo-li Nov 22, 2025
3387d0d
test(MemoServiceTest): 메서드 주석 제거
yeo-li Nov 22, 2025
12b2d88
Merge pull request #25 from yeo-li/feat/export-memo
yeo-li Nov 22, 2025
f5871e8
feat(Note): Note 클래스 작성
yeo-li Nov 23, 2025
a59fde5
refactor(Note): 생성자 명령어 제거
yeo-li Nov 23, 2025
7b72f5a
test(NoteTest): update 테스트 코드 작성
yeo-li Nov 23, 2025
3e26479
test(NoteTest): update 동일한 콘텐츠로 업데이트할 때 updatedAt이 갱신되지 않는 테스트 코드 삭제
yeo-li Nov 23, 2025
8a81d90
test(NoteTest): toState 테스트 코드 작성
yeo-li Nov 23, 2025
a07ba3d
feat(Note): toState 메서드 구현
yeo-li Nov 23, 2025
ca75dbd
test(NoteStateTest): toDomain 테스트 코드 작성
yeo-li Nov 23, 2025
d1b5b08
feat(NoteState): toDomain 메서드 구현
yeo-li Nov 23, 2025
120658c
test(NoteServiceTest): getNote 메서드 테스트 코드 작성
yeo-li Nov 23, 2025
5008a28
feat(NoteRepository): NoteRepository 작성
yeo-li Nov 23, 2025
88184bd
feat(NoteService): getNote 메서드 구현
yeo-li Nov 23, 2025
b8df113
test(NoteServiceTest): updateNote 테스트 코드 작성
yeo-li Nov 23, 2025
b5446a8
feat(NoteRepository): updateNote 메서드 구현
yeo-li Nov 23, 2025
d57b9c9
feat(NoteService): updateNote 메서드 구현
yeo-li Nov 23, 2025
96b4497
docs(README): 진행상황 업데이트
yeo-li Nov 23, 2025
5660486
Merge pull request #26 from yeo-li/feat/save-update-note
yeo-li Nov 23, 2025
4cd4edb
refactor(MyToolWindowFactory): 이전 프로젝트에서 ui 코드 가져오기 및 리팩토링
yeo-li Nov 24, 2025
5585a7b
fix(NoteRepository): devlog-note.xml 미생성 버그 해결
yeo-li Nov 24, 2025
039fec8
feat(Memo): fullCodeSnapshot 필드 추가
yeo-li Nov 24, 2025
8d7c0c4
test(Test): 테스트 코드 정리
yeo-li Nov 24, 2025
afefbeb
test(MemoServiceTest): findMemoById 테스트 코드 작성
yeo-li Nov 24, 2025
e2a757f
feat(MemoService): findMemoById 메서드 구현
yeo-li Nov 24, 2025
2956e94
chore(plugin.xml): 풍선 알림 추가
yeo-li Nov 24, 2025
75fdf52
Merge pull request #27 from yeo-li/refactor/ui
yeo-li Nov 24, 2025
43e333d
refactor(DevLogPanel): 코드 리팩토링
yeo-li Nov 24, 2025
9d4e824
Merge pull request #28 from yeo-li/refactor/ui
yeo-li Nov 24, 2025
a875285
fix(MemoService): getAllMemos 메서드 getAllMemosOrderByCreatedAt로 변경
yeo-li Nov 24, 2025
b772509
Merge pull request #29 from yeo-li/fix/memo-sort
yeo-li Nov 24, 2025
db42061
fix(MemoService): createMemo eiditor가 null일때도 Memo 생성하도록 변경
yeo-li Nov 24, 2025
17eecbb
Merge pull request #30 from yeo-li/fix/no-editor-no-memo
yeo-li Nov 24, 2025
84317c4
fix(MemoExportPipline): 메모 추출 파일 생성시, md파일에서 txt파일로 반환하도록 수정
yeo-li Nov 24, 2025
0e26259
Merge pull request #31 from yeo-li/fix/return-md
yeo-li Nov 24, 2025
afdc93e
docs(README): 플러그인 설명 작성 및 아이콘 추가
yeo-li Nov 24, 2025
9c55d48
chore(plugin.xml): plugin.xml 정리
yeo-li Nov 24, 2025
738c009
docs(CHANGELOG): 버전 변경 1.0.0로 변경 및 체인지로그 작성
yeo-li Nov 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@
.kotlin
.qodana
build
.idea/
17 changes: 0 additions & 17 deletions .idea/gradle.xml

This file was deleted.

4 changes: 3 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@
# dev-log Changelog

## [Unreleased]

### Added
- Initial scaffold created from [IntelliJ Platform Plugin Template](https://github.com/JetBrains/intellij-platform-plugin-template)

- 아직 변경 사항이 없습니다.
141 changes: 48 additions & 93 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,95 +1,50 @@
# dev-log

## 핵심 기능 정의

---
### ☑️ 메모 저장 기능
- 메모를 저장할 수 있어야 한다.
- 메모의 저장 데이터는 다음과 같다.
- `int id (not null)`: 메모의 고유한 아이디(PK)
- `String content (nullable)`: 사용자가 입력하는 메모의 내용
- `LocalDateTime createdAt (not null)`: 메모가 생성된 시간
- `LocalDateTime updatedAt (not null)`: 메모가 수정된 시간
- `String commitHash (nullable)`: 현재 커밋의 해시값
- `String filePath (nullable)`: 파일 경로
- `String selectedCodeSnippet (nullable)`: 선택된 코드
- `long selectionEnd (nullable)`: 문서에서 선택한 정확한 종료 위치
- `long selectionStart (nullable)`: 문서에서 선택한 정확한 시작 위치
- `int visibleEnd (nullable)`: 선택한 종료 줄
- `int visibleStart (nullable)`: 선택한 시작 줄
- 저장은 시간 순서대로 저장이 되어야 한다.

### ⚠️ 메모 저장 기능 예외 상황

### ☑️ 메모 조회 기능
- 메모의 id를 이용해서 데이터를 조회할 수 있어야 한다.
- 전체 메모를 날짜순으로 조회할 수 있어야 한다.
-

---
### ☑️ 메모 삭제 기능
- 저장된 메모를 삭제할 수 있어야 한다.
- 메모를 한 번에 여러개 삭제할 수 있어야 한다.

### ⚠️ 메모 삭제 기능 예외 상황

---
### ☑️ 메모 수정 기능
- 저장된 메모의 content를 수정할 수 있어야 한다.

### ⚠️ 메모 수정 기능 예외 상황

---
### ☑️ 메모 추출 기능
- 저장된 메모를 한 개 이상 선택하여 txt 파일로 추출할 수 있어야 한다.
- 추출한 단위 메모의 구성 내용은 다음과 같다.
- 메모 순서(시간순)
- `LocalDateTime timestamp`: 메모가 생성된 시간
- `String content`: 사용자가 입력하는 메모의 내용
- `String filePath`: 파일 경로
- `String commitHash`: 현재 커밋의 해시값
- `int visibleStart`: 선택한 시작 줄
- `int visibleEnd`: 선택한 종료 줄
- txt 파일 상단에 프로젝트명, 내보낸 시각, 메모의 개수가 있어야 한다.
- txt 파일의 이름은 `devlog-{프로젝트명}-{내보낸날짜}-{내보낸시각}.txt` 이다.
- 추출할 메모가 없으면 빈 txt 파일을 반환한다.

### ⚠️ 메모 추출 기능 예외 상황

---
### ☑️ 노트 수정/저장 기능
- 노트를 저장할 수 있어야 한다.
- 노트의 수정/저장 데이터는 다음과 같다.
- `String content`: 노트의 내용
- `LocalDateTime savedAt`: 저장된 시각

### ⚠️ 노트 수정/저장 기능 예외 상황

---
## 화면 요구 사항

---
### ☑️ 플러그인 기본 화면
- 화면의 최상단엔 기본 조작용 버튼이 있어야 한다.
- 기본 조작용 버튼은 아래와 같다.
- 메모목록/노트 화면 전환 버튼
- 메모 전체 선택/선택해제 버튼
- 선택된 메모 추출 버튼
- 선택된 메모 삭제 버튼
- 메인 컨텐츠를 표시하는 화면이 있어야 한다.

### ☑️ 메모 목록 출력 화면
- 저장된 메모 전체가 최근순 정렬되어 화면에 보여야 한다.
- 각 메모 좌측에는 메모를 선택할 수 있는 체크박스가 있어야 한다.
- 화면 하단에는 새 메모를 적을 수 있는 텍스트 입력창이 있어야 한다.
- 에디터 화면에 코드가 선택(드래그) 되어있으면, 코드가 선택되었음을 일목 요연하게 표시해야 한다.
- 저장된 메모 중 선택된 코드가 있는 메모들을 없는 메모와 다르게 표시해야 한다.
- 새로운 메모는 mac에선 커멘드+엔터, window에서는 컨트롤+엔터로 저장 가능해야 한다.

### ⚠️ 메모 목록 출력 화면 예외 상황

---
### ☑️ 노트 출력 화면
- 저장된 노트의 모든 내용이 출력 되어야 한다.
- 노트의 변경 내용은 자동 저장 되어야 한다.
- 화면의 크기를 벗어나지 않게 내용을 출력해야 한다.
<!-- Plugin description -->

## 🙋🏻 소개

DevLog는 코드 편집 과정에서 떠오르는 생각과 맥락을 그대로 기록하는 메모·노트 관리 플러그인입니다.
선택한 코드 스니펫, 파일 경로, Git 커밋 해시를 자동으로 캡처해 “당시에 어떤 생각으로 이 코드를 작성했는지” 정확히 복원할 수 있습니다.

메모는 시간순으로 정렬되어 타임라인처럼 확인할 수 있고,
여러 메모를 선택하여 TXT 파일로 내보내기, 일괄 삭제, 단축키 기반 빠른 저장까지 지원합니다.

또한 DevLog는 단순한 메모 도구가 아니라,
개발 중 떠오른 아이디어·이슈 정리·회고 문장을 모아두는 노트 기능을 제공합니다.
노트는 자동 저장되며 언제든지 편집·확장할 수 있습니다.

DevLog를 이용해서 개발 기록을 더욱 편리하게 해보세요!

## 🧩 주요 기능

✅ 메모 저장

- 텍스트와 함께 코드 선택 영역, 파일 경로, 커밋 해시 자동 저장
- 생성/수정 시각 기록
- macOS: ⌘ + Enter / Windows: Ctrl + Enter 로 빠른 입력 가능
- 공백 메모, 잘못된 선택 범위는 자동 차단

✅ 메모 조회

- 모든 메모를 최근순으로 정렬해 리스트 형태로 제공
- 코드가 포함된 메모는 시각적으로 구분해 표시

✅ 메모 삭제

- 단일/다중 삭제 지원
- 선택된 메모가 없으면 동작하지 않도록 안전 처리

✅ TXT 파일 내보내기

- 선택한 메모들을 한 번에 TXT로 추출
- 프로젝트명·내보낸 시각·메모 개수 자동 포함
- 메모 순서, 타임스탬프, 코드 선택 영역 정보까지 함께 기록

✅ 노트 관리

- 개발 중 떠오르는 생각을 문서처럼 관리
- 자동 저장 지원
- 화면 크기를 벗어나지 않도록 자연스러운 텍스트 렌더링

<!-- Plugin description end -->
17 changes: 15 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,21 @@ dependencies {
testImplementation(libs.junit)
testImplementation(libs.opentest4j)

testImplementation(kotlin("test"))
testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.0")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.0")

testImplementation("org.mockito:mockito-core:5.12.0")
testImplementation("org.mockito.kotlin:mockito-kotlin:5.2.1")

// IntelliJ Platform Gradle Plugin Dependencies Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html
intellijPlatform {
create(providers.gradleProperty("platformType"), providers.gradleProperty("platformVersion"))
create(
providers.gradleProperty("platformType"),
providers.gradleProperty("platformVersion")
)

bundledPlugins("Git4Idea")

// Plugin Dependencies. Uses `platformBundledPlugins` property from the gradle.properties file for bundled IntelliJ Platform plugins.
bundledPlugins(providers.gradleProperty("platformBundledPlugins").map { it.split(',') })
Expand Down Expand Up @@ -99,7 +111,8 @@ intellijPlatform {
// The pluginVersion is based on the SemVer (https://semver.org) and supports pre-release labels, like 2.1.7-alpha.3
// Specify pre-release label to publish the plugin in a custom Release Channel automatically. Read more:
// https://plugins.jetbrains.com/docs/intellij/deployment.html#specifying-a-release-channel
channels = providers.gradleProperty("pluginVersion").map { listOf(it.substringAfter('-', "").substringBefore('.').ifEmpty { "default" }) }
channels = providers.gradleProperty("pluginVersion")
.map { listOf(it.substringAfter('-', "").substringBefore('.').ifEmpty { "default" }) }
}

pluginVerification {
Expand Down
118 changes: 118 additions & 0 deletions com/intellij/testFramework/ServiceContainerUtil.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
@file:JvmName("ServiceContainerUtil")
package com.intellij.testFramework

import com.intellij.ide.plugins.IdeaPluginDescriptorImpl
import com.intellij.ide.plugins.PluginManagerCore
import com.intellij.openapi.Disposable
import com.intellij.openapi.application.Application
import com.intellij.openapi.components.ComponentManager
import com.intellij.openapi.components.ServiceDescriptor
import com.intellij.openapi.extensions.BaseExtensionPointName
import com.intellij.openapi.extensions.DefaultPluginDescriptor
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.Disposer
import com.intellij.serviceContainer.ComponentManagerImpl
import com.intellij.util.messages.ListenerDescriptor
import com.intellij.util.messages.MessageBusOwner
import org.jetbrains.annotations.TestOnly

private val testDescriptor by lazy { DefaultPluginDescriptor("test") }

@TestOnly
fun <T : Any> ComponentManager.registerServiceInstance(serviceInterface: Class<T>, instance: T) {
(this as ComponentManagerImpl).registerServiceInstance(serviceInterface, instance, testDescriptor)
}

/**
* Unregister service specified by [serviceInterface] if it was registered;
* throws [IllegalStateException] if the service was not registered.
*/
@TestOnly
fun ComponentManager.unregisterService(serviceInterface: Class<*>) {
(this as ComponentManagerImpl).unregisterService(serviceInterface)
}

/**
* Register a new service or replace an existing service with a specified instance for testing purposes.
* Registration will be rolled back when parentDisposable is disposed. In most of the cases,
* [com.intellij.testFramework.UsefulTestCase.getTestRootDisposable] should be specified.
*/
@TestOnly
fun <T : Any> ComponentManager.registerOrReplaceServiceInstance(serviceInterface: Class<T>, instance: T, parentDisposable: Disposable) {
val previous = this.getService(serviceInterface)
if (previous != null) {
replaceService(serviceInterface, instance, parentDisposable)
}
else {
(this as ComponentManagerImpl).registerServiceInstance(serviceInterface, instance, testDescriptor)
if (instance is Disposable) {
Disposer.register(parentDisposable, instance)
}
else {
Disposer.register(parentDisposable) {
this.unregisterComponent(serviceInterface)
}
}
}
}

@TestOnly
fun <T : Any> ComponentManager.replaceService(serviceInterface: Class<T>, instance: T, parentDisposable: Disposable) {
(this as ComponentManagerImpl).replaceServiceInstance(serviceInterface, instance, parentDisposable)
}

@TestOnly
fun <T : Any> ComponentManager.registerComponentInstance(componentInterface: Class<T>, instance: T, parentDisposable: Disposable?) {
(this as ComponentManagerImpl).replaceComponentInstance(componentInterface, instance, parentDisposable)
}

@TestOnly
@JvmOverloads
fun ComponentManager.registerComponentImplementation(key: Class<*>, implementation: Class<*>, shouldBeRegistered: Boolean = false) {
(this as ComponentManagerImpl).registerComponentImplementation(key, implementation, shouldBeRegistered)
}

@TestOnly
fun <T : Any> ComponentManager.registerExtension(name: BaseExtensionPointName<*>, instance: T, parentDisposable: Disposable) {
extensionArea.getExtensionPoint<T>(name.name).registerExtension(instance, parentDisposable)
}

@TestOnly
fun ComponentManager.getServiceImplementationClassNames(prefix: String): List<String> {
val result = ArrayList<String>()
processAllServiceDescriptors(this) { serviceDescriptor ->
val implementation = serviceDescriptor.implementation ?: return@processAllServiceDescriptors
if (implementation.startsWith(prefix)) {
result.add(implementation)
}
}
return result
}

fun processAllServiceDescriptors(componentManager: ComponentManager, consumer: (ServiceDescriptor) -> Unit) {
for (plugin in PluginManagerCore.loadedPlugins) {
val pluginDescriptor = plugin as IdeaPluginDescriptorImpl
val containerDescriptor = when (componentManager) {
is Application -> pluginDescriptor.appContainerDescriptor
is Project -> pluginDescriptor.projectContainerDescriptor
else -> pluginDescriptor.moduleContainerDescriptor
}
containerDescriptor.services.forEach {
if ((componentManager as? ComponentManagerImpl)?.isServiceSuitable(it) != false &&
(it.os == null || componentManager.isSuitableForOs(it.os))) {
consumer(it)
}
}
}
}

fun createSimpleMessageBusOwner(owner: String): MessageBusOwner {
return object : MessageBusOwner {
override fun createListener(descriptor: ListenerDescriptor) = throw UnsupportedOperationException()

override fun isDisposed() = false

override fun toString() = owner
}
}
36 changes: 14 additions & 22 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,34 +1,26 @@
# IntelliJ Platform Artifacts Repositories -> https://plugins.jetbrains.com/docs/intellij/intellij-artifacts.html

pluginGroup = com.github.yeoli.devlog
pluginName = dev-log
pluginRepositoryUrl = https://github.com/yeo-li/dev-log
pluginGroup=com.github.yeoli.devlog
pluginName=dev-log
pluginRepositoryUrl=https://github.com/yeo-li/dev-log
# SemVer format -> https://semver.org
pluginVersion = 0.0.1

pluginVersion=1.0.0
# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
pluginSinceBuild = 243

pluginSinceBuild=243
# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
platformType = IC
platformVersion = 2024.3.6

platformType=IC
platformVersion=2024.3.6
# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html
# Example: platformPlugins = com.jetbrains.php:203.4449.22, org.intellij.scala:2023.3.27@EAP
platformPlugins =
platformPlugins=
# Example: platformBundledPlugins = com.intellij.java
platformBundledPlugins =
platformBundledPlugins=
# Example: platformBundledModules = intellij.spellchecker
platformBundledModules =

platformBundledModules=
# Gradle Releases -> https://github.com/gradle/gradle/releases
gradleVersion = 9.0.0

gradleVersion=9.0.0
# Opt-out flag for bundling Kotlin standard library -> https://jb.gg/intellij-platform-kotlin-stdlib
kotlin.stdlib.default.dependency = false

kotlin.stdlib.default.dependency=false
# Enable Gradle Configuration Cache -> https://docs.gradle.org/current/userguide/configuration_cache.html
org.gradle.configuration-cache = true

org.gradle.configuration-cache=true
# Enable Gradle Build Cache -> https://docs.gradle.org/current/userguide/build_cache.html
org.gradle.caching = true
org.gradle.caching=true
Loading
Loading