Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
10ca4e6ff4 | ||
|
|
b0f387d029 | ||
|
|
1a8f750640 | ||
|
|
25523229a2 | ||
|
|
47835ed857 | ||
|
|
d84647bc6b | ||
|
|
7724eccd72 | ||
|
|
8ea2335225 | ||
|
|
b60d4db0df | ||
|
|
f1e17ff3c4 | ||
|
|
32954f17b6 | ||
|
|
cf70b0f882 |
12
README.md
12
README.md
@@ -1,18 +1,14 @@
|
||||
_Note_: Lume is under rewrite to using Rust Nostr as back-end and more lightweight front-end. If you need stable version, you can download v3 and below.
|
||||
|
||||
Source code for v3 is stored here: https://github.com/lumehq/lume/tree/old
|
||||
|
||||
--
|
||||
|
||||
## Introduction
|
||||
|
||||
Lume is a Nostr client for desktop include Linux, Windows and macOS. It is free and open source, you can look at source code on Github. Lume is actively improving the app and adding new features, you can expect new update every month.
|
||||
|
||||
## Usage
|
||||
|
||||
Download Lume v3 (v3.0.1-stable) for your platform here: [https://github.com/lumehq/lume/releases](https://github.com/lumehq/lume/releases)
|
||||
Download Lume v4 for your platform here: [https://github.com/lumehq/lume/releases](https://github.com/lumehq/lume/releases)
|
||||
|
||||
Supported platform: macOS, Windows and Linux
|
||||
Supported platform: macOS. Windows and Linux are coming soon.
|
||||
|
||||
Windows and Linux are availabel on v3 and below.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
|
||||
@@ -13,48 +13,51 @@
|
||||
"@lume/icons": "workspace:^",
|
||||
"@lume/ui": "workspace:^",
|
||||
"@lume/utils": "workspace:^",
|
||||
"@radix-ui/react-avatar": "^1.0.4",
|
||||
"@radix-ui/react-checkbox": "^1.0.4",
|
||||
"@radix-ui/react-collapsible": "^1.0.3",
|
||||
"@radix-ui/react-dialog": "^1.0.5",
|
||||
"@radix-ui/react-dropdown-menu": "^2.0.6",
|
||||
"@radix-ui/react-hover-card": "^1.0.7",
|
||||
"@radix-ui/react-popover": "^1.0.7",
|
||||
"@radix-ui/react-switch": "^1.0.3",
|
||||
"@radix-ui/react-tooltip": "^1.0.7",
|
||||
"@tanstack/query-sync-storage-persister": "^5.32.0",
|
||||
"@tanstack/react-query": "^5.32.0",
|
||||
"@tanstack/react-query-persist-client": "^5.32.0",
|
||||
"@tanstack/react-router": "1.29.2",
|
||||
"i18next": "^23.11.3",
|
||||
"@tanstack/query-sync-storage-persister": "^5.36.0",
|
||||
"@tanstack/react-query": "^5.36.0",
|
||||
"@tanstack/react-query-persist-client": "^5.36.0",
|
||||
"@tanstack/react-router": "1.32.5",
|
||||
"i18next": "^23.11.4",
|
||||
"i18next-resources-to-backend": "^1.2.1",
|
||||
"minidenticons": "^4.2.1",
|
||||
"nanoid": "^5.0.7",
|
||||
"nostr-tools": "^2.5.1",
|
||||
"nostr-tools": "^2.5.2",
|
||||
"react": "^18.3.1",
|
||||
"react-currency-input-field": "^3.8.0",
|
||||
"react-dom": "^18.3.1",
|
||||
"react-hook-form": "^7.51.3",
|
||||
"react-hook-form": "^7.51.4",
|
||||
"react-hotkeys-hook": "^4.5.0",
|
||||
"react-i18next": "^14.1.1",
|
||||
"slate": "^0.102.0",
|
||||
"react-string-replace": "^1.1.1",
|
||||
"slate": "^0.103.0",
|
||||
"slate-react": "^0.102.0",
|
||||
"sonner": "^1.4.41",
|
||||
"use-debounce": "^10.0.0",
|
||||
"virtua": "^0.30.2"
|
||||
"virtua": "^0.31.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@lume/tailwindcss": "workspace:^",
|
||||
"@lume/tsconfig": "workspace:^",
|
||||
"@lume/types": "workspace:^",
|
||||
"@tanstack/router-devtools": "^1.31.3",
|
||||
"@tanstack/router-vite-plugin": "^1.30.0",
|
||||
"@types/react": "^18.3.1",
|
||||
"@tanstack/router-devtools": "^1.32.5",
|
||||
"@tanstack/router-vite-plugin": "^1.32.2",
|
||||
"@types/react": "^18.3.2",
|
||||
"@types/react-dom": "^18.3.0",
|
||||
"@vitejs/plugin-react-swc": "^3.6.0",
|
||||
"autoprefixer": "^10.4.19",
|
||||
"postcss": "^8.4.38",
|
||||
"tailwindcss": "^3.4.3",
|
||||
"typescript": "^5.4.5",
|
||||
"vite": "^5.2.10",
|
||||
"vite": "^5.2.11",
|
||||
"vite-plugin-top-level-await": "^1.4.1",
|
||||
"vite-tsconfig-paths": "^4.3.2"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { Ark } from "@lume/ark";
|
||||
import { CancelCircleIcon, CheckCircleIcon, InfoCircleIcon } from "@lume/icons";
|
||||
import { createSyncStoragePersister } from "@tanstack/query-sync-storage-persister";
|
||||
import { QueryClient } from "@tanstack/react-query";
|
||||
import { PersistQueryClientProvider } from "@tanstack/react-query-persist-client";
|
||||
@@ -8,7 +7,6 @@ import { platform } from "@tauri-apps/plugin-os";
|
||||
import React, { StrictMode } from "react";
|
||||
import ReactDOM from "react-dom/client";
|
||||
import { I18nextProvider } from "react-i18next";
|
||||
import { Toaster } from "sonner";
|
||||
import "./app.css";
|
||||
import i18n from "./locale";
|
||||
import { routeTree } from "./router.gen"; // auto generated file
|
||||
@@ -29,6 +27,18 @@ const router = createRouter({
|
||||
queryClient,
|
||||
platform: platformName,
|
||||
},
|
||||
Wrap: ({ children }) => {
|
||||
return (
|
||||
<I18nextProvider i18n={i18n} defaultNS={"translation"}>
|
||||
<PersistQueryClientProvider
|
||||
client={queryClient}
|
||||
persistOptions={{ persister }}
|
||||
>
|
||||
{children}
|
||||
</PersistQueryClientProvider>
|
||||
</I18nextProvider>
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
// Register things for typesafety
|
||||
@@ -48,25 +58,8 @@ const rootElement = document.getElementById("root")!;
|
||||
if (!rootElement.innerHTML) {
|
||||
const root = ReactDOM.createRoot(rootElement);
|
||||
root.render(
|
||||
<I18nextProvider i18n={i18n} defaultNS={"translation"}>
|
||||
<PersistQueryClientProvider
|
||||
client={queryClient}
|
||||
persistOptions={{ persister }}
|
||||
>
|
||||
<StrictMode>
|
||||
<Toaster
|
||||
position="bottom-right"
|
||||
icons={{
|
||||
success: <CheckCircleIcon className="size-5" />,
|
||||
info: <InfoCircleIcon className="size-5" />,
|
||||
error: <CancelCircleIcon className="size-5" />,
|
||||
}}
|
||||
closeButton
|
||||
theme="system"
|
||||
/>
|
||||
<App />
|
||||
</StrictMode>
|
||||
</PersistQueryClientProvider>
|
||||
</I18nextProvider>,
|
||||
<StrictMode>
|
||||
<App />
|
||||
</StrictMode>,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { User } from "@lume/ui";
|
||||
import { User } from "@/components/user";
|
||||
import { getBitcoinDisplayValues } from "@lume/utils";
|
||||
import { useRouteContext } from "@tanstack/react-router";
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
|
||||
@@ -5,7 +5,7 @@ import { invoke } from "@tauri-apps/api/core";
|
||||
import { getCurrent } from "@tauri-apps/api/webviewWindow";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
|
||||
export function Col({
|
||||
export function Column({
|
||||
column,
|
||||
account,
|
||||
isScroll,
|
||||
@@ -17,68 +17,55 @@ export function Col({
|
||||
isResize: boolean;
|
||||
}) {
|
||||
const container = useRef<HTMLDivElement>(null);
|
||||
const [webview, setWebview] = useState<string | undefined>(undefined);
|
||||
const webviewLabel = `column-${account}_${column.label}`;
|
||||
|
||||
const [isCreated, setIsCreated] = useState(false);
|
||||
|
||||
const repositionWebview = async () => {
|
||||
if (webview && webview.length > 1) {
|
||||
const newRect = container.current.getBoundingClientRect();
|
||||
await invoke("reposition_column", {
|
||||
label: webview,
|
||||
x: newRect.x,
|
||||
y: newRect.y,
|
||||
});
|
||||
}
|
||||
const newRect = container.current.getBoundingClientRect();
|
||||
await invoke("reposition_column", {
|
||||
label: webviewLabel,
|
||||
x: newRect.x,
|
||||
y: newRect.y,
|
||||
});
|
||||
};
|
||||
|
||||
const resizeWebview = async () => {
|
||||
if (webview && webview.length > 1) {
|
||||
const newRect = container.current.getBoundingClientRect();
|
||||
await invoke("resize_column", {
|
||||
label: webview,
|
||||
width: newRect.width,
|
||||
height: newRect.height,
|
||||
});
|
||||
}
|
||||
const newRect = container.current.getBoundingClientRect();
|
||||
await invoke("resize_column", {
|
||||
label: webviewLabel,
|
||||
width: newRect.width,
|
||||
height: newRect.height,
|
||||
});
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
resizeWebview();
|
||||
if (isCreated) resizeWebview();
|
||||
}, [isResize]);
|
||||
|
||||
useEffect(() => {
|
||||
if (isScroll) repositionWebview();
|
||||
if (isScroll && isCreated) repositionWebview();
|
||||
}, [isScroll]);
|
||||
|
||||
useEffect(() => {
|
||||
(async () => {
|
||||
if (webview && webview.length > 1) return;
|
||||
const rect = container.current.getBoundingClientRect();
|
||||
const url = `${column.content}?account=${account}&label=${column.label}&name=${column.name}`;
|
||||
|
||||
const rect = container.current.getBoundingClientRect();
|
||||
const windowLabel = `column-${column.label}`;
|
||||
const url = `${column.content}?account=${account}&label=${column.label}&name=${column.name}`;
|
||||
|
||||
// create new webview
|
||||
const label: string = await invoke("create_column", {
|
||||
label: windowLabel,
|
||||
x: rect.x,
|
||||
y: rect.y,
|
||||
width: rect.width,
|
||||
height: rect.height,
|
||||
url,
|
||||
});
|
||||
|
||||
setWebview(label);
|
||||
})();
|
||||
// create new webview
|
||||
invoke("create_column", {
|
||||
label: webviewLabel,
|
||||
x: rect.x,
|
||||
y: rect.y,
|
||||
width: rect.width,
|
||||
height: rect.height,
|
||||
url,
|
||||
}).then(() => setIsCreated(true));
|
||||
|
||||
// close webview when unmounted
|
||||
return () => {
|
||||
if (webview && webview.length > 1) {
|
||||
invoke("close_column", {
|
||||
label: webview,
|
||||
});
|
||||
}
|
||||
invoke("close_column", { label: webviewLabel });
|
||||
};
|
||||
}, [webview]);
|
||||
}, [account]);
|
||||
|
||||
return (
|
||||
<div className="h-full w-[440px] shrink-0 p-2">
|
||||
@@ -1,6 +1,6 @@
|
||||
import { ThreadIcon } from "@lume/icons";
|
||||
import type { Event } from "@lume/types";
|
||||
import { Note } from "@lume/ui";
|
||||
import { Note } from "@/components/note";
|
||||
import { cn } from "@lume/utils";
|
||||
import { useRouteContext } from "@tanstack/react-router";
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import { useRouteContext } from "@tanstack/react-router";
|
||||
import { useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { toast } from "sonner";
|
||||
import { Spinner } from "../../spinner";
|
||||
import { Spinner } from "@lume/ui";
|
||||
import { useNoteContext } from "../provider";
|
||||
|
||||
export function NoteRepost({ large = false }: { large?: boolean }) {
|
||||
@@ -9,7 +9,6 @@ import { NoteContentLarge } from "./contentLarge";
|
||||
import { NoteMenu } from "./menu";
|
||||
import { NoteProvider } from "./provider";
|
||||
import { NoteRoot } from "./root";
|
||||
import { NoteThread } from "./thread";
|
||||
import { NoteUser } from "./user";
|
||||
|
||||
export const Note = {
|
||||
@@ -24,6 +23,5 @@ export const Note = {
|
||||
Zap: NoteZap,
|
||||
Open: NoteOpenThread,
|
||||
Child: NoteChild,
|
||||
Thread: NoteThread,
|
||||
Activity: NoteActivity,
|
||||
};
|
||||
@@ -2,8 +2,8 @@ import { useEvent } from "@lume/ark";
|
||||
import { LinkIcon } from "@lume/icons";
|
||||
import { useRouteContext } from "@tanstack/react-router";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { User } from "../../user";
|
||||
import { cn } from "@lume/utils";
|
||||
import { User } from "@/components/user";
|
||||
|
||||
export function MentionNote({
|
||||
eventId,
|
||||
@@ -1,5 +1,5 @@
|
||||
import { WebviewWindow } from "@tauri-apps/api/webviewWindow";
|
||||
import { Carousel, CarouselItem } from "../../carousel";
|
||||
import { Carousel, CarouselItem } from "@lume/ui";
|
||||
|
||||
export function Images({ urls }: { urls: string[] }) {
|
||||
const open = async (url: string) => {
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Carousel, CarouselItem } from "../../carousel";
|
||||
import { Carousel, CarouselItem } from "@lume/ui";
|
||||
|
||||
export function Videos({ urls }: { urls: string[] }) {
|
||||
if (urls.length === 1) {
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { Event } from "@lume/types";
|
||||
import { Note } from "@lume/ui";
|
||||
import { Note } from "@/components/note";
|
||||
import { cn } from "@lume/utils";
|
||||
|
||||
export function Notification({
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { QuoteIcon } from "@lume/icons";
|
||||
import type { Event } from "@lume/types";
|
||||
import { Note } from "@lume/ui";
|
||||
import { Note } from "@/components/note";
|
||||
import { cn } from "@lume/utils";
|
||||
|
||||
export function Quote({
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import type { Event } from "@lume/types";
|
||||
import { Note, Spinner, User } from "@lume/ui";
|
||||
import { Spinner } from "@lume/ui";
|
||||
import { Note } from "@/components/note";
|
||||
import { User } from "@/components/user";
|
||||
import { cn } from "@lume/utils";
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { useRouteContext } from "@tanstack/react-router";
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { Event } from "@lume/types";
|
||||
import { Note } from "@lume/ui";
|
||||
import { cn } from "@lume/utils";
|
||||
import { Note } from "@/components/note";
|
||||
|
||||
export function TextNote({
|
||||
event,
|
||||
|
||||
@@ -2,13 +2,16 @@ import { cn } from "@lume/utils";
|
||||
import { useRouteContext } from "@tanstack/react-router";
|
||||
import { useEffect, useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Spinner } from "../spinner";
|
||||
import { Spinner } from "@lume/ui";
|
||||
import { useUserContext } from "./provider";
|
||||
|
||||
export function UserFollowButton({
|
||||
simple = false,
|
||||
className,
|
||||
}: { simple?: boolean; className?: string }) {
|
||||
}: {
|
||||
simple?: boolean;
|
||||
className?: string;
|
||||
}) {
|
||||
const { ark } = useRouteContext({ strict: false });
|
||||
const user = useUserContext();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Col } from "@/components/col";
|
||||
import { Column } from "@/components/column";
|
||||
import { Toolbar } from "@/components/toolbar";
|
||||
import { ArrowLeftIcon, ArrowRightIcon } from "@lume/icons";
|
||||
import type { EventColumns, LumeColumn } from "@lume/types";
|
||||
@@ -13,20 +13,19 @@ import { useDebouncedCallback } from "use-debounce";
|
||||
import { VList, type VListHandle } from "virtua";
|
||||
|
||||
export const Route = createFileRoute("/$account/home")({
|
||||
beforeLoad: async ({ context }) => {
|
||||
loader: async ({ context }) => {
|
||||
try {
|
||||
const ark = context.ark;
|
||||
const resourcePath = await resolveResource(
|
||||
"resources/system_columns.json",
|
||||
);
|
||||
const systemColumns: LumeColumn[] = JSON.parse(
|
||||
await readTextFile(resourcePath),
|
||||
);
|
||||
const userColumns = await ark.get_columns();
|
||||
const userColumns = await context.ark.get_columns();
|
||||
if (userColumns.length > 0) {
|
||||
return userColumns;
|
||||
} else {
|
||||
const systemPath = "resources/system_columns.json";
|
||||
const resourcePath = await resolveResource(systemPath);
|
||||
const resourceFile = await readTextFile(resourcePath);
|
||||
const systemColumns: LumeColumn[] = JSON.parse(resourceFile);
|
||||
|
||||
return {
|
||||
storedColumns: !userColumns.length ? systemColumns : userColumns,
|
||||
};
|
||||
return systemColumns;
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(String(e));
|
||||
}
|
||||
@@ -35,13 +34,14 @@ export const Route = createFileRoute("/$account/home")({
|
||||
});
|
||||
|
||||
function Screen() {
|
||||
const userSavedColumns = Route.useLoaderData();
|
||||
const vlistRef = useRef<VListHandle>(null);
|
||||
|
||||
const { account } = Route.useParams();
|
||||
const { ark, storedColumns } = Route.useRouteContext();
|
||||
const { ark } = Route.useRouteContext();
|
||||
|
||||
const [selectedIndex, setSelectedIndex] = useState(-1);
|
||||
const [columns, setColumns] = useState(storedColumns);
|
||||
const [columns, setColumns] = useState([]);
|
||||
const [isScroll, setIsScroll] = useState(false);
|
||||
const [isResize, setIsResize] = useState(false);
|
||||
|
||||
@@ -114,6 +114,10 @@ function Screen() {
|
||||
150,
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
setColumns(userSavedColumns);
|
||||
}, [userSavedColumns]);
|
||||
|
||||
useEffect(() => {
|
||||
// save state
|
||||
ark.set_columns(columns);
|
||||
@@ -148,9 +152,10 @@ function Screen() {
|
||||
onScroll={() => setIsScroll(true)}
|
||||
onScrollEnd={() => setIsScroll(false)}
|
||||
className="scrollbar-none h-full w-full overflow-x-auto focus:outline-none"
|
||||
cache={null}
|
||||
>
|
||||
{columns.map((column) => (
|
||||
<Col
|
||||
<Column
|
||||
key={column.label}
|
||||
column={column}
|
||||
account={account}
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
import { BellIcon, ComposeFilledIcon, PlusIcon, SearchIcon } from "@lume/icons";
|
||||
import {
|
||||
BellIcon,
|
||||
ComposeFilledIcon,
|
||||
HorizontalDotsIcon,
|
||||
PlusIcon,
|
||||
SearchIcon,
|
||||
} from "@lume/icons";
|
||||
import { Event, Kind } from "@lume/types";
|
||||
import { User } from "@lume/ui";
|
||||
import { User } from "@/components/user";
|
||||
import {
|
||||
cn,
|
||||
decodeZapInvoice,
|
||||
@@ -10,7 +16,9 @@ import {
|
||||
import { Outlet, createFileRoute } from "@tanstack/react-router";
|
||||
import { invoke } from "@tauri-apps/api/core";
|
||||
import { getCurrent } from "@tauri-apps/api/window";
|
||||
import { useEffect, useState } from "react";
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
import { toast } from "sonner";
|
||||
import * as Popover from "@radix-ui/react-popover";
|
||||
|
||||
export const Route = createFileRoute("/$account")({
|
||||
beforeLoad: async ({ context }) => {
|
||||
@@ -39,8 +47,8 @@ function Screen() {
|
||||
<Accounts />
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => navigate({ to: "/landing" })}
|
||||
className="inline-flex size-8 items-center justify-center rounded-full bg-black/10 text-neutral-800 hover:bg-black/20 dark:bg-white/10 dark:text-neutral-200 dark:hover:bg-white/20"
|
||||
onClick={() => navigate({ to: "/landing/" })}
|
||||
className="inline-flex size-8 shrink-0 items-center justify-center rounded-full bg-black/10 text-neutral-800 hover:bg-black/20 dark:bg-white/10 dark:text-neutral-200 dark:hover:bg-white/20"
|
||||
>
|
||||
<PlusIcon className="size-5" />
|
||||
</button>
|
||||
@@ -73,43 +81,110 @@ function Screen() {
|
||||
}
|
||||
|
||||
function Accounts() {
|
||||
const navigate = Route.useNavigate();
|
||||
const { ark, accounts } = Route.useRouteContext();
|
||||
const { account } = Route.useParams();
|
||||
|
||||
const changeAccount = async (npub: string) => {
|
||||
if (npub === account) return;
|
||||
const [windowWidth, setWindowWidth] = useState<number>(null);
|
||||
|
||||
const navigate = Route.useNavigate();
|
||||
const sortedList = useMemo(() => {
|
||||
const list = accounts;
|
||||
|
||||
for (const [i, item] of list.entries()) {
|
||||
if (item === account) {
|
||||
list.splice(i, 1);
|
||||
list.unshift(item);
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
}, [accounts]);
|
||||
|
||||
const changeAccount = async (npub: string) => {
|
||||
if (npub === account) {
|
||||
return await ark.open_profile(account);
|
||||
}
|
||||
|
||||
// change current account and update signer
|
||||
const select = await ark.load_selected_account(npub);
|
||||
|
||||
if (select) {
|
||||
return navigate({ to: "/$account/home", params: { account: npub } });
|
||||
} else {
|
||||
toast.warning("Something wrong.");
|
||||
}
|
||||
};
|
||||
|
||||
const getWindowDimensions = () => {
|
||||
const { innerWidth: width, innerHeight: height } = window;
|
||||
return {
|
||||
width,
|
||||
height,
|
||||
};
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
function handleResize() {
|
||||
setWindowWidth(getWindowDimensions().width);
|
||||
}
|
||||
|
||||
if (!windowWidth) setWindowWidth(getWindowDimensions().width);
|
||||
window.addEventListener("resize", handleResize);
|
||||
|
||||
return () => window.removeEventListener("resize", handleResize);
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<div data-tauri-drag-region className="flex items-center gap-3">
|
||||
{accounts.map((user) => (
|
||||
<button key={user} type="button" onClick={() => changeAccount(user)}>
|
||||
<User.Provider pubkey={user}>
|
||||
<User.Root
|
||||
className={cn(
|
||||
"rounded-full",
|
||||
user === account
|
||||
? "ring-1 ring-teal-500 ring-offset-2 ring-offset-neutral-200 dark:ring-offset-neutral-950"
|
||||
: "",
|
||||
)}
|
||||
>
|
||||
<User.Avatar
|
||||
{sortedList
|
||||
.slice(0, windowWidth > 500 ? account.length : 2)
|
||||
.map((user) => (
|
||||
<button key={user} type="button" onClick={() => changeAccount(user)}>
|
||||
<User.Provider pubkey={user}>
|
||||
<User.Root
|
||||
className={cn(
|
||||
"aspect-square h-auto rounded-full object-cover",
|
||||
user === account ? "w-7" : "w-8",
|
||||
"shrink-0 rounded-full transition-all ease-in-out duration-150 will-change-auto",
|
||||
user === account
|
||||
? "ring-1 ring-teal-500 ring-offset-2 ring-offset-neutral-200 dark:ring-offset-neutral-950"
|
||||
: "",
|
||||
)}
|
||||
/>
|
||||
</User.Root>
|
||||
</User.Provider>
|
||||
</button>
|
||||
))}
|
||||
>
|
||||
<User.Avatar
|
||||
className={cn(
|
||||
"aspect-square h-auto rounded-full object-cover transition-all ease-in-out duration-150 will-change-auto",
|
||||
user === account ? "w-7" : "w-8",
|
||||
)}
|
||||
/>
|
||||
</User.Root>
|
||||
</User.Provider>
|
||||
</button>
|
||||
))}
|
||||
{accounts.length >= 3 && windowWidth <= 700 ? (
|
||||
<Popover.Root>
|
||||
<Popover.Trigger className="inline-flex size-8 shrink-0 items-center justify-center rounded-full bg-black/10 text-neutral-800 hover:bg-black/20 dark:bg-white/10 dark:text-neutral-200 dark:hover:bg-white/20">
|
||||
<HorizontalDotsIcon className="size-5" />
|
||||
</Popover.Trigger>
|
||||
<Popover.Portal>
|
||||
<Popover.Content className="flex h-11 select-none items-center justify-center rounded-md bg-neutral-950 p-1 text-sm text-neutral-50 will-change-[transform,opacity] data-[state=delayed-open]:data-[side=bottom]:animate-slideUpAndFade data-[state=delayed-open]:data-[side=left]:animate-slideRightAndFade data-[state=delayed-open]:data-[side=right]:animate-slideLeftAndFade data-[state=delayed-open]:data-[side=top]:animate-slideDownAndFade dark:bg-neutral-50 dark:text-neutral-950">
|
||||
{sortedList.slice(2).map((user) => (
|
||||
<button
|
||||
key={user}
|
||||
type="button"
|
||||
onClick={() => changeAccount(user)}
|
||||
className="size-9 inline-flex items-center justify-center hover:bg-white/10 rounded-md"
|
||||
>
|
||||
<User.Provider pubkey={user}>
|
||||
<User.Root className="rounded-full ring-1 ring-white/10">
|
||||
<User.Avatar className="size-7 aspect-square h-auto rounded-full object-cover" />
|
||||
</User.Root>
|
||||
</User.Provider>
|
||||
</button>
|
||||
))}
|
||||
<Popover.Arrow className="fill-neutral-950 dark:fill-neutral-50" />
|
||||
</Popover.Content>
|
||||
</Popover.Portal>
|
||||
</Popover.Root>
|
||||
) : null}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
import type { Ark } from "@lume/ark";
|
||||
import { CheckCircleIcon, InfoCircleIcon, CancelCircleIcon } from "@lume/icons";
|
||||
import type { Interests, Metadata, Settings } from "@lume/types";
|
||||
import { Spinner } from "@lume/ui";
|
||||
import type { QueryClient } from "@tanstack/react-query";
|
||||
import { Outlet, createRootRouteWithContext } from "@tanstack/react-router";
|
||||
import type { Platform } from "@tauri-apps/plugin-os";
|
||||
import type { Descendant } from "slate";
|
||||
import { Toaster } from "sonner";
|
||||
|
||||
type EditorElement = {
|
||||
type: string;
|
||||
@@ -31,7 +33,21 @@ interface RouterContext {
|
||||
}
|
||||
|
||||
export const Route = createRootRouteWithContext<RouterContext>()({
|
||||
component: () => <Outlet />,
|
||||
component: () => (
|
||||
<>
|
||||
<Toaster
|
||||
position="bottom-right"
|
||||
icons={{
|
||||
success: <CheckCircleIcon className="size-5" />,
|
||||
info: <InfoCircleIcon className="size-5" />,
|
||||
error: <CancelCircleIcon className="size-5" />,
|
||||
}}
|
||||
closeButton
|
||||
theme="system"
|
||||
/>
|
||||
<Outlet />
|
||||
</>
|
||||
),
|
||||
pendingComponent: Pending,
|
||||
wrapInSuspense: true,
|
||||
});
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
|
||||
export const Route = createFileRoute("/activity/$account/messages")({
|
||||
component: () => <div>Hello /activity/$account/messages!</div>,
|
||||
});
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Note, Spinner } from "@lume/ui";
|
||||
import { Spinner } from "@lume/ui";
|
||||
import { Note } from "@/components/note";
|
||||
import { Await, createFileRoute, defer } from "@tanstack/react-router";
|
||||
import { Suspense } from "react";
|
||||
import { Virtualizer } from "virtua";
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Note, Spinner, User } from "@lume/ui";
|
||||
import { User } from "@/components/user";
|
||||
import { Spinner } from "@lume/ui";
|
||||
import { decodeZapInvoice } from "@lume/utils";
|
||||
import { Await, createFileRoute, defer } from "@tanstack/react-router";
|
||||
import { Suspense } from "react";
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { CheckCircleIcon } from "@lume/icons";
|
||||
import type { ColumnRouteSearch } from "@lume/types";
|
||||
import { Spinner, User } from "@lume/ui";
|
||||
import { Spinner } from "@lume/ui";
|
||||
import { User } from "@/components/user";
|
||||
import { createFileRoute, useRouter } from "@tanstack/react-router";
|
||||
import { useState } from "react";
|
||||
import { toast } from "sonner";
|
||||
|
||||
@@ -4,10 +4,10 @@ import * as Tooltip from "@radix-ui/react-tooltip";
|
||||
import * as DropdownMenu from "@radix-ui/react-dropdown-menu";
|
||||
import { useEffect, useState } from "react";
|
||||
import { useRouteContext } from "@tanstack/react-router";
|
||||
import { User } from "@lume/ui";
|
||||
import { useSlateStatic } from "slate-react";
|
||||
import type { Contact } from "@lume/types";
|
||||
import { toast } from "sonner";
|
||||
import { User } from "@/components/user";
|
||||
|
||||
export function MentionButton({ className }: { className?: string }) {
|
||||
const editor = useSlateStatic();
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { ComposeFilledIcon, TrashIcon } from "@lume/icons";
|
||||
import { Spinner } from "@lume/ui";
|
||||
import { MentionNote } from "@lume/ui/src/note/mentions/note";
|
||||
import {
|
||||
cn,
|
||||
insertImage,
|
||||
@@ -25,6 +24,8 @@ import {
|
||||
import { MediaButton } from "./-components/media";
|
||||
import { NsfwToggle } from "./-components/nsfw";
|
||||
import { MentionButton } from "./-components/mention";
|
||||
import { MentionNote } from "@/components/note/mentions/note";
|
||||
import { toast } from "sonner";
|
||||
|
||||
type EditorSearch = {
|
||||
reply_to: string;
|
||||
@@ -35,7 +36,7 @@ export const Route = createFileRoute("/editor/")({
|
||||
validateSearch: (search: Record<string, string>): EditorSearch => {
|
||||
return {
|
||||
reply_to: search.reply_to,
|
||||
quote: search.quote === "true" ?? false,
|
||||
quote: search.quote === "true" || false,
|
||||
};
|
||||
},
|
||||
beforeLoad: async ({ search }) => {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { useEvent } from "@lume/ark";
|
||||
import type { Event } from "@lume/types";
|
||||
import { Box, Container, Note, Spinner } from "@lume/ui";
|
||||
import { Box, Container, Spinner } from "@lume/ui";
|
||||
import { Note } from "@/components/note";
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { WindowVirtualizer } from "virtua";
|
||||
import { ReplyList } from "./-components/replyList";
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import type { EventWithReplies } from "@lume/types";
|
||||
import { Note } from "@lume/ui";
|
||||
import { cn } from "@lume/utils";
|
||||
import { SubReply } from "./subReply";
|
||||
import { Note } from "@/components/note";
|
||||
|
||||
export function Reply({ event }: { event: EventWithReplies }) {
|
||||
return (
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { Event } from "@lume/types";
|
||||
import { Note } from "@lume/ui";
|
||||
import { Note } from "@/components/note";
|
||||
|
||||
export function SubReply({ event }: { event: Event; rootEventId?: string }) {
|
||||
return (
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { PlusIcon } from "@lume/icons";
|
||||
import { Spinner, User } from "@lume/ui";
|
||||
import { Spinner } from "@lume/ui";
|
||||
import { User } from "@/components/user";
|
||||
import { checkForAppUpdates } from "@lume/utils";
|
||||
import { Link } from "@tanstack/react-router";
|
||||
import { createFileRoute, redirect } from "@tanstack/react-router";
|
||||
@@ -17,7 +18,7 @@ export const Route = createFileRoute("/")({
|
||||
|
||||
if (!accounts.length) {
|
||||
throw redirect({
|
||||
to: "/landing",
|
||||
to: "/landing/",
|
||||
replace: true,
|
||||
});
|
||||
}
|
||||
@@ -67,7 +68,7 @@ function Screen() {
|
||||
<h2 className="mb-1 text-2xl">{currentDate}</h2>
|
||||
<h2 className="text-2xl font-semibold">Welcome back!</h2>
|
||||
</div>
|
||||
<div className="flex items-center justify-center gap-6">
|
||||
<div className="flex flex-wrap px-3 items-center justify-center gap-6">
|
||||
{loading ? (
|
||||
<div className="inline-flex size-6 items-center justify-center">
|
||||
<Spinner className="size-6 text-white" />
|
||||
@@ -88,10 +89,10 @@ function Screen() {
|
||||
</User.Provider>
|
||||
</button>
|
||||
))}
|
||||
<Link to="/landing">
|
||||
<Link to="/landing/">
|
||||
<div className="flex h-36 w-32 flex-col items-center justify-center gap-4 rounded-2xl p-2 text-white hover:bg-white/10 dark:hover:bg-black/10">
|
||||
<div className="flex size-20 items-center justify-center rounded-full bg-white/20 dark:bg-black/20">
|
||||
<PlusIcon className="size-5" />
|
||||
<PlusIcon className="size-8" />
|
||||
</div>
|
||||
<p className="text-lg font-medium leading-tight">Add</p>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { ArrowRightIcon, CancelIcon } from "@lume/icons";
|
||||
import type { ColumnRouteSearch, LumeColumn } from "@lume/types";
|
||||
import { Spinner, User } from "@lume/ui";
|
||||
import { Spinner } from "@lume/ui";
|
||||
import { User } from "@/components/user";
|
||||
import { cn } from "@lume/utils";
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { invoke } from "@tauri-apps/api/core";
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { SearchIcon } from "@lume/icons";
|
||||
import { type Event, Kind } from "@lume/types";
|
||||
import { Note, Spinner, User } from "@lume/ui";
|
||||
import { Spinner } from "@lume/ui";
|
||||
import { Note } from "@/components/note";
|
||||
import { User } from "@/components/user";
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { useEffect, useState } from "react";
|
||||
import { toast } from "sonner";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { User } from "@/components/user";
|
||||
import type { Account } from "@lume/types";
|
||||
import { User } from "@lume/ui";
|
||||
import { displayNsec } from "@lume/utils";
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { invoke } from "@tauri-apps/api/core";
|
||||
|
||||
@@ -19,7 +19,7 @@ export const Route = createFileRoute("/settings/user")({
|
||||
|
||||
function Screen() {
|
||||
const { ark, profile } = Route.useRouteContext();
|
||||
const { register, handleSubmit } = useForm();
|
||||
const { register, handleSubmit } = useForm({ defaultValues: profile });
|
||||
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [picture, setPicture] = useState<string>("");
|
||||
@@ -28,8 +28,8 @@ function Screen() {
|
||||
try {
|
||||
setLoading(true);
|
||||
|
||||
const profile = { ...data, picture };
|
||||
await ark.create_profile(profile);
|
||||
const newProfile: Metadata = { ...profile, ...data, picture };
|
||||
await ark.create_profile(newProfile);
|
||||
|
||||
setLoading(false);
|
||||
} catch (e) {
|
||||
@@ -87,7 +87,7 @@ function Screen() {
|
||||
</label>
|
||||
<input
|
||||
name="display_name"
|
||||
{...register("display_name", { required: true, minLength: 1 })}
|
||||
{...register("display_name")}
|
||||
spellCheck={false}
|
||||
className="h-9 w-full rounded-lg border-neutral-300 bg-transparent px-3 placeholder:text-neutral-500 focus:border-blue-500 focus:ring focus:ring-blue-200 dark:border-neutral-700 dark:placeholder:text-neutral-400 dark:focus:ring-blue-800"
|
||||
/>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Spinner, User } from "@lume/ui";
|
||||
import { Spinner } from "@lume/ui";
|
||||
import { User } from "@/components/user";
|
||||
import { Await, defer } from "@tanstack/react-router";
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { Suspense } from "react";
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Box, Container, Spinner, User } from "@lume/ui";
|
||||
import { Box, Container, Spinner } from "@lume/ui";
|
||||
import { User } from "@/components/user";
|
||||
import { createFileRoute, defer } from "@tanstack/react-router";
|
||||
import { WindowVirtualizer } from "virtua";
|
||||
import { Conversation } from "@/components/conversation";
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { Balance } from "@/components/balance";
|
||||
import { Box, Container, User } from "@lume/ui";
|
||||
import { Box, Container } from "@lume/ui";
|
||||
import { User } from "@/components/user";
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
import { getCurrent } from "@tauri-apps/api/webviewWindow";
|
||||
import { useState } from "react";
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
"@astrojs/check": "^0.5.10",
|
||||
"@astrojs/tailwind": "^5.1.0",
|
||||
"@fontsource/geist-mono": "^5.0.3",
|
||||
"astro": "^4.7.0",
|
||||
"astro": "^4.8.3",
|
||||
"astro-seo-meta": "^4.1.1",
|
||||
"astro-seo-schema": "^4.0.2",
|
||||
"schema-dts": "^1.1.2",
|
||||
|
||||
24
package.json
24
package.json
@@ -20,17 +20,17 @@
|
||||
"node": ">=18"
|
||||
},
|
||||
"dependencies": {
|
||||
"@tauri-apps/api": "2.0.0-beta.7",
|
||||
"@tauri-apps/plugin-autostart": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-clipboard-manager": "2.1.0-beta.0",
|
||||
"@tauri-apps/plugin-dialog": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-fs": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-http": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-notification": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-os": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-process": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-shell": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-updater": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-upload": "2.0.0-beta.3"
|
||||
"@tauri-apps/api": "^2.0.0-beta.7",
|
||||
"@tauri-apps/plugin-autostart": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-clipboard-manager": "2.1.0-beta.1",
|
||||
"@tauri-apps/plugin-dialog": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-fs": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-http": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-notification": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-os": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-process": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-shell": "2.0.0-beta.4",
|
||||
"@tauri-apps/plugin-updater": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-upload": "2.0.0-beta.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
"main": "./src/index.ts",
|
||||
"dependencies": {
|
||||
"@lume/utils": "workspace:^",
|
||||
"@tanstack/react-query": "^5.32.0",
|
||||
"@tanstack/react-query": "^5.36.0",
|
||||
"react": "^18.3.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@lume/tsconfig": "workspace:^",
|
||||
"@lume/types": "workspace:^",
|
||||
"@types/react": "^18.3.1",
|
||||
"@types/react": "^18.3.2",
|
||||
"typescript": "^5.4.5"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -207,12 +207,10 @@ export class Ark {
|
||||
global?: boolean,
|
||||
) {
|
||||
try {
|
||||
let until: string = undefined;
|
||||
const until: string = asOf && asOf > 0 ? asOf.toString() : undefined;
|
||||
const isGlobal = global ?? false;
|
||||
const seens = new Set<string>();
|
||||
|
||||
if (asOf && asOf > 0) until = asOf.toString();
|
||||
|
||||
const seenIds = new Set<string>();
|
||||
const nostrEvents: Event[] = await invoke("get_events", {
|
||||
limit,
|
||||
until,
|
||||
@@ -220,39 +218,31 @@ export class Ark {
|
||||
global: isGlobal,
|
||||
});
|
||||
|
||||
// remove duplicate event
|
||||
for (const event of nostrEvents) {
|
||||
if (event.kind === Kind.Repost) {
|
||||
const repostId = event.tags.find((tag) => tag[0] === "e")?.[1];
|
||||
seenIds.add(repostId);
|
||||
const events = nostrEvents.filter((event) => {
|
||||
const eTags = event.tags.filter((el) => el[0] === "e");
|
||||
const ids = eTags.map((item) => item[1]);
|
||||
const isDup = ids.some((id) => seens.has(id));
|
||||
|
||||
// Add found ids to seen list
|
||||
for (const id of ids) {
|
||||
seens.add(id);
|
||||
}
|
||||
|
||||
const eventIds = event.tags
|
||||
.filter((el) => el[0] === "e")
|
||||
?.map((item) => item[1]);
|
||||
// Filter NSFW event
|
||||
if (this.settings?.nsfw) {
|
||||
const wTags = event.tags.filter((t) => t[0] === "content-warning");
|
||||
const isLewd = wTags.length > 0;
|
||||
|
||||
if (eventIds?.length) {
|
||||
for (const id of eventIds) {
|
||||
seenIds.add(id);
|
||||
}
|
||||
return !isDup && !isLewd;
|
||||
}
|
||||
}
|
||||
|
||||
const events = nostrEvents
|
||||
.filter((event) => !seenIds.has(event.id))
|
||||
.sort((a, b) => b.created_at - a.created_at);
|
||||
|
||||
if (this.settings?.nsfw) {
|
||||
return events.filter(
|
||||
(event) =>
|
||||
event.tags.filter((event) => event[0] === "content-warning")
|
||||
.length > 0,
|
||||
);
|
||||
}
|
||||
// Filter duplicate event
|
||||
return !isDup;
|
||||
});
|
||||
|
||||
return events;
|
||||
} catch (e) {
|
||||
console.info(String(e));
|
||||
console.error("[get_events] failed", String(e));
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@lume/tsconfig": "workspace:*",
|
||||
"@types/react": "^18.3.1",
|
||||
"@types/react": "^18.3.2",
|
||||
"typescript": "^5.4.5"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"private": true,
|
||||
"main": "./src/index.ts",
|
||||
"dependencies": {
|
||||
"@getalby/sdk": "^3.5.0",
|
||||
"@getalby/sdk": "^3.5.1",
|
||||
"@lume/ark": "workspace:^",
|
||||
"@lume/icons": "workspace:^",
|
||||
"@lume/utils": "workspace:^",
|
||||
@@ -17,11 +17,11 @@
|
||||
"@radix-ui/react-hover-card": "^1.0.7",
|
||||
"@radix-ui/react-popover": "^1.0.7",
|
||||
"@radix-ui/react-tooltip": "^1.0.7",
|
||||
"@tanstack/react-query": "^5.32.0",
|
||||
"@tanstack/react-router": "^1.31.3",
|
||||
"framer-motion": "^11.1.7",
|
||||
"@tanstack/react-query": "^5.36.0",
|
||||
"@tanstack/react-router": "^1.32.5",
|
||||
"framer-motion": "^11.2.0",
|
||||
"get-urls": "^12.1.0",
|
||||
"media-chrome": "^3.2.1",
|
||||
"media-chrome": "^3.2.2",
|
||||
"minidenticons": "^4.2.1",
|
||||
"nanoid": "^5.0.7",
|
||||
"qrcode.react": "^3.1.0",
|
||||
@@ -29,24 +29,24 @@
|
||||
"react": "^18.3.1",
|
||||
"react-currency-input-field": "^3.8.0",
|
||||
"react-dom": "^18.3.1",
|
||||
"react-hook-form": "^7.51.3",
|
||||
"react-hook-form": "^7.51.4",
|
||||
"react-hotkeys-hook": "^4.5.0",
|
||||
"react-i18next": "^14.1.1",
|
||||
"react-snap-carousel": "^0.4.0",
|
||||
"react-string-replace": "^1.1.1",
|
||||
"slate": "^0.102.0",
|
||||
"slate": "^0.103.0",
|
||||
"slate-react": "^0.102.0",
|
||||
"sonner": "^1.4.41",
|
||||
"string-strip-html": "^13.4.8",
|
||||
"uqr": "^0.1.2",
|
||||
"use-debounce": "^10.0.0",
|
||||
"virtua": "^0.30.2"
|
||||
"virtua": "^0.31.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@lume/tailwindcss": "workspace:^",
|
||||
"@lume/tsconfig": "workspace:^",
|
||||
"@lume/types": "workspace:^",
|
||||
"@types/react": "^18.3.1",
|
||||
"@types/react": "^18.3.2",
|
||||
"tailwindcss": "^3.4.3",
|
||||
"typescript": "^5.4.5"
|
||||
}
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
export * from "./user";
|
||||
export * from "./note";
|
||||
export * from "./note/mentions/note";
|
||||
|
||||
// UI
|
||||
export * from "./container";
|
||||
export * from "./box";
|
||||
export * from "./spinner";
|
||||
export * from "./carousel";
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
import { QRCodeSVG } from "qrcode.react";
|
||||
import { memo } from "react";
|
||||
|
||||
export const Invoice = memo(function Invoice({ invoice }: { invoice: string }) {
|
||||
return (
|
||||
<div className="mt-2 flex items-center rounded-lg bg-neutral-200 p-2 dark:bg-neutral-800">
|
||||
<QRCodeSVG value={invoice} includeMargin={true} className="rounded-lg" />
|
||||
</div>
|
||||
);
|
||||
});
|
||||
@@ -1,20 +0,0 @@
|
||||
import type { Event } from "@lume/types";
|
||||
import { Note } from "..";
|
||||
|
||||
export function ChildReply({ event }: { event: Event; rootEventId?: string }) {
|
||||
return (
|
||||
<Note.Provider event={event}>
|
||||
<Note.Root className="py-2">
|
||||
<div className="flex items-center justify-between h-14">
|
||||
<Note.User className="flex-1 pr-2" />
|
||||
<Note.Menu />
|
||||
</div>
|
||||
<Note.Content />
|
||||
<div className="flex items-center justify-end gap-4 mt-2">
|
||||
<Note.Repost />
|
||||
<Note.Zap />
|
||||
</div>
|
||||
</Note.Root>
|
||||
</Note.Provider>
|
||||
);
|
||||
}
|
||||
@@ -1,69 +0,0 @@
|
||||
import { NavArrowDownIcon } from "@lume/icons";
|
||||
import type { EventWithReplies } from "@lume/types";
|
||||
import { cn } from "@lume/utils";
|
||||
import * as Collapsible from "@radix-ui/react-collapsible";
|
||||
import { useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Note } from "..";
|
||||
import { ChildReply } from "./childReply";
|
||||
|
||||
export function Reply({
|
||||
event,
|
||||
}: {
|
||||
event: EventWithReplies;
|
||||
}) {
|
||||
const [t] = useTranslation();
|
||||
const [open, setOpen] = useState(false);
|
||||
|
||||
return (
|
||||
<Collapsible.Root open={open} onOpenChange={setOpen}>
|
||||
<Note.Provider event={event}>
|
||||
<Note.Root className="pt-2">
|
||||
<div className="flex items-center justify-between h-14">
|
||||
<Note.User className="flex-1 pr-2" />
|
||||
<Note.Menu />
|
||||
</div>
|
||||
<Note.Content />
|
||||
<div className="flex items-center justify-between h-14">
|
||||
{event.replies?.length > 0 ? (
|
||||
<Collapsible.Trigger asChild>
|
||||
<div className="inline-flex items-center gap-1 font-semibold text-sm text-neutral-600 dark:text-neutral-400 h-14">
|
||||
<NavArrowDownIcon
|
||||
className={cn("size-5", open ? "rotate-180 transform" : "")}
|
||||
/>
|
||||
{`${event.replies?.length} ${
|
||||
event.replies?.length === 1
|
||||
? t("note.reply.single")
|
||||
: t("note.reply.plural")
|
||||
}`}
|
||||
</div>
|
||||
</Collapsible.Trigger>
|
||||
) : (
|
||||
<div />
|
||||
)}
|
||||
<div className="inline-flex items-center gap-4">
|
||||
<Note.Reply />
|
||||
<Note.Repost />
|
||||
<Note.Zap />
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className={cn(
|
||||
open
|
||||
? "pb-3 border-t border-neutral-100 dark:border-neutral-900"
|
||||
: "",
|
||||
)}
|
||||
>
|
||||
{event.replies?.length > 0 ? (
|
||||
<Collapsible.Content className="divide-y divide-neutral-100 dark:divide-neutral-900 pl-6">
|
||||
{event.replies?.map((childEvent) => (
|
||||
<ChildReply key={childEvent.id} event={childEvent} />
|
||||
))}
|
||||
</Collapsible.Content>
|
||||
) : null}
|
||||
</div>
|
||||
</Note.Root>
|
||||
</Note.Provider>
|
||||
</Collapsible.Root>
|
||||
);
|
||||
}
|
||||
@@ -1,117 +0,0 @@
|
||||
import { RepostIcon } from "@lume/icons";
|
||||
import type { Event } from "@lume/types";
|
||||
import { cn } from "@lume/utils";
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { useRouteContext } from "@tanstack/react-router";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Note } from "..";
|
||||
import { User } from "../../user";
|
||||
|
||||
export function RepostNote({
|
||||
event,
|
||||
className,
|
||||
}: {
|
||||
event: Event;
|
||||
className?: string;
|
||||
}) {
|
||||
const { ark } = useRouteContext({ strict: false });
|
||||
const { t } = useTranslation();
|
||||
const {
|
||||
isLoading,
|
||||
isError,
|
||||
data: repostEvent,
|
||||
} = useQuery({
|
||||
queryKey: ["repost", event.id],
|
||||
queryFn: async () => {
|
||||
try {
|
||||
if (event.content.length > 50) {
|
||||
const embed = JSON.parse(event.content) as Event;
|
||||
return embed;
|
||||
}
|
||||
const id = event.tags.find((el) => el[0] === "e")[1];
|
||||
return await ark.get_event(id);
|
||||
} catch {
|
||||
throw new Error("Failed to get repost event");
|
||||
}
|
||||
},
|
||||
refetchOnWindowFocus: false,
|
||||
refetchOnMount: false,
|
||||
refetchOnReconnect: false,
|
||||
});
|
||||
|
||||
if (isLoading) {
|
||||
return <div className="w-full px-3 pb-3">Loading...</div>;
|
||||
}
|
||||
|
||||
if (isError || !repostEvent) {
|
||||
return (
|
||||
<Note.Root className={className}>
|
||||
<User.Provider pubkey={event.pubkey}>
|
||||
<User.Root className="flex h-14 gap-2 px-3">
|
||||
<div className="inline-flex w-10 shrink-0 items-center justify-center">
|
||||
<RepostIcon className="h-5 w-5 text-blue-500" />
|
||||
</div>
|
||||
<div className="inline-flex items-center gap-2">
|
||||
<User.Avatar className="size-6 shrink-0 rounded object-cover" />
|
||||
<div className="inline-flex items-baseline gap-1">
|
||||
<User.Name className="font-medium text-neutral-900 dark:text-neutral-100" />
|
||||
<span className="text-blue-500">{t("note.reposted")}</span>
|
||||
</div>
|
||||
</div>
|
||||
</User.Root>
|
||||
</User.Provider>
|
||||
<div className="mb-3 select-text px-3">
|
||||
<div className="flex flex-col items-start justify-start rounded-lg bg-red-100 px-3 py-3 dark:bg-red-900">
|
||||
<p className="text-red-500">Failed to get event</p>
|
||||
</div>
|
||||
</div>
|
||||
</Note.Root>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<Note.Root
|
||||
className={cn(
|
||||
"mb-3 flex flex-col gap-2 border-b border-neutral-100 pb-3 dark:border-neutral-900",
|
||||
className,
|
||||
)}
|
||||
>
|
||||
<User.Provider pubkey={event.pubkey}>
|
||||
<User.Root className="flex gap-3">
|
||||
<div className="inline-flex w-10 shrink-0 items-center justify-center">
|
||||
<RepostIcon className="h-5 w-5 text-blue-500" />
|
||||
</div>
|
||||
<div className="inline-flex items-center gap-2">
|
||||
<User.Avatar className="size-6 shrink-0 rounded-full object-cover" />
|
||||
<div className="inline-flex items-baseline gap-1">
|
||||
<User.Name className="font-medium text-neutral-900 dark:text-neutral-100" />
|
||||
<span className="text-blue-500">{t("note.reposted")}</span>
|
||||
</div>
|
||||
</div>
|
||||
</User.Root>
|
||||
</User.Provider>
|
||||
<Note.Provider event={repostEvent}>
|
||||
<div className="flex flex-col gap-2">
|
||||
<div className="flex items-start justify-between">
|
||||
<Note.User className="flex-1 pr-2" />
|
||||
<Note.Menu />
|
||||
</div>
|
||||
<div className="flex gap-3">
|
||||
<div className="size-10 shrink-0" />
|
||||
<div className="min-w-0 flex-1">
|
||||
<Note.Content />
|
||||
<div className="mt-5 flex items-center justify-between">
|
||||
<Note.Reaction />
|
||||
<div className="inline-flex items-center gap-4">
|
||||
<Note.Reply />
|
||||
<Note.Repost />
|
||||
<Note.Zap />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Note.Provider>
|
||||
</Note.Root>
|
||||
);
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
import { Note } from "..";
|
||||
|
||||
export function NoteSkeleton() {
|
||||
return (
|
||||
<Note.Root>
|
||||
<div className="flex h-min flex-col p-3">
|
||||
<div className="flex items-start gap-2">
|
||||
<div className="relative h-10 w-10 shrink-0 animate-pulse overflow-hidden rounded-lg bg-neutral-400 dark:bg-neutral-600" />
|
||||
<div className="h-6 w-full">
|
||||
<div className="h-4 w-24 animate-pulse rounded bg-neutral-300 dark:bg-neutral-700" />
|
||||
</div>
|
||||
</div>
|
||||
<div className="-mt-4 flex gap-3">
|
||||
<div className="w-10 shrink-0" />
|
||||
<div className="flex w-full flex-col gap-1">
|
||||
<div className="h-3 w-2/3 animate-pulse rounded bg-neutral-300 dark:bg-neutral-700" />
|
||||
<div className="h-3 w-2/3 animate-pulse rounded bg-neutral-300 dark:bg-neutral-700" />
|
||||
<div className="h-3 w-1/2 animate-pulse rounded bg-neutral-300 dark:bg-neutral-700" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Note.Root>
|
||||
);
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
import type { Event } from "@lume/types";
|
||||
import { cn } from "@lume/utils";
|
||||
import { Note } from "..";
|
||||
|
||||
export function TextNote({
|
||||
event,
|
||||
className,
|
||||
}: {
|
||||
event: Event;
|
||||
className?: string;
|
||||
}) {
|
||||
return (
|
||||
<Note.Provider event={event}>
|
||||
<Note.Root
|
||||
className={cn(
|
||||
"mb-3 flex flex-col gap-2 border-b border-neutral-100 pb-3 dark:border-neutral-900",
|
||||
className,
|
||||
)}
|
||||
>
|
||||
<div className="flex items-start justify-between">
|
||||
<Note.User className="flex-1 pr-2" />
|
||||
<Note.Menu />
|
||||
</div>
|
||||
<div className="flex gap-3">
|
||||
<div className="size-11 shrink-0" />
|
||||
<div className="min-w-0 flex-1">
|
||||
<Note.Thread className="mb-2" />
|
||||
<Note.Content />
|
||||
<div className="mt-5 flex items-center justify-between">
|
||||
<Note.Reaction />
|
||||
<div className="inline-flex items-center gap-4">
|
||||
<Note.Reply />
|
||||
<Note.Repost />
|
||||
<Note.Zap />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Note.Root>
|
||||
</Note.Provider>
|
||||
);
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
import { useEvent } from "@lume/ark";
|
||||
import { Note } from "..";
|
||||
import { User } from "../../user";
|
||||
|
||||
export function ThreadNote({ eventId }: { eventId: string }) {
|
||||
const { isLoading, data } = useEvent(eventId);
|
||||
|
||||
if (isLoading) {
|
||||
return <div>Loading...</div>;
|
||||
}
|
||||
|
||||
return (
|
||||
<Note.Provider event={data}>
|
||||
<Note.Root className="flex flex-col">
|
||||
<div className="flex h-16 items-center justify-between">
|
||||
<User.Provider pubkey={data.pubkey}>
|
||||
<User.Root className="flex h-16 flex-1 items-center gap-3">
|
||||
<User.Avatar className="size-11 shrink-0 rounded-full object-cover ring-1 ring-neutral-200/50 dark:ring-neutral-800/50" />
|
||||
<div className="flex flex-1 flex-col">
|
||||
<User.Name className="font-semibold text-neutral-900 dark:text-neutral-100" />
|
||||
<div className="inline-flex items-center gap-2 text-sm text-neutral-600 dark:text-neutral-400">
|
||||
<User.Time time={data.created_at} />
|
||||
<span>·</span>
|
||||
<User.NIP05 />
|
||||
</div>
|
||||
</div>
|
||||
</User.Root>
|
||||
</User.Provider>
|
||||
<Note.Menu />
|
||||
</div>
|
||||
<Note.Thread className="mb-2" />
|
||||
<Note.Content className="min-w-0" />
|
||||
<div className="flex h-14 items-center justify-between">
|
||||
<Note.Reaction />
|
||||
<div className="inline-flex items-center gap-4">
|
||||
<Note.Repost />
|
||||
<Note.Zap />
|
||||
</div>
|
||||
</div>
|
||||
</Note.Root>
|
||||
</Note.Provider>
|
||||
);
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
import { LinkIcon } from "@lume/icons";
|
||||
import { cn } from "@lume/utils";
|
||||
import { useRouteContext } from "@tanstack/react-router";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Note } from ".";
|
||||
import { useNoteContext } from "./provider";
|
||||
|
||||
export function NoteThread({ className }: { className?: string }) {
|
||||
const { ark } = useRouteContext({ strict: false });
|
||||
const event = useNoteContext();
|
||||
const thread = ark.parse_event_thread({
|
||||
content: event.content,
|
||||
tags: event.tags,
|
||||
});
|
||||
|
||||
const { t } = useTranslation();
|
||||
|
||||
if (!thread) return null;
|
||||
|
||||
return (
|
||||
<div className={cn("w-full", className)}>
|
||||
<div className="flex h-min w-full flex-col gap-3 rounded-2xl border border-black/10 p-3 dark:border-white/10">
|
||||
{thread.rootEventId ? (
|
||||
<Note.Child eventId={thread.rootEventId} isRoot />
|
||||
) : null}
|
||||
{thread.replyEventId ? (
|
||||
<Note.Child eventId={thread.replyEventId} />
|
||||
) : null}
|
||||
<div className="inline-flex justify-end">
|
||||
<button
|
||||
type="button"
|
||||
onClick={() =>
|
||||
ark.open_thread(thread.rootEventId || thread.replyEventId)
|
||||
}
|
||||
className="inline-flex items-center gap-1 text-sm text-neutral-600 hover:text-blue-500 dark:text-neutral-400"
|
||||
>
|
||||
{t("note.showThread")}
|
||||
<LinkIcon className="size-4" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -8,21 +8,21 @@
|
||||
"access": "public"
|
||||
},
|
||||
"dependencies": {
|
||||
"@tanstack/react-query": "^5.32.0",
|
||||
"@tanstack/react-query": "^5.36.0",
|
||||
"bitcoin-units": "^1.0.0",
|
||||
"clsx": "^2.1.1",
|
||||
"dayjs": "^1.11.11",
|
||||
"light-bolt11-decoder": "^3.1.1",
|
||||
"nostr-tools": "^2.5.1",
|
||||
"nostr-tools": "^2.5.2",
|
||||
"react": "^18.3.1",
|
||||
"react-dom": "^18.3.1",
|
||||
"slate": "^0.102.0",
|
||||
"slate": "^0.103.0",
|
||||
"slate-react": "^0.102.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@lume/tsconfig": "workspace:^",
|
||||
"@lume/types": "workspace:^",
|
||||
"@types/react": "^18.3.1",
|
||||
"@types/react": "^18.3.2",
|
||||
"@types/react-dom": "^18.3.0",
|
||||
"tailwind-merge": "^2.3.0",
|
||||
"typescript": "^5.4.5"
|
||||
|
||||
1687
pnpm-lock.yaml
generated
1687
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
794
src-tauri/Cargo.lock
generated
794
src-tauri/Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -23,7 +23,7 @@ tauri = { version = "2.0.0-beta", features = [
|
||||
"protocol-asset",
|
||||
] }
|
||||
tauri-plugin-cli = "2.0.0-beta"
|
||||
tauri-plugin-clipboard-manager = "2.0.0-beta"
|
||||
tauri-plugin-clipboard-manager = "2.1.0-beta"
|
||||
tauri-plugin-dialog = "2.0.0-beta"
|
||||
tauri-plugin-fs = "2.0.0-beta"
|
||||
tauri-plugin-http = "2.0.0-beta"
|
||||
|
||||
@@ -36,16 +36,17 @@
|
||||
"window:allow-create",
|
||||
"window:allow-close",
|
||||
"window:allow-set-focus",
|
||||
"clipboard-manager:allow-write",
|
||||
"clipboard-manager:allow-read",
|
||||
"clipboard-manager:allow-write-text",
|
||||
"clipboard-manager:allow-read-text",
|
||||
"webview:allow-create-webview-window",
|
||||
"webview:allow-create-webview",
|
||||
"webview:allow-set-webview-size",
|
||||
"webview:allow-set-webview-position",
|
||||
"webview:allow-webview-close",
|
||||
"dialog:default",
|
||||
"dialog:allow-open",
|
||||
"dialog:allow-ask",
|
||||
"dialog:allow-message",
|
||||
"process:allow-restart",
|
||||
"fs:allow-read-file",
|
||||
"shell:allow-open",
|
||||
{
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
{"desktop-capability":{"identifier":"desktop-capability","description":"Capability for the desktop","local":true,"windows":["main","splash","settings","search","nwc","activity","zap-*","event-*","user-*","editor-*","column-*"],"permissions":["path:default","event:default","window:default","app:default","resources:default","menu:default","tray:default","notification:allow-is-permission-granted","notification:allow-request-permission","notification:default","os:allow-locale","os:allow-platform","updater:default","updater:allow-check","updater:allow-download-and-install","window:allow-start-dragging","window:allow-create","window:allow-close","window:allow-set-focus","clipboard-manager:allow-write","clipboard-manager:allow-read","webview:allow-create-webview-window","webview:allow-create-webview","webview:allow-set-webview-size","webview:allow-set-webview-position","webview:allow-webview-close","dialog:default","dialog:allow-ask","dialog:allow-message","fs:allow-read-file","shell:allow-open",{"identifier":"http:default","allow":[{"url":"http://**/"},{"url":"https://**/"}]},{"identifier":"fs:allow-read-text-file","allow":[{"path":"$RESOURCE/locales/*"},{"path":"$RESOURCE/resources/*"}]}],"platforms":["linux","macOS","windows"]}}
|
||||
{"desktop-capability":{"identifier":"desktop-capability","description":"Capability for the desktop","local":true,"windows":["main","splash","settings","search","nwc","activity","zap-*","event-*","user-*","editor-*","column-*"],"permissions":["path:default","event:default","window:default","app:default","resources:default","menu:default","tray:default","notification:allow-is-permission-granted","notification:allow-request-permission","notification:default","os:allow-locale","os:allow-platform","updater:default","updater:allow-check","updater:allow-download-and-install","window:allow-start-dragging","window:allow-create","window:allow-close","window:allow-set-focus","clipboard-manager:allow-write-text","clipboard-manager:allow-read-text","webview:allow-create-webview-window","webview:allow-create-webview","webview:allow-set-webview-size","webview:allow-set-webview-position","webview:allow-webview-close","dialog:allow-open","dialog:allow-ask","dialog:allow-message","process:allow-restart","fs:allow-read-file","shell:allow-open",{"identifier":"http:default","allow":[{"url":"http://**/"},{"url":"https://**/"}]},{"identifier":"fs:allow-read-text-file","allow":[{"path":"$RESOURCE/locales/*"},{"path":"$RESOURCE/resources/*"}]}],"platforms":["linux","macOS","windows"]}}
|
||||
@@ -149,14 +149,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-meta -> This allows read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-meta-recursive -> This allows read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-app-meta-recursive -> This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-meta-recursive"
|
||||
@@ -191,14 +191,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appcache-meta -> This allows read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appcache-meta -> This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appcache-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appcache-meta-recursive -> This allows read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appcache-meta-recursive -> This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appcache-meta-recursive"
|
||||
@@ -233,14 +233,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appconfig-meta -> This allows read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appconfig-meta -> This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appconfig-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appconfig-meta-recursive -> This allows read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appconfig-meta-recursive -> This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appconfig-meta-recursive"
|
||||
@@ -275,14 +275,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appdata-meta -> This allows read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appdata-meta -> This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appdata-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appdata-meta-recursive -> This allows read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appdata-meta-recursive -> This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appdata-meta-recursive"
|
||||
@@ -317,14 +317,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applocaldata-meta -> This allows read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applocaldata-meta -> This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applocaldata-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applocaldata-meta-recursive -> This allows read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applocaldata-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applocaldata-meta-recursive"
|
||||
@@ -359,14 +359,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applog-meta -> This allows read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applog-meta -> This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applog-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applog-meta-recursive -> This allows read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applog-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applog-meta-recursive"
|
||||
@@ -401,14 +401,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-audio-meta -> This allows read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-audio-meta -> This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-audio-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-audio-meta-recursive -> This allows read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-audio-meta-recursive -> This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-audio-meta-recursive"
|
||||
@@ -443,14 +443,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-cache-meta -> This allows read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-cache-meta -> This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-cache-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-cache-meta-recursive -> This allows read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-cache-meta-recursive -> This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-cache-meta-recursive"
|
||||
@@ -485,14 +485,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-config-meta -> This allows read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-config-meta -> This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-config-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-config-meta-recursive -> This allows read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-config-meta-recursive -> This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-config-meta-recursive"
|
||||
@@ -527,14 +527,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-data-meta -> This allows read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-data-meta -> This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-data-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-data-meta-recursive -> This allows read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-data-meta-recursive -> This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-data-meta-recursive"
|
||||
@@ -569,14 +569,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-desktop-meta -> This allows read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-desktop-meta -> This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-desktop-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-desktop-meta-recursive -> This allows read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-desktop-meta-recursive -> This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-desktop-meta-recursive"
|
||||
@@ -611,14 +611,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-document-meta -> This allows read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-document-meta -> This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-document-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-document-meta-recursive -> This allows read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-document-meta-recursive -> This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-document-meta-recursive"
|
||||
@@ -653,14 +653,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-download-meta -> This allows read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-download-meta -> This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-download-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-download-meta-recursive -> This allows read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-download-meta-recursive -> This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-download-meta-recursive"
|
||||
@@ -695,14 +695,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-exe-meta -> This allows read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-exe-meta -> This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-exe-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-exe-meta-recursive -> This allows read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-exe-meta-recursive -> This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-exe-meta-recursive"
|
||||
@@ -737,14 +737,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-font-meta -> This allows read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-font-meta -> This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-font-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-font-meta-recursive -> This allows read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-font-meta-recursive -> This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-font-meta-recursive"
|
||||
@@ -779,14 +779,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-home-meta -> This allows read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-home-meta -> This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-home-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-home-meta-recursive -> This allows read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-home-meta-recursive -> This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-home-meta-recursive"
|
||||
@@ -821,14 +821,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-localdata-meta -> This allows read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-localdata-meta -> This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-localdata-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-localdata-meta-recursive -> This allows read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-localdata-meta-recursive -> This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-localdata-meta-recursive"
|
||||
@@ -863,14 +863,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-log-meta -> This allows read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-log-meta -> This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-log-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-log-meta-recursive -> This allows read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-log-meta-recursive -> This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-log-meta-recursive"
|
||||
@@ -905,14 +905,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-picture-meta -> This allows read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-picture-meta -> This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-picture-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-picture-meta-recursive -> This allows read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-picture-meta-recursive -> This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-picture-meta-recursive"
|
||||
@@ -947,14 +947,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-public-meta -> This allows read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-public-meta -> This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-public-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-public-meta-recursive -> This allows read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-public-meta-recursive -> This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-public-meta-recursive"
|
||||
@@ -989,14 +989,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-resource-meta -> This allows read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-resource-meta -> This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-resource-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-resource-meta-recursive -> This allows read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-resource-meta-recursive -> This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-resource-meta-recursive"
|
||||
@@ -1031,14 +1031,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-runtime-meta -> This allows read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-runtime-meta -> This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-runtime-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-runtime-meta-recursive -> This allows read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-runtime-meta-recursive -> This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-runtime-meta-recursive"
|
||||
@@ -1073,14 +1073,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-temp-meta -> This allows read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-temp-meta -> This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-temp-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-temp-meta-recursive -> This allows read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-temp-meta-recursive -> This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-temp-meta-recursive"
|
||||
@@ -1115,14 +1115,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-template-meta -> This allows read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-template-meta -> This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-template-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-template-meta-recursive -> This allows read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-template-meta-recursive -> This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-template-meta-recursive"
|
||||
@@ -1157,14 +1157,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-video-meta -> This allows read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-video-meta -> This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-video-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-video-meta-recursive -> This allows read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-video-meta-recursive -> This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-video-meta-recursive"
|
||||
@@ -2339,6 +2339,13 @@
|
||||
"shell:allow-open"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"shell:allow-spawn"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
@@ -2367,6 +2374,13 @@
|
||||
"shell:deny-open"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"shell:deny-spawn"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
@@ -2607,31 +2621,87 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:allow-read -> Enables the read command without any pre-configured scope.",
|
||||
"description": "clipboard-manager:allow-clear -> Enables the clear command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:allow-read"
|
||||
"clipboard-manager:allow-clear"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:allow-write -> Enables the write command without any pre-configured scope.",
|
||||
"description": "clipboard-manager:allow-read-image -> Enables the read_image command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:allow-write"
|
||||
"clipboard-manager:allow-read-image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:deny-read -> Denies the read command without any pre-configured scope.",
|
||||
"description": "clipboard-manager:allow-read-text -> Enables the read_text command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:deny-read"
|
||||
"clipboard-manager:allow-read-text"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:deny-write -> Denies the write command without any pre-configured scope.",
|
||||
"description": "clipboard-manager:allow-write-html -> Enables the write_html command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:deny-write"
|
||||
"clipboard-manager:allow-write-html"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:allow-write-image -> Enables the write_image command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:allow-write-image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:allow-write-text -> Enables the write_text command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:allow-write-text"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:deny-clear -> Denies the clear command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:deny-clear"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:deny-read-image -> Denies the read_image command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:deny-read-image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:deny-read-text -> Denies the read_text command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:deny-read-text"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:deny-write-html -> Denies the write_html command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:deny-write-html"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:deny-write-image -> Denies the write_image command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:deny-write-image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:deny-write-text -> Denies the write_text command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:deny-write-text"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -2774,14 +2844,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-meta -> This allows read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-meta-recursive -> This allows read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-app-meta-recursive -> This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-meta-recursive"
|
||||
@@ -2816,14 +2886,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appcache-meta -> This allows read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appcache-meta -> This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appcache-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appcache-meta-recursive -> This allows read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appcache-meta-recursive -> This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appcache-meta-recursive"
|
||||
@@ -2858,14 +2928,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appconfig-meta -> This allows read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appconfig-meta -> This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appconfig-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appconfig-meta-recursive -> This allows read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appconfig-meta-recursive -> This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appconfig-meta-recursive"
|
||||
@@ -2900,14 +2970,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appdata-meta -> This allows read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appdata-meta -> This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appdata-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appdata-meta-recursive -> This allows read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appdata-meta-recursive -> This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appdata-meta-recursive"
|
||||
@@ -2942,14 +3012,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applocaldata-meta -> This allows read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applocaldata-meta -> This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applocaldata-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applocaldata-meta-recursive -> This allows read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applocaldata-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applocaldata-meta-recursive"
|
||||
@@ -2984,14 +3054,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applog-meta -> This allows read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applog-meta -> This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applog-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applog-meta-recursive -> This allows read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applog-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applog-meta-recursive"
|
||||
@@ -3026,14 +3096,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-audio-meta -> This allows read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-audio-meta -> This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-audio-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-audio-meta-recursive -> This allows read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-audio-meta-recursive -> This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-audio-meta-recursive"
|
||||
@@ -3068,14 +3138,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-cache-meta -> This allows read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-cache-meta -> This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-cache-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-cache-meta-recursive -> This allows read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-cache-meta-recursive -> This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-cache-meta-recursive"
|
||||
@@ -3110,14 +3180,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-config-meta -> This allows read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-config-meta -> This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-config-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-config-meta-recursive -> This allows read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-config-meta-recursive -> This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-config-meta-recursive"
|
||||
@@ -3152,14 +3222,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-data-meta -> This allows read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-data-meta -> This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-data-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-data-meta-recursive -> This allows read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-data-meta-recursive -> This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-data-meta-recursive"
|
||||
@@ -3194,14 +3264,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-desktop-meta -> This allows read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-desktop-meta -> This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-desktop-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-desktop-meta-recursive -> This allows read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-desktop-meta-recursive -> This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-desktop-meta-recursive"
|
||||
@@ -3236,14 +3306,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-document-meta -> This allows read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-document-meta -> This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-document-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-document-meta-recursive -> This allows read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-document-meta-recursive -> This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-document-meta-recursive"
|
||||
@@ -3278,14 +3348,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-download-meta -> This allows read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-download-meta -> This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-download-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-download-meta-recursive -> This allows read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-download-meta-recursive -> This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-download-meta-recursive"
|
||||
@@ -3320,14 +3390,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-exe-meta -> This allows read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-exe-meta -> This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-exe-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-exe-meta-recursive -> This allows read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-exe-meta-recursive -> This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-exe-meta-recursive"
|
||||
@@ -3362,14 +3432,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-font-meta -> This allows read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-font-meta -> This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-font-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-font-meta-recursive -> This allows read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-font-meta-recursive -> This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-font-meta-recursive"
|
||||
@@ -3404,14 +3474,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-home-meta -> This allows read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-home-meta -> This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-home-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-home-meta-recursive -> This allows read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-home-meta-recursive -> This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-home-meta-recursive"
|
||||
@@ -3446,14 +3516,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-localdata-meta -> This allows read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-localdata-meta -> This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-localdata-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-localdata-meta-recursive -> This allows read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-localdata-meta-recursive -> This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-localdata-meta-recursive"
|
||||
@@ -3488,14 +3558,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-log-meta -> This allows read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-log-meta -> This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-log-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-log-meta-recursive -> This allows read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-log-meta-recursive -> This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-log-meta-recursive"
|
||||
@@ -3530,14 +3600,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-picture-meta -> This allows read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-picture-meta -> This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-picture-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-picture-meta-recursive -> This allows read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-picture-meta-recursive -> This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-picture-meta-recursive"
|
||||
@@ -3572,14 +3642,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-public-meta -> This allows read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-public-meta -> This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-public-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-public-meta-recursive -> This allows read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-public-meta-recursive -> This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-public-meta-recursive"
|
||||
@@ -3614,14 +3684,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-resource-meta -> This allows read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-resource-meta -> This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-resource-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-resource-meta-recursive -> This allows read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-resource-meta-recursive -> This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-resource-meta-recursive"
|
||||
@@ -3656,14 +3726,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-runtime-meta -> This allows read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-runtime-meta -> This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-runtime-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-runtime-meta-recursive -> This allows read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-runtime-meta-recursive -> This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-runtime-meta-recursive"
|
||||
@@ -3698,14 +3768,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-temp-meta -> This allows read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-temp-meta -> This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-temp-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-temp-meta-recursive -> This allows read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-temp-meta-recursive -> This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-temp-meta-recursive"
|
||||
@@ -3740,14 +3810,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-template-meta -> This allows read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-template-meta -> This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-template-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-template-meta-recursive -> This allows read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-template-meta-recursive -> This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-template-meta-recursive"
|
||||
@@ -3782,14 +3852,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-video-meta -> This allows read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-video-meta -> This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-video-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-video-meta-recursive -> This allows read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-video-meta-recursive -> This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-video-meta-recursive"
|
||||
@@ -5584,6 +5654,13 @@
|
||||
"shell:allow-open"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"shell:allow-spawn"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
@@ -5612,6 +5689,13 @@
|
||||
"shell:deny-open"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"shell:deny-spawn"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
@@ -6066,6 +6150,13 @@
|
||||
"window:allow-current-monitor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "window:allow-cursor-position -> Enables the cursor_position command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"window:allow-cursor-position"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "window:allow-destroy -> Enables the destroy command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
@@ -6493,6 +6584,13 @@
|
||||
"window:deny-current-monitor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "window:deny-cursor-position -> Denies the cursor_position command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"window:deny-cursor-position"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "window:deny-destroy -> Denies the destroy command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
|
||||
@@ -149,14 +149,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-meta -> This allows read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-meta-recursive -> This allows read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-app-meta-recursive -> This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-meta-recursive"
|
||||
@@ -191,14 +191,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appcache-meta -> This allows read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appcache-meta -> This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appcache-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appcache-meta-recursive -> This allows read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appcache-meta-recursive -> This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appcache-meta-recursive"
|
||||
@@ -233,14 +233,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appconfig-meta -> This allows read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appconfig-meta -> This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appconfig-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appconfig-meta-recursive -> This allows read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appconfig-meta-recursive -> This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appconfig-meta-recursive"
|
||||
@@ -275,14 +275,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appdata-meta -> This allows read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appdata-meta -> This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appdata-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appdata-meta-recursive -> This allows read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appdata-meta-recursive -> This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appdata-meta-recursive"
|
||||
@@ -317,14 +317,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applocaldata-meta -> This allows read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applocaldata-meta -> This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applocaldata-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applocaldata-meta-recursive -> This allows read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applocaldata-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applocaldata-meta-recursive"
|
||||
@@ -359,14 +359,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applog-meta -> This allows read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applog-meta -> This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applog-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applog-meta-recursive -> This allows read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applog-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applog-meta-recursive"
|
||||
@@ -401,14 +401,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-audio-meta -> This allows read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-audio-meta -> This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-audio-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-audio-meta-recursive -> This allows read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-audio-meta-recursive -> This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-audio-meta-recursive"
|
||||
@@ -443,14 +443,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-cache-meta -> This allows read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-cache-meta -> This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-cache-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-cache-meta-recursive -> This allows read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-cache-meta-recursive -> This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-cache-meta-recursive"
|
||||
@@ -485,14 +485,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-config-meta -> This allows read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-config-meta -> This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-config-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-config-meta-recursive -> This allows read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-config-meta-recursive -> This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-config-meta-recursive"
|
||||
@@ -527,14 +527,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-data-meta -> This allows read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-data-meta -> This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-data-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-data-meta-recursive -> This allows read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-data-meta-recursive -> This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-data-meta-recursive"
|
||||
@@ -569,14 +569,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-desktop-meta -> This allows read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-desktop-meta -> This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-desktop-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-desktop-meta-recursive -> This allows read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-desktop-meta-recursive -> This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-desktop-meta-recursive"
|
||||
@@ -611,14 +611,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-document-meta -> This allows read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-document-meta -> This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-document-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-document-meta-recursive -> This allows read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-document-meta-recursive -> This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-document-meta-recursive"
|
||||
@@ -653,14 +653,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-download-meta -> This allows read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-download-meta -> This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-download-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-download-meta-recursive -> This allows read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-download-meta-recursive -> This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-download-meta-recursive"
|
||||
@@ -695,14 +695,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-exe-meta -> This allows read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-exe-meta -> This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-exe-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-exe-meta-recursive -> This allows read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-exe-meta-recursive -> This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-exe-meta-recursive"
|
||||
@@ -737,14 +737,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-font-meta -> This allows read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-font-meta -> This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-font-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-font-meta-recursive -> This allows read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-font-meta-recursive -> This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-font-meta-recursive"
|
||||
@@ -779,14 +779,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-home-meta -> This allows read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-home-meta -> This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-home-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-home-meta-recursive -> This allows read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-home-meta-recursive -> This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-home-meta-recursive"
|
||||
@@ -821,14 +821,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-localdata-meta -> This allows read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-localdata-meta -> This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-localdata-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-localdata-meta-recursive -> This allows read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-localdata-meta-recursive -> This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-localdata-meta-recursive"
|
||||
@@ -863,14 +863,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-log-meta -> This allows read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-log-meta -> This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-log-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-log-meta-recursive -> This allows read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-log-meta-recursive -> This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-log-meta-recursive"
|
||||
@@ -905,14 +905,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-picture-meta -> This allows read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-picture-meta -> This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-picture-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-picture-meta-recursive -> This allows read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-picture-meta-recursive -> This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-picture-meta-recursive"
|
||||
@@ -947,14 +947,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-public-meta -> This allows read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-public-meta -> This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-public-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-public-meta-recursive -> This allows read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-public-meta-recursive -> This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-public-meta-recursive"
|
||||
@@ -989,14 +989,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-resource-meta -> This allows read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-resource-meta -> This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-resource-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-resource-meta-recursive -> This allows read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-resource-meta-recursive -> This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-resource-meta-recursive"
|
||||
@@ -1031,14 +1031,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-runtime-meta -> This allows read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-runtime-meta -> This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-runtime-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-runtime-meta-recursive -> This allows read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-runtime-meta-recursive -> This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-runtime-meta-recursive"
|
||||
@@ -1073,14 +1073,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-temp-meta -> This allows read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-temp-meta -> This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-temp-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-temp-meta-recursive -> This allows read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-temp-meta-recursive -> This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-temp-meta-recursive"
|
||||
@@ -1115,14 +1115,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-template-meta -> This allows read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-template-meta -> This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-template-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-template-meta-recursive -> This allows read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-template-meta-recursive -> This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-template-meta-recursive"
|
||||
@@ -1157,14 +1157,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-video-meta -> This allows read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-video-meta -> This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-video-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-video-meta-recursive -> This allows read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-video-meta-recursive -> This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-video-meta-recursive"
|
||||
@@ -2339,6 +2339,13 @@
|
||||
"shell:allow-open"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"shell:allow-spawn"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
@@ -2367,6 +2374,13 @@
|
||||
"shell:deny-open"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"shell:deny-spawn"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
@@ -2607,31 +2621,87 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:allow-read -> Enables the read command without any pre-configured scope.",
|
||||
"description": "clipboard-manager:allow-clear -> Enables the clear command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:allow-read"
|
||||
"clipboard-manager:allow-clear"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:allow-write -> Enables the write command without any pre-configured scope.",
|
||||
"description": "clipboard-manager:allow-read-image -> Enables the read_image command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:allow-write"
|
||||
"clipboard-manager:allow-read-image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:deny-read -> Denies the read command without any pre-configured scope.",
|
||||
"description": "clipboard-manager:allow-read-text -> Enables the read_text command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:deny-read"
|
||||
"clipboard-manager:allow-read-text"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:deny-write -> Denies the write command without any pre-configured scope.",
|
||||
"description": "clipboard-manager:allow-write-html -> Enables the write_html command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:deny-write"
|
||||
"clipboard-manager:allow-write-html"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:allow-write-image -> Enables the write_image command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:allow-write-image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:allow-write-text -> Enables the write_text command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:allow-write-text"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:deny-clear -> Denies the clear command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:deny-clear"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:deny-read-image -> Denies the read_image command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:deny-read-image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:deny-read-text -> Denies the read_text command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:deny-read-text"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:deny-write-html -> Denies the write_html command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:deny-write-html"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:deny-write-image -> Denies the write_image command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:deny-write-image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "clipboard-manager:deny-write-text -> Denies the write_text command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"clipboard-manager:deny-write-text"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -2774,14 +2844,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-meta -> This allows read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-meta-recursive -> This allows read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-app-meta-recursive -> This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-meta-recursive"
|
||||
@@ -2816,14 +2886,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appcache-meta -> This allows read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appcache-meta -> This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appcache-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appcache-meta-recursive -> This allows read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appcache-meta-recursive -> This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appcache-meta-recursive"
|
||||
@@ -2858,14 +2928,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appconfig-meta -> This allows read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appconfig-meta -> This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appconfig-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appconfig-meta-recursive -> This allows read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appconfig-meta-recursive -> This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appconfig-meta-recursive"
|
||||
@@ -2900,14 +2970,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appdata-meta -> This allows read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appdata-meta -> This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appdata-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-appdata-meta-recursive -> This allows read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-appdata-meta-recursive -> This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-appdata-meta-recursive"
|
||||
@@ -2942,14 +3012,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applocaldata-meta -> This allows read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applocaldata-meta -> This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applocaldata-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applocaldata-meta-recursive -> This allows read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applocaldata-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applocaldata-meta-recursive"
|
||||
@@ -2984,14 +3054,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applog-meta -> This allows read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applog-meta -> This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applog-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-applog-meta-recursive -> This allows read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-applog-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-applog-meta-recursive"
|
||||
@@ -3026,14 +3096,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-audio-meta -> This allows read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-audio-meta -> This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-audio-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-audio-meta-recursive -> This allows read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-audio-meta-recursive -> This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-audio-meta-recursive"
|
||||
@@ -3068,14 +3138,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-cache-meta -> This allows read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-cache-meta -> This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-cache-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-cache-meta-recursive -> This allows read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-cache-meta-recursive -> This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-cache-meta-recursive"
|
||||
@@ -3110,14 +3180,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-config-meta -> This allows read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-config-meta -> This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-config-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-config-meta-recursive -> This allows read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-config-meta-recursive -> This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-config-meta-recursive"
|
||||
@@ -3152,14 +3222,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-data-meta -> This allows read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-data-meta -> This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-data-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-data-meta-recursive -> This allows read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-data-meta-recursive -> This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-data-meta-recursive"
|
||||
@@ -3194,14 +3264,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-desktop-meta -> This allows read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-desktop-meta -> This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-desktop-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-desktop-meta-recursive -> This allows read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-desktop-meta-recursive -> This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-desktop-meta-recursive"
|
||||
@@ -3236,14 +3306,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-document-meta -> This allows read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-document-meta -> This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-document-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-document-meta-recursive -> This allows read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-document-meta-recursive -> This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-document-meta-recursive"
|
||||
@@ -3278,14 +3348,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-download-meta -> This allows read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-download-meta -> This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-download-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-download-meta-recursive -> This allows read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-download-meta-recursive -> This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-download-meta-recursive"
|
||||
@@ -3320,14 +3390,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-exe-meta -> This allows read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-exe-meta -> This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-exe-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-exe-meta-recursive -> This allows read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-exe-meta-recursive -> This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-exe-meta-recursive"
|
||||
@@ -3362,14 +3432,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-font-meta -> This allows read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-font-meta -> This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-font-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-font-meta-recursive -> This allows read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-font-meta-recursive -> This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-font-meta-recursive"
|
||||
@@ -3404,14 +3474,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-home-meta -> This allows read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-home-meta -> This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-home-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-home-meta-recursive -> This allows read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-home-meta-recursive -> This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-home-meta-recursive"
|
||||
@@ -3446,14 +3516,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-localdata-meta -> This allows read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-localdata-meta -> This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-localdata-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-localdata-meta-recursive -> This allows read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-localdata-meta-recursive -> This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-localdata-meta-recursive"
|
||||
@@ -3488,14 +3558,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-log-meta -> This allows read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-log-meta -> This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-log-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-log-meta-recursive -> This allows read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-log-meta-recursive -> This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-log-meta-recursive"
|
||||
@@ -3530,14 +3600,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-picture-meta -> This allows read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-picture-meta -> This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-picture-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-picture-meta-recursive -> This allows read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-picture-meta-recursive -> This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-picture-meta-recursive"
|
||||
@@ -3572,14 +3642,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-public-meta -> This allows read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-public-meta -> This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-public-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-public-meta-recursive -> This allows read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-public-meta-recursive -> This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-public-meta-recursive"
|
||||
@@ -3614,14 +3684,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-resource-meta -> This allows read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-resource-meta -> This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-resource-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-resource-meta-recursive -> This allows read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-resource-meta-recursive -> This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-resource-meta-recursive"
|
||||
@@ -3656,14 +3726,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-runtime-meta -> This allows read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-runtime-meta -> This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-runtime-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-runtime-meta-recursive -> This allows read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-runtime-meta-recursive -> This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-runtime-meta-recursive"
|
||||
@@ -3698,14 +3768,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-temp-meta -> This allows read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-temp-meta -> This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-temp-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-temp-meta-recursive -> This allows read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-temp-meta-recursive -> This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-temp-meta-recursive"
|
||||
@@ -3740,14 +3810,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-template-meta -> This allows read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-template-meta -> This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-template-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-template-meta-recursive -> This allows read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-template-meta-recursive -> This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-template-meta-recursive"
|
||||
@@ -3782,14 +3852,14 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-video-meta -> This allows read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-video-meta -> This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-video-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-video-meta-recursive -> This allows read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-video-meta-recursive -> This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-video-meta-recursive"
|
||||
@@ -5584,6 +5654,13 @@
|
||||
"shell:allow-open"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"shell:allow-spawn"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
@@ -5612,6 +5689,13 @@
|
||||
"shell:deny-open"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"shell:deny-spawn"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
@@ -6066,6 +6150,13 @@
|
||||
"window:allow-current-monitor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "window:allow-cursor-position -> Enables the cursor_position command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"window:allow-cursor-position"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "window:allow-destroy -> Enables the destroy command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
@@ -6493,6 +6584,13 @@
|
||||
"window:deny-current-monitor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "window:deny-cursor-position -> Denies the cursor_position command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"window:deny-cursor-position"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "window:deny-destroy -> Denies the destroy command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
|
||||
@@ -57,14 +57,6 @@ pub fn close_column(label: &str, app_handle: tauri::AppHandle) -> Result<bool, (
|
||||
}
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub fn get_path(label: &str, app_handle: tauri::AppHandle) -> Result<String, String> {
|
||||
match app_handle.get_webview(label) {
|
||||
Some(webview) => Ok(webview.url().to_string()),
|
||||
None => Err("Webview not found".into()),
|
||||
}
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub fn navigate(label: &str, url: &str, app_handle: tauri::AppHandle) -> Result<(), String> {
|
||||
match app_handle.get_webview(label) {
|
||||
|
||||
@@ -145,7 +145,6 @@ fn main() {
|
||||
commands::window::reposition_column,
|
||||
commands::window::resize_column,
|
||||
commands::window::open_window,
|
||||
commands::window::get_path,
|
||||
commands::window::navigate,
|
||||
commands::window::set_badge
|
||||
])
|
||||
|
||||
@@ -9,7 +9,15 @@ pub async fn get_event(id: &str, state: State<'_, Nostr>) -> Result<String, Stri
|
||||
let event_id: Option<EventId> = match Nip19::from_bech32(id) {
|
||||
Ok(val) => match val {
|
||||
Nip19::EventId(id) => Some(id),
|
||||
Nip19::Event(event) => Some(event.event_id),
|
||||
Nip19::Event(event) => {
|
||||
let relays = event.relays;
|
||||
for relay in relays.into_iter() {
|
||||
let url = Url::from_str(&relay).unwrap();
|
||||
let _ = client.add_relay(url.clone()).await.unwrap_or_default();
|
||||
client.connect_relay(url).await.unwrap_or_default();
|
||||
}
|
||||
Some(event.event_id)
|
||||
}
|
||||
_ => None,
|
||||
},
|
||||
Err(_) => match EventId::from_hex(id) {
|
||||
@@ -18,23 +26,25 @@ pub async fn get_event(id: &str, state: State<'_, Nostr>) -> Result<String, Stri
|
||||
},
|
||||
};
|
||||
|
||||
if let Some(id) = event_id {
|
||||
let filter = Filter::new().id(id);
|
||||
match event_id {
|
||||
Some(id) => {
|
||||
let filter = Filter::new().id(id);
|
||||
|
||||
if let Ok(events) = &client
|
||||
.get_events_of(vec![filter], Some(Duration::from_secs(10)))
|
||||
.await
|
||||
{
|
||||
if let Some(event) = events.first() {
|
||||
Ok(event.as_json())
|
||||
} else {
|
||||
Err("Event not found with current relay list".into())
|
||||
match &client
|
||||
.get_events_of(vec![filter], Some(Duration::from_secs(10)))
|
||||
.await
|
||||
{
|
||||
Ok(events) => {
|
||||
if let Some(event) = events.first() {
|
||||
Ok(event.as_json())
|
||||
} else {
|
||||
Err("Cannot found this event with current relay list".into())
|
||||
}
|
||||
}
|
||||
Err(err) => Err(err.to_string()),
|
||||
}
|
||||
} else {
|
||||
Err("Event not found with current relay list".into())
|
||||
}
|
||||
} else {
|
||||
Err("EventId is not valid".into())
|
||||
None => Err("Event ID is not valid.".into()),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -213,8 +223,6 @@ pub async fn search(
|
||||
limit: usize,
|
||||
state: State<'_, Nostr>,
|
||||
) -> Result<Vec<Event>, String> {
|
||||
println!("search: {}", content);
|
||||
|
||||
let client = &state.client;
|
||||
let filter = Filter::new()
|
||||
.kinds(vec![Kind::TextNote, Kind::Metadata])
|
||||
|
||||
@@ -206,15 +206,12 @@ pub async fn load_selected_account(npub: &str, state: State<'_, Nostr>) -> Resul
|
||||
|
||||
// Add relay to relay pool
|
||||
let _ = client
|
||||
.add_relay_with_opts(relay_url, opts)
|
||||
.add_relay_with_opts(relay_url.clone(), opts)
|
||||
.await
|
||||
.unwrap_or_default();
|
||||
|
||||
// Connect relay
|
||||
client
|
||||
.connect_relay(item.0.to_string())
|
||||
.await
|
||||
.unwrap_or_default();
|
||||
client.connect_relay(relay_url).await.unwrap_or_default();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -251,14 +248,10 @@ pub fn to_npub(hex: &str) -> Result<String, ()> {
|
||||
Ok(npub.to_bech32().unwrap())
|
||||
}
|
||||
|
||||
#[tauri::command(async)]
|
||||
#[tauri::command]
|
||||
pub async fn verify_nip05(key: &str, nip05: &str) -> Result<bool, ()> {
|
||||
let public_key = PublicKey::from_str(key).unwrap();
|
||||
let status = nip05::verify(public_key, nip05, None).await;
|
||||
|
||||
if status.is_ok() {
|
||||
Ok(true)
|
||||
} else {
|
||||
Ok(false)
|
||||
}
|
||||
Ok(status.is_ok())
|
||||
}
|
||||
|
||||
@@ -104,8 +104,6 @@ pub async fn friend_to_friend(npub: &str, state: State<'_, Nostr>) -> Result<boo
|
||||
}
|
||||
}
|
||||
|
||||
println!("contact list: {}", contact_list.len());
|
||||
|
||||
match client.set_contact_list(contact_list).await {
|
||||
Ok(_) => Ok(true),
|
||||
Err(err) => Err(err.to_string()),
|
||||
@@ -306,10 +304,7 @@ pub async fn set_nstore(
|
||||
let builder = EventBuilder::new(Kind::ApplicationSpecificData, encrypted, vec![tag]);
|
||||
|
||||
match client.send_event_builder(builder).await {
|
||||
Ok(event_id) => {
|
||||
println!("set nstore: {}", event_id);
|
||||
Ok(event_id)
|
||||
}
|
||||
Ok(event_id) => Ok(event_id),
|
||||
Err(err) => Err(err.to_string()),
|
||||
}
|
||||
}
|
||||
@@ -322,38 +317,29 @@ pub async fn get_nstore(key: &str, state: State<'_, Nostr>) -> Result<String, St
|
||||
let client = &state.client;
|
||||
|
||||
if let Ok(signer) = client.signer().await {
|
||||
let public_key = signer.public_key().await;
|
||||
let public_key = signer.public_key().await.unwrap();
|
||||
let filter = Filter::new()
|
||||
.author(public_key)
|
||||
.kind(Kind::ApplicationSpecificData)
|
||||
.identifier(key)
|
||||
.limit(1);
|
||||
|
||||
if let Ok(author) = public_key {
|
||||
let filter = Filter::new()
|
||||
.author(author)
|
||||
.kind(Kind::ApplicationSpecificData)
|
||||
.identifier(key)
|
||||
.limit(1);
|
||||
|
||||
let query = client
|
||||
.get_events_of(vec![filter], Some(Duration::from_secs(10)))
|
||||
.await;
|
||||
|
||||
if let Ok(events) = query {
|
||||
match client
|
||||
.get_events_of(vec![filter], Some(Duration::from_secs(5)))
|
||||
.await
|
||||
{
|
||||
Ok(events) => {
|
||||
if let Some(event) = events.first() {
|
||||
println!("get nstore key: {} - received: {}", key, event.id);
|
||||
|
||||
let content = event.content();
|
||||
|
||||
match signer.nip44_decrypt(author, content).await {
|
||||
match signer.nip44_decrypt(public_key, content).await {
|
||||
Ok(decrypted) => Ok(decrypted),
|
||||
Err(_) => Err(event.content.to_string()),
|
||||
}
|
||||
} else {
|
||||
println!("get nstore key: {}", key);
|
||||
Err("Value not found".into())
|
||||
}
|
||||
} else {
|
||||
Err("Query nstore event failed".into())
|
||||
}
|
||||
} else {
|
||||
Err("Something is wrong".into())
|
||||
Err(err) => Err(err.to_string()),
|
||||
}
|
||||
} else {
|
||||
Err("Signer is required".into())
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "../node_modules/@tauri-apps/cli/schema.json",
|
||||
"productName": "Lume",
|
||||
"version": "4.0.0",
|
||||
"version": "4.0.3",
|
||||
"identifier": "nu.lume.Lume",
|
||||
"build": {
|
||||
"beforeBuildCommand": "pnpm desktop:build",
|
||||
|
||||
Reference in New Issue
Block a user