markdown-os 0.7.4__tar.gz → 0.9.2__tar.gz

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.
Files changed (145) hide show
  1. markdown_os-0.9.2/.github/workflows/desktop-release.yml +61 -0
  2. {markdown_os-0.7.4 → markdown_os-0.9.2}/.gitignore +1 -1
  3. {markdown_os-0.7.4 → markdown_os-0.9.2}/PKG-INFO +12 -1
  4. {markdown_os-0.7.4 → markdown_os-0.9.2}/README.md +11 -0
  5. markdown_os-0.9.2/desktop/electron-builder.yml +42 -0
  6. markdown_os-0.9.2/desktop/package-lock.json +5065 -0
  7. markdown_os-0.9.2/desktop/package.json +27 -0
  8. markdown_os-0.9.2/desktop/src/backend.ts +167 -0
  9. markdown_os-0.9.2/desktop/src/dialogs.ts +57 -0
  10. markdown_os-0.9.2/desktop/src/main.ts +212 -0
  11. markdown_os-0.9.2/desktop/src/preload.ts +25 -0
  12. markdown_os-0.9.2/desktop/src/recents.ts +73 -0
  13. markdown_os-0.9.2/desktop/src/updater.ts +102 -0
  14. markdown_os-0.9.2/desktop/tsconfig.json +16 -0
  15. markdown_os-0.9.2/docs/plans/feature-electron-app.md +1059 -0
  16. markdown_os-0.9.2/markdown_os/app_runtime.py +172 -0
  17. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/cli.py +13 -98
  18. markdown_os-0.9.2/markdown_os/desktop_runtime.py +132 -0
  19. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/server.py +187 -43
  20. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/static/css/styles.css +269 -3
  21. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/static/index.html +78 -53
  22. markdown_os-0.9.2/markdown_os/static/js/desktop-picker.js +273 -0
  23. markdown_os-0.9.2/markdown_os/static/js/desktop-shell.js +122 -0
  24. markdown_os-0.9.2/markdown_os/static/js/desktop-updates.js +52 -0
  25. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/static/js/editor.js +99 -1
  26. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/static/js/file-tree.js +100 -5
  27. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/static/js/pdf-export.js +4 -0
  28. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/static/js/tabs.js +15 -0
  29. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/static/js/theme.js +1 -2
  30. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/static/js/wysiwyg.js +105 -0
  31. markdown_os-0.9.2/markdown_os/static/vendor/dompurify/purify.min.js +3 -0
  32. markdown_os-0.9.2/markdown_os/static/vendor/highlightjs/highlight.min.js +1213 -0
  33. markdown_os-0.9.2/markdown_os/static/vendor/highlightjs/styles/base16/dracula.min.css +7 -0
  34. markdown_os-0.9.2/markdown_os/static/vendor/highlightjs/styles/github-dark.min.css +10 -0
  35. markdown_os-0.9.2/markdown_os/static/vendor/highlightjs/styles/github.min.css +10 -0
  36. markdown_os-0.9.2/markdown_os/static/vendor/highlightjs/styles/grayscale.min.css +1 -0
  37. markdown_os-0.9.2/markdown_os/static/vendor/highlightjs/styles/nord.min.css +1 -0
  38. markdown_os-0.9.2/markdown_os/static/vendor/html2pdf/html2pdf.bundle.min.js +3 -0
  39. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_AMS-Regular.ttf +0 -0
  40. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_AMS-Regular.woff +0 -0
  41. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  42. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  43. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  44. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  45. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  46. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  47. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  48. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  49. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  50. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  51. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  52. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  53. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  54. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Main-Bold.ttf +0 -0
  55. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Main-Bold.woff +0 -0
  56. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
  57. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  58. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  59. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  60. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Main-Italic.ttf +0 -0
  61. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Main-Italic.woff +0 -0
  62. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
  63. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Main-Regular.ttf +0 -0
  64. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Main-Regular.woff +0 -0
  65. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
  66. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  67. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  68. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  69. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Math-Italic.ttf +0 -0
  70. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Math-Italic.woff +0 -0
  71. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
  72. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  73. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  74. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  75. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  76. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  77. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  78. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  79. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  80. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  81. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Script-Regular.ttf +0 -0
  82. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Script-Regular.woff +0 -0
  83. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
  84. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Size1-Regular.ttf +0 -0
  85. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Size1-Regular.woff +0 -0
  86. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  87. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Size2-Regular.ttf +0 -0
  88. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Size2-Regular.woff +0 -0
  89. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  90. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Size3-Regular.ttf +0 -0
  91. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Size3-Regular.woff +0 -0
  92. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  93. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Size4-Regular.ttf +0 -0
  94. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Size4-Regular.woff +0 -0
  95. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  96. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  97. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  98. markdown_os-0.9.2/markdown_os/static/vendor/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  99. markdown_os-0.9.2/markdown_os/static/vendor/katex/katex.min.css +1 -0
  100. markdown_os-0.9.2/markdown_os/static/vendor/katex/katex.min.js +1 -0
  101. markdown_os-0.9.2/markdown_os/static/vendor/marked/marked.min.js +69 -0
  102. markdown_os-0.9.2/markdown_os/static/vendor/mermaid/mermaid.min.js +2029 -0
  103. markdown_os-0.9.2/markdown_os/static/vendor/svg-pan-zoom/svg-pan-zoom.min.js +3 -0
  104. markdown_os-0.9.2/markdown_os/static/vendor/turndown/turndown.js +974 -0
  105. markdown_os-0.9.2/markdown_os/static/vendor/turndown-plugin-gfm/turndown-plugin-gfm.js +165 -0
  106. markdown_os-0.9.2/markdown_os/workspace_session.py +434 -0
  107. {markdown_os-0.7.4 → markdown_os-0.9.2}/pyproject.toml +1 -1
  108. markdown_os-0.9.2/scripts/download_vendor.py +230 -0
  109. {markdown_os-0.7.4 → markdown_os-0.9.2}/site/demo-frame.html +4 -4
  110. markdown_os-0.9.2/site/downloads.html +341 -0
  111. {markdown_os-0.7.4 → markdown_os-0.9.2}/site/index.html +129 -19
  112. {markdown_os-0.7.4 → markdown_os-0.9.2}/site/styles.css +18 -3
  113. {markdown_os-0.7.4 → markdown_os-0.9.2}/tests/test_cli.py +108 -9
  114. {markdown_os-0.7.4 → markdown_os-0.9.2}/tests/test_frontend_navigation_sync.py +33 -0
  115. {markdown_os-0.7.4 → markdown_os-0.9.2}/tests/test_server.py +265 -0
  116. markdown_os-0.9.2/tests/test_workspace_session.py +130 -0
  117. markdown_os-0.7.4/docs/plans/feature-001-pdf-export.md +0 -124
  118. markdown_os-0.7.4/docs/plans/feature-002-file-operations.md +0 -248
  119. markdown_os-0.7.4/docs/plans/feature-003-focus-mode.md +0 -134
  120. {markdown_os-0.7.4 → markdown_os-0.9.2}/.github/workflows/publish.yml +0 -0
  121. {markdown_os-0.7.4 → markdown_os-0.9.2}/.python-version +0 -0
  122. {markdown_os-0.7.4 → markdown_os-0.9.2}/AGENTS.md +0 -0
  123. {markdown_os-0.7.4 → markdown_os-0.9.2}/CLAUDE.md +0 -0
  124. {markdown_os-0.7.4 → markdown_os-0.9.2}/LICENSE +0 -0
  125. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/__init__.py +0 -0
  126. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/directory_handler.py +0 -0
  127. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/file_handler.py +0 -0
  128. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/static/css/themes.css +0 -0
  129. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/static/favicon.svg +0 -0
  130. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/static/js/dialogs.js +0 -0
  131. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/static/js/focus-mode.js +0 -0
  132. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/static/js/search.js +0 -0
  133. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/static/js/shared-utils.js +0 -0
  134. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/static/js/toc.js +0 -0
  135. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/static/js/websocket.js +0 -0
  136. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/static/js/wysiwyg-toolbar.js +0 -0
  137. {markdown_os-0.7.4 → markdown_os-0.9.2}/markdown_os/templates/example_template.md +0 -0
  138. {markdown_os-0.7.4 → markdown_os-0.9.2}/site/favicon.svg +0 -0
  139. {markdown_os-0.7.4 → markdown_os-0.9.2}/site/images/hero-screenshot.png +0 -0
  140. {markdown_os-0.7.4 → markdown_os-0.9.2}/site/themes.css +0 -0
  141. {markdown_os-0.7.4 → markdown_os-0.9.2}/tests/test_directory_handler.py +0 -0
  142. {markdown_os-0.7.4 → markdown_os-0.9.2}/tests/test_file_handler.py +0 -0
  143. {markdown_os-0.7.4 → markdown_os-0.9.2}/tests/test_version.py +0 -0
  144. {markdown_os-0.7.4 → markdown_os-0.9.2}/uv.lock +0 -0
  145. {markdown_os-0.7.4 → markdown_os-0.9.2}/vercel.json +0 -0
@@ -0,0 +1,61 @@
1
+ name: Build Desktop Releases
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ permissions:
9
+ contents: write
10
+
11
+ jobs:
12
+ build-desktop:
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ os:
17
+ - macos-latest
18
+ - windows-latest
19
+ runs-on: ${{ matrix.os }}
20
+ steps:
21
+ - name: Checkout repository
22
+ uses: actions/checkout@v4
23
+
24
+ - name: Set up Node.js
25
+ uses: actions/setup-node@v4
26
+ with:
27
+ node-version: "22"
28
+ cache: "npm"
29
+ cache-dependency-path: desktop/package-lock.json
30
+
31
+ - name: Set up uv
32
+ uses: astral-sh/setup-uv@v5
33
+
34
+ - name: Install Python dependencies
35
+ run: uv sync --dev
36
+
37
+ - name: Download vendored frontend assets
38
+ run: uv run python scripts/download_vendor.py
39
+
40
+ - name: Install desktop dependencies
41
+ working-directory: desktop
42
+ run: npm ci
43
+
44
+ - name: Build desktop TypeScript
45
+ working-directory: desktop
46
+ run: npm run build
47
+
48
+ - name: Run targeted Python tests
49
+ run: uv run pytest tests/test_cli.py tests/test_server.py tests/test_workspace_session.py tests/test_frontend_navigation_sync.py -q
50
+
51
+ - name: Package desktop app
52
+ working-directory: desktop
53
+ run: npm run dist
54
+
55
+ - name: Upload release artifacts
56
+ uses: softprops/action-gh-release@v2
57
+ with:
58
+ files: |
59
+ desktop/dist/*.dmg
60
+ desktop/dist/*.exe
61
+ desktop/dist/*.zip
@@ -25,4 +25,4 @@ example.md
25
25
  .claude/
26
26
 
27
27
  # superseded landing page
28
- landing.html
28
+ landing.htmldesktop/node_modules/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: markdown-os
3
- Version: 0.7.4
3
+ Version: 0.9.2
4
4
  Summary: Developer-focused markdown editor served from a local CLI.
5
5
  Project-URL: Homepage, https://github.com/elena-cabrera/markdown-os
6
6
  Project-URL: Repository, https://github.com/elena-cabrera/markdown-os
@@ -38,6 +38,8 @@ Description-Content-Type: text/markdown
38
38
 
39
39
  Developer-focused markdown editor that runs as a local web server. Edit in the browser with live preview, Mermaid diagrams, syntax highlighting, and auto-save.
40
40
 
41
+ Desktop installers for macOS and Windows are published from GitHub Releases. The desktop app bundles the local server and opens with a picker-first workflow, so users do not need Python or a terminal after installation.
42
+
41
43
  ## Install
42
44
 
43
45
  ```bash
@@ -54,6 +56,15 @@ uv tool install markdown-os
54
56
 
55
57
  To upgrade after installing with uv: `uv tool upgrade markdown-os`
56
58
 
59
+ ## Desktop app
60
+
61
+ Download the latest desktop installers from GitHub Releases:
62
+
63
+ - macOS: `.dmg`
64
+ - Windows: `.exe`
65
+
66
+ The desktop app keeps the same editor UI, but launches in a native desktop shell with recent files/folders and native open dialogs.
67
+
57
68
  ## Usage
58
69
 
59
70
  Single file:
@@ -4,6 +4,8 @@
4
4
 
5
5
  Developer-focused markdown editor that runs as a local web server. Edit in the browser with live preview, Mermaid diagrams, syntax highlighting, and auto-save.
6
6
 
7
+ Desktop installers for macOS and Windows are published from GitHub Releases. The desktop app bundles the local server and opens with a picker-first workflow, so users do not need Python or a terminal after installation.
8
+
7
9
  ## Install
8
10
 
9
11
  ```bash
@@ -20,6 +22,15 @@ uv tool install markdown-os
20
22
 
21
23
  To upgrade after installing with uv: `uv tool upgrade markdown-os`
22
24
 
25
+ ## Desktop app
26
+
27
+ Download the latest desktop installers from GitHub Releases:
28
+
29
+ - macOS: `.dmg`
30
+ - Windows: `.exe`
31
+
32
+ The desktop app keeps the same editor UI, but launches in a native desktop shell with recent files/folders and native open dialogs.
33
+
23
34
  ## Usage
24
35
 
25
36
  Single file:
@@ -0,0 +1,42 @@
1
+ appId: com.markdownos.desktop
2
+ productName: Markdown-OS
3
+ directories:
4
+ output: dist
5
+ buildResources: build
6
+ files:
7
+ - dist/**
8
+ - package.json
9
+ extraResources:
10
+ - from: ../markdown_os
11
+ to: markdown_os
12
+ filter:
13
+ - "**/*"
14
+ - from: ../README.md
15
+ to: README.md
16
+ - from: ../pyproject.toml
17
+ to: pyproject.toml
18
+ - from: ../uv.lock
19
+ to: uv.lock
20
+ asar: true
21
+ mac:
22
+ target:
23
+ - dmg
24
+ category: public.app-category.developer-tools
25
+ artifactName: markdown-os-desktop-${version}-macos.${ext}
26
+ fileAssociations:
27
+ - ext:
28
+ - md
29
+ - markdown
30
+ name: Markdown document
31
+ win:
32
+ target:
33
+ - nsis
34
+ artifactName: markdown-os-desktop-${version}-windows-setup.${ext}
35
+ fileAssociations:
36
+ - ext: md
37
+ name: Markdown document
38
+ - ext: markdown
39
+ name: Markdown document
40
+ nsis:
41
+ oneClick: false
42
+ perMachine: false