From 5df221455499a41a93cd9e47c7ae75eb1f296ae1 Mon Sep 17 00:00:00 2001 From: arch3rPro Date: Wed, 5 Nov 2025 16:40:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(omnitools):=20=E6=B7=BB=E5=8A=A0=20OmniToo?= =?UTF-8?q?ls=20=E5=BA=94=E7=94=A8=E9=85=8D=E7=BD=AE=E5=8F=8A=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/omnitools/0.6.0/data.yml | 11 +++++++++ apps/omnitools/0.6.0/docker-compose.yml | 15 +++++++++++++ apps/omnitools/README.md | 15 +++++++++++++ apps/omnitools/README_en.md | 14 ++++++++++++ apps/omnitools/data.yml | 27 +++++++++++++++++++++++ apps/omnitools/latest/data.yml | 11 +++++++++ apps/omnitools/latest/docker-compose.yml | 15 +++++++++++++ apps/omnitools/omini.png | Bin 0 -> 9085 bytes 8 files changed, 108 insertions(+) create mode 100644 apps/omnitools/0.6.0/data.yml create mode 100644 apps/omnitools/0.6.0/docker-compose.yml create mode 100644 apps/omnitools/README.md create mode 100644 apps/omnitools/README_en.md create mode 100644 apps/omnitools/data.yml create mode 100644 apps/omnitools/latest/data.yml create mode 100644 apps/omnitools/latest/docker-compose.yml create mode 100644 apps/omnitools/omini.png diff --git a/apps/omnitools/0.6.0/data.yml b/apps/omnitools/0.6.0/data.yml new file mode 100644 index 0000000..3508175 --- /dev/null +++ b/apps/omnitools/0.6.0/data.yml @@ -0,0 +1,11 @@ +additionalProperties: + formFields: + - default: "8080" + envKey: PANEL_APP_PORT_HTTP + label: + en: Port + zh: 端口 + required: true + type: number + edit: true + rule: paramPort diff --git a/apps/omnitools/0.6.0/docker-compose.yml b/apps/omnitools/0.6.0/docker-compose.yml new file mode 100644 index 0000000..3d16085 --- /dev/null +++ b/apps/omnitools/0.6.0/docker-compose.yml @@ -0,0 +1,15 @@ +services: + omni-tools: + image: iib0011/omni-tools:0.6.0 + container_name: omni-tools + restart: always + ports: + - "${PANEL_APP_PORT_HTTP}:80" + networks: + - 1panel-network + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/omnitools/README.md b/apps/omnitools/README.md new file mode 100644 index 0000000..b690142 --- /dev/null +++ b/apps/omnitools/README.md @@ -0,0 +1,15 @@ +## OmniTools + +**OmniTools** 是一个完全前端运行的多功能工具合集,覆盖图像/视频/音频、PDF、文本/列表、日期时间、数学与数据处理等场景。所有文件均在**本地浏览器**处理,**无广告**、**无跟踪**。Docker 镜像约 **28MB**(部署更快)。 + +### 功能 +- **图像/视频/音频**:调整大小、格式转换、编辑、剪辑、倒放等 +- **PDF**:拆分、合并、编辑等 +- **文本/列表**:大小写转换、列表打乱、文本格式化等 +- **日期时间**:日期计算、时区转换等 +- **数学**:素数生成、电压/电流/电阻计算等 +- **数据**:JSON、CSV、XML 工具等 + +### 项目概况 +- 演示站点:[omnitools.app](https://omnitools.app) + diff --git a/apps/omnitools/README_en.md b/apps/omnitools/README_en.md new file mode 100644 index 0000000..b6cac15 --- /dev/null +++ b/apps/omnitools/README_en.md @@ -0,0 +1,14 @@ +## OmniTools + +**OmniTools** is a fully client-side toolkit for everyday tasks across media, PDF, text, time, math, and data. Files are processed **in-browser**, with **no ads** and **no tracking**. The Docker image is about **28MB** for fast deployment. + +### Features +- **Image/Video/Audio**: resize, convert, edit, trim, reverse +- **PDF**: split, merge, edit +- **Text/List**: case converters, list shuffler, formatters +- **Date & Time**: calculators, time zone converters +- **Math**: prime generation, voltage/current/resistance calculations +- **Data**: tools for JSON, CSV, XML + +### Project Snapshot +- Demo: [omnitools.app](https://omnitools.app) \ No newline at end of file diff --git a/apps/omnitools/data.yml b/apps/omnitools/data.yml new file mode 100644 index 0000000..2bdf286 --- /dev/null +++ b/apps/omnitools/data.yml @@ -0,0 +1,27 @@ +name: OmniTools +tags: + - 实用工具 + - Web 服务器 + - 开发工具 +title: 一套功能强大的日常任务网络工具,自托管。无广告,无追踪,只需通过浏览器即可享受快速便捷的实用功能! +description: + en: Self-hosted collection of powerful web-based tools for everyday tasks. No + ads, no tracking, just fast, accessible utilities right from your browser! + zh: 一套功能强大的日常任务网络工具,自托管。无广告,无追踪,只需通过浏览器即可享受快速便捷的实用功能! +additionalProperties: + key: omni-tools + name: OmniTools + tags: + - Tool + - Server + - DevTool + shortDescZh: 一套功能强大的日常任务网络工具,自托管。无广告,无追踪,只需通过浏览器即可享受快速便捷的实用功能! + shortDescEn: Self-hosted collection of powerful web-based tools for everyday + tasks. No ads, no tracking, just fast, accessible utilities right from your + browser! + type: website + crossVersionUpdate: true + limit: 0 + website: https://omnitools.app/ + github: https://github.com/iib0011/omni-tools + document: https://github.com/iib0011/omni-tools diff --git a/apps/omnitools/latest/data.yml b/apps/omnitools/latest/data.yml new file mode 100644 index 0000000..3508175 --- /dev/null +++ b/apps/omnitools/latest/data.yml @@ -0,0 +1,11 @@ +additionalProperties: + formFields: + - default: "8080" + envKey: PANEL_APP_PORT_HTTP + label: + en: Port + zh: 端口 + required: true + type: number + edit: true + rule: paramPort diff --git a/apps/omnitools/latest/docker-compose.yml b/apps/omnitools/latest/docker-compose.yml new file mode 100644 index 0000000..b8a4649 --- /dev/null +++ b/apps/omnitools/latest/docker-compose.yml @@ -0,0 +1,15 @@ +services: + omni-tools: + image: iib0011/omni-tools:latest + container_name: omni-tools + restart: always + ports: + - "${PANEL_APP_PORT_HTTP}:80" + networks: + - 1panel-network + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/omnitools/omini.png b/apps/omnitools/omini.png new file mode 100644 index 0000000000000000000000000000000000000000..5a56091b28df6f2abc3b582557922a4dc3bab737 GIT binary patch literal 9085 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 literal 0 HcmV?d00001