Przeglądaj źródła

feat(app): update app logo and icons

AkiraBit 2 miesięcy temu
rodzic
commit
3804726efa
35 zmienionych plików z 48 dodań i 87 usunięć
  1. 16 16
      .github/workflows/release.yml
  2. 1 1
      apps/picsharp-app/index.html
  3. BIN
      apps/picsharp-app/src-tauri/icons/128x128.png
  4. BIN
      apps/picsharp-app/src-tauri/icons/128x128@2x.png
  5. BIN
      apps/picsharp-app/src-tauri/icons/32x32_.png
  6. BIN
      apps/picsharp-app/src-tauri/icons/32x32__.png
  7. BIN
      apps/picsharp-app/src-tauri/icons/Square107x107Logo.png
  8. BIN
      apps/picsharp-app/src-tauri/icons/Square142x142Logo.png
  9. BIN
      apps/picsharp-app/src-tauri/icons/Square150x150Logo.png
  10. BIN
      apps/picsharp-app/src-tauri/icons/Square284x284Logo.png
  11. BIN
      apps/picsharp-app/src-tauri/icons/Square30x30Logo.png
  12. BIN
      apps/picsharp-app/src-tauri/icons/Square310x310Logo.png
  13. BIN
      apps/picsharp-app/src-tauri/icons/Square44x44Logo.png
  14. BIN
      apps/picsharp-app/src-tauri/icons/Square71x71Logo.png
  15. BIN
      apps/picsharp-app/src-tauri/icons/Square89x89Logo.png
  16. BIN
      apps/picsharp-app/src-tauri/icons/StoreLogo.png
  17. BIN
      apps/picsharp-app/src-tauri/icons/_128x128.png
  18. BIN
      apps/picsharp-app/src-tauri/icons/_128x128@2x.png
  19. BIN
      apps/picsharp-app/src-tauri/icons/_icon.ico
  20. BIN
      apps/picsharp-app/src-tauri/icons/_icon.png
  21. BIN
      apps/picsharp-app/src-tauri/icons/icon.ico
  22. BIN
      apps/picsharp-app/src-tauri/icons/icon.png
  23. BIN
      apps/picsharp-app/src-tauri/icons/icon1.icns
  24. BIN
      apps/picsharp-app/src-tauri/icons/icon2.icns
  25. BIN
      apps/picsharp-app/src-tauri/icons/icon3.icns
  26. BIN
      apps/picsharp-app/src/assets/logo-96x96.png
  27. BIN
      apps/picsharp-app/src/assets/logo.png
  28. 2 2
      apps/picsharp-app/src/components/layouts/app-layout.tsx
  29. 3 3
      apps/picsharp-app/src/components/layouts/sidebar-nav.tsx
  30. 2 1
      apps/picsharp-app/src/pages/compression/toolbar-compress.tsx
  31. 2 1
      apps/picsharp-app/src/pages/compression/watch.tsx
  32. 8 42
      apps/picsharp-app/src/pages/update/index.tsx
  33. 2 2
      apps/picsharp-app/src/utils/fs.ts
  34. 12 5
      apps/picsharp-app/src/utils/tray.ts
  35. 0 14
      apps/picsharp-app/src/utils/updater.ts

+ 16 - 16
.github/workflows/release.yml

@@ -31,7 +31,7 @@ jobs:
             const releaseNotesFileContent = fs.readFileSync('./apps/picsharp-app/release-notes.json', 'utf8');
             const releaseNotes = JSON.parse(releaseNotesFileContent).releases[version] || {};
             const notes = releaseNotes.notes || [];
-            const releaseNote = notes.map((note, index) => `${index + 1}. ${note}`).join(' ');
+            const releaseNote = notes.map((note, index) => `${index + 1}. ${note}`).join('\n');
             console.log('Formatted release note:', releaseNote);
             core.setOutput('release_version', version);
             core.setOutput('release_note', releaseNote);
@@ -43,23 +43,23 @@ jobs:
       fail-fast: false
       matrix:
         include:
-          # - platform: 'macos-latest'
-          #   config: { args: '--target aarch64-apple-darwin', arch: 'aarch64-apple-darwin' }
-          # - platform: 'macos-latest'
-          #   config: { args: '--target x86_64-apple-darwin', arch: 'x86_64-apple-darwin' }
-          # - platform: 'ubuntu-22.04'
-          #   config: { args: '--target x86_64-unknown-linux-gnu', arch: 'x86_64-unknown-linux-gnu' }
-          # - platform: 'ubuntu-22.04-arm'
-          #   config:
-          #     { args: '--target aarch64-unknown-linux-gnu', arch: 'aarch64-unknown-linux-gnu' }
+          - platform: 'macos-latest'
+            config: { args: '--target aarch64-apple-darwin', arch: 'aarch64-apple-darwin' }
+          - platform: 'macos-latest'
+            config: { args: '--target x86_64-apple-darwin', arch: 'x86_64-apple-darwin' }
+          - platform: 'ubuntu-22.04'
+            config: { args: '--target x86_64-unknown-linux-gnu', arch: 'x86_64-unknown-linux-gnu' }
+          - platform: 'ubuntu-22.04-arm'
+            config:
+              { args: '--target aarch64-unknown-linux-gnu', arch: 'aarch64-unknown-linux-gnu' }
           - platform: 'windows-latest'
             config: { args: '--target x86_64-pc-windows-msvc', arch: 'x86_64-pc-windows-msvc' }
-          - platform: 'windows-latest'
-            config:
-              {
-                args: '--target aarch64-pc-windows-msvc --bundles nsis',
-                arch: 'aarch64-pc-windows-msvc',
-              }
+          # - platform: 'windows-latest'
+          #   config:
+          #     {
+          #       args: '--target aarch64-pc-windows-msvc --bundles nsis',
+          #       arch: 'aarch64-pc-windows-msvc',
+          #     }
     runs-on: ${{ matrix.platform }}
     steps:
       - uses: actions/checkout@v4

+ 1 - 1
apps/picsharp-app/index.html

@@ -3,7 +3,7 @@
 
 <head>
   <meta charset="UTF-8" />
-  <link rel="icon" type="image/png" href="public/logo.png" />
+  <link rel="icon" type="image/x-icon" href="public/favicon.ico" />
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   <title>PicSharp</title>
   <style>

BIN
apps/picsharp-app/src-tauri/icons/128x128.png


BIN
apps/picsharp-app/src-tauri/icons/128x128@2x.png


BIN
apps/picsharp-app/src-tauri/icons/32x32_.png


BIN
apps/picsharp-app/src-tauri/icons/32x32__.png


BIN
apps/picsharp-app/src-tauri/icons/Square107x107Logo.png


BIN
apps/picsharp-app/src-tauri/icons/Square142x142Logo.png


BIN
apps/picsharp-app/src-tauri/icons/Square150x150Logo.png


BIN
apps/picsharp-app/src-tauri/icons/Square284x284Logo.png


BIN
apps/picsharp-app/src-tauri/icons/Square30x30Logo.png


BIN
apps/picsharp-app/src-tauri/icons/Square310x310Logo.png


BIN
apps/picsharp-app/src-tauri/icons/Square44x44Logo.png


BIN
apps/picsharp-app/src-tauri/icons/Square71x71Logo.png


BIN
apps/picsharp-app/src-tauri/icons/Square89x89Logo.png


BIN
apps/picsharp-app/src-tauri/icons/StoreLogo.png


BIN
apps/picsharp-app/src-tauri/icons/_128x128.png


BIN
apps/picsharp-app/src-tauri/icons/_128x128@2x.png


BIN
apps/picsharp-app/src-tauri/icons/_icon.ico


BIN
apps/picsharp-app/src-tauri/icons/_icon.png


BIN
apps/picsharp-app/src-tauri/icons/icon.ico


BIN
apps/picsharp-app/src-tauri/icons/icon.png


BIN
apps/picsharp-app/src-tauri/icons/icon1.icns


BIN
apps/picsharp-app/src-tauri/icons/icon2.icns


BIN
apps/picsharp-app/src-tauri/icons/icon3.icns


BIN
apps/picsharp-app/src/assets/logo-96x96.png


BIN
apps/picsharp-app/src/assets/logo.png


+ 2 - 2
apps/picsharp-app/src/components/layouts/app-layout.tsx

@@ -9,7 +9,7 @@ import { parseOpenWithFiles } from '@/utils/launch';
 import useAppStore from '@/store/app';
 import useCompressionStore from '@/store/compression';
 import useSettingsStore from '@/store/settings';
-import { isValidArray, isProd, isLinux } from '@/utils';
+import { isValidArray, isProd, isLinux, isMac } from '@/utils';
 import { parsePaths } from '@/utils/fs';
 import { VALID_IMAGE_EXTS, SettingsKey } from '@/constants';
 import { useNavigate } from '@/hooks/useNavigate';
@@ -183,7 +183,7 @@ export default function AppLayout() {
       <div className='bg-background dark:bg-background h-screen flex-1 bg-gradient-to-b from-blue-50 to-white dark:bg-none'>
         <ErrorBoundary>
           <main className='relative h-full overflow-hidden'>
-            {!isLinux && (
+            {isMac && (
               <div
                 data-tauri-drag-region='true'
                 className='draggable absolute left-0 top-0 z-50 h-6 w-full select-none'

+ 3 - 3
apps/picsharp-app/src/components/layouts/sidebar-nav.tsx

@@ -16,7 +16,7 @@ import { useTheme, Theme } from '@/components/theme-provider';
 import useAppStore from '@/store/app';
 import useSelector from '@/hooks/useSelector';
 import clsx from 'clsx';
-import { isProd, isDev, isLinux } from '@/utils';
+import { isProd, isDev, isLinux, isMac } from '@/utils';
 export interface NavLink {
   title: string;
   href: string;
@@ -82,9 +82,9 @@ export default function SidebarNav() {
       <div
         className={cn(
           'light:border-gray-200 flex h-screen w-[67px] flex-shrink-0 flex-col justify-between border-r bg-neutral-50 pb-4 dark:bg-neutral-800',
-          !isLinux ? 'pt-12' : 'pt-4',
+          isMac ? 'pt-12' : 'pt-4',
         )}
-        data-tauri-drag-region={!isLinux}
+        data-tauri-drag-region={isMac}
       >
         <div className='flex flex-col items-center justify-center gap-2'>
           <img

+ 2 - 1
apps/picsharp-app/src/pages/compression/toolbar-compress.tsx

@@ -18,6 +18,7 @@ import { useNavigate } from '@/hooks/useNavigate';
 import { ICompressor } from '@/utils/compressor';
 import { appCacheDir, join } from '@tauri-apps/api/path';
 import { cn } from '@/lib/utils';
+import { convertFileSrc } from '@tauri-apps/api/core';
 
 function ToolbarCompress() {
   const { sidecar } = useAppStore();
@@ -149,7 +150,7 @@ function ToolbarCompress() {
               targetFile.formattedCompressedBytesSize = humanSize(targetFile.bytesSize);
               targetFile.compressRate = '0%';
             }
-            targetFile.assetPath = res.output_converted_path;
+            targetFile.assetPath = convertFileSrc(res.output_path);
             targetFile.outputPath = res.output_path;
             targetFile.originalTempPath = res.original_temp_converted_path;
           } else {

+ 2 - 1
apps/picsharp-app/src/pages/compression/watch.tsx

@@ -18,6 +18,7 @@ import { message } from '@tauri-apps/plugin-dialog';
 import { sendTextNotification } from '@/utils/notification';
 import { appCacheDir, join } from '@tauri-apps/api/path';
 import useAppStore from '@/store/app';
+import { convertFileSrc } from '@tauri-apps/api/core';
 function CompressionWatch() {
   const navigate = useNavigate();
   const queueRef = useRef<string[]>([]);
@@ -76,7 +77,7 @@ function CompressionWatch() {
               targetFile.formattedCompressedBytesSize = humanSize(targetFile.bytesSize);
               targetFile.compressRate = '0%';
             }
-            targetFile.assetPath = res.output_converted_path;
+            targetFile.assetPath = convertFileSrc(res.output_path);
             targetFile.outputPath = res.output_path;
             targetFile.originalTempPath = res.original_temp_converted_path;
           } else {

+ 8 - 42
apps/picsharp-app/src/pages/update/index.tsx

@@ -21,43 +21,6 @@ enum UpdateStatus {
   Downloading = 'downloading',
   Finished = 'finished',
 }
-const a = `Marked - Markdown Parser
-========================
-
-[Marked] lets you convert [Markdown] into HTML.  Markdown is a simple text format whose goal is to be very easy to read and write, even when not converted to HTML.  This demo page will let you type anything you like and see how it gets converted.  Live.  No more waiting around.
-
-How To Use The Demo
--------------------
-
-1. Type in stuff on the left.
-2. See the live updates on the right.
-
-That's it.  Pretty simple.  There's also a drop-down option above to switch between various views:
-
-- **Preview:**  A live display of the generated HTML as it would render in a browser.
-- **HTML Source:**  The generated HTML before your browser makes it pretty.
-- **Lexer Data:**  What [marked] uses internally, in case you like gory stuff like this.
-- **Quick Reference:**  A brief run-down of how to format things using markdown.
-
-Why Markdown?
--------------
-
-It's easy.  It's not overly bloated, unlike HTML.  Also, as the creator of [markdown] says,
-
-> The overriding design goal for Markdown's
-> formatting syntax is to make it as readable
-> as possible. The idea is that a
-> Markdown-formatted document should be
-> publishable as-is, as plain text, without
-> looking like it's been marked up with tags
-> or formatting instructions.
-
-Ready to start writing?  Either start changing stuff on the left or
-[clear everything](/demo/?text=) with a simple click.
-
-[Marked]: https://github.com/markedjs/marked/
-[Markdown]: http://daringfireball.net/projects/markdown/
-`;
 
 const ReleaseNotes = memo(function ReleaseNotes({ data }: { data: string }) {
   const [html, setHtml] = useState<string>('');
@@ -71,7 +34,7 @@ const ReleaseNotes = memo(function ReleaseNotes({ data }: { data: string }) {
 export default function Update() {
   const [query] = useSearchParams();
   const version = query.get('version');
-  const releaseContent = query.get('releaseContent');
+  const releaseContent = query.get('releaseContent') || '';
   const [status, setStatus] = useState<UpdateStatus>(UpdateStatus.Ready);
   const [progress, setProgress] = useState<number>(0);
   const t = useI18n();
@@ -141,7 +104,7 @@ export default function Update() {
   };
 
   return (
-    <div className='bg-background flex min-h-screen flex-col items-center justify-center px-4 pb-5 pt-7'>
+    <div className='bg-background flex min-h-screen w-screen flex-col items-center justify-center px-4 pb-5 pt-7'>
       <div className='flex w-full flex-1 flex-col rounded-lg bg-white p-5 shadow-xl dark:bg-neutral-800'>
         <h1 className='text-foreground mb-3 text-center text-3xl font-bold'>{t('update.title')}</h1>
 
@@ -153,9 +116,12 @@ export default function Update() {
 
         <div className='mb-3 flex flex-1 flex-col'>
           <h2 className='text-foreground mb-3 text-lg font-semibold'>{t('update.changelog')}</h2>
-          <div className='text-foreground h-[220px] flex-grow-0 list-inside list-disc space-y-2 overflow-y-auto rounded-md p-4 py-3 dark:bg-neutral-700'>
-            {/* {releaseContent} */}
-            <ReleaseNotes data={a} />
+          <div className='text-foreground h-[220px] w-full flex-grow-0 list-inside list-disc space-y-2 overflow-y-auto rounded-md p-4 py-3 dark:bg-neutral-700'>
+            {releaseContent.split('\n').map((line, index) => (
+              <div key={index} className='w-full break-all'>
+                {line}
+              </div>
+            ))}
           </div>
         </div>
         <div className='relative w-full'>

+ 2 - 2
apps/picsharp-app/src/utils/fs.ts

@@ -1,4 +1,4 @@
-import { invoke } from '@tauri-apps/api/core';
+import { convertFileSrc, invoke } from '@tauri-apps/api/core';
 import { ICompressor } from './compressor';
 import { isValidArray } from '.';
 
@@ -33,7 +33,7 @@ export async function parsePaths(paths: string[], validExts: string[]) {
     return candidates.map<FileInfo>((item) => ({
       id: item.id,
       path: item.path,
-      assetPath: item.asset_path,
+      assetPath: convertFileSrc(item.path),
       name: item.name,
       parentDir: item.base_dir,
       bytesSize: item.bytes_size,

+ 12 - 5
apps/picsharp-app/src/utils/tray.ts

@@ -7,6 +7,7 @@ import { getCurrentWindow } from '@tauri-apps/api/window';
 import { isProd } from '.';
 import { createWebviewWindow } from './window';
 import checkForUpdate from './updater';
+import { message } from '@tauri-apps/plugin-dialog';
 
 declare global {
   interface Window {
@@ -15,6 +16,7 @@ declare global {
 }
 
 export async function createTrayMenu() {
+  if (getCurrentWebviewWindow().label !== 'main') return;
   const menu = await Menu.new({
     items: [
       {
@@ -49,8 +51,13 @@ export async function createTrayMenu() {
       {
         id: 'check_update',
         text: t('tray.check_update'),
-        action: () => {
-          checkForUpdate();
+        action: async () => {
+          const updater = await checkForUpdate();
+          if (!updater) {
+            message(t('settings.about.version.no_update_available'), {
+              title: t('tray.check_update'),
+            });
+          }
         },
         accelerator: 'CmdOrCtrl+U',
       },
@@ -71,9 +78,9 @@ export async function initTray() {
   if (getCurrentWebviewWindow().label !== 'main' || window.__TRAY_INSTANCE) return;
 
   const menu = await createTrayMenu();
-
+  const icon = await defaultWindowIcon();
   const options: TrayIconOptions = {
-    icon: await defaultWindowIcon(),
+    icon,
     iconAsTemplate: true,
     menu,
     menuOnLeftClick: false,
@@ -92,6 +99,6 @@ export async function initTray() {
   window.__TRAY_INSTANCE = tray;
 }
 
-if (!isProd) {
+if (isProd) {
   initTray();
 }

+ 0 - 14
apps/picsharp-app/src/utils/updater.ts

@@ -5,20 +5,6 @@ import { t } from '../i18n';
 export const UPDATE_WINDOW_LABEL = 'update-detail';
 
 export default async function checkForUpdate() {
-  createWebviewWindow(UPDATE_WINDOW_LABEL, {
-    url: `/update?version=1.0.0&releaseContent=test`,
-    title: t('nav.update'),
-    width: 500,
-    height: 490,
-    center: true,
-    resizable: false,
-    titleBarStyle: 'overlay',
-    hiddenTitle: true,
-    dragDropEnabled: true,
-    minimizable: false,
-    maximizable: false,
-  });
-  return;
   const updater = await check();
   if (updater) {
     console.log(`found update ${updater.version} from ${updater.date} with notes ${updater.body}`);