You've already forked joplin
mirror of
https://github.com/laurent22/joplin.git
synced 2025-12-08 23:07:32 +02:00
Compare commits
25 Commits
ios-v13.4.
...
android-v3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f25db9bbd7 | ||
|
|
44ac261304 | ||
|
|
3a9f57e13f | ||
|
|
b72c48c693 | ||
|
|
f1e42f3bac | ||
|
|
93c908286d | ||
|
|
4eb8777ed0 | ||
|
|
e884da8312 | ||
|
|
85585d16d2 | ||
|
|
6482ab5a4e | ||
|
|
ec74abe754 | ||
|
|
859bc8d88e | ||
|
|
3e9bb914e5 | ||
|
|
f75e911a4e | ||
|
|
6390ef43ed | ||
|
|
0d1d50768b | ||
|
|
cba5cf660b | ||
|
|
0024722c79 | ||
|
|
b179509dd3 | ||
|
|
ac289c5198 | ||
|
|
62faa48aac | ||
|
|
5daa7a1f4c | ||
|
|
32be071601 | ||
|
|
0dc63dd306 | ||
|
|
78ed58187a |
@@ -417,8 +417,10 @@ class Application extends BaseApplication {
|
||||
if (argv.length) {
|
||||
this.gui_ = this.dummyGui();
|
||||
|
||||
const initialFolder = await Folder.load(Setting.value('activeFolderId'));
|
||||
await this.switchCurrentFolder(initialFolder);
|
||||
await this.applySettingsSideEffects();
|
||||
await this.refreshCurrentFolder();
|
||||
|
||||
try {
|
||||
await this.execCommand(argv);
|
||||
} catch (error) {
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
],
|
||||
"owner": "Laurent Cozic"
|
||||
},
|
||||
"version": "3.4.0",
|
||||
"version": "3.4.1",
|
||||
"bin": "./main.js",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
|
||||
@@ -67,6 +67,11 @@ import 'codemirror/mode/diff/diff';
|
||||
import 'codemirror/mode/erlang/erlang';
|
||||
import 'codemirror/mode/sql/sql';
|
||||
|
||||
interface ExtendedWindow {
|
||||
CodeMirror?: unknown;
|
||||
}
|
||||
declare const window: ExtendedWindow;
|
||||
|
||||
|
||||
export interface EditorProps {
|
||||
value: string;
|
||||
@@ -100,6 +105,14 @@ function Editor(props: EditorProps, ref: any) {
|
||||
const editorParent = useRef(null);
|
||||
const lastEditTime = useRef(NaN);
|
||||
|
||||
useEffect(() => {
|
||||
window.CodeMirror = CodeMirror;
|
||||
|
||||
return () => {
|
||||
window.CodeMirror = undefined;
|
||||
};
|
||||
}, []);
|
||||
|
||||
// Codemirror plugins add new commands to codemirror (or change it's behavior)
|
||||
// This command adds the smartListIndent function which will be bound to tab
|
||||
useListIdent(CodeMirror);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
import { PluginStates } from '@joplin/lib/services/plugins/reducer';
|
||||
import bridge from '../../../../../../services/bridge';
|
||||
import { contentScriptsToCodeMirrorPlugin } from '@joplin/lib/services/plugins/utils/loadContentScripts';
|
||||
import { extname } from 'path';
|
||||
import shim from '@joplin/lib/shim';
|
||||
@@ -7,6 +8,18 @@ import uuid from '@joplin/lib/uuid';
|
||||
|
||||
import { reg } from '@joplin/lib/registry';
|
||||
|
||||
const addPluginDependency = (path: string) => {
|
||||
const id = `content-script-${encodeURIComponent(path)}`;
|
||||
if (document.getElementById(id)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const element = document.createElement('script');
|
||||
element.setAttribute('id', id);
|
||||
element.setAttribute('src', path);
|
||||
document.head.appendChild(element);
|
||||
};
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Old code before rule was applied
|
||||
export default function useExternalPlugins(CodeMirror: any, plugins: PluginStates) {
|
||||
const [options, setOptions] = useState({});
|
||||
@@ -23,7 +36,14 @@ export default function useExternalPlugins(CodeMirror: any, plugins: PluginState
|
||||
if (mod.codeMirrorResources) {
|
||||
for (const asset of mod.codeMirrorResources) {
|
||||
try {
|
||||
require(`codemirror/${asset}`);
|
||||
let assetPath = shim.fsDriver().resolveRelativePathWithinDir(`${bridge().vendorDir()}/lib/codemirror/`, asset);
|
||||
|
||||
// Compatibility with old versions of Joplin, where the file extension was automatically added by require().
|
||||
if (extname(assetPath) === '') {
|
||||
assetPath += '.js';
|
||||
}
|
||||
|
||||
addPluginDependency(assetPath);
|
||||
} catch (error) {
|
||||
error.message = `${asset} is not a valid CodeMirror asset, keymap or mode. You can find a list of valid assets here: https://codemirror.net/doc/manual.html#addons`;
|
||||
throw error;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@joplin/app-desktop",
|
||||
"version": "3.4.8",
|
||||
"version": "3.4.11",
|
||||
"description": "Joplin for Desktop",
|
||||
"main": "main.bundle.js",
|
||||
"private": true,
|
||||
|
||||
@@ -82,7 +82,7 @@ async function main() {
|
||||
const files = [
|
||||
'@fortawesome/fontawesome-free/css/all.min.css',
|
||||
'@joeattardi/emoji-button/dist/index.js',
|
||||
'codemirror/addon/dialog/dialog.css',
|
||||
'codemirror/addon/',
|
||||
'codemirror/lib/codemirror.css',
|
||||
'mark.js/dist/mark.min.js',
|
||||
'roboto-fontface/css/roboto/roboto-fontface.css',
|
||||
|
||||
@@ -89,8 +89,8 @@ android {
|
||||
applicationId "net.cozic.joplin"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 2097778
|
||||
versionName "3.4.5"
|
||||
versionCode 2097780
|
||||
versionName "3.4.7"
|
||||
ndk {
|
||||
abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
|
||||
}
|
||||
|
||||
@@ -54,6 +54,14 @@ const Camera = (props: Props, ref: ForwardedRef<CameraRef>) => {
|
||||
logger.error(message);
|
||||
}, []);
|
||||
|
||||
const isReadyRef = useRef(false);
|
||||
const onCameraReady = useCallback(() => {
|
||||
if (isReadyRef.current) return; // Already emitted
|
||||
|
||||
isReadyRef.current = true;
|
||||
props.onCameraReady();
|
||||
}, [props.onCameraReady]);
|
||||
|
||||
useAsyncEffect(async (event) => {
|
||||
// iOS issue workaround: Since upgrading to Expo SDK 52, closing and reopening the camera on iOS
|
||||
// never emits onCameraReady. As a workaround, call .resumePreview and wait for it to resolve,
|
||||
@@ -63,16 +71,16 @@ const Camera = (props: Props, ref: ForwardedRef<CameraRef>) => {
|
||||
// Instead, wait for the preview to start using resumePreview:
|
||||
await camera.resumePreview();
|
||||
if (event.cancelled) return;
|
||||
props.onCameraReady();
|
||||
onCameraReady();
|
||||
}
|
||||
}, [camera, props.onCameraReady]);
|
||||
}, [camera, onCameraReady]);
|
||||
|
||||
return hasPermission?.granted ? <CameraView
|
||||
ref={setCamera}
|
||||
style={props.style}
|
||||
facing={props.cameraType === CameraDirection.Front ? 'front' : 'back'}
|
||||
ratio={props.ratio as CameraRatio}
|
||||
onCameraReady={Platform.OS === 'android' ? props.onCameraReady : undefined}
|
||||
onCameraReady={onCameraReady}
|
||||
onMountError={onMountError}
|
||||
animateShutter={false}
|
||||
barcodeScannerSettings={barcodeScannerSettings}
|
||||
|
||||
@@ -27,11 +27,23 @@ export interface ModalElementProps extends ModalProps {
|
||||
const useStyles = (hasScrollView: boolean, backgroundColor: string|undefined) => {
|
||||
const safeAreaPadding = useSafeAreaPadding();
|
||||
return useMemo(() => {
|
||||
// On Android, the top-level container seems to need to be absolutely positioned
|
||||
// to prevent it from being larger than the screen size:
|
||||
const absoluteFill = {
|
||||
position: 'absolute',
|
||||
top: 0,
|
||||
left: 0,
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
} satisfies ViewStyle;
|
||||
|
||||
return StyleSheet.create({
|
||||
modalBackground: {
|
||||
...safeAreaPadding,
|
||||
flexGrow: 1,
|
||||
flexShrink: 1,
|
||||
...(hasScrollView ? {
|
||||
flexGrow: 1,
|
||||
flexShrink: 1,
|
||||
} : absoluteFill),
|
||||
|
||||
// When hasScrollView, the modal background is wrapped in a ScrollView. In this case, it's
|
||||
// possible to scroll content outside the background into view. To prevent the edge of the
|
||||
@@ -40,6 +52,7 @@ const useStyles = (hasScrollView: boolean, backgroundColor: string|undefined) =>
|
||||
backgroundColor: hasScrollView ? null : backgroundColor,
|
||||
},
|
||||
keyboardAvoidingView: {
|
||||
...absoluteFill,
|
||||
flex: 1,
|
||||
},
|
||||
modalScrollView: {
|
||||
|
||||
@@ -11,7 +11,7 @@ import { saveProfileConfig, switchProfile } from '../../services/profiles';
|
||||
import { themeStyle } from '../global-style';
|
||||
import shim from '@joplin/lib/shim';
|
||||
import { DialogContext } from '../DialogManager';
|
||||
import { FAB, List, Portal } from 'react-native-paper';
|
||||
import { FAB, List } from 'react-native-paper';
|
||||
import { TextStyle } from 'react-native';
|
||||
import useOnLongPressProps from '../../utils/hooks/useOnLongPressProps';
|
||||
import { Dispatch } from 'redux';
|
||||
@@ -206,19 +206,17 @@ export default (props: Props) => {
|
||||
extraData={extraListItemData}
|
||||
/>
|
||||
</View>
|
||||
<Portal>
|
||||
<FAB
|
||||
icon="plus"
|
||||
accessibilityLabel={_('New profile')}
|
||||
style={style.fab}
|
||||
onPress={() => {
|
||||
props.dispatch({
|
||||
type: 'NAV_GO',
|
||||
routeName: 'ProfileEditor',
|
||||
});
|
||||
}}
|
||||
/>
|
||||
</Portal>
|
||||
<FAB
|
||||
icon="plus"
|
||||
accessibilityLabel={_('New profile')}
|
||||
style={style.fab}
|
||||
onPress={() => {
|
||||
props.dispatch({
|
||||
type: 'NAV_GO',
|
||||
routeName: 'ProfileEditor',
|
||||
});
|
||||
}}
|
||||
/>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -101,12 +101,24 @@ class ScreenHeaderComponent extends PureComponent<ScreenHeaderProps, ScreenHeade
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Old code before rule was applied
|
||||
const styleObject: any = {
|
||||
container: {
|
||||
outerContainer: {
|
||||
flexDirection: 'column',
|
||||
},
|
||||
innerContainer: {
|
||||
flexDirection: 'row',
|
||||
alignItems: 'center',
|
||||
backgroundColor: theme.backgroundColor2,
|
||||
shadowColor: '#000000',
|
||||
elevation: 5,
|
||||
},
|
||||
// A small border above the header: Covers the part of the shadow that would otherwise
|
||||
// be shown above the header on Android.
|
||||
aboveHeader: {
|
||||
backgroundColor: theme.backgroundColor2,
|
||||
paddingBottom: 6,
|
||||
marginTop: -6,
|
||||
zIndex: 2,
|
||||
},
|
||||
sideMenuButton: {
|
||||
flex: 1,
|
||||
alignItems: 'center',
|
||||
@@ -678,8 +690,9 @@ class ScreenHeaderComponent extends PureComponent<ScreenHeaderProps, ScreenHeade
|
||||
);
|
||||
|
||||
return (
|
||||
<View style={this.styles().container}>
|
||||
<View style={{ flexDirection: 'row', alignItems: 'center' }}>
|
||||
<View style={this.styles().outerContainer}>
|
||||
<View style={this.styles().aboveHeader}/>
|
||||
<View style={this.styles().innerContainer}>
|
||||
{sideMenuComp}
|
||||
{backButtonComp}
|
||||
{renderUndoButton()}
|
||||
|
||||
@@ -17,6 +17,7 @@ import Resource from '@joplin/lib/models/Resource';
|
||||
import { ResourceInfos } from '@joplin/renderer/types';
|
||||
import useContentScripts from './utils/useContentScripts';
|
||||
import uuid from '@joplin/lib/uuid';
|
||||
import AsyncActionQueue from '@joplin/lib/AsyncActionQueue';
|
||||
|
||||
const logger = Logger.create('renderer/useWebViewSetup');
|
||||
|
||||
@@ -149,6 +150,8 @@ const useWebViewSetup = (props: Props): SetUpResult<RendererControl> => {
|
||||
void messenger.remoteApi.renderer.setExtraContentScriptsAndRerender(contentScripts);
|
||||
}, [messenger, contentScripts]);
|
||||
|
||||
const onRerenderRequestRef = useRef(()=>{});
|
||||
|
||||
const rendererControl = useMemo((): RendererControl => {
|
||||
const renderer = messenger.remoteApi.renderer;
|
||||
|
||||
@@ -185,7 +188,7 @@ const useWebViewSetup = (props: Props): SetUpResult<RendererControl> => {
|
||||
};
|
||||
|
||||
let settingsChanged = false;
|
||||
const settings: RenderSettings = {
|
||||
const getSettings = (): RenderSettings => ({
|
||||
...options,
|
||||
codeTheme: theme.codeThemeCss,
|
||||
// We .stringify the theme to avoid a JSON serialization error involving
|
||||
@@ -201,6 +204,7 @@ const useWebViewSetup = (props: Props): SetUpResult<RendererControl> => {
|
||||
const key = `${pluginId}.${settingKey}`;
|
||||
if (!pluginSettingKeysRef.current.has(key)) {
|
||||
pluginSettingKeysRef.current.add(key);
|
||||
onRerenderRequestRef.current();
|
||||
settingsChanged = true;
|
||||
}
|
||||
},
|
||||
@@ -220,12 +224,12 @@ const useWebViewSetup = (props: Props): SetUpResult<RendererControl> => {
|
||||
return shim.fsDriver().fileAtPath(resolvedPath);
|
||||
},
|
||||
removeUnusedPluginAssets: options.removeUnusedPluginAssets,
|
||||
};
|
||||
});
|
||||
|
||||
await transferResources(options.resources);
|
||||
|
||||
return {
|
||||
settings,
|
||||
getSettings,
|
||||
getSettingsChanged() {
|
||||
return settingsChanged;
|
||||
},
|
||||
@@ -234,23 +238,28 @@ const useWebViewSetup = (props: Props): SetUpResult<RendererControl> => {
|
||||
|
||||
return {
|
||||
rerenderToBody: async (markup, options, cancelEvent) => {
|
||||
const { settings, getSettingsChanged } = await prepareRenderer(options);
|
||||
const { getSettings } = await prepareRenderer(options);
|
||||
if (cancelEvent?.cancelled) return null;
|
||||
|
||||
const output = await renderer.rerenderToBody(markup, settings);
|
||||
if (cancelEvent?.cancelled) return null;
|
||||
const render = async () => {
|
||||
if (cancelEvent?.cancelled) return;
|
||||
|
||||
if (getSettingsChanged()) {
|
||||
return await renderer.rerenderToBody(markup, settings);
|
||||
}
|
||||
return output;
|
||||
await renderer.rerenderToBody(markup, getSettings());
|
||||
};
|
||||
|
||||
const queue = new AsyncActionQueue();
|
||||
onRerenderRequestRef.current = async () => {
|
||||
queue.push(render);
|
||||
};
|
||||
|
||||
return await render();
|
||||
},
|
||||
render: async (markup, options) => {
|
||||
const { settings, getSettingsChanged } = await prepareRenderer(options);
|
||||
const output = await renderer.render(markup, settings);
|
||||
const { getSettings, getSettingsChanged } = await prepareRenderer(options);
|
||||
const output = await renderer.render(markup, getSettings());
|
||||
|
||||
if (getSettingsChanged()) {
|
||||
return await renderer.render(markup, settings);
|
||||
return await renderer.render(markup, getSettings());
|
||||
}
|
||||
return output;
|
||||
},
|
||||
|
||||
@@ -363,6 +363,7 @@
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/React-Core_privacy.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact/React-cxxreact_privacy.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/boost/boost_privacy.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/glog/glog_privacy.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/react-native-image-picker/RNImagePickerPrivacyInfo.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
@@ -394,6 +395,7 @@
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/React-Core_privacy.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/React-cxxreact_privacy.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/boost_privacy.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/glog_privacy.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNImagePickerPrivacyInfo.bundle",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
|
||||
@@ -1514,7 +1514,7 @@ PODS:
|
||||
- Yoga
|
||||
- react-native-rsa-native (2.0.5):
|
||||
- React
|
||||
- react-native-saf-x (3.4.0):
|
||||
- react-native-saf-x (3.4.1):
|
||||
- React-Core
|
||||
- react-native-safe-area-context (5.4.1):
|
||||
- React-Core
|
||||
@@ -2285,7 +2285,7 @@ EXTERNAL SOURCES:
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90
|
||||
DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5
|
||||
DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb
|
||||
EXAV: ae28256069c4cdde93d185c007d8f68d92902c2e
|
||||
EXConstants: 98bcf0f22b820f9b28f9fee55ff2daededadd2f8
|
||||
Expo: 4b1c6de7c441e1caa1918671ae0aa34d51f019a5
|
||||
@@ -2298,7 +2298,7 @@ SPEC CHECKSUMS:
|
||||
fast_float: 06eeec4fe712a76acc9376682e4808b05ce978b6
|
||||
FBLazyVector: 84b955f7b4da8b895faf5946f73748267347c975
|
||||
fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd
|
||||
glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2
|
||||
glog: 5683914934d5b6e4240e497e0f4a3b42d1854183
|
||||
hermes-engine: 314be5250afa5692b57b4dd1705959e1973a8ebe
|
||||
JoplinCommonShareExtension: a8b60b02704d85a7305627912c0240e94af78db7
|
||||
JoplinRNShareExtension: e158a4b53ee0aa9cd3037a16221dc8adbd6f7860
|
||||
@@ -2343,7 +2343,7 @@ SPEC CHECKSUMS:
|
||||
react-native-netinfo: cec9c4e86083cb5b6aba0e0711f563e2fbbff187
|
||||
react-native-quick-crypto: 988d8d57cd720dbe218272b60775a8e0210d0b80
|
||||
react-native-rsa-native: a7931cdda1f73a8576a46d7f431378c5550f0c38
|
||||
react-native-saf-x: 24ebe9aa153f82ec6726de459ae77508d68d5599
|
||||
react-native-saf-x: 3f8b52fb8160d7322161dec02a564271cc8f4138
|
||||
react-native-safe-area-context: dde2052b903c11d677c320b599c3244021c34ce8
|
||||
react-native-sqlite-storage: 0c84826214baaa498796c7e46a5ccc9a82e114ed
|
||||
react-native-version-info: f0b04e16111c4016749235ff6d9a757039189141
|
||||
|
||||
@@ -7,11 +7,17 @@ import libStateToWhenClauseContext, { WhenClauseContextOptions } from '@joplin/l
|
||||
import { AppState } from '../../utils/types';
|
||||
|
||||
const stateToWhenClauseContext = (state: AppState, options: WhenClauseContextOptions = null) => {
|
||||
const markdownEditorVisible = state.noteEditorVisible && state.settings['editor.codeView'];
|
||||
const richTextEditorVisible = state.noteEditorVisible && !state.settings['editor.codeView'];
|
||||
return {
|
||||
...libStateToWhenClauseContext(state, options),
|
||||
keyboardVisible: state.keyboardVisible,
|
||||
markdownEditorVisible: state.noteEditorVisible && state.settings['editor.codeView'],
|
||||
richTextEditorVisible: state.noteEditorVisible && !state.settings['editor.codeView'],
|
||||
|
||||
// Provide both markdownEditorPaneVisible and markdownEditorVisible for compatibility
|
||||
// with the desktop app.
|
||||
markdownEditorPaneVisible: markdownEditorVisible,
|
||||
markdownEditorVisible: markdownEditorVisible,
|
||||
richTextEditorVisible: richTextEditorVisible,
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@joplin/fork-htmlparser2",
|
||||
"description": "Fast & forgiving HTML/XML/RSS parser",
|
||||
"version": "4.1.58",
|
||||
"version": "4.1.59",
|
||||
"author": "Felix Boehm <me@feedic.com>",
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "@joplin/fork-sax",
|
||||
"description": "An evented streaming XML parser in JavaScript",
|
||||
"author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
|
||||
"version": "1.2.62",
|
||||
"version": "1.2.63",
|
||||
"main": "lib/sax.js",
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@joplin/fork-uslug",
|
||||
"version": "2.0.1",
|
||||
"version": "2.0.2",
|
||||
"description": "A permissive slug generator that works with unicode.",
|
||||
"author": "Jeremy Selier <jerem.selier@gmail.com>",
|
||||
"publishConfig": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@joplin/htmlpack",
|
||||
"version": "3.4.0",
|
||||
"version": "3.4.1",
|
||||
"description": "Pack an HTML file and all its linked resources into a single HTML file",
|
||||
"main": "dist/index.js",
|
||||
"types": "index.ts",
|
||||
@@ -26,7 +26,7 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@adobe/css-tools": "4.4.3",
|
||||
"@joplin/fork-htmlparser2": "^4.1.58",
|
||||
"@joplin/fork-htmlparser2": "^4.1.59",
|
||||
"datauri": "4.1.0",
|
||||
"fs-extra": "11.2.0",
|
||||
"html-entities": "1.4.0"
|
||||
|
||||
@@ -522,6 +522,13 @@ describe('models/Setting', () => {
|
||||
expect(Setting.value('revisionService.ttlDays')).toBe(1);
|
||||
});
|
||||
|
||||
test('should not fail to save settings that can conflict with uninstalled plugin settings', async () => {
|
||||
Setting.setValue('editor.imageRendering', true);
|
||||
expect(Setting.value('editor.imageRendering')).toBe(true);
|
||||
Setting.setValue('editor.imageRendering', false);
|
||||
expect(Setting.value('editor.imageRendering')).toBe(false);
|
||||
});
|
||||
|
||||
test('should adjust settings to avoid conflicts', async () => {
|
||||
const testSettingId = 'plugin-plugin.calebjohn.rich-markdown.inlineImages';
|
||||
await Setting.registerSetting(testSettingId, {
|
||||
|
||||
@@ -808,15 +808,20 @@ class Setting extends BaseModel {
|
||||
this.scheduleChangeEvent();
|
||||
};
|
||||
|
||||
const setValueInternalIfExists = <Key extends string> (key: Key, value: SettingValueType<Key>) => {
|
||||
if (!this.keyExists(key)) return;
|
||||
setValueInternal(key, value);
|
||||
};
|
||||
|
||||
setValueInternal(key, value);
|
||||
|
||||
// Prevent conflicts. Use setValueInternal to avoid infinite recursion in the case
|
||||
// where conflictingSettings has invalid data.
|
||||
for (const conflict of conflictingSettings) {
|
||||
if (conflict.key1 === key && conflict.value1 === value) {
|
||||
setValueInternal(conflict.key2, conflict.alternate2);
|
||||
setValueInternalIfExists(conflict.key2, conflict.alternate2);
|
||||
} else if (conflict.key2 === key && conflict.value2 === value) {
|
||||
setValueInternal(conflict.key1, conflict.alternate1);
|
||||
setValueInternalIfExists(conflict.key1, conflict.alternate1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -557,13 +557,15 @@ const builtInMetadata = (Setting: typeof SettingType) => {
|
||||
},
|
||||
|
||||
'ocr.handwrittenTextDriverEnabled': {
|
||||
value: true,
|
||||
value: false,
|
||||
type: SettingItemType.Bool,
|
||||
public: true,
|
||||
appTypes: [AppType.Desktop],
|
||||
label: () => _('Enable handwritten transcription'),
|
||||
description: () => 'Allows selecting specific attachments for higher-quality on-server OCR. When enabled, the right-click menu for an attachment includes an option to send an attachment to Joplin Cloud/Server for off-device processing.\n\nExperimental! It may not work at all. Requires Joplin Server or Cloud.',
|
||||
storage: SettingStorage.File,
|
||||
isGlobal: true,
|
||||
advanced: true,
|
||||
},
|
||||
|
||||
'ocr.languageDataPath': {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@joplin/lib",
|
||||
"version": "3.4.0",
|
||||
"version": "3.4.1",
|
||||
"description": "Joplin Core library",
|
||||
"author": "Laurent Cozic",
|
||||
"homepage": "",
|
||||
@@ -44,15 +44,15 @@
|
||||
"@adobe/css-tools": "4.4.3",
|
||||
"@aws-sdk/client-s3": "3.296.0",
|
||||
"@aws-sdk/s3-request-presigner": "3.296.0",
|
||||
"@joplin/fork-htmlparser2": "^4.1.58",
|
||||
"@joplin/fork-sax": "^1.2.62",
|
||||
"@joplin/fork-uslug": "^2.0.1",
|
||||
"@joplin/htmlpack": "~3.4",
|
||||
"@joplin/onenote-converter": "~3.4",
|
||||
"@joplin/renderer": "~3.4",
|
||||
"@joplin/turndown": "^4.0.80",
|
||||
"@joplin/turndown-plugin-gfm": "^1.0.62",
|
||||
"@joplin/utils": "~3.4",
|
||||
"@joplin/fork-htmlparser2": "^4.1.59",
|
||||
"@joplin/fork-sax": "^1.2.63",
|
||||
"@joplin/fork-uslug": "^2.0.2",
|
||||
"@joplin/htmlpack": "^3.4.1",
|
||||
"@joplin/onenote-converter": "^3.4.1",
|
||||
"@joplin/renderer": "^3.4.1",
|
||||
"@joplin/turndown": "^4.0.81",
|
||||
"@joplin/turndown-plugin-gfm": "^1.0.63",
|
||||
"@joplin/utils": "^3.4.1",
|
||||
"@types/nanoid": "3.0.0",
|
||||
"adm-zip": "0.5.16",
|
||||
"async-mutex": "0.5.0",
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"access": "public"
|
||||
},
|
||||
"description": "Used to import a OneNote archive into Joplin",
|
||||
"version": "3.4.0",
|
||||
"version": "3.4.1",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"repository": "https://github.com/laurent22/joplin/tree/dev/packages/onenote-converter",
|
||||
"main": "./pkg/onenote_converter.js",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@joplin/plugin-repo-cli",
|
||||
"version": "3.4.0",
|
||||
"version": "3.4.1",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"bin": "./dist/index.js",
|
||||
@@ -18,9 +18,9 @@
|
||||
"author": "",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"@joplin/lib": "~3.4",
|
||||
"@joplin/tools": "~3.4",
|
||||
"@joplin/utils": "~3.4",
|
||||
"@joplin/lib": "^3.4.1",
|
||||
"@joplin/tools": "^3.4.1",
|
||||
"@joplin/utils": "^3.4.1",
|
||||
"fs-extra": "11.2.0",
|
||||
"gh-release-assets": "2.0.1",
|
||||
"node-fetch": "2.6.7",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@joplin/react-native-saf-x",
|
||||
"version": "3.4.0",
|
||||
"version": "3.4.1",
|
||||
"description": "a module to help work with scoped storages on android easily",
|
||||
"main": "src/index",
|
||||
"react-native": "src/index",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@joplin/renderer",
|
||||
"version": "3.4.0",
|
||||
"version": "3.4.1",
|
||||
"description": "The Joplin note renderer, used the mobile and desktop application",
|
||||
"repository": "https://github.com/laurent22/joplin/tree/dev/packages/renderer",
|
||||
"main": "index.js",
|
||||
@@ -30,9 +30,9 @@
|
||||
"typescript": "5.8.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@joplin/fork-htmlparser2": "^4.1.58",
|
||||
"@joplin/fork-uslug": "^2.0.1",
|
||||
"@joplin/utils": "~3.4",
|
||||
"@joplin/fork-htmlparser2": "^4.1.59",
|
||||
"@joplin/fork-uslug": "^2.0.2",
|
||||
"@joplin/utils": "^3.4.1",
|
||||
"font-awesome-filetypes": "2.1.0",
|
||||
"fs-extra": "11.2.0",
|
||||
"highlight.js": "11.11.1",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@joplin/tools",
|
||||
"version": "3.4.0",
|
||||
"version": "3.4.1",
|
||||
"description": "Various tools for Joplin",
|
||||
"main": "index.js",
|
||||
"author": "Laurent Cozic",
|
||||
@@ -21,9 +21,9 @@
|
||||
},
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"@joplin/lib": "~3.4",
|
||||
"@joplin/renderer": "~3.4",
|
||||
"@joplin/utils": "~3.4",
|
||||
"@joplin/lib": "^3.4.1",
|
||||
"@joplin/renderer": "^3.4.1",
|
||||
"@joplin/utils": "^3.4.1",
|
||||
"compare-versions": "6.1.1",
|
||||
"dayjs": "1.11.13",
|
||||
"execa": "4.1.0",
|
||||
@@ -45,7 +45,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@docusaurus/plugin-sitemap": "2.4.3",
|
||||
"@joplin/fork-htmlparser2": "^4.1.58",
|
||||
"@joplin/fork-htmlparser2": "^4.1.59",
|
||||
"@rmp135/sql-ts": "1.18.1",
|
||||
"@types/fs-extra": "11.0.4",
|
||||
"@types/jest": "29.5.14",
|
||||
|
||||
@@ -6,8 +6,6 @@ const appDir = `${rootDir}/packages/app-desktop`;
|
||||
async function main() {
|
||||
await gitPullTry(false);
|
||||
|
||||
const argv = require('yargs').argv;
|
||||
|
||||
process.chdir(appDir);
|
||||
|
||||
console.info(`Running from: ${process.cwd()}`);
|
||||
@@ -23,7 +21,7 @@ async function main() {
|
||||
await execCommand('git push');
|
||||
await execCommand('git push --tags');
|
||||
|
||||
const releaseOptions = { isDraft: true, isPreRelease: !!argv.beta };
|
||||
const releaseOptions = { isDraft: true, isPreRelease: true };
|
||||
|
||||
console.info('Release options: ', releaseOptions);
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"version": "1.0.62",
|
||||
"version": "1.0.63",
|
||||
"author": "Dom Christie",
|
||||
"main": "lib/turndown-plugin-gfm.cjs.js",
|
||||
"devDependencies": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@joplin/turndown",
|
||||
"description": "A library that converts HTML to Markdown",
|
||||
"version": "4.0.80",
|
||||
"version": "4.0.81",
|
||||
"author": "Dom Christie",
|
||||
"main": "lib/turndown.cjs.js",
|
||||
"publishConfig": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@joplin/utils",
|
||||
"version": "3.4.0",
|
||||
"version": "3.4.1",
|
||||
"description": "Utilities for Joplin",
|
||||
"repository": "https://github.com/laurent22/joplin/tree/dev/packages/utils",
|
||||
"exports": {
|
||||
@@ -34,7 +34,7 @@
|
||||
"author": "",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"@joplin/fork-htmlparser2": "^4.1.58",
|
||||
"@joplin/fork-htmlparser2": "^4.1.59",
|
||||
"async-mutex": "0.5.0",
|
||||
"dayjs": "1.11.13",
|
||||
"execa": "5.1.1",
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
# Joplin Android Changelog
|
||||
|
||||
## [android-v3.4.7](https://github.com/laurent22/joplin/releases/tag/android-v3.4.7) (Pre-release) - 2025-09-09T08:09:54Z
|
||||
|
||||
- Fixed: Fix error when saving in-editor rendering-related settings (#13105) (#13103 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator))
|
||||
- Fixed: Fix light bar shown above header in dark mode (#13132 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator))
|
||||
- Fixed: Plugins: Fix renderer plugins that use the `settingValue` API (#13131 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator))
|
||||
|
||||
## [android-v3.4.6](https://github.com/laurent22/joplin/releases/tag/android-v3.4.6) (Pre-release) - 2025-09-01T12:02:41Z
|
||||
|
||||
- Fixed: Fix "edit profile" button is partially off-screen (#13084) (#13015 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator))
|
||||
- Fixed: Fix shadow shown above the screen header (#13074 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator))
|
||||
- Fixed: Plugin API: Fix certain renderer plugins fail to load (#13078 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator))
|
||||
- Fixed: Plugin API: Fix compatibility with certain plugins targetting the desktop app (#13077 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator))
|
||||
- Fixed: Plugins: Fix plugin panel buttons are off-screen on recent versions of Android (#13080 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator))
|
||||
|
||||
## [android-v3.4.5](https://github.com/laurent22/joplin/releases/tag/android-v3.4.5) (Pre-release) - 2025-08-27T06:27:53Z
|
||||
|
||||
- New: Add a "highlight active line" setting (#12967 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator))
|
||||
|
||||
@@ -1,5 +1,24 @@
|
||||
# Joplin Terminal App Changelog
|
||||
|
||||
## [cli-v3.4.1](https://github.com/laurent22/joplin/releases/tag/cli-v3.4.1) - 2025-08-27T06:48:52Z
|
||||
|
||||
- New: Add Joplin Server SAML support (#11865 by [@ttcchhmm](https://github.com/ttcchhmm))
|
||||
- New: Add collapsible notebooks functionality (#12718 by [@miguelammatos](https://github.com/miguelammatos))
|
||||
- New: Add commands for publishing and unpublishing notes with Joplin Server (#13060 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator))
|
||||
- Improved: Add information about failing tests of OneNote importer inside test names (#12159) (#12157 by [@pedr](https://github.com/pedr))
|
||||
- Improved: Falls back to filename for the title when importing Markdown files with FrontMatter (#12698 by [@khemarato](https://github.com/khemarato))
|
||||
- Improved: If no notebook is provided when importing a file, use the default one (30000c3)
|
||||
- Improved: Refresh shares when running the sync command (#12667 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator))
|
||||
- Improved: Set new encryption methods as default (#12229 by Self Not Found)
|
||||
- Improved: Support managing shared notebooks (#12637 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator))
|
||||
- Improved: Update translations (9f649c9 by Helmut K. C. Tessarek)
|
||||
- Improved: Updated packages @adobe/css-tools (v4.4.3), @rollup/plugin-commonjs (v28.0.3), @rollup/plugin-node-resolve (v16.0.1), @rollup/plugin-replace (v6.0.2), dayjs (v1.11.13), domutils (v3.2.2), form-data (v4.0.2), glob (v11.0.2), highlight.js (v11.11.1), jsdom (v26.1.0), katex (v0.16.22), license-checker-rseidelsohn (v4.4.2), mermaid (v11.6.0), nanoid (v3.3.9), node (v18.20.7), react, sass (v1.87.0), sharp (v0.34.2), standard (v17.1.2), style-to-js (v1.1.16), terminal-kit (v3.1.2), tesseract.js (v5.1.1), uuid (v11.1.0)
|
||||
- Fixed: Fix Yinxiang HTML imported notes being enclosed by a open anchor tag (#12395) (#12363 by [@pedr](https://github.com/pedr))
|
||||
- Fixed: Fix data API failure when including both conflicts and deleted notes in results (#12650 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator))
|
||||
- Fixed: Fix unshare action requires two syncs to be reflected locally (#12999) (#12648 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator))
|
||||
- Fixed: Moving sub-notebook of shared notebook should unshare it (#12647) (#12089)
|
||||
- Fixed: Shared folders: Fix moving shared subfolder to top-level briefly marks it as a top-level share (#12964 by [@personalizedrefrigerator](https://github.com/personalizedrefrigerator))
|
||||
|
||||
## [cli-v3.3.1](https://github.com/laurent22/joplin/releases/tag/cli-v3.3.1) - 2025-05-01T21:18:35Z
|
||||
|
||||
- New: Add plural forms for notes, users, hours, minutes, days (#12171 by [@SilverGreen93](https://github.com/SilverGreen93))
|
||||
|
||||
@@ -13,9 +13,9 @@ In order to provide certain features, Joplin may need to connect to third-party
|
||||
| Spellchecker dictionary | On Linux and Windows, the desktop application downloads the spellchecker dictionary from `redirector.gvt1.com`. | Enabled | Yes <sup>(2)</sup> |
|
||||
| Plugin repository | The desktop application downloads the list of available plugins from the [official GitHub repository](https://github.com/joplin/plugins). If this repository is not accessible (eg. in China) the app will try to get the plugin list from [various mirrors](https://github.com/laurent22/joplin/blob/8ac6017c02017b6efd59f5fcab7e0b07f8d44164/packages/lib/services/plugins/RepositoryApi.ts#L22), in which case the plugin screen [works slightly differently](https://github.com/laurent22/joplin/issues/5161#issuecomment-925226975). | Enabled | No
|
||||
| Voice typing | If you use the voice typing feature on Android, the application will download the language files from https://github.com/joplin/voice-typing-models/ or https://alphacephei.com/vosk/models. | Disabled | Yes
|
||||
| OCR | If you have enabled optical character recognition on desktop, the application will download the language files from https://cdn.jsdelivr.net/npm/@tesseract.js-data/. | Disabled | Yes
|
||||
| OCR | If optical character recognition is enabled on desktop, the application will download the language files from https://cdn.jsdelivr.net/npm/@tesseract.js-data/. | Enabled | Yes
|
||||
| Crash reports | If you have enabled crash auto-upload, the application will upload the report to Sentry when a crash happens. When Sentry is initialised it will also connect to `sentry.io`. | Disabled | Yes
|
||||
| Handwriting recognition | This option allows the user to send images to Joplin Server/Cloud to be transcribed, only images selected with the 'Recognize handwritten image' are affected. | Enabled | Yes
|
||||
| Handwriting recognition | If the 'handwriting recognition' setting is enabled, users can send images to Joplin Server/Cloud to be transcribed. Only images selected with the 'Recognize handwritten image' are affected. | Disabled | Yes
|
||||
|
||||
<sup>(1) https://github.com/laurent22/joplin/issues/5705</sup><br/>
|
||||
<sup>(2) If the spellchecker is disabled, [it will not download the dictionary](https://discourse.joplinapp.org/t/new-version-of-joplin-contacting-google-servers-on-startup/23000/40?u=laurent).</sup>
|
||||
|
||||
@@ -2,19 +2,20 @@
|
||||
|
||||
The Joplin applications, including the Android, iOS, Windows, macOS and Linux applications, do not send any data to any service without your authorisation. Any data that Joplin saves, such as notes or images, are saved to your own device and you are free to delete this data at any time.
|
||||
|
||||
If you choose to synchronise with a third-party, such as OneDrive or Dropbox, the notes will be sent to that account, in which case the third-party privacy policy applies.
|
||||
|
||||
In order to provide certain features, Joplin may need to connect to third-party services. You can disable most of these features in the application settings:
|
||||
|
||||
| Feature | Description | Default | Can be disabled |
|
||||
| -------- | ------------- | -------- | --- |
|
||||
| Auto-update | Joplin periodically connects to GitHub to check for new releases. | Enabled | Yes |
|
||||
| Geo-location | Joplin saves geo-location information in note properties when you create a note. | Enabled | Yes |
|
||||
| Auto-update | Joplin periodically connects to `objects.joplinusercontent.com` to check for new releases. | Enabled | Yes |
|
||||
| Geo-location | Joplin saves geo-location information in note properties when you create a note. For that it will connect to either `ipwho.is` or `geoplugin.net` | Enabled | Yes |
|
||||
| Synchronisation | Joplin supports synchronisation of your notes across multiple devices. If you choose to synchronise with a third-party, such as OneDrive, the notes will be sent to your OneDrive account, in which case the third-party privacy policy applies. | Disabled | Yes |
|
||||
| Wifi connection check | On mobile, Joplin checks for Wifi connectivity to give the option to synchronise data only when Wifi is enabled. | Enabled | No <sup>(1)</sup> |
|
||||
| Spellchecker dictionary | On Linux and Windows, the desktop application downloads the spellchecker dictionary from `redirector.gvt1.com`. | Enabled | Yes <sup>(2)</sup> |
|
||||
| Plugin repository | The desktop application downloads the list of available plugins from the [official GitHub repository](https://github.com/joplin/plugins). If this repository is not accessible (eg. in China) the app will try to get the plugin list from [various mirrors](https://github.com/laurent22/joplin/blob/8ac6017c02017b6efd59f5fcab7e0b07f8d44164/packages/lib/services/plugins/RepositoryApi.ts#L22), in which case the plugin screen [works slightly differently](https://github.com/laurent22/joplin/issues/5161#issuecomment-925226975). | Enabled | No
|
||||
| Voice typing | If you use the voice typing feature on Android, the application will download the language files from https://github.com/joplin/voice-typing-models/ or https://alphacephei.com/vosk/models. | Disabled | Yes
|
||||
| OCR | If optical character recognition is enabled on desktop, the application will download the language files from https://cdn.jsdelivr.net/npm/@tesseract.js-data/. | Enabled | Yes
|
||||
| Crash reports | If you have enabled crash auto-upload, the application will upload the report to Sentry when a crash happens. When Sentry is initialised it will also connect to `sentry.io`. | Disabled | Yes
|
||||
| Handwriting recognition | If the 'handwriting recognition' setting is enabled, users can send images to Joplin Server/Cloud to be transcribed. Only images selected with the 'Recognize handwritten image' are affected. | Disabled | Yes
|
||||
|
||||
<sup>(1) https://github.com/laurent22/joplin/issues/5705</sup><br/>
|
||||
<sup>(2) If the spellchecker is disabled, [it will not download the dictionary](https://discourse.joplinapp.org/t/new-version-of-joplin-contacting-google-servers-on-startup/23000/40?u=laurent).</sup>
|
||||
|
||||
94
yarn.lock
94
yarn.lock
@@ -9424,7 +9424,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@joplin/fork-htmlparser2@npm:^4.1.58, @joplin/fork-htmlparser2@workspace:packages/fork-htmlparser2":
|
||||
"@joplin/fork-htmlparser2@npm:^4.1.59, @joplin/fork-htmlparser2@workspace:packages/fork-htmlparser2":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@joplin/fork-htmlparser2@workspace:packages/fork-htmlparser2"
|
||||
dependencies:
|
||||
@@ -9445,7 +9445,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@joplin/fork-sax@npm:^1.2.62, @joplin/fork-sax@workspace:packages/fork-sax":
|
||||
"@joplin/fork-sax@npm:^1.2.63, @joplin/fork-sax@workspace:packages/fork-sax":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@joplin/fork-sax@workspace:packages/fork-sax"
|
||||
dependencies:
|
||||
@@ -9454,7 +9454,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@joplin/fork-uslug@npm:^2.0.0, @joplin/fork-uslug@npm:^2.0.1, @joplin/fork-uslug@workspace:packages/fork-uslug":
|
||||
"@joplin/fork-uslug@npm:^2.0.0, @joplin/fork-uslug@npm:^2.0.2, @joplin/fork-uslug@workspace:packages/fork-uslug":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@joplin/fork-uslug@workspace:packages/fork-uslug"
|
||||
dependencies:
|
||||
@@ -9466,12 +9466,12 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@joplin/htmlpack@npm:~3.4, @joplin/htmlpack@workspace:packages/htmlpack":
|
||||
"@joplin/htmlpack@npm:^3.4.1, @joplin/htmlpack@workspace:packages/htmlpack":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@joplin/htmlpack@workspace:packages/htmlpack"
|
||||
dependencies:
|
||||
"@adobe/css-tools": "npm:4.4.3"
|
||||
"@joplin/fork-htmlparser2": "npm:^4.1.58"
|
||||
"@joplin/fork-htmlparser2": "npm:^4.1.59"
|
||||
"@types/fs-extra": "npm:11.0.4"
|
||||
"@types/jest": "npm:29.5.14"
|
||||
datauri: "npm:4.1.0"
|
||||
@@ -9482,22 +9482,22 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@joplin/lib@npm:~3.4, @joplin/lib@workspace:packages/lib":
|
||||
"@joplin/lib@npm:^3.4.1, @joplin/lib@npm:~3.4, @joplin/lib@workspace:packages/lib":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@joplin/lib@workspace:packages/lib"
|
||||
dependencies:
|
||||
"@adobe/css-tools": "npm:4.4.3"
|
||||
"@aws-sdk/client-s3": "npm:3.296.0"
|
||||
"@aws-sdk/s3-request-presigner": "npm:3.296.0"
|
||||
"@joplin/fork-htmlparser2": "npm:^4.1.58"
|
||||
"@joplin/fork-sax": "npm:^1.2.62"
|
||||
"@joplin/fork-uslug": "npm:^2.0.1"
|
||||
"@joplin/htmlpack": "npm:~3.4"
|
||||
"@joplin/onenote-converter": "npm:~3.4"
|
||||
"@joplin/renderer": "npm:~3.4"
|
||||
"@joplin/turndown": "npm:^4.0.80"
|
||||
"@joplin/turndown-plugin-gfm": "npm:^1.0.62"
|
||||
"@joplin/utils": "npm:~3.4"
|
||||
"@joplin/fork-htmlparser2": "npm:^4.1.59"
|
||||
"@joplin/fork-sax": "npm:^1.2.63"
|
||||
"@joplin/fork-uslug": "npm:^2.0.2"
|
||||
"@joplin/htmlpack": "npm:^3.4.1"
|
||||
"@joplin/onenote-converter": "npm:^3.4.1"
|
||||
"@joplin/renderer": "npm:^3.4.1"
|
||||
"@joplin/turndown": "npm:^4.0.81"
|
||||
"@joplin/turndown-plugin-gfm": "npm:^1.0.63"
|
||||
"@joplin/utils": "npm:^3.4.1"
|
||||
"@testing-library/react-hooks": "npm:8.0.1"
|
||||
"@types/adm-zip": "npm:0.5.7"
|
||||
"@types/fs-extra": "npm:11.0.4"
|
||||
@@ -9575,7 +9575,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@joplin/onenote-converter@npm:~3.4, @joplin/onenote-converter@workspace:packages/onenote-converter":
|
||||
"@joplin/onenote-converter@npm:^3.4.1, @joplin/onenote-converter@npm:~3.4, @joplin/onenote-converter@workspace:packages/onenote-converter":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@joplin/onenote-converter@workspace:packages/onenote-converter"
|
||||
dependencies:
|
||||
@@ -9619,9 +9619,9 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@joplin/plugin-repo-cli@workspace:packages/plugin-repo-cli"
|
||||
dependencies:
|
||||
"@joplin/lib": "npm:~3.4"
|
||||
"@joplin/tools": "npm:~3.4"
|
||||
"@joplin/utils": "npm:~3.4"
|
||||
"@joplin/lib": "npm:^3.4.1"
|
||||
"@joplin/tools": "npm:^3.4.1"
|
||||
"@joplin/utils": "npm:^3.4.1"
|
||||
"@types/fs-extra": "npm:11.0.4"
|
||||
"@types/jest": "npm:29.5.14"
|
||||
"@types/node": "npm:18.19.103"
|
||||
@@ -9670,13 +9670,13 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@joplin/renderer@npm:~3.4, @joplin/renderer@workspace:packages/renderer":
|
||||
"@joplin/renderer@npm:^3.4.1, @joplin/renderer@npm:~3.4, @joplin/renderer@workspace:packages/renderer":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@joplin/renderer@workspace:packages/renderer"
|
||||
dependencies:
|
||||
"@joplin/fork-htmlparser2": "npm:^4.1.58"
|
||||
"@joplin/fork-uslug": "npm:^2.0.1"
|
||||
"@joplin/utils": "npm:~3.4"
|
||||
"@joplin/fork-htmlparser2": "npm:^4.1.59"
|
||||
"@joplin/fork-uslug": "npm:^2.0.2"
|
||||
"@joplin/utils": "npm:^3.4.1"
|
||||
"@types/jest": "npm:29.5.14"
|
||||
"@types/markdown-it": "npm:13.0.9"
|
||||
"@types/node": "npm:18.19.103"
|
||||
@@ -9775,15 +9775,15 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@joplin/tools@npm:~3.4, @joplin/tools@workspace:packages/tools":
|
||||
"@joplin/tools@npm:^3.4.1, @joplin/tools@npm:~3.4, @joplin/tools@workspace:packages/tools":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@joplin/tools@workspace:packages/tools"
|
||||
dependencies:
|
||||
"@docusaurus/plugin-sitemap": "npm:2.4.3"
|
||||
"@joplin/fork-htmlparser2": "npm:^4.1.58"
|
||||
"@joplin/lib": "npm:~3.4"
|
||||
"@joplin/renderer": "npm:~3.4"
|
||||
"@joplin/utils": "npm:~3.4"
|
||||
"@joplin/fork-htmlparser2": "npm:^4.1.59"
|
||||
"@joplin/lib": "npm:^3.4.1"
|
||||
"@joplin/renderer": "npm:^3.4.1"
|
||||
"@joplin/utils": "npm:^3.4.1"
|
||||
"@rmp135/sql-ts": "npm:1.18.1"
|
||||
"@types/fs-extra": "npm:11.0.4"
|
||||
"@types/jest": "npm:29.5.14"
|
||||
@@ -9852,7 +9852,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@joplin/turndown-plugin-gfm@npm:^1.0.62, @joplin/turndown-plugin-gfm@npm:~1.0.62, @joplin/turndown-plugin-gfm@workspace:packages/turndown-plugin-gfm":
|
||||
"@joplin/turndown-plugin-gfm@npm:^1.0.63, @joplin/turndown-plugin-gfm@npm:~1.0.62, @joplin/turndown-plugin-gfm@workspace:packages/turndown-plugin-gfm":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@joplin/turndown-plugin-gfm@workspace:packages/turndown-plugin-gfm"
|
||||
dependencies:
|
||||
@@ -9864,7 +9864,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@joplin/turndown@npm:^4.0.80, @joplin/turndown@npm:~4.0.80, @joplin/turndown@workspace:packages/turndown":
|
||||
"@joplin/turndown@npm:^4.0.81, @joplin/turndown@npm:~4.0.80, @joplin/turndown@workspace:packages/turndown":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@joplin/turndown@workspace:packages/turndown"
|
||||
dependencies:
|
||||
@@ -9881,26 +9881,11 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@joplin/utils@npm:~2.12":
|
||||
version: 2.12.1
|
||||
resolution: "@joplin/utils@npm:2.12.1"
|
||||
dependencies:
|
||||
async-mutex: "npm:0.4.0"
|
||||
execa: "npm:5.1.1"
|
||||
fs-extra: "npm:11.1.1"
|
||||
glob: "npm:10.3.3"
|
||||
moment: "npm:2.29.4"
|
||||
node-fetch: "npm:2.6.7"
|
||||
sprintf-js: "npm:1.1.2"
|
||||
checksum: 10/7ac4e8a82551ca78fe0e23081a05bfd1b38fa7a353fc037224144fa40c4825924ada8a5026c0bb4e5959de6d28173829a7e2e8dcd6e774d09d852a94c158bdbf
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@joplin/utils@npm:~3.4, @joplin/utils@workspace:packages/utils":
|
||||
"@joplin/utils@npm:^3.4.1, @joplin/utils@npm:~3.4, @joplin/utils@workspace:packages/utils":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@joplin/utils@workspace:packages/utils"
|
||||
dependencies:
|
||||
"@joplin/fork-htmlparser2": "npm:^4.1.58"
|
||||
"@joplin/fork-htmlparser2": "npm:^4.1.59"
|
||||
"@types/fs-extra": "npm:11.0.4"
|
||||
"@types/jest": "npm:29.5.14"
|
||||
"@types/markdown-it": "npm:13.0.9"
|
||||
@@ -9922,6 +9907,21 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@joplin/utils@npm:~2.12":
|
||||
version: 2.12.1
|
||||
resolution: "@joplin/utils@npm:2.12.1"
|
||||
dependencies:
|
||||
async-mutex: "npm:0.4.0"
|
||||
execa: "npm:5.1.1"
|
||||
fs-extra: "npm:11.1.1"
|
||||
glob: "npm:10.3.3"
|
||||
moment: "npm:2.29.4"
|
||||
node-fetch: "npm:2.6.7"
|
||||
sprintf-js: "npm:1.1.2"
|
||||
checksum: 10/7ac4e8a82551ca78fe0e23081a05bfd1b38fa7a353fc037224144fa40c4825924ada8a5026c0bb4e5959de6d28173829a7e2e8dcd6e774d09d852a94c158bdbf
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@jridgewell/gen-mapping@npm:^0.3.0":
|
||||
version: 0.3.3
|
||||
resolution: "@jridgewell/gen-mapping@npm:0.3.3"
|
||||
|
||||
Reference in New Issue
Block a user