diff --git a/package.json b/package.json
index 68c820a12..a9e2ac4c2 100755
--- a/package.json
+++ b/package.json
@@ -47,6 +47,7 @@
"@types/node": "^22.10.5",
"@types/sql.js": "^1.4.9",
"@types/string-width": "^4.0.1",
+ "@types/ua-parser-js": "^0.7.39",
"@types/validator": "^13.12.2",
"@xterm/addon-clipboard": "^0.1.0",
"@xterm/addon-fit": "^0.10.0",
@@ -84,7 +85,7 @@
"svelte-image-viewer": "^7.1.0",
"svelte-markdown": "^0.4.1",
"svelte-splitpanes": "^8.0.9",
- "ua-parser-js": "^2.0.3",
+ "ua-parser-js": "1.0.41",
"validator": "^13.12.0",
"vite-plugin-no-bundle": "^4.0.0",
"xterm": "^5.3.0",
diff --git a/src/apps/admin/mailbrokermanagerapp/Pages/Sent.svelte b/src/apps/admin/mailbrokermanagerapp/Pages/Sent.svelte
index 42606a4d9..ac4dc1763 100644
--- a/src/apps/admin/mailbrokermanagerapp/Pages/Sent.svelte
+++ b/src/apps/admin/mailbrokermanagerapp/Pages/Sent.svelte
@@ -49,7 +49,7 @@
- {#each filteredSent as sentRecord (sentRecord._id)}
+ {#each filteredSent.toReversed() as sentRecord (sentRecord._id)}
{/each}
diff --git a/src/apps/components/messagecomposer/MessageComposer.svelte b/src/apps/components/messagecomposer/MessageComposer.svelte
index 13c5b6764..ef1cbdc16 100755
--- a/src/apps/components/messagecomposer/MessageComposer.svelte
+++ b/src/apps/components/messagecomposer/MessageComposer.svelte
@@ -1,20 +1,29 @@
+
-
+ {#if $showPreview}
+
+
+
+ {:else}
+
+ {/if}
-
+
diff --git a/src/apps/components/messagecomposer/MessageComposer.ts b/src/apps/components/messagecomposer/MessageComposer.ts
index a4b8d29db..9109b8013 100644
--- a/src/apps/components/messagecomposer/MessageComposer.ts
+++ b/src/apps/components/messagecomposer/MessageComposer.ts
@@ -12,8 +12,8 @@ export const MessageComposerApp: App = {
appGroup: "multimedia",
},
position: { centered: true },
- size: { w: 550, h: 450 },
- minSize: { w: 550, h: 450 },
+ size: { w: 800, h: 650 },
+ minSize: { w: 800, h: 650 },
maxSize: { w: NaN, h: NaN },
state: {
maximized: false,
diff --git a/src/apps/components/messagecomposer/MessageComposer/MessageActions.svelte b/src/apps/components/messagecomposer/MessageComposer/MessageActions.svelte
new file mode 100755
index 000000000..3016607df
--- /dev/null
+++ b/src/apps/components/messagecomposer/MessageComposer/MessageActions.svelte
@@ -0,0 +1,27 @@
+
+
+
+ {#snippet leftContent()}
+ process.addAttachment()}>
+ Attach...
+
+
+ {/snippet}
+ {#snippet rightContent()}
+
+ ($showPreview = true)} icon="eye">
+ ($showPreview = false)} icon="code-xml">
+
+ {/snippet}
+
diff --git a/src/apps/components/messagecomposer/MessageComposer/ActionBar.svelte b/src/apps/components/messagecomposer/MessageComposer/StatusBar.svelte
old mode 100755
new mode 100644
similarity index 58%
rename from src/apps/components/messagecomposer/MessageComposer/ActionBar.svelte
rename to src/apps/components/messagecomposer/MessageComposer/StatusBar.svelte
index 6beb47617..bb6b0b511
--- a/src/apps/components/messagecomposer/MessageComposer/ActionBar.svelte
+++ b/src/apps/components/messagecomposer/MessageComposer/StatusBar.svelte
@@ -3,22 +3,19 @@
import ActionBar from "$lib/Window/ActionBar.svelte";
import ActionButton from "$lib/Window/ActionBar/ActionButton.svelte";
import IconActionButton from "$lib/Window/ActionBar/ActionIconButton.svelte";
- import Pill from "$lib/Window/ActionBar/ActionPill.svelte";
- import Separator from "$lib/Window/ActionBar/ActionSeparator.svelte";
+ import ActionPill from "$lib/Window/ActionBar/ActionPill.svelte";
import { formatBytes } from "$ts/util/fs";
- const { process }: { process: IMessageComposerRuntime } = $props();
- const { title, body, recipients, sending, attachments } = process;
+ let { process }: { process: IMessageComposerRuntime } = $props();
+ const { body, attachments, sending, title, recipients } = process;
{#snippet leftContent()}
- {formatBytes($body.length)}
- {formatBytes($attachments.map((a) => a.data.size).reduce((a, b) => a + b, 0))}
+ {formatBytes($body.length)}
+ {formatBytes($attachments.map((a) => a.data.size).reduce((a, b) => a + b, 0))}
{/snippet}
{#snippet rightContent()}
- process.addAttachment()} />
-
(false);
recipients = Store([]);
attachments = Store([]);
+ showPreview = Store(false);
title = Store("");
body = Store("");
replyId: string | undefined;
@@ -201,6 +202,13 @@ export class MessageComposerRuntime extends AppProcess implements IMessageCompos
this.attachments.update((v) => v.filter((a) => a.uuid !== uuid));
}
+ //#endregion
+ //#region SIGNATURES
+
+ addSignature() {
+ // stub
+ }
+
//#endregion
//#region MISC
diff --git a/src/apps/components/processinfo/ProcessInfo.svelte b/src/apps/components/processinfo/ProcessInfo.svelte
index f02359eb6..d670014db 100644
--- a/src/apps/components/processinfo/ProcessInfo.svelte
+++ b/src/apps/components/processinfo/ProcessInfo.svelte
@@ -59,6 +59,9 @@
{proc.sourceUrl || import.meta.url}
{proc.sourceUrl ? "Original" : "Interpreted"}
+ {#if !ProcessesHelper.IsAnyAppProcess(proc)}
+ {proc.constructor.name || "-"}
+ {/if}
{#if ProcessesHelper.IsAnyAppProcess(proc)}
@@ -66,7 +69,7 @@
{proc.app.id}
{proc.app.data.originId}
- {proc.app.desktop || "-"}
+ {proc.constructor.name || "-"}
{/if}
diff --git a/src/apps/components/shell/Shell/Taskbar/ActionCenterButton.svelte b/src/apps/components/shell/Shell/Taskbar/ActionCenterButton.svelte
index ceacb54bb..badc90d85 100755
--- a/src/apps/components/shell/Shell/Taskbar/ActionCenterButton.svelte
+++ b/src/apps/components/shell/Shell/Taskbar/ActionCenterButton.svelte
@@ -10,7 +10,7 @@