Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
151 commits
Select commit Hold shift + click to select a range
310b062
feat: using pnpm workspace
s-elo May 26, 2025
fa3b183
build: use rsbuild to build client
s-elo May 26, 2025
c28e749
chore: remove client gitignore file
s-elo May 26, 2025
4bd442b
feat: upgrade to react18
s-elo May 26, 2025
7a383d7
feat: upgrade to react19
s-elo May 28, 2025
c46f868
build: upgrade to ts5, add husky and fix some ts error
s-elo May 28, 2025
82a2365
feat: use scss
s-elo Jun 3, 2025
a012212
chore: polish update editor for doc mirror
s-elo Jun 3, 2025
8f4a7a0
feat: migrate to latest milkdown
s-elo Jun 10, 2025
016ba11
feat: support \/ for doc name
s-elo Jun 13, 2025
72f0471
feat: init nest server migration
s-elo Jun 25, 2025
58d9da7
feat: doc apis migration
s-elo Jun 25, 2025
68fe8ba
feat: add settings service
s-elo Jun 26, 2025
9a1a376
feat: add git service
s-elo Jun 26, 2025
48a8894
feat: migrate client to new nest server
s-elo Jun 27, 2025
c583a81
feat: migrate production logics
s-elo Jun 27, 2025
09ab5eb
feat: use @uiw/react-split
s-elo Jul 2, 2025
ad40c1c
feat: basic menu rendering
s-elo Jul 11, 2025
6105a60
feat: add shorcut toolbar in menu
s-elo Jul 11, 2025
d455f6f
feat: handle select and expand and scroll doc in menu
s-elo Jul 11, 2025
90870c5
feat: create new doc and delete doc
s-elo Jul 15, 2025
cb454aa
feat: new file and new folder for root menu
s-elo Jul 16, 2025
10d1a15
feat: copy cut paste doc
s-elo Jul 18, 2025
88a1582
chore: extract Shortcut component
s-elo Jul 18, 2025
cce617c
style: polish menu style
s-elo Jul 18, 2025
f9800c8
chore: remove old version of menu
s-elo Jul 18, 2025
7df2fa4
feat: support drag and drop to cut and paste docs
s-elo Jul 21, 2025
67faee1
feat: support drop to move docs and polish some styles
s-elo Jul 25, 2025
10a887f
feat: add create new file and folder shortcut in menu
s-elo Jul 25, 2025
f1144e7
feat: use Icon component
s-elo Jul 29, 2025
1af96f7
feat: de-select items when click menu container and compat window wit…
s-elo Jul 29, 2025
79ebd45
feat: remove font material icons
s-elo Jul 30, 2025
93b6cd2
feat: multiple select delete and copyCut
s-elo Jul 30, 2025
6ccba89
feat: polish scrollbar style for menu and milkdown editor
s-elo Jul 30, 2025
8761661
feat: move sidePanel to sidebar
s-elo Jul 31, 2025
f1e0f32
chore: polish the width of doc area
s-elo Aug 1, 2025
ca2d0a1
style: use scss variables instead of css variables
s-elo Aug 7, 2025
177da48
feat: add outline as right panel
s-elo Aug 7, 2025
57612c3
feat: polish outline style and some features
s-elo Aug 8, 2025
85b5953
feat: upgrade milkdown and polish styles
s-elo Aug 9, 2025
4ed9895
feat: support iframe link and slash
s-elo Aug 10, 2025
81a9e91
feat: polish styles
s-elo Aug 11, 2025
2441645
chore: remove old server
s-elo Aug 12, 2025
92a27de
feat: add plugin highlight
s-elo Aug 18, 2025
15b791c
fix: container class name conflict with inline latex
s-elo Aug 18, 2025
a9ceac2
feat: add anchor to heading and sync anchor to outline
s-elo Aug 20, 2025
9409efe
feat: polish outline scroll, only scroll when outside of the view
s-elo Aug 21, 2025
0cf3003
feat: add waitAndCheck method
s-elo Aug 21, 2025
7c3b60b
fix: not scroll to anchor when switching mode
s-elo Aug 21, 2025
17575c1
style: move mirror and fullscreen to footer
s-elo Aug 22, 2025
8c2c418
feat: support render mermaid for code block preview
s-elo Sep 17, 2025
cd45b59
feat: toggle to readonly mode everytime when switching to other docs
s-elo Sep 19, 2025
a07e324
feat: add plugin-container
s-elo Sep 29, 2025
d8d7011
feat: support to edit desc for container
s-elo Sep 29, 2025
3ddab9b
fix: heading anchor re-render issue
s-elo Sep 29, 2025
889654b
feat: extract toAnchor callback as heading config
s-elo Oct 11, 2025
007feb6
feat: upgrade milkdown to support async code block preview rendering
s-elo Oct 17, 2025
237d731
feat: add theme menu to support light, soft and dark themes
s-elo Oct 17, 2025
eb13dcd
feat: setup rust server with settings service
s-elo Oct 31, 2025
4507529
feat: sync the editor setting file with setting rust service
s-elo Nov 5, 2025
22e12e3
chore: get settings directly in update_settings service
s-elo Nov 7, 2025
290c53d
fix: avoid typing blur at title
s-elo Nov 19, 2025
a85bd29
feat: add doc service for rs server
s-elo Nov 25, 2025
7148271
feat: refresh docs after settings updated
s-elo Nov 25, 2025
766554f
test: add test cases for doc service in rust
s-elo Nov 25, 2025
8eea4b1
feat: implement percent-encoding for path normalization and add compr…
s-elo Nov 26, 2025
eafc2dd
chore: remove some test routes
s-elo Nov 26, 2025
48c1827
chore: add Makefile for rs-server
s-elo Nov 26, 2025
707b03f
feat: make request path string consistent with encoded string
s-elo Nov 26, 2025
8eadbe9
chore: avoid double encoding the path string
s-elo Nov 27, 2025
e321ea3
feat: add git service in rs-server
s-elo Nov 27, 2025
d72cc43
chore: remvoe initial git pull logics in rs-werver
s-elo Nov 28, 2025
6eb1797
feat: migrate to rs server
s-elo Nov 28, 2025
1ab7f4a
feat: highlight selected theme
s-elo Dec 9, 2025
1efff17
test: add PartialEq to improve test assertion readability
s-elo Dec 9, 2025
90a90d2
style: update p style in editor
s-elo Dec 11, 2025
5a36ffc
refactor: change settings_service to use Arc for shared ownership acr…
s-elo Dec 19, 2025
928cab0
fix: update useEffect dependency to track content changes and improve…
s-elo Dec 19, 2025
2601f21
feat: add logs output for rust server
s-elo Dec 24, 2025
4acbc3f
feat: add cli to manage rust server
s-elo Dec 25, 2025
f89bc49
chore: add dev-cli command for quick dev
s-elo Dec 25, 2025
75eb486
feat: support daemon in windows(not tested)
s-elo Dec 25, 2025
c03988b
feat: extract constants and separate them in prod and dev mode
s-elo Dec 25, 2025
eb8c380
feat: support run the mds exectuable directly to start daemon
s-elo Dec 26, 2025
80ee3de
feat: add build script for mac os to auto setup mds
s-elo Dec 26, 2025
e2938cf
feat: add universal build script for cross-platfrom and add basic git…
s-elo Dec 26, 2025
9e15508
chore: remove deprecated-server, lint build script and remove build-l…
s-elo Dec 26, 2025
ddcb83d
chore: add Rust target installations for macOS and Windows in CI work…
s-elo Dec 26, 2025
cc390cd
chore: update Windows build step in CI workflow to use custom build s…
s-elo Dec 26, 2025
3f18d3f
feat: implement code signing for macOS app bundle to enhance security…
s-elo Dec 26, 2025
d9357d3
feat: enhance CI workflow to support versioned releases and artifact …
s-elo Dec 26, 2025
6f31da3
feat: add GitHub Pages deployment workflow and configure base path fo…
s-elo Dec 26, 2025
34c0d86
chore: add ci test
s-elo Dec 26, 2025
f4418c0
chore: update assetPrefix for prod mode
s-elo Dec 27, 2025
ada878b
feat: start daemon in winows with some issues:
s-elo Dec 27, 2025
b0c19a8
feat: start/stop service and server in windows, but can not remove th…
s-elo Dec 28, 2025
e9275dd
refactor: streamline logging and PID file handling; add retry logic f…
s-elo Dec 29, 2025
7a43fd6
refactor: consolidate system command handling for service management …
s-elo Dec 29, 2025
643a9ce
feat: implement Windows service management in a separate module for i…
s-elo Dec 29, 2025
3bfebe8
feat: add location command to CLI for displaying executable and app d…
s-elo Dec 29, 2025
a672b2a
chore: sync versioning to 1.0.0
s-elo Dec 29, 2025
e2096bf
chore: add version bump script and update package.json for release ma…
s-elo Dec 29, 2025
9129527
chore: enhance CI workflow by adding testing steps for Rust and Node.js
s-elo Dec 29, 2025
dd48223
Revert "feat: implement Windows service management in a separate modu…
s-elo Dec 29, 2025
78df6f6
chore: install cargo-make in ci
s-elo Dec 29, 2025
c25269c
chore: update readme for publishing
s-elo Dec 29, 2025
9ecd5d2
chore: refine CI check
s-elo Dec 29, 2025
66c4baf
feat: add CORS for client github page domain
s-elo Dec 29, 2025
04d4a75
feat: client version check and empty doc view
s-elo Dec 31, 2025
29f2ded
chore: update GitHub Actions workflow to deploy only on tag pushes
s-elo Dec 31, 2025
5d01ff3
feat: use localhost as base url and add SERVER_PORTenv
s-elo Jan 5, 2026
c6187c5
feat: handling initial state without valid doc root path
s-elo Jan 5, 2026
bdb15b5
feat: lazily fetch doc sub items in menu
s-elo Jan 29, 2026
9ff9238
feat: remove doc tree and nor doc logics and refresh action
s-elo Jan 29, 2026
3d4d0c3
feat: return empty doc items when root_doc_path does not exist
s-elo Jan 29, 2026
78f77a3
feat: add FolderSelector
s-elo Feb 5, 2026
eb549f3
feat: re-fine setting box
s-elo Feb 6, 2026
1d5c8ef
feat: allow input doc root path directly
s-elo Feb 6, 2026
3c4fbe2
feat: show installation guide content when can not connect
s-elo Feb 6, 2026
de92e32
chore: use -D to delete local branch when releasing feature version
s-elo Feb 6, 2026
22f7d61
feat: support git at windows service
s-elo Feb 7, 2026
7d6efeb
feat: support windows to select folders from disks
s-elo Feb 7, 2026
ddb3e0c
feat: take / as root dir for mac os
s-elo Feb 10, 2026
9673366
feat: use breadcrumb for folder selector
s-elo Feb 11, 2026
e26c530
feat: add inital path for folder selector
s-elo Feb 11, 2026
269160e
feat: create folder when selecting workspace folder
s-elo Feb 11, 2026
8ea7fc3
feat: support preact theme switching
s-elo Feb 11, 2026
c48d0c0
feat: handle github SPA 404 page
s-elo Feb 11, 2026
989c1b2
feat: transform error response
s-elo Feb 12, 2026
a010965
feat: use primereact toast
s-elo Feb 12, 2026
7053f58
feat: revamp git box
s-elo Feb 12, 2026
0023299
feat: revamp editor styles
s-elo Feb 13, 2026
8fe339e
feat: extract CrepeEditor as minimal editor
s-elo Feb 13, 2026
b2cab0b
feat: revamp editor rendering process
s-elo Feb 13, 2026
c45987f
style: fix first milkdown-heading margin-top
s-elo Feb 13, 2026
f32c9e5
feat: save the doc as draft in memory when switching docs
s-elo Feb 13, 2026
9edb65c
fix: github page base path for outline showing control
s-elo Feb 13, 2026
71ed9e4
feat: setup DraftEditor for no server cases
s-elo Feb 14, 2026
8ea5243
feat: switch among internal and workspace tabs; add app info icon at …
s-elo Feb 20, 2026
426268a
feat: uninstall before installing new version of mds
s-elo Feb 24, 2026
77a872b
feat: add version-mismatch internal doc
s-elo Feb 24, 2026
1fb444a
feat: upgrade milkdown to 7.18.0
s-elo Feb 24, 2026
ae2d24a
feat: add image service for image uploading and fetching
s-elo Feb 25, 2026
e1e3492
feat: add useWarnUnsavedOnUnload
s-elo Feb 25, 2026
5814046
feat: add subtitle and auto scrolling for tabs
s-elo Feb 25, 2026
0eba926
feat: support close all and close saved tabs
s-elo Feb 25, 2026
65a2dfd
feat: add image management UI
s-elo Feb 26, 2026
dfe3207
feat: add doc searcher
s-elo Feb 28, 2026
e47b241
feat: navigate to matched line and highlight when searching
s-elo Feb 28, 2026
791f778
chore: remove redundants and update readme
s-elo Feb 28, 2026
54891be
chore: update guide doc
s-elo Feb 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ const TypescriptRules = {
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/no-unsafe-return': 'off',
'@typescript-eslint/explicit-member-accessibility': [
'error',
{
Expand Down Expand Up @@ -70,6 +71,8 @@ const TypescriptRules = {
'@typescript-eslint/no-magic-numbers': ['error', { ignore: [-1, 0, 1] }],
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/parameter-properties': 'off',
'@typescript-eslint/restrict-template-expressions': 'off',
};

module.exports = {
Expand Down Expand Up @@ -99,6 +102,12 @@ module.exports = {
project: './tsconfig.eslint.json',
},
overrides: [
{
files: ['crates/**/*.js'],
parserOptions: {
project: null,
},
},
{
files: ['**/*.{js,jsx}'],
rules: {
Expand Down
216 changes: 216 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
name: Build

on:
push:
branches: [ main, master ]
tags:
- 'v*'
pull_request:
branches: [ main, master ]
workflow_dispatch:

jobs:
test:
name: Test on ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4

- name: Setup Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Install cargo-make
run: cargo install cargo-make

- name: Run tests
run: pnpm ts:check && pnpm lint && cd ./crates && cargo make ci

build-macos:
name: Build macOS
runs-on: macos-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- uses: actions/checkout@v4

- name: Setup Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
targets: x86_64-apple-darwin,aarch64-apple-darwin

- name: Install Rust targets
run: |
rustup target add x86_64-apple-darwin
rustup target add aarch64-apple-darwin

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build macOS
run: pnpm build:macos

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: mds-macos
path: dist/mds-macos.zip
retention-days: 90

build-windows:
name: Build Windows
runs-on: windows-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- uses: actions/checkout@v4

- name: Setup Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
target: x86_64-pc-windows-msvc

- name: Install Rust target
run: rustup target add x86_64-pc-windows-msvc

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build Windows
run: |
cd crates
node build.js windows --msvc

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: mds-windows
path: dist/mds-windows.zip
retention-days: 90

deploy-pages:
name: Deploy to GitHub Pages
needs: [create-release]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
permissions:
contents: read
pages: write
id-token: write
steps:
- uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build client
env:
GITHUB_PAGES_BASE_PATH: /${{ github.event.repository.name }}/
run: |
cd client
pnpm build

- name: Create .nojekyll file
run: touch dist/.nojekyll

- name: Setup Pages
uses: actions/configure-pages@v4

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: dist

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

create-release:
name: Create Release
needs: [build-macos, build-windows]
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Download macOS artifact
uses: actions/download-artifact@v4
with:
name: mds-macos
path: dist/

- name: Download Windows artifact
uses: actions/download-artifact@v4
with:
name: mds-windows
path: dist/

- name: Get version
id: version
run: |
VERSION=${GITHUB_REF#refs/tags/}
echo "version=$VERSION" >> $GITHUB_OUTPUT

- name: Create Release
uses: softprops/action-gh-release@v1
with:
files: |
dist/mds-macos.zip
dist/mds-windows.zip
tag_name: ${{ steps.version.outputs.version }}
name: Release ${{ steps.version.outputs.version }}
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

69 changes: 65 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
node_modules
.pnp
.pnp.js

# testing
/coverage
coverage

# production
/build
build

# misc
.DS_Store
Expand All @@ -27,3 +27,64 @@ dist
config.json

.vscode

# compiled output
/dist
/node_modules
/build

# Logs
logs
*.log
npm-debug.log*
pnpm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# OS
.DS_Store

# Tests
/coverage
/.nyc_output

# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace

# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json

# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local

# temp directory
.temp
.tmp

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

editor-settings.json
MDS-Server.app
mds-macos.zip
1 change: 1 addition & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pnpm ts:check && pnpm lint && cd ./crates && cargo make commit
Loading
Loading