9 Commits

Author SHA1 Message Date
小弟调调
49bf21de71 doc: Update README.md 2025-12-04 00:34:25 +08:00
小弟调调
15723a08c9 feat: support math formula rendering. #58 2025-08-03 22:17:27 +08:00
小弟调调
4fd4f3644d doc: Update README.md 2025-05-28 03:25:41 +08:00
小弟调调
7969fb28a4 released v2.4.1 2025-05-28 02:45:11 +08:00
小弟调调
1955ec9cbd feat: add Apple Silicon (arm64) support for Docker image. #57 2025-05-28 02:11:37 +08:00
小弟调调
54e4188eb0 feat: add Apple Silicon (arm64) support for Docker image. #57 2025-05-28 02:02:03 +08:00
小弟调调
6fe79146d3 feat: add Apple Silicon (arm64) support for Docker image. #57 2025-05-28 01:56:26 +08:00
小弟调调
e7b52e0ebe feat: add Apple Silicon (arm64) support for Docker image. #57 2025-05-28 01:49:14 +08:00
jaywcjlove
8991adcd15 ci: update workflows config. 2024-08-05 00:58:24 +08:00
8 changed files with 98 additions and 36 deletions

View File

@@ -78,44 +78,52 @@ jobs:
- run: echo "outputs.create_tag_versionNumber - ${{ needs.build.outputs.create_tag_versionNumber }}" - run: echo "outputs.create_tag_versionNumber - ${{ needs.build.outputs.create_tag_versionNumber }}"
- run: echo "outputs.tag - ${{ needs.build.outputs.tag }}" - run: echo "outputs.tag - ${{ needs.build.outputs.tag }}"
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# Create Docker Image # Create Docker Image
- name: Docker login - name: Docker login
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }} run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }}
- name: Build wxmp image # - name: Build wxmp image
# working-directory: website
# run: docker image build -t wxmp .
- name: Build and push multi-platform image
working-directory: website working-directory: website
run: docker image build -t wxmp .
- name: Tags & Push image (latest)
run: | run: |
echo "outputs.tag - ${{ needs.build.outputs.version }}" docker buildx build \
docker tag wxmp ${{ secrets.DOCKER_USER }}/wxmp:latest --platform linux/amd64,linux/arm64 \
docker push ${{ secrets.DOCKER_USER }}/wxmp:latest -t ${{ secrets.DOCKER_USER }}/wxmp:latest \
--push .
- name: Tags & Push image - name: Build and push multi-platform image (with tag)
if: needs.build.outputs.successful if: needs.build.outputs.successful
run: |
echo "outputs.tag - ${{ needs.build.outputs.version }}"
docker tag wxmp ${{ secrets.DOCKER_USER }}/wxmp:${{needs.build.outputs.version}}
docker push ${{ secrets.DOCKER_USER }}/wxmp:${{needs.build.outputs.version}}
# Create Docker Image in GitHub
- name: Login to GitHub registry
run: echo ${{ github.token }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- name: Build docker image
working-directory: website working-directory: website
run: docker build -t ghcr.io/jaywcjlove/wxmp:latest .
- name: Publish to GitHub registry
run: docker push ghcr.io/jaywcjlove/wxmp:latest
- name: Tag docker image (beta) and publish to GitHub registry
if: needs.build.outputs.successful
run: | run: |
echo "version: v${{ needs.build.outputs.version }}" docker buildx build \
docker tag ghcr.io/jaywcjlove/wxmp:latest ghcr.io/jaywcjlove/wxmp:${{needs.build.outputs.version}} --platform linux/amd64,linux/arm64 \
docker push ghcr.io/jaywcjlove/wxmp:${{needs.build.outputs.version}} -t ${{ secrets.DOCKER_USER }}/wxmp:${{ needs.build.outputs.version }} \
--push .
# # Create Docker Image in GitHub
# - name: Login to GitHub registry
# run: echo ${{ github.token }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
# - name: Build docker image
# working-directory: website
# run: docker build -t ghcr.io/jaywcjlove/wxmp:latest .
# - name: Publish to GitHub registry
# run: docker push ghcr.io/jaywcjlove/wxmp:latest
# - name: Tag docker image (beta) and publish to GitHub registry
# if: needs.build.outputs.successful
# run: |
# echo "version: v${{ needs.build.outputs.version }}"
# docker tag ghcr.io/jaywcjlove/wxmp:latest ghcr.io/jaywcjlove/wxmp:${{needs.build.outputs.version}}
# docker push ghcr.io/jaywcjlove/wxmp:${{needs.build.outputs.version}}
build_windows: build_windows:
needs: [build] needs: [build]

View File

@@ -1,9 +1,48 @@
<div markdown="1">
<sup>使用<a href="https://wangchujiang.com/#/app" target="_blank">我的应用</a>也是一种<a href="https://wangchujiang.com/#/sponsor" target="_blank">支持</a>我的方式:</sup>
<br>
<a target="_blank" href="https://apps.apple.com/app/Deskmark/6755948110" title="Deskmark for macOS"><img alt="Deskmark" height="52" width="52" src="https://wangchujiang.com/appicon/deskmark.png"></a>
<a target="_blank" href="https://apps.apple.com/app/Keyzer/6500434773" title="Keyzer for macOS"><img alt="Keyzer" height="52" width="52" src="https://wangchujiang.com/appicon/keyzer.png"></a>
<a target="_blank" href="https://github.com/jaywcjlove/vidwall-hub" title="Vidwall Hub for macOS"><img alt="Vidwall Hub" height="52" width="52" src="https://wangchujiang.com/appicon/vidwall-hub.png"></a>
<a target="_blank" href="https://apps.apple.com/app/VidCrop/6752624705" title="VidCrop for macOS"><img alt="VidCrop" height="52" width="52" src="https://wangchujiang.com/appicon/vidcrop.png"></a>
<a target="_blank" href="https://apps.apple.com/app/Vidwall/6747587746" title="Vidwall for macOS"><img alt="Vidwall" height="52" width="52" src="https://wangchujiang.com/appicon/vidwall.png"></a>
<a target="_blank" href="https://wangchujiang.com/mousio-hint/" title="Mousio Hint for macOS"><img alt="Mousio Hint" height="52" width="52" src="https://wangchujiang.com/appicon/mousio-hint.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6746747327" title="Mousio for macOS"><img alt="Mousio" height="52" width="52" src="https://wangchujiang.com/appicon/mousio.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6745227444" title="Musicer for macOS"><img alt="Musicer" height="52" width="52" src="https://wangchujiang.com/appicon/musicer.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6743841447" title="Audioer for macOS"><img alt="Audioer" height="52" width="52" src="https://wangchujiang.com/appicon/audioer.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6744690194" title="FileSentinel for macOS"><img alt="FileSentinel" height="52" width="52" src="https://wangchujiang.com/appicon/file-sentinel.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6743495172" title="FocusCursor for macOS"><img alt="FocusCursor" height="52" width="52" src="https://wangchujiang.com/appicon/focus-cursor.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6742680573" title="Videoer for macOS"><img alt="Videoer" height="52" width="52" src="https://wangchujiang.com/appicon/videoer.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6740425504" title="KeyClicker for macOS"><img alt="KeyClicker" height="52" width="52" src="https://wangchujiang.com/appicon/key-clicker.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6739052447" title="DayBar for macOS"><img alt="DayBar" height="52" width="52" src="https://wangchujiang.com/appicon/daybar.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6739444407" title="Iconed for macOS"><img alt="Iconed" height="52" width="52" src="https://wangchujiang.com/appicon/iconed.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6737160756" title="Mousio for macOS"><img alt="Mousio" height="52" width="52" src="https://wangchujiang.com/appicon/rightmenu-master.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6723903021" title="Paste Quick for macOS"><img alt="Quick RSS" height="52" width="52" src="https://wangchujiang.com/appicon/paste-quick.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6670696072" title="Quick RSS for macOS/iOS"><img alt="Quick RSS" height="52" width="52" src="https://wangchujiang.com/appicon/quick-rss.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6670167443" title="Web Serve for macOS"><img alt="Web Serve" height="52" width="52" src="https://wangchujiang.com/appicon/web-serve.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6503953628" title="Copybook Generator for macOS/iOS"><img alt="Copybook Generator" height="52" width="52" src="https://wangchujiang.com/appicon/copybook-generator.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6471227008" title="DevTutor for macOS/iOS"><img alt="DevTutor for SwiftUI" height="52" width="52" src="https://wangchujiang.com/appicon/devtutor.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6479819388" title="RegexMate for macOS/iOS"><img alt="RegexMate" height="52" width="52" src="https://wangchujiang.com/appicon/regex-mate.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6479194014" title="Time Passage for macOS/iOS"><img alt="Time Passage" height="52" width="52" src="https://wangchujiang.com/appicon/time-passage.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6478772538" title="IconizeFolder for macOS"><img alt="Iconize Folder" height="52" width="52" src="https://wangchujiang.com/appicon/iconize-folder.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6478511402" title="Textsound Saver for macOS/iOS"><img alt="Textsound Saver" height="52" width="52" src="https://wangchujiang.com/appicon/textsound-saver.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6476924627" title="Create Custom Symbols for macOS"><img alt="Create Custom Symbols" height="52" width="52" src="https://wangchujiang.com/appicon/create-custom-symbols.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6476452351" title="DevHub for macOS"><img alt="DevHub" height="52" width="52" src="https://wangchujiang.com/appicon/devhub.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6476400184" title="Resume Revise for macOS"><img alt="Resume Revise" height="52" width="52" src="https://wangchujiang.com/appicon/resume-revise.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6472593276" title="Palette Genius for macOS"><img alt="Palette Genius" height="52" width="52" src="https://wangchujiang.com/appicon/palette-genius.png"></a>
<a target="_blank" href="https://apps.apple.com/app/6470879005" title="Symbol Scribe for macOS"><img alt="Symbol Scribe" height="52" width="52" src="https://wangchujiang.com/appicon/symbol-scribe.png"></a>
</div>
<hr>
<div align="center"> <div align="center">
<h1 align="center">微信公众号 Markdown 编辑器</h1> <h1 align="center">微信公众号 Markdown 编辑器</h1>
</div> </div>
[![Buy me a coffee](https://img.shields.io/badge/Buy%20me%20a%20coffee-048754?logo=buymeacoffee)](https://jaywcjlove.github.io/#/sponsor) [![Buy me a coffee](https://img.shields.io/badge/Buy%20me%20a%20coffee-048754?logo=buymeacoffee)](https://jaywcjlove.github.io/#/sponsor)
[![CI](https://github.com/jaywcjlove/wxmp/actions/workflows/ci.yml/badge.svg)](https://github.com/jaywcjlove/wxmp/actions/workflows/ci.yml) [![CI](https://github.com/jaywcjlove/wxmp/actions/workflows/ci.yml/badge.svg)](https://github.com/jaywcjlove/wxmp/actions/workflows/ci.yml)
[![Docker Image Version (latest by date)](https://img.shields.io/docker/v/wcjiang/wxmp?logo=docker)](https://hub.docker.com/r/wcjiang/wxmp)
[![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/wcjiang/wxmp?logo=docker)](https://hub.docker.com/r/wcjiang/wxmp)
[![Docker Pulls](https://img.shields.io/docker/pulls/wcjiang/wxmp?logo=docker)](https://hub.docker.com/r/wcjiang/wxmp)
[![微信公众号 Markdown 编辑器](https://user-images.githubusercontent.com/1680273/188264183-a6b8cb6a-92e1-4a73-afc5-4f0234b26ed3.png)](https://jaywcjlove.github.io/wxmp) [![微信公众号 Markdown 编辑器](https://user-images.githubusercontent.com/1680273/188264183-a6b8cb6a-92e1-4a73-afc5-4f0234b26ed3.png)](https://jaywcjlove.github.io/wxmp)
@@ -26,6 +65,14 @@
- [x] CI 自动生成 Electron 桌面应用。 - [x] CI 自动生成 Electron 桌面应用。
- [ ] ~~支持全局字号大小选择。~~ - [ ] ~~支持全局字号大小选择。~~
### 数学公式
$\\c = \pm\sqrt{a^2 + b^2}$ 和 $C_L$ 数学公式行内显示
```math
L = \frac{1}{2} \rho v^2 S C_L
```
### 支持代码块样式 ### 支持代码块样式
下面是 `jsx` 代码块展示示例,并高亮代码,用于 web 应用中效果展示。 下面是 `jsx` 代码块展示示例,并高亮代码,用于 web 应用中效果展示。

View File

@@ -2,7 +2,7 @@
"name": "wxmp", "name": "wxmp",
"description": "微信公众号 Markdown 编辑器", "description": "微信公众号 Markdown 编辑器",
"homepage": "https://github.com/jaywcjlove/wxmp.git", "homepage": "https://github.com/jaywcjlove/wxmp.git",
"version": "2.4.0", "version": "2.4.1",
"main": "main.js", "main": "main.js",
"author": "Kenny Wong <398188662@qq.com>", "author": "Kenny Wong <398188662@qq.com>",
"private": true, "private": true,
@@ -18,13 +18,13 @@
"build": "npm run copy && cross-env NODE_ENV=production electron-builder build --publish=never --config config.json" "build": "npm run copy && cross-env NODE_ENV=production electron-builder build --publish=never --config config.json"
}, },
"dependencies": { "dependencies": {
"@wcj/wxmp-main": "2.4.0" "@wcj/wxmp-main": "2.4.1"
}, },
"devDependencies": { "devDependencies": {
"@wcj/wxmp-preload": "2.4.0", "@wcj/wxmp-preload": "2.4.1",
"cpy-cli": "^5.0.0", "cpy-cli": "^5.0.0",
"electron": "20.1.3", "electron": "20.1.3",
"electron-builder": "23.3.3", "electron-builder": "23.3.3",
"website": "2.4.0" "website": "2.4.1"
} }
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "@wcj/wxmp-main", "name": "@wcj/wxmp-main",
"version": "2.4.0", "version": "2.4.1",
"main": "./lib/index.js", "main": "./lib/index.js",
"private": true, "private": true,
"scripts": { "scripts": {

View File

@@ -1,6 +1,6 @@
{ {
"name": "@wcj/wxmp-preload", "name": "@wcj/wxmp-preload",
"version": "2.4.0", "version": "2.4.1",
"main": "./lib/index.js", "main": "./lib/index.js",
"private": true, "private": true,
"scripts": { "scripts": {

View File

@@ -1,4 +1,4 @@
{ {
"version": "2.4.0", "version": "2.4.1",
"packages": ["website", "electron/*"] "packages": ["website", "electron/*"]
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "website", "name": "website",
"version": "2.4.0", "version": "2.4.1",
"private": true, "private": true,
"scripts": { "scripts": {
"start": "kkt start", "start": "kkt start",
@@ -34,10 +34,12 @@
"react-router-dom": "^6.3.0", "react-router-dom": "^6.3.0",
"rehype-attr": "^3.0.0", "rehype-attr": "^3.0.0",
"rehype-ignore": "^2.0.0", "rehype-ignore": "^2.0.0",
"rehype-katex": "^7.0.1",
"rehype-prism-plus": "^2.0.0", "rehype-prism-plus": "^2.0.0",
"rehype-raw": "^7.0.0", "rehype-raw": "^7.0.0",
"rehype-stringify": "^10.0.0", "rehype-stringify": "^10.0.0",
"remark-gfm": "^4.0.0", "remark-gfm": "^4.0.0",
"remark-math": "^6.0.0",
"remark-parse": "^11.0.0", "remark-parse": "^11.0.0",
"remark-rehype": "^11.0.0", "remark-rehype": "^11.0.0",
"styled-components": "~6.1.0", "styled-components": "~6.1.0",

View File

@@ -5,7 +5,10 @@ import { Element } from 'hast';
import remarkParse from 'remark-parse'; import remarkParse from 'remark-parse';
import remarkGfm from 'remark-gfm'; import remarkGfm from 'remark-gfm';
import remarkRehype from 'remark-rehype'; import remarkRehype from 'remark-rehype';
import remarkMath from 'remark-math';
import rehypePrism from 'rehype-prism-plus'; import rehypePrism from 'rehype-prism-plus';
import rehypeKatex from 'rehype-katex';
import 'katex/dist/katex.min.css'; // Ensure KaTeX styles are included
import rehypeRaw from 'rehype-raw'; import rehypeRaw from 'rehype-raw';
import rehypeAttrs from 'rehype-attr'; import rehypeAttrs from 'rehype-attr';
import rehypeIgnore from 'rehype-ignore'; import rehypeIgnore from 'rehype-ignore';
@@ -32,8 +35,10 @@ export function markdownToHTML(md: string, css: string, opts: MarkdownToHTMLOpti
const processor = unified() const processor = unified()
.use(remarkParse) .use(remarkParse)
.use(remarkGfm) .use(remarkGfm)
.use(remarkMath)
.use(remarkRehype, { allowDangerousHtml: true }) .use(remarkRehype, { allowDangerousHtml: true })
.use(rehypeRaw) .use(rehypeRaw)
.use(rehypeKatex)
.use(rehypePrism, { .use(rehypePrism, {
ignoreMissing: true, ignoreMissing: true,
}) })