@skaile/forge-editor 5.0.0 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 5.0.1 - 2026-10-26
4
+
5
+ ### Fixed
6
+
7
+ - Optional peer `@skaile/forge-app-actions` accepts `^0.1.0 || ^0.2.0`. A caret on 0.x excludes the next minor, so a host on forge-app-actions 0.2 (the `./chat` binding that turns `documentActions` into chat tools) got a peer warning and a second copy.
8
+
3
9
  ## 5.0.0 - 2026-10-26
4
10
 
5
11
  ### Added
@@ -11,17 +11,17 @@ type __VLS_Props = {
11
11
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
12
12
  view: import("vue").ShallowRef<EditorView | undefined, EditorView | undefined>;
13
13
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
14
- ready: (view: EditorView) => any;
15
14
  "update:modelValue": (text: string) => any;
16
15
  save: (text: string) => any;
16
+ ready: (view: EditorView) => any;
17
17
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
18
- onReady?: ((view: EditorView) => any) | undefined;
19
18
  "onUpdate:modelValue"?: ((text: string) => any) | undefined;
20
19
  onSave?: ((text: string) => any) | undefined;
20
+ onReady?: ((view: EditorView) => any) | undefined;
21
21
  }>, {
22
- modelValue: string;
23
22
  editable: boolean;
24
23
  wordWrap: boolean;
24
+ modelValue: string;
25
25
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
26
  declare const _default: typeof __VLS_export;
27
27
  //#endregion
@@ -32,17 +32,17 @@ type __VLS_Slots = {} & { [K in NonNullable<typeof __VLS_13>]?: (props: typeof _
32
32
  binary?: (props: typeof __VLS_26) => any;
33
33
  };
34
34
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
35
- ready: (target: DocumentSurfaceTarget) => any;
36
35
  "update:modelValue": (text: string) => any;
37
36
  save: (text: string) => any;
37
+ ready: (target: DocumentSurfaceTarget) => any;
38
38
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
39
- onReady?: ((target: DocumentSurfaceTarget) => any) | undefined;
40
39
  "onUpdate:modelValue"?: ((text: string) => any) | undefined;
41
40
  onSave?: ((text: string) => any) | undefined;
41
+ onReady?: ((target: DocumentSurfaceTarget) => any) | undefined;
42
42
  }>, {
43
- modelValue: string;
44
43
  editable: boolean;
45
44
  wordWrap: boolean;
45
+ modelValue: string;
46
46
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
47
47
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
48
48
  declare const _default: typeof __VLS_export;
@@ -17,8 +17,8 @@ export type ChatStream = (messages: ChatMessage[], signal: AbortSignal) => Async
17
17
  export declare const generateBodySchema: z.ZodObject<{
18
18
  task: z.ZodEnum<{
19
19
  custom: "custom";
20
- generate: "generate";
21
20
  continue: "continue";
21
+ generate: "generate";
22
22
  reformulate: "reformulate";
23
23
  "transcript-summary": "transcript-summary";
24
24
  "transcript-minutes": "transcript-minutes";
@@ -1,5 +1,6 @@
1
1
  import { parseFrontmatter } from "../../core/frontmatter.js";
2
2
  import { MAX_MEDIA_BYTES, MEDIA_TYPES, acceptFor, mediaKindOf, mediaMime } from "./schema.js";
3
+ import { createAudioRecorder } from "./audio-recorder.js";
3
4
  import { AUDIO_RECORDER_OPEN, Media, fileNodeFor, formatBytes, mediaNodeFor, openAudioRecorder, pickFiles, uploadOf } from "./upload.js";
4
5
  import { MAX_TEXT_BYTES, fileImport, fileImportOptions, isTextFile } from "./file-import.js";
5
6
  import { parseBibtex } from "./importers/bibtex.js";
@@ -9,5 +10,4 @@ import { cueTime, parseSubtitles, subtitleImporter } from "./importers/subtitle.
9
10
  import { FILE_IMPORTERS } from "./importers/index.js";
10
11
  import { mediaBlocks, playerOptions } from "./node-views.js";
11
12
  import { mediaFeatureCore } from "./feature.js";
12
- import { createAudioRecorder } from "./audio-recorder.js";
13
13
  export { AUDIO_RECORDER_OPEN, FILE_IMPORTERS, MAX_MEDIA_BYTES, MAX_TEXT_BYTES, MEDIA_TYPES, Media, acceptFor, bibImporter, createAudioRecorder, cueTime, fileImport, fileImportOptions, fileNodeFor, formatBytes, isTextFile, markdownImporter, mediaBlocks, mediaFeatureCore, mediaKindOf, mediaMime, mediaNodeFor, openAudioRecorder, parseBibtex, parseFrontmatter, parseSubtitles, pickFiles, playerOptions, subtitleImporter, uploadOf };
@@ -5,8 +5,8 @@ import { Icon } from "../../../react/Icon.js";
5
5
  import { useEditorI18n } from "../../../react/use-editor-i18n.js";
6
6
  import { Button } from "../../../react/ui/button.js";
7
7
  import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from "../../../react/ui/dialog.js";
8
- import { useNotifier } from "../../../react/use-notifier.js";
9
8
  import "../upload.js";
9
+ import { useNotifier } from "../../../react/use-notifier.js";
10
10
  import { useAudioRecorder } from "./use-audio-recorder.js";
11
11
  import { useCallback, useEffect, useRef, useState } from "react";
12
12
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,9 +1,9 @@
1
1
  import { useEditorContext } from "../../react/context.js";
2
2
  import { useEditorI18n } from "../../react/use-editor-i18n.js";
3
- import { useNotifier } from "../../react/use-notifier.js";
4
3
  import { fileImport, fileImportOptions } from "./file-import.js";
5
4
  import { playerOptions } from "./node-views.js";
6
5
  import { mediaFeatureCore } from "./feature.js";
6
+ import { useNotifier } from "../../react/use-notifier.js";
7
7
  import { useAudioRecorder } from "./react/use-audio-recorder.js";
8
8
  import { AudioRecorderModal } from "./react/AudioRecorderModal.js";
9
9
  import { AudioView } from "./react/AudioView.js";
@@ -3,8 +3,8 @@ import { AI_LIMITS } from "../../features/ai/protocol/tasks.js";
3
3
  import { TYPED_BLOCK } from "../../core/typed-block.js";
4
4
  import { newBlockId } from "../../core/schema/block-ids.js";
5
5
  import { aiContextOf } from "../../core/pipeline.js";
6
- import { modelProfiles } from "../../features/ai/model-profiles.js";
7
6
  import { transferKindOf, transferSourceHash } from "../../features/transfer/transforms.js";
7
+ import { modelProfiles } from "../../features/ai/model-profiles.js";
8
8
  import { streamAiText } from "./ai-edit-session.js";
9
9
  import { emptyDerivedBlock, runDerivedSession } from "./derive.js";
10
10
  //#region src/integrations/composite-ai/transfer-transforms.ts
@@ -41,28 +41,28 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {
41
41
  settingsOpen: import("vue").WritableComputedRef<boolean, boolean>;
42
42
  settingsTab: import("vue").WritableComputedRef<string | undefined, string | undefined>;
43
43
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
44
+ "update:modelValue": (markdown: string) => any;
45
+ ready: (editor: Editor) => any;
46
+ settingsOpen: (tab?: string | undefined) => any;
44
47
  "update:sidebarOpen": (value: boolean) => any;
45
48
  "update:commentsOpen": (value: boolean) => any;
46
- ready: (editor: Editor) => any;
47
- "update:modelValue": (markdown: string) => any;
49
+ frontmatter: (frontmatter: string | null) => any;
48
50
  metadataCreate: (list: string, item: MetadataItem) => any;
49
51
  contentError: (error: Error) => any;
50
- settingsOpen: (tab?: string | undefined) => any;
51
- frontmatter: (frontmatter: string | null) => any;
52
52
  diagnostics: (diagnostics: MarkdownDiagnostic[]) => any;
53
53
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
54
+ "onUpdate:modelValue"?: ((markdown: string) => any) | undefined;
55
+ onReady?: ((editor: Editor) => any) | undefined;
56
+ onSettingsOpen?: ((tab?: string | undefined) => any) | undefined;
54
57
  "onUpdate:sidebarOpen"?: ((value: boolean) => any) | undefined;
55
58
  "onUpdate:commentsOpen"?: ((value: boolean) => any) | undefined;
56
- onReady?: ((editor: Editor) => any) | undefined;
57
- "onUpdate:modelValue"?: ((markdown: string) => any) | undefined;
59
+ onFrontmatter?: ((frontmatter: string | null) => any) | undefined;
58
60
  onMetadataCreate?: ((list: string, item: MetadataItem) => any) | undefined;
59
61
  onContentError?: ((error: Error) => any) | undefined;
60
- onSettingsOpen?: ((tab?: string | undefined) => any) | undefined;
61
- onFrontmatter?: ((frontmatter: string | null) => any) | undefined;
62
62
  onDiagnostics?: ((diagnostics: MarkdownDiagnostic[]) => any) | undefined;
63
63
  }>, {
64
- modelValue: string;
65
64
  editable: boolean;
65
+ modelValue: string;
66
66
  settingsUi: "internal" | "external";
67
67
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
68
68
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,8 +1,8 @@
1
1
  import { defineEditor } from "../core/define-editor.js";
2
2
  import { coreContentFeature, coreUiFeature } from "../core/core-feature.js";
3
3
  import { CommentMark } from "../features/comments/schema.js";
4
- import { copyTransform } from "../features/transfer/transforms.js";
5
4
  import { mentionsFeature } from "../features/mentions/index.js";
5
+ import { copyTransform } from "../features/transfer/transforms.js";
6
6
  import { tablesFeature } from "../features/tables/feature.js";
7
7
  import { compositeMediaFeature } from "../integrations/composite-media/index.js";
8
8
  import { CATALOG, catalogIds } from "./catalog.js";
@@ -1,7 +1,7 @@
1
+ import { composeBundle, composeEditor } from "./compose.js";
1
2
  import { bulletsTransform, summaryTransform } from "../integrations/composite-ai/transfer-transforms.js";
2
3
  import { compositeAiFeature } from "../integrations/composite-ai/index.js";
3
4
  import { transcriptAiFeature } from "../integrations/transcript-ai/index.js";
4
- import { composeBundle, composeEditor } from "./compose.js";
5
5
  //#region src/presets/layer.ts
6
6
  /**
7
7
  * What the UI layers share: the bindings that are no component and the same for every framework, the AI integrations and
@@ -148,8 +148,8 @@ export declare const extractBodySchema: z.ZodObject<{
148
148
  documentId: z.ZodString;
149
149
  name: z.ZodOptional<z.ZodString>;
150
150
  method: z.ZodEnum<{
151
- transcription: "transcription";
152
151
  description: "description";
152
+ transcription: "transcription";
153
153
  bibliography: "bibliography";
154
154
  auto: "auto";
155
155
  "pdf-text": "pdf-text";
@@ -2,8 +2,8 @@ import { isTypedBlock, newTypedBlockJSON } from "../core/typed-block.js";
2
2
  import { findBlockById } from "../core/schema/block-ids.js";
3
3
  import { blockTypesOf, compositeBasketsOf } from "../features/composites/nodes.js";
4
4
  import { revealBlockInEditor } from "../outline/heading-outline.js";
5
- import { compositeFocusOf } from "../features/composites/focus.js";
6
5
  import { pickFiles } from "../features/media/upload.js";
6
+ import { compositeFocusOf } from "../features/composites/focus.js";
7
7
  import { moveBlockInto, moveIntoVerdict } from "../features/composites/outline.js";
8
8
  import { readOutline } from "./tree-items.js";
9
9
  //#region src/tree/tree-host.ts
@@ -82,21 +82,21 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {
82
82
  editor: import("vue").ComputedRef<Editor | undefined>;
83
83
  preset: ComposedEditor<Component>;
84
84
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
85
+ "update:modelValue": (content: JSONContent) => any;
86
+ ready: (editor: Editor) => any;
87
+ settingsOpen: (tab?: string | undefined) => any;
85
88
  "update:sidebarOpen": (value: boolean) => any;
86
89
  "update:commentsOpen": (value: boolean) => any;
87
- ready: (editor: Editor) => any;
88
- "update:modelValue": (content: JSONContent) => any;
89
90
  metadataCreate: (list: string, item: MetadataItem) => any;
90
91
  contentError: (error: Error) => any;
91
- settingsOpen: (tab?: string | undefined) => any;
92
92
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
93
+ "onUpdate:modelValue"?: ((content: JSONContent) => any) | undefined;
94
+ onReady?: ((editor: Editor) => any) | undefined;
95
+ onSettingsOpen?: ((tab?: string | undefined) => any) | undefined;
93
96
  "onUpdate:sidebarOpen"?: ((value: boolean) => any) | undefined;
94
97
  "onUpdate:commentsOpen"?: ((value: boolean) => any) | undefined;
95
- onReady?: ((editor: Editor) => any) | undefined;
96
- "onUpdate:modelValue"?: ((content: JSONContent) => any) | undefined;
97
98
  onMetadataCreate?: ((list: string, item: MetadataItem) => any) | undefined;
98
99
  onContentError?: ((error: Error) => any) | undefined;
99
- onSettingsOpen?: ((tab?: string | undefined) => any) | undefined;
100
100
  }>, {
101
101
  content: ContentLevel | readonly FeatureId[];
102
102
  ai: boolean;
@@ -41,21 +41,21 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {
41
41
  editor: import("vue").ComputedRef<Editor | undefined>;
42
42
  preset: EditorPreset<Component>;
43
43
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
44
+ "update:modelValue": (content: JSONContent) => any;
45
+ ready: (editor: Editor) => any;
46
+ settingsOpen: (tab?: string | undefined) => any;
44
47
  "update:sidebarOpen": (value: boolean) => any;
45
48
  "update:commentsOpen": (value: boolean) => any;
46
- ready: (editor: Editor) => any;
47
- "update:modelValue": (content: JSONContent) => any;
48
49
  metadataCreate: (list: string, item: MetadataItem) => any;
49
50
  contentError: (error: Error) => any;
50
- settingsOpen: (tab?: string | undefined) => any;
51
51
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
52
+ "onUpdate:modelValue"?: ((content: JSONContent) => any) | undefined;
53
+ onReady?: ((editor: Editor) => any) | undefined;
54
+ onSettingsOpen?: ((tab?: string | undefined) => any) | undefined;
52
55
  "onUpdate:sidebarOpen"?: ((value: boolean) => any) | undefined;
53
56
  "onUpdate:commentsOpen"?: ((value: boolean) => any) | undefined;
54
- onReady?: ((editor: Editor) => any) | undefined;
55
- "onUpdate:modelValue"?: ((content: JSONContent) => any) | undefined;
56
57
  onMetadataCreate?: ((list: string, item: MetadataItem) => any) | undefined;
57
58
  onContentError?: ((error: Error) => any) | undefined;
58
- onSettingsOpen?: ((tab?: string | undefined) => any) | undefined;
59
59
  }>, {
60
60
  editable: boolean;
61
61
  settingsUi: "internal" | "external";
@@ -43,21 +43,21 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {
43
43
  settingsOpen: import("vue").Ref<boolean, boolean>;
44
44
  settingsTab: import("vue").Ref<string | undefined, string | undefined>;
45
45
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
46
+ "update:modelValue": (content: JSONContent) => any;
47
+ ready: (editor: Editor) => any;
48
+ settingsOpen: (tab?: string | undefined) => any;
46
49
  "update:sidebarOpen": (value: boolean) => any;
47
50
  "update:commentsOpen": (value: boolean) => any;
48
- ready: (editor: Editor) => any;
49
- "update:modelValue": (content: JSONContent) => any;
50
51
  metadataCreate: (list: string, item: MetadataItem) => any;
51
52
  contentError: (error: Error) => any;
52
- settingsOpen: (tab?: string | undefined) => any;
53
53
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
54
+ "onUpdate:modelValue"?: ((content: JSONContent) => any) | undefined;
55
+ onReady?: ((editor: Editor) => any) | undefined;
56
+ onSettingsOpen?: ((tab?: string | undefined) => any) | undefined;
54
57
  "onUpdate:sidebarOpen"?: ((value: boolean) => any) | undefined;
55
58
  "onUpdate:commentsOpen"?: ((value: boolean) => any) | undefined;
56
- onReady?: ((editor: Editor) => any) | undefined;
57
- "onUpdate:modelValue"?: ((content: JSONContent) => any) | undefined;
58
59
  onMetadataCreate?: ((list: string, item: MetadataItem) => any) | undefined;
59
60
  onContentError?: ((error: Error) => any) | undefined;
60
- onSettingsOpen?: ((tab?: string | undefined) => any) | undefined;
61
61
  }>, {
62
62
  editable: boolean;
63
63
  settingsUi: "internal" | "external";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skaile/forge-editor",
3
- "version": "5.0.0",
3
+ "version": "5.0.1",
4
4
  "type": "module",
5
5
  "description": "Vue and React editor library on TipTap v3 (Vue: Nuxt UI; React: shadcn/ui): framework-free features with Vue and React bindings, simple and advanced presets, tree-shakeable entries. Built ESM with type declarations.",
6
6
  "license": "MIT",
@@ -697,7 +697,7 @@
697
697
  "@iconify/vue": "^5.0.3",
698
698
  "@lezer/highlight": "^1.2.1",
699
699
  "@nuxt/ui": "^4.11.1",
700
- "@skaile/forge-app-actions": "^0.1.0",
700
+ "@skaile/forge-app-actions": "^0.1.0 || ^0.2.0",
701
701
  "@tiptap/core": "^3.31.3",
702
702
  "@tiptap/pm": "^3.31.3",
703
703
  "@tiptap/react": "^3.31.3",
@@ -761,7 +761,7 @@
761
761
  "@iconify/react": "^6.0.2",
762
762
  "@iconify/vue": "^5.0.3",
763
763
  "@lezer/highlight": "^1.2.1",
764
- "@skaile/forge-app-actions": "^0.1.0",
764
+ "@skaile/forge-app-actions": "^0.2.0",
765
765
  "@tiptap/react": "3.31.3",
766
766
  "@types/react": "^19.3.0",
767
767
  "@types/react-dom": "^19.3.0",