Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
21 changes: 11 additions & 10 deletions docs/content/en/api-reference/_meta.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
export default {
index: "Overview",
app: "App",
keys: "Keys",
knobs: "Knobs",
settings: "Settings",
overlay: "Overlay",
"css-js": "CSS/JS",
presets: "Presets",
i18n: "i18n",
plugin: "Plugin",
index: 'Overview',
app: 'App',
keys: 'Keys',
knobs: 'Knobs',
settings: 'Settings',
overlay: 'Overlay',
resources: 'Resources',
'css-js': 'CSS/JS',
presets: 'Presets',
i18n: 'i18n',
plugin: 'Plugin',
};
39 changes: 21 additions & 18 deletions docs/content/en/api-reference/index/page.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,29 +10,32 @@ All plugins access DM Note features through the `dmn` global object.

## Namespace Structure

| Namespace | Description |
| ---------------------------------------------- | -------------------------------- |
| [`dmn.app`](/docs/api-reference/app) | App boot, restart, external URL |
| [`dmn.window`](/docs/api-reference/app#window) | Window type, minimize, close |
| [`dmn.keys`](/docs/api-reference/keys) | Key mapping, events, custom tabs |
| [`dmn.knobItems`](/docs/api-reference/knobs) | HID knob elements |
| [`dmn.settings`](/docs/api-reference/settings) | App settings get/set |
| [`dmn.overlay`](/docs/api-reference/overlay) | Overlay control |
| [`dmn.css`](/docs/api-reference/css-js#css) | CSS custom code |
| [`dmn.js`](/docs/api-reference/css-js#js) | JS plugin management |
| [`dmn.presets`](/docs/api-reference/presets) | Preset save/load |
| [`dmn.bridge`](/docs/bridge) | Window communication |
| [`dmn.i18n`](/docs/api-reference/i18n) | i18n |
| [`dmn.plugin`](/docs/api-reference/plugin) | Plugin API |
| [`dmn.ui`](/docs/ui-api) | UI extensions |
| Namespace | Description |
| -------------------------------------------------- | -------------------------------- |
| [`dmn.app`](/docs/api-reference/app) | App boot, restart, external URL |
| [`dmn.window`](/docs/api-reference/app#window) | Window type, minimize, close |
| [`dmn.keys`](/docs/api-reference/keys) | Key mapping, events, custom tabs |
| [`dmn.knobItems`](/docs/api-reference/knobs) | HID knob elements |
| [`dmn.settings`](/docs/api-reference/settings) | App settings get/set |
| [`dmn.overlay`](/docs/api-reference/overlay) | Overlay control |
| [`dmn.font`](/docs/api-reference/resources#font) | Font file import |
| [`dmn.image`](/docs/api-reference/resources#image) | Image file import |
| [`dmn.sound`](/docs/api-reference/resources#sound) | Sound file management |
| [`dmn.css`](/docs/api-reference/css-js#css) | CSS custom code |
| [`dmn.js`](/docs/api-reference/css-js#js) | JS plugin management |
| [`dmn.presets`](/docs/api-reference/presets) | Preset save/load |
| [`dmn.bridge`](/docs/bridge) | Window communication |
| [`dmn.i18n`](/docs/api-reference/i18n) | i18n |
| [`dmn.plugin`](/docs/api-reference/plugin) | Plugin API |
| [`dmn.ui`](/docs/ui-api) | UI extensions |

## Quick Start

```javascript
// Get app bootstrap data
const bootstrap = await dmn.app.bootstrap();
console.log("Current mode:", bootstrap.selectedKeyType);
console.log("Settings:", bootstrap.settings);
console.log('Current mode:', bootstrap.selectedKeyType);
console.log('Settings:', bootstrap.settings);

// Subscribe to key events (overlay only)
const unsub = dmn.keys.onKeyState(({ key, state, mode }) => {
Expand All @@ -41,7 +44,7 @@ const unsub = dmn.keys.onKeyState(({ key, state, mode }) => {

// Watch settings changes
dmn.settings.onChanged(({ changed, full }) => {
console.log("Settings changed:", changed);
console.log('Settings changed:', changed);
});

// Cleanup
Expand Down
76 changes: 76 additions & 0 deletions docs/content/en/api-reference/resources/page.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
title: Resource API
description: Font, image, and sound resource APIs
---

# Resource API

## Font

### `dmn.font.load()`

Opens the system file picker, imports a font, and returns its app-managed path.

```typescript
const result = await dmn.font.load();
// { success: boolean, error?: string, fontPath?: string }
```

## Image

### `dmn.image.load()`

Opens the system file picker, imports an image, and returns its app-managed path.

```typescript
const result = await dmn.image.load();
// { success: boolean, error?: string, imagePath?: string }
```

## Sound

### `dmn.sound.load()`

Opens the system file picker, imports a sound, and returns its app-managed path.

### `dmn.sound.list()`

Returns the available local and built-in sounds.

```typescript
type SoundListItem = {
soundPath: string;
fileName: string;
sizeBytes: number;
modifiedAtMs?: number;
enabled: boolean;
source: 'local' | 'builtin';
originalPath?: string;
trimStartRatio?: number;
trimEndRatio?: number;
displayName?: string;
};
```

### `dmn.sound.rename(soundPath, displayName)`

Changes the display name of a local sound. Built-in sounds cannot be renamed.

### `dmn.sound.remove(soundPath)`

Deletes a local sound. Built-in sounds cannot be deleted.

### `dmn.sound.setEnabled(soundPath, enabled)`

> Deprecated: retained for compatibility with existing plugins. The current sound picker does not use the enabled state.

Updates and returns the legacy enabled state.

```typescript
const result = await dmn.sound.setEnabled(soundPath, false);
// { success: true, soundPath, enabled: false }
```

### Sound editing

`saveProcessedWav`, `loadOriginal`, and `updateProcessedWav` support the built-in sound editor. Paths returned by the resource APIs must be treated as opaque app-managed identifiers.
21 changes: 11 additions & 10 deletions docs/content/ko/api-reference/_meta.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
export default {
index: "개요",
app: "앱 (app)",
keys: "키 (keys)",
knobs: "노브 (knobs)",
settings: "설정 (settings)",
overlay: "오버레이 (overlay)",
"css-js": "CSS/JS",
presets: "프리셋 (presets)",
i18n: "다국어 (i18n)",
plugin: "플러그인 (plugin)",
index: '개요',
app: '앱 (app)',
keys: '키 (keys)',
knobs: '노브 (knobs)',
settings: '설정 (settings)',
overlay: '오버레이 (overlay)',
resources: '리소스 (resources)',
'css-js': 'CSS/JS',
presets: '프리셋 (presets)',
i18n: '다국어 (i18n)',
plugin: '플러그인 (plugin)',
};
39 changes: 21 additions & 18 deletions docs/content/ko/api-reference/index/page.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,29 +10,32 @@ asIndexPage: true

## 네임스페이스 구조

| 네임스페이스 | 설명 |
| ------------------------------------------------ | -------------------------- |
| [`dmn.app`](/docs/api-reference/app) | 앱 부팅, 재시작, 외부 URL |
| [`dmn.window`](/docs/api-reference/app#window) | 윈도우 타입, 최소화, 닫기 |
| [`dmn.keys`](/docs/api-reference/keys) | 키 매핑, 이벤트, 커스텀 탭 |
| [`dmn.knobItems`](/docs/api-reference/knobs) | HID 노브 요소 |
| [`dmn.settings`](/docs/api-reference/settings) | 앱 설정 조회/변경 |
| [`dmn.overlay`](/docs/api-reference/overlay) | 오버레이 제어 |
| [`dmn.css`](/docs/api-reference/css-js#css) | CSS 커스텀 코드 |
| [`dmn.js`](/docs/api-reference/css-js#js) | JS 플러그인 관리 |
| [`dmn.presets`](/docs/api-reference/presets) | 프리셋 저장/로드 |
| [`dmn.bridge`](/docs/bridge) | 윈도우 간 통신 |
| [`dmn.i18n`](/docs/api-reference/i18n) | 다국어 |
| [`dmn.plugin`](/docs/api-reference/plugin) | 플러그인 API |
| [`dmn.ui`](/docs/ui-api) | UI 확장 |
| 네임스페이스 | 설명 |
| -------------------------------------------------- | -------------------------- |
| [`dmn.app`](/docs/api-reference/app) | 앱 부팅, 재시작, 외부 URL |
| [`dmn.window`](/docs/api-reference/app#window) | 윈도우 타입, 최소화, 닫기 |
| [`dmn.keys`](/docs/api-reference/keys) | 키 매핑, 이벤트, 커스텀 탭 |
| [`dmn.knobItems`](/docs/api-reference/knobs) | HID 노브 요소 |
| [`dmn.settings`](/docs/api-reference/settings) | 앱 설정 조회/변경 |
| [`dmn.overlay`](/docs/api-reference/overlay) | 오버레이 제어 |
| [`dmn.font`](/docs/api-reference/resources#font) | 폰트 파일 가져오기 |
| [`dmn.image`](/docs/api-reference/resources#image) | 이미지 파일 가져오기 |
| [`dmn.sound`](/docs/api-reference/resources#sound) | 사운드 파일 관리 |
| [`dmn.css`](/docs/api-reference/css-js#css) | CSS 커스텀 코드 |
| [`dmn.js`](/docs/api-reference/css-js#js) | JS 플러그인 관리 |
| [`dmn.presets`](/docs/api-reference/presets) | 프리셋 저장/로드 |
| [`dmn.bridge`](/docs/bridge) | 윈도우 간 통신 |
| [`dmn.i18n`](/docs/api-reference/i18n) | 다국어 |
| [`dmn.plugin`](/docs/api-reference/plugin) | 플러그인 API |
| [`dmn.ui`](/docs/ui-api) | UI 확장 |

## 빠른 시작

```javascript
// 앱 초기 데이터 조회
const bootstrap = await dmn.app.bootstrap();
console.log("현재 모드:", bootstrap.selectedKeyType);
console.log("설정:", bootstrap.settings);
console.log('현재 모드:', bootstrap.selectedKeyType);
console.log('설정:', bootstrap.settings);

// 키 이벤트 구독 (오버레이에서만)
const unsub = dmn.keys.onKeyState(({ key, state, mode }) => {
Expand All @@ -41,7 +44,7 @@ const unsub = dmn.keys.onKeyState(({ key, state, mode }) => {

// 설정 변경 감시
dmn.settings.onChanged(({ changed, full }) => {
console.log("설정 변경:", changed);
console.log('설정 변경:', changed);
});

// 클린업
Expand Down
76 changes: 76 additions & 0 deletions docs/content/ko/api-reference/resources/page.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
title: 리소스 API
description: 폰트, 이미지, 사운드 리소스 API
---

# 리소스 API

## 폰트

### `dmn.font.load()`

시스템 파일 선택기를 열어 폰트를 가져오고 앱이 관리하는 경로를 반환합니다.

```typescript
const result = await dmn.font.load();
// { success: boolean, error?: string, fontPath?: string }
```

## 이미지

### `dmn.image.load()`

시스템 파일 선택기를 열어 이미지를 가져오고 앱이 관리하는 경로를 반환합니다.

```typescript
const result = await dmn.image.load();
// { success: boolean, error?: string, imagePath?: string }
```

## 사운드

### `dmn.sound.load()`

시스템 파일 선택기를 열어 사운드를 가져오고 앱이 관리하는 경로를 반환합니다.

### `dmn.sound.list()`

사용할 수 있는 로컬 및 내장 사운드 목록을 반환합니다.

```typescript
type SoundListItem = {
soundPath: string;
fileName: string;
sizeBytes: number;
modifiedAtMs?: number;
enabled: boolean;
source: 'local' | 'builtin';
originalPath?: string;
trimStartRatio?: number;
trimEndRatio?: number;
displayName?: string;
};
```

### `dmn.sound.rename(soundPath, displayName)`

로컬 사운드의 표시 이름을 변경합니다. 내장 사운드의 이름은 변경할 수 없습니다.

### `dmn.sound.remove(soundPath)`

로컬 사운드를 삭제합니다. 내장 사운드는 삭제할 수 없습니다.

### `dmn.sound.setEnabled(soundPath, enabled)`

> Deprecated: 기존 플러그인과의 호환성을 위해 유지됩니다. 현재 사운드 피커는 활성 상태를 사용하지 않습니다.

레거시 활성 상태를 갱신하고 결과를 반환합니다.

```typescript
const result = await dmn.sound.setEnabled(soundPath, false);
// { success: true, soundPath, enabled: false }
```

### 사운드 편집

`saveProcessedWav`, `loadOriginal`, `updateProcessedWav`는 내장 사운드 편집기를 지원합니다. 리소스 API가 반환하는 경로는 앱이 관리하는 불투명 식별자로 취급해야 합니다.
2 changes: 1 addition & 1 deletion src-tauri/gen/schemas/acl-manifests.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions src-tauri/permissions/dmnote-allow-all.json
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@
"sound_list",
"sound_load",
"sound_load_original",
"sound_rename",
"sound_save_processed_wav",
"sound_set_enabled",
"sound_update_processed_wav",
Expand Down
Loading