mosage 0.2.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -15
- package/bin.js +2 -0
- package/dist/build-C7NW_3Pk.js +14 -0
- package/dist/check-CP4873Wx.js +41 -0
- package/dist/cli/bin.d.ts +1 -0
- package/dist/cli/bin.js +228 -0
- package/dist/config-DPm1BBAb.js +2619 -0
- package/dist/config-TlTe7Ona.d.ts +24 -0
- package/dist/context-BqsdSrAQ.js +1084 -0
- package/dist/dev-Biz42qlu.js +17 -0
- package/dist/diagram-xlVDekYk.js +763 -0
- package/dist/export-Bi6nuxjT.js +31 -0
- package/dist/import-D2jNB07F.js +25 -0
- package/dist/index.d.ts +455 -0
- package/dist/index.js +693 -0
- package/dist/{cli.js → init-Bbtj2pxF.js} +34 -68
- package/dist/preview-CLm51aRt.js +19 -0
- package/dist/sdk-DjpX6mCv.js +51 -0
- package/dist/vite/index.d.ts +25 -0
- package/dist/vite/index.js +2 -0
- package/env.d.ts +83 -0
- package/package.json +59 -12
- package/{template/.agents/skills → skills}/create-doc/SKILL.md +1 -1
- package/{template/.agents/skills → skills}/create-theme/SKILL.md +1 -1
- package/{template/.agents/skills → skills}/doc-authoring/SKILL.md +8 -9
- package/{template/.agents/skills → skills}/doc-authoring/references/assets.md +1 -1
- package/{template/.agents/skills → skills}/doc-authoring/references/design-system.md +1 -1
- package/{template/.agents/skills → skills}/doc-authoring/references/long-form.md +4 -4
- package/{template/.agents/skills → skills}/doc-authoring/references/pagination.md +1 -1
- package/src/app/app.tsx +42 -0
- package/src/app/components/data-table.tsx +196 -0
- package/src/app/components/design-panel/design-panel.tsx +318 -0
- package/src/app/components/design-panel/design-provider.tsx +121 -0
- package/src/app/components/design-panel/use-design.ts +85 -0
- package/src/app/components/diagram.tsx +76 -0
- package/src/app/components/doc-assets.tsx +129 -0
- package/src/app/components/doc-search.tsx +248 -0
- package/src/app/components/doc-sidebar.tsx +162 -0
- package/src/app/components/flow-page.tsx +93 -0
- package/src/app/components/footnote.tsx +204 -0
- package/src/app/components/image-placeholder.tsx +50 -0
- package/src/app/components/inspector/inspector.tsx +518 -0
- package/src/app/components/numbering.tsx +224 -0
- package/src/app/components/page-frame.tsx +70 -0
- package/src/app/components/sidebar/folder-item.tsx +212 -0
- package/src/app/components/sidebar/icon-picker.tsx +99 -0
- package/src/app/components/sidebar/sidebar.tsx +252 -0
- package/src/app/components/table-of-contents.tsx +93 -0
- package/src/app/components/theme-toggle.tsx +50 -0
- package/src/app/components/themes/markdown.tsx +249 -0
- package/src/app/components/themes/theme-preview.tsx +74 -0
- package/src/app/components/ui/menu.tsx +143 -0
- package/src/app/index.html +12 -0
- package/src/app/lib/agent-bridge.ts +140 -0
- package/src/app/lib/assets.ts +151 -0
- package/src/app/lib/design-presets.ts +109 -0
- package/src/app/lib/design.ts +88 -0
- package/src/app/lib/diagnostics.ts +282 -0
- package/src/app/lib/doc-preview.tsx +29 -0
- package/src/app/lib/docs.ts +26 -0
- package/src/app/lib/docx/extract.ts +1623 -0
- package/src/app/lib/docx/fonts.test.ts +136 -0
- package/src/app/lib/docx/fonts.ts +166 -0
- package/src/app/lib/docx/media.ts +102 -0
- package/src/app/lib/docx/model.ts +206 -0
- package/src/app/lib/docx/paragraph.test.ts +92 -0
- package/src/app/lib/docx/paragraph.ts +107 -0
- package/src/app/lib/docx/props.ts +187 -0
- package/src/app/lib/docx/styles.ts +306 -0
- package/src/app/lib/docx/units.ts +35 -0
- package/src/app/lib/docx/write.test.ts +507 -0
- package/src/app/lib/docx/write.ts +581 -0
- package/src/app/lib/docx/xml.ts +39 -0
- package/src/app/lib/export-docx.ts +289 -0
- package/src/app/lib/export-dom.ts +318 -0
- package/src/app/lib/export-html.ts +156 -0
- package/src/app/lib/export-image.ts +70 -0
- package/src/app/lib/export-pdf.ts +165 -0
- package/src/app/lib/flow-measure.test.ts +31 -0
- package/src/app/lib/flow-measure.ts +183 -0
- package/src/app/lib/flow.test.ts +110 -0
- package/src/app/lib/flow.ts +136 -0
- package/src/app/lib/folders.ts +192 -0
- package/src/app/lib/footnotes.test.tsx +102 -0
- package/src/app/lib/footnotes.ts +94 -0
- package/src/app/lib/inspector/fiber.ts +99 -0
- package/src/app/lib/labels.test.ts +18 -0
- package/src/app/lib/labels.ts +181 -0
- package/src/app/lib/outline.ts +118 -0
- package/src/app/lib/page-context.tsx +43 -0
- package/src/app/lib/page-range.test.ts +95 -0
- package/src/app/lib/page-range.ts +90 -0
- package/src/app/lib/print-ready.ts +69 -0
- package/src/app/lib/rasterize.ts +173 -0
- package/src/app/lib/scan.ts +26 -0
- package/src/app/lib/sdk.test.ts +32 -0
- package/src/app/lib/sdk.ts +115 -0
- package/src/app/lib/themes.ts +31 -0
- package/src/app/lib/use-doc-module.ts +53 -0
- package/src/app/lib/use-doc-pages.ts +147 -0
- package/src/app/lib/utils.ts +6 -0
- package/src/app/lib/view-mode.test.ts +91 -0
- package/src/app/lib/view-mode.ts +104 -0
- package/src/app/main.tsx +14 -0
- package/src/app/routes/assets.tsx +257 -0
- package/src/app/routes/doc.tsx +877 -0
- package/src/app/routes/home-shell.tsx +203 -0
- package/src/app/routes/home.tsx +269 -0
- package/src/app/routes/themes.tsx +121 -0
- package/src/app/styles.css +97 -0
- package/src/app/virtual.d.ts +30 -0
- package/template/AGENTS.md +1 -1
- package/template/README.md +24 -52
- package/template/docs/getting-started/index.tsx +2 -2
- package/template/mosage.config.ts +1 -1
- package/template/package.json +1 -1
- package/template/tsconfig.json +1 -1
- package/README.zh-TW.md +0 -28
- /package/{template/.agents/skills → skills}/apply-comments/SKILL.md +0 -0
- /package/{template/.agents/skills → skills}/current-doc/SKILL.md +0 -0
- /package/{template/.agents/skills → skills}/doc-authoring/references/tables-and-charts.md +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
declare module 'virtual:mosage/docs' {
|
|
2
|
+
import type { DocModule } from './lib/sdk';
|
|
3
|
+
|
|
4
|
+
export const docIds: string[];
|
|
5
|
+
export const docCreatedAt: Record<string, number>;
|
|
6
|
+
export const docThemes: Record<string, string>;
|
|
7
|
+
export function loadDoc(id: string): Promise<DocModule>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
declare module 'virtual:mosage/themes' {
|
|
11
|
+
import type { ThemeDemoModule, ThemeMeta } from './lib/themes';
|
|
12
|
+
|
|
13
|
+
export const themes: ThemeMeta[];
|
|
14
|
+
export function loadThemeDemo(id: string): Promise<ThemeDemoModule>;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
declare module 'virtual:mosage/folders' {
|
|
18
|
+
import type { FoldersManifest } from './lib/sdk';
|
|
19
|
+
|
|
20
|
+
const manifest: FoldersManifest;
|
|
21
|
+
export default manifest;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
declare module 'virtual:mosage/config' {
|
|
25
|
+
import type { MoSageConfig } from '../config';
|
|
26
|
+
|
|
27
|
+
type ResolvedBuild = { showDocBrowser: boolean; allowHtmlExport: boolean };
|
|
28
|
+
const config: MoSageConfig & { build: ResolvedBuild; version: string };
|
|
29
|
+
export default config;
|
|
30
|
+
}
|
package/template/AGENTS.md
CHANGED
|
@@ -5,7 +5,7 @@ You author **documents** here — reports, proposals, whitepapers, memos. Each d
|
|
|
5
5
|
## Rules
|
|
6
6
|
|
|
7
7
|
- Write only inside `docs/<id>/`. Don't touch `package.json`, `mosage.config.ts`, or other documents.
|
|
8
|
-
- No new dependencies. Only `react`, `mosage
|
|
8
|
+
- No new dependencies. Only `react`, `mosage`, and standard web APIs are available.
|
|
9
9
|
- A document is one `index.tsx` plus an optional `assets/` folder. No sibling components files.
|
|
10
10
|
|
|
11
11
|
## Skills
|
package/template/README.md
CHANGED
|
@@ -1,67 +1,39 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 我的文件
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
這個資料夾是一個 [MoSage](https://github.com/nickchen1998/MoSage) 專案:用 AI 寫文件,在瀏覽器裡預覽成真實的紙張,最後匯出 PDF、Word 或 HTML。
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
pnpm install
|
|
7
|
-
pnpm dev
|
|
8
|
-
```
|
|
9
|
-
|
|
10
|
-
Open http://localhost:5273. Every folder under `docs/` with an `index.tsx` shows up.
|
|
11
|
-
|
|
12
|
-
## Letting an agent drive it
|
|
5
|
+
## 開始
|
|
13
6
|
|
|
14
7
|
```bash
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
npm install # 如果建立專案時跳過了安裝
|
|
9
|
+
npm run dev # 開啟 http://localhost:5273
|
|
17
10
|
```
|
|
18
11
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
## Writing a document
|
|
22
|
-
|
|
23
|
-
Ask your coding agent: *"draft a Q3 report on X"*. The bundled `create-doc` skill runs the workflow — scoping questions, page plan, then the file.
|
|
12
|
+
在同一個資料夾開啟 Claude Code 或 Codex,描述你要的文件,例如「幫我寫一份 Q3 營運報告,給主管看,大約 6 頁」。
|
|
13
|
+
AI 會用內建的 `create-doc` skill 先確認主題與資料來源,再規劃頁面、撰寫。
|
|
24
14
|
|
|
25
|
-
|
|
15
|
+
## 資料夾
|
|
26
16
|
|
|
27
17
|
```
|
|
28
18
|
docs/
|
|
29
|
-
|
|
30
|
-
index.tsx
|
|
31
|
-
assets/
|
|
19
|
+
<文件代號>/
|
|
20
|
+
index.tsx 每份文件一個檔案,預設匯出頁面陣列
|
|
21
|
+
assets/ 這份文件用到的圖片(選用)
|
|
22
|
+
themes/ 可重複使用的主題(選用)
|
|
23
|
+
mosage.config.ts 專案設定
|
|
32
24
|
```
|
|
33
25
|
|
|
34
|
-
##
|
|
26
|
+
## 常用指令
|
|
35
27
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
28
|
+
| 指令 | 說明 |
|
|
29
|
+
| --- | --- |
|
|
30
|
+
| `npm run dev` | 開啟檢視器,檔案一改就即時更新 |
|
|
31
|
+
| `npx mosage check` | 找出超出紙張的內容、空白頁、落在頁尾的標題等問題 |
|
|
32
|
+
| `npx mosage export <文件> --format docx` | 匯出 Word;也可以用 `pdf`、`html`、`png` |
|
|
33
|
+
| `npx mosage import notes.md` | 把 Markdown 轉成一份文件 |
|
|
34
|
+
| `npm run build` | 輸出靜態網站 |
|
|
41
35
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
mosage check # every document; add an id to narrow it
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Renders each sheet at true page size and reports what a reader would call a mistake: content clipped by the page edge, a blank sheet, a heading stranded at the foot of a page, type too small to print. It exits non-zero on errors, so it works in CI. Your agent should run it after writing or editing a document — it cannot see the pages otherwise.
|
|
49
|
-
|
|
50
|
-
## Exporting
|
|
51
|
-
|
|
52
|
-
The toolbar in the document view has **PDF** (prints at the true page size — pick "Save as PDF" in the print dialog), **HTML** (a self-contained file, or a zip when the document has assets), and **DOCX** (an editable Word file — the text reflows, headings and footnotes stay headings and footnotes).
|
|
53
|
-
|
|
54
|
-
Without a browser:
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
mosage export my-report --format pdf # or html, docx, or one png per page
|
|
58
|
-
mosage export --all --out-dir out
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
`check` and `export` render in headless Chromium, so they need Playwright once:
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
pnpm add -D playwright && pnpm exec playwright install chromium
|
|
65
|
-
```
|
|
36
|
+
`check` 與 `export` 需要 Playwright:`npm i -D playwright && npx playwright install chromium`。
|
|
37
|
+
在瀏覽器裡用右上角的 **Download** 匯出則不需要。
|
|
66
38
|
|
|
67
|
-
|
|
39
|
+
升級 mosage 後,執行 `npx mosage sync:skills` 更新 `.agents/skills` 與 `.claude/skills`。
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
TableOfContents,
|
|
6
6
|
useDocPageCount,
|
|
7
7
|
useDocPageNumber,
|
|
8
|
-
} from 'mosage
|
|
8
|
+
} from 'mosage';
|
|
9
9
|
import type { CSSProperties, ReactNode } from 'react';
|
|
10
10
|
|
|
11
11
|
export const design: DesignSystem = {
|
|
@@ -195,7 +195,7 @@ const Authoring: DocPage = () => (
|
|
|
195
195
|
and <code>useDocPageCount()</code>; never hardcode them.
|
|
196
196
|
</p>
|
|
197
197
|
|
|
198
|
-
<Code>{`import { useDocPageNumber, useDocPageCount } from 'mosage
|
|
198
|
+
<Code>{`import { useDocPageNumber, useDocPageCount } from 'mosage';
|
|
199
199
|
|
|
200
200
|
const Footer = () => {
|
|
201
201
|
const n = useDocPageNumber();
|
package/template/package.json
CHANGED
package/template/tsconfig.json
CHANGED
package/README.zh-TW.md
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# mosage
|
|
2
|
-
|
|
3
|
-
[English](README.md) · **繁體中文**
|
|
4
|
-
|
|
5
|
-
建立 [MoSage](https://github.com/nickchen1998/MoSage) 工作區——文件即 React,一個元件對應一張印出來的頁面。
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npx mosage init my-docs
|
|
9
|
-
cd my-docs
|
|
10
|
-
pnpm dev
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
產生的工作區已預先配置好 `create-doc` 與 `doc-authoring` 兩個 agent skill(放在 `.agents/skills`,並連結進 `.claude/skills`)、一份範例文件,以及 `mosage` 的 dev/build/preview 指令。
|
|
14
|
-
|
|
15
|
-
它也會寫入一份 `pnpm-workspace.yaml`,允許 esbuild 執行 postinstall。pnpm 預設封鎖 build script,而少了這一個 Vite 就無法啟動;這個檔案在 npm、yarn 與 bun 之下是惰性的,不會有影響。
|
|
16
|
-
|
|
17
|
-
## 參數
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
mosage init [dir]
|
|
21
|
-
-f, --force 覆寫非空的目標目錄
|
|
22
|
-
-n, --name <name> 套件名稱(預設取資料夾名稱)
|
|
23
|
-
--use-pnpm (或 --use-npm / --use-yarn / --use-bun)
|
|
24
|
-
--no-install 略過安裝相依套件
|
|
25
|
-
--no-git 略過 git init 與初始 commit
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
MIT
|
|
File without changes
|
|
File without changes
|
|
File without changes
|