{"_id":"@dareia/mdgaze","_rev":"3-807f315b115206c949030a23c8401099","name":"@dareia/mdgaze","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@dareia/mdgaze","version":"0.1.0","keywords":["markdown","viewer","editor","electron","preview","md","browser","tree"],"author":{"name":"Radoslaw Tarnas","email":"radoslaw.tarnas@gmail.com"},"license":"MIT","_id":"@dareia/mdgaze@0.1.0","maintainers":[{"name":"rheathec","email":"radoslaw.tarnas@gmail.com"}],"homepage":"https://github.com/dareia/mdgaze","bugs":{"url":"https://github.com/dareia/mdgaze/issues"},"bin":{"mdgaze":"bin/mdgaze.js"},"dist":{"shasum":"4b0992dc061f210e802a99f66a4c801ba62c8391","tarball":"https://registry.npmjs.org/@dareia/mdgaze/-/mdgaze-0.1.0.tgz","fileCount":21,"integrity":"sha512-HQLBsNg1c/exWl2KhqJMtVwvDwcEMZhu4lEwhDSzTIi0fzqbsGKwSaClbSke5aIgqwiGv5WZ1ImU1tUKNHdqkg==","signatures":[{"sig":"MEQCICv9GJ8gvRdZ3chJZToC79TtIZcMMjhvtx6aFMOmubi3AiAeuqN1pwSY+vNzRuwOevbPCutxrZPoOtmetReVUBoZqQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":939331},"main":"src/main.js","build":{"dmg":{"icon":"assets/icon.icns","title":"mdgaze ${version}","window":{"width":540,"height":380},"contents":[{"x":140,"y":200,"type":"file"},{"x":400,"y":200,"path":"/Applications","type":"link"}],"background":null},"mac":{"icon":"assets/icon.icns","target":[{"arch":["x64","arm64"],"target":"dmg"},{"arch":["x64","arm64"],"target":"zip"}],"category":"public.app-category.developer-tools","extendInfo":{"CFBundleDocumentTypes":[{"LSHandlerRank":"Alternate","CFBundleTypeName":"Markdown Document","CFBundleTypeRole":"Editor","LSItemContentTypes":["net.daringfireball.markdown"]}],"NSHighResolutionCapable":true,"NSHumanReadableCopyright":"Copyright © 2026 Radoslaw Tarnas"},"darkModeSupport":true},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"},{"arch":["x64"],"target":"portable"}],"publisherName":"Radoslaw Tarnas","fileAssociations":[{"ext":["md","markdown","mdx"],"name":"Markdown Document","role":"Editor","description":"Markdown Document"}]},"nsis":{"oneClick":false,"perMachine":false,"shortcutName":"mdgaze","uninstallDisplayName":"mdgaze ${version}","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.mdgaze.app","files":["src/**/*","bin/**/*","assets/**/*","node_modules/**/*","package.json"],"linux":{"icon":"assets/icon.png","target":[{"arch":["x64"],"target":"AppImage"},{"arch":["x64"],"target":"deb"},{"arch":["x64"],"target":"rpm"},{"arch":["x64"],"target":"tar.gz"}],"desktop":{"Name":"mdgaze","Comment":"A pretty Markdown viewer & editor","MimeType":"text/markdown;text/x-markdown"},"category":"Development","synopsis":"A pretty Markdown viewer & editor","description":"Browse a folder tree of .md files with a click. Pretty preview, inline edit, save with Ctrl+S."},"copyright":"Copyright © 2026 Radoslaw Tarnas","directories":{"output":"dist","buildResources":"assets"},"productName":"mdgaze"},"engines":{"node":">=18"},"gitHead":"7f8739504206ec6154afd605eb235514059cdd41","scripts":{"dev":"electron . ./","dist":"electron-builder","pack":"electron-builder --dir","start":"electron .","predist":"node scripts/build-vendor.mjs","prepack":"node scripts/build-vendor.mjs","dist:all":"electron-builder -mwl","dist:mac":"electron-builder --mac","dist:win":"electron-builder --win","prestart":"node scripts/build-vendor.mjs","dist:linux":"electron-builder --linux","build:icons":"python3 scripts/build-icons.py","build:vendor":"node scripts/build-vendor.mjs"},"_npmUser":{"name":"rheathec","email":"radoslaw.tarnas@gmail.com"},"repository":{"url":"git+https://github.com/dareia/mdgaze.git","type":"git"},"_npmVersion":"11.9.0","description":"A pretty and simple Markdown viewer & editor — browse a folder tree of .md files with a click.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"marked":"^15.0.7","dompurify":"^3.2.4","highlight.js":"^11.11.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.0","electron":"^34.2.0","electron-builder":"^25.1.8"},"_npmOperationalInternal":{"tmp":"tmp/mdgaze_0.1.0_1777575660735_0.37039303810063195","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dareia/mdgaze","version":"0.1.1","keywords":["markdown","viewer","editor","electron","preview","md","browser","tree"],"author":{"name":"Radoslaw Tarnas","email":"radoslaw.tarnas@gmail.com"},"license":"MIT","_id":"@dareia/mdgaze@0.1.1","maintainers":[{"name":"rheathec","email":"radoslaw.tarnas@gmail.com"}],"homepage":"https://github.com/dareia/mdgaze","bugs":{"url":"https://github.com/dareia/mdgaze/issues"},"bin":{"mdgaze":"bin/mdgaze.js"},"dist":{"shasum":"f6bd0cf5ec6aa494eff6fafeebd23b0202428403","tarball":"https://registry.npmjs.org/@dareia/mdgaze/-/mdgaze-0.1.1.tgz","fileCount":21,"integrity":"sha512-Bqa34bzf8x+iWJN9ncrWc07LLG3fo9/SFMY0i4gXiZkKO5cRuSn2UydwPgCUtjNDs0AxKHiio8PTTRNYYWYO0Q==","signatures":[{"sig":"MEYCIQC7/7pSgmZuYj+DIBgHu3LJSMSN93pWn2oJUs2kW/L90gIhANR894Yfv2OUOHqZy3uWXU9ebezXSskBnMyG891SRyE6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":939479},"main":"src/main.js","build":{"dmg":{"icon":"assets/icon.icns","title":"mdgaze ${version}","window":{"width":540,"height":380},"contents":[{"x":140,"y":200,"type":"file"},{"x":400,"y":200,"path":"/Applications","type":"link"}],"background":null},"mac":{"icon":"assets/icon.icns","target":[{"arch":["x64","arm64"],"target":"dmg"},{"arch":["x64","arm64"],"target":"zip"}],"category":"public.app-category.developer-tools","extendInfo":{"CFBundleDocumentTypes":[{"LSHandlerRank":"Alternate","CFBundleTypeName":"Markdown Document","CFBundleTypeRole":"Editor","LSItemContentTypes":["net.daringfireball.markdown"]}],"NSHighResolutionCapable":true,"NSHumanReadableCopyright":"Copyright © 2026 Radoslaw Tarnas"},"darkModeSupport":true},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"},{"arch":["x64"],"target":"portable"}],"publisherName":"Radoslaw Tarnas","fileAssociations":[{"ext":["md","markdown","mdx"],"name":"Markdown Document","role":"Editor","description":"Markdown Document"}]},"nsis":{"oneClick":false,"perMachine":false,"shortcutName":"mdgaze","uninstallDisplayName":"mdgaze ${version}","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.mdgaze.app","files":["src/**/*","bin/**/*","assets/**/*","node_modules/**/*","package.json"],"linux":{"icon":"assets/icon.png","target":[{"arch":["x64"],"target":"AppImage"},{"arch":["x64"],"target":"deb"},{"arch":["x64"],"target":"rpm"},{"arch":["x64"],"target":"tar.gz"}],"desktop":{"Name":"mdgaze","Comment":"A pretty Markdown viewer & editor","MimeType":"text/markdown;text/x-markdown"},"category":"Development","synopsis":"A pretty Markdown viewer & editor","description":"Browse a folder tree of .md files with a click. Pretty preview, inline edit, save with Ctrl+S."},"copyright":"Copyright © 2026 Radoslaw Tarnas","directories":{"output":"dist","buildResources":"assets"},"productName":"mdgaze"},"engines":{"node":">=18"},"gitHead":"96dc3473716e155ea9f36974c53e726d8c12b195","scripts":{"dev":"electron . ./","dist":"electron-builder","pack":"electron-builder --dir","start":"electron .","predist":"node scripts/build-vendor.mjs","prepack":"node scripts/build-vendor.mjs","dist:all":"electron-builder -mwl","dist:mac":"electron-builder --mac","dist:win":"electron-builder --win","prestart":"node scripts/build-vendor.mjs","dist:linux":"electron-builder --linux","build:icons":"python3 scripts/build-icons.py","build:vendor":"node scripts/build-vendor.mjs"},"_npmUser":{"name":"rheathec","email":"radoslaw.tarnas@gmail.com"},"repository":{"url":"git+https://github.com/dareia/mdgaze.git","type":"git"},"_npmVersion":"11.9.0","description":"A pretty and simple Markdown viewer & editor — browse a folder tree of .md files with a click.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"marked":"^15.0.7","electron":"^34.2.0","dompurify":"^3.2.4","highlight.js":"^11.11.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.0","electron-builder":"^25.1.8"},"_npmOperationalInternal":{"tmp":"tmp/mdgaze_0.1.1_1777576364185_0.6221736290756901","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@dareia/mdgaze","version":"0.2.1","description":"A pretty and simple Markdown viewer & editor — browse a folder tree of .md files with a click.","main":"src/main.js","bin":{"mdgaze":"bin/mdgaze.js"},"scripts":{"build:vendor":"node scripts/build-vendor.mjs","build:icons":"python3 scripts/build-icons.py","lint":"eslint .","test":"node --test test/*.test.mjs","prestart":"node scripts/build-vendor.mjs","start":"electron .","dev":"electron . ./","pack":"electron-builder --dir","prepack":"node scripts/build-vendor.mjs","predist":"node scripts/build-vendor.mjs","dist":"electron-builder","dist:mac":"electron-builder --mac","dist:linux":"electron-builder --linux","dist:win":"electron-builder --win","dist:all":"electron-builder -mwl"},"keywords":["markdown","viewer","editor","electron","preview","md","browser","tree"],"author":{"name":"Radoslaw Tarnas","email":"radoslaw.tarnas@gmail.com"},"license":"MIT","homepage":"https://github.com/dareia/mdgaze","repository":{"type":"git","url":"git+https://github.com/dareia/mdgaze.git"},"bugs":{"url":"https://github.com/dareia/mdgaze/issues"},"engines":{"node":">=18"},"dependencies":{"dompurify":"^3.2.4","highlight.js":"^11.11.1","marked":"^15.0.7"},"optionalDependencies":{"electron":"^34.2.0"},"devDependencies":{"@eslint/js":"^10.0.1","electron-builder":"^25.1.8","esbuild":"^0.28.0","eslint":"^10.3.0","globals":"^17.6.0"},"build":{"appId":"com.mdgaze.app","productName":"mdgaze","copyright":"Copyright © 2026 Radoslaw Tarnas","directories":{"buildResources":"assets","output":"dist"},"files":["src/**/*","bin/**/*","assets/**/*","node_modules/**/*","package.json"],"mac":{"category":"public.app-category.developer-tools","icon":"assets/icon.icns","darkModeSupport":true,"extendInfo":{"NSHumanReadableCopyright":"Copyright © 2026 Radoslaw Tarnas","NSHighResolutionCapable":true,"CFBundleDocumentTypes":[{"CFBundleTypeName":"Markdown Document","CFBundleTypeRole":"Editor","LSItemContentTypes":["net.daringfireball.markdown"],"LSHandlerRank":"Alternate"}]},"target":[{"target":"dmg","arch":["x64","arm64"]},{"target":"zip","arch":["x64","arm64"]}]},"dmg":{"title":"mdgaze ${version}","icon":"assets/icon.icns","background":null,"window":{"width":540,"height":380},"contents":[{"x":140,"y":200,"type":"file"},{"x":400,"y":200,"type":"link","path":"/Applications"}]},"linux":{"icon":"assets/icon.png","category":"Development","synopsis":"A pretty Markdown viewer & editor","description":"Browse a folder tree of .md files with a click. Pretty preview, inline edit, save with Ctrl+S.","desktop":{"Name":"mdgaze","Comment":"A pretty Markdown viewer & editor","MimeType":"text/markdown;text/x-markdown"},"target":[{"target":"AppImage","arch":["x64"]},{"target":"deb","arch":["x64"]},{"target":"rpm","arch":["x64"]},{"target":"tar.gz","arch":["x64"]}]},"win":{"icon":"assets/icon.ico","publisherName":"Radoslaw Tarnas","fileAssociations":[{"ext":["md","markdown","mdx"],"name":"Markdown Document","description":"Markdown Document","role":"Editor"}],"target":[{"target":"nsis","arch":["x64"]},{"target":"portable","arch":["x64"]}]},"nsis":{"oneClick":false,"allowToChangeInstallationDirectory":true,"perMachine":false,"createDesktopShortcut":true,"createStartMenuShortcut":true,"shortcutName":"mdgaze","uninstallDisplayName":"mdgaze ${version}"}},"gitHead":"b1a244f796e39308d066df628449f020727f77cf","_id":"@dareia/mdgaze@0.2.1","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-IIIWkjbuAvp0elx/2emNWFKKnlbk5mTidyo2zLO36NcNtlS7Am2Utzy7vDElQJebQOlZF1NMjTdYQ/+V519SpA==","shasum":"8fe11ade16d9fd876e2f135ede78fec9dff62bff","tarball":"https://registry.npmjs.org/@dareia/mdgaze/-/mdgaze-0.2.1.tgz","fileCount":33,"unpackedSize":979659,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDBm/rzs8W1Y3aT59+QlbgWe4+zF6NeLXXRc815a1R3SAiEAj+5dvhCXpBBg2fHEbQNqFsJn1bPHqAZ8TdhhsC5N/PM="}]},"_npmUser":{"name":"rheathec","email":"radoslaw.tarnas@gmail.com"},"directories":{},"maintainers":[{"name":"rheathec","email":"radoslaw.tarnas@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mdgaze_0.2.1_1777752226430_0.13309999141167994"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-30T19:01:00.569Z","modified":"2026-05-02T20:03:46.781Z","0.1.0":"2026-04-30T19:01:00.975Z","0.1.1":"2026-04-30T19:12:44.348Z","0.2.1":"2026-05-02T20:03:46.633Z"},"bugs":{"url":"https://github.com/dareia/mdgaze/issues"},"author":{"name":"Radoslaw Tarnas","email":"radoslaw.tarnas@gmail.com"},"license":"MIT","homepage":"https://github.com/dareia/mdgaze","keywords":["markdown","viewer","editor","electron","preview","md","browser","tree"],"repository":{"type":"git","url":"git+https://github.com/dareia/mdgaze.git"},"description":"A pretty and simple Markdown viewer & editor — browse a folder tree of .md files with a click.","maintainers":[{"name":"rheathec","email":"radoslaw.tarnas@gmail.com"}],"readme":"<div align=\"center\">\n\n<img src=\"assets/icon.png\" alt=\"mdgaze\" width=\"128\" height=\"128\" />\n\n# mdgaze\n\n**A pretty and simple Markdown viewer & editor.**\nBrowse a folder of `.md` files in a clean tree, read them rendered, edit when you need to, save with `⌘S`.\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE)\n[![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-lightgrey)](#install)\n[![Built with Electron](https://img.shields.io/badge/built%20with-Electron-47848F?logo=electron&logoColor=white)](https://www.electronjs.org/)\n\n</div>\n\n---\n\n## Why\n\nYou have a folder of notes, docs, or a project's `docs/` directory and you just want to **peek** at them — rendered nicely, no setup, no editor extension, no static-site build step. Sometimes you also want to fix a typo and save it. That's mdgaze.\n\n## Features\n\n- **Folder tree** of every `.md` / `.markdown` / `.mdx` file (including nested), filtered with a fuzzy search box.\n- **Full keyboard navigation** in the tree (WAI-ARIA): arrows to move, ←/→ to collapse/expand or jump parent/child, Enter to open.\n- **GitHub-flavored Markdown** rendering: tables, task lists, fenced code, ordered/unordered lists, blockquotes.\n- **Syntax highlighting** for code blocks (powered by `highlight.js`).\n- **Edit mode** with one-shortcut toggle (`⌘E`) and **save** (`⌘S`) — files are written back in place.\n- **New file** flow (`⌘N`) — creates the file (with intermediate directories) and drops you straight into edit mode.\n- **Back navigation** (`⌘[`) across markdown links — follow a link, click back to return.\n- **Inline image and source-code viewers** — relative links to `.png` / `.svg` / `.json` / `.ts` / etc. open in the same window.\n- **Concurrent-edit detection** — if a file changes on disk while open, save asks before overwriting.\n- **Auto theme** that follows your OS light / dark preference.\n- **CLI launcher**: `mdgaze ./docs` from anywhere in your terminal.\n- **Sandboxed renderer** — full Chromium sandbox; FS access only inside the folder you opened, with symlink-resolved containment.\n- **Cross-platform builds**: macOS (`.dmg`, `.zip`), Linux (`AppImage`, `.deb`, `.rpm`, `.tar.gz`), Windows (`NSIS` installer + portable `.exe`).\n\n## Install\n\n### From npm (recommended for the CLI)\n\n```bash\nnpm install -g @dareia/mdgaze\nmdgaze ./docs\n```\n\n> The package is published under the [`@dareia`](https://www.npmjs.com/org/dareia) scope; the CLI command after install is still `mdgaze`.\n\n### Pre-built binaries\n\nDownload the latest release for your platform from the [Releases page](https://github.com/dareia/mdgaze/releases) and install it like any other desktop app.\n\n### From source\n\n```bash\ngit clone https://github.com/dareia/mdgaze.git\ncd mdgaze\nnpm install\nnpm start\n```\n\n## Usage\n\n```bash\nmdgaze                # open the current directory\nmdgaze ./docs         # relative path\nmdgaze ~/notes        # absolute path\nmdgaze --help\nmdgaze --version\n```\n\n### Keyboard shortcuts\n\n| Action                | macOS  | Windows / Linux |\n| --------------------- | ------ | --------------- |\n| Open folder…          | `⌘O`   | `Ctrl+O`        |\n| New file…             | `⌘N`   | `Ctrl+N`        |\n| Toggle edit / preview | `⌘E`   | `Ctrl+E`        |\n| Save                  | `⌘S`   | `Ctrl+S`        |\n| Focus filter          | `⌘F`   | `Ctrl+F`        |\n| Back to previous file | `⌘[`   | `Ctrl+[`        |\n\nOnce focus is in the tree (Tab into it), use `↑` / `↓` to move, `→` / `←` to expand / collapse, `Home` / `End` to jump, `Enter` or `Space` to open.\n\n## Development\n\n```bash\nnpm start             # build vendor bundles + launch\nnpm run dev           # alias for `npm start ./`\nnpm run lint          # ESLint flat-config check\nnpm test              # node:test unit suite (no extra deps)\nnpm run build:vendor  # rebundle renderer deps + preload + hljs themes\n```\n\n`MDGAZE_DEVTOOLS=1 npm start` opens DevTools attached. `MDGAZE_DEBUG=1` mirrors the renderer console to your terminal.\n\n## Building distributables\n\n```bash\nnpm run dist:mac     # .dmg + .zip (universal: x64 + arm64)\nnpm run dist:linux   # AppImage + .deb + .rpm + .tar.gz\nnpm run dist:win     # NSIS installer + portable .exe\nnpm run dist:all     # everything (run on macOS for full coverage)\n```\n\nOutput lands in `dist/`. CI builds for all three platforms run on every tag — see [`.github/workflows/build.yml`](./.github/workflows/build.yml).\n\n> **Code signing & notarization** are not configured by default. To produce signed/notarized macOS builds and signed Windows installers, set the standard `electron-builder` env vars (`CSC_LINK`, `CSC_KEY_PASSWORD`, `APPLE_ID`, `APPLE_APP_SPECIFIC_PASSWORD`, `APPLE_TEAM_ID`, `WIN_CSC_LINK`, …) in your environment or as repository secrets. See the [electron-builder code-signing guide](https://www.electron.build/code-signing).\n\n## Documentation\n\n- [`docs/USAGE.md`](docs/USAGE.md) — using the app day-to-day.\n- [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md) — running locally, regenerating icons, debugging.\n- [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) — how main / preload / renderer fit together.\n- [`docs/RELEASING.md`](docs/RELEASING.md) — building installers, cutting a release, publishing to npm, code signing.\n- [`CONTRIBUTING.md`](CONTRIBUTING.md) — how to contribute.\n- [`CHANGELOG.md`](CHANGELOG.md) — release notes.\n\n## Project layout\n\n```\nmdgaze/\n├── bin/mdgaze.js              # CLI launcher (npm bin entry)\n├── src/\n│   ├── main.js                # Electron main process: window, menu, IPC, FS gates\n│   ├── preload.js             # contextBridge source (bundled at runtime)\n│   ├── preload-bundled.js     # esbuild output, loaded by main (gitignored)\n│   ├── shared/\n│   │   ├── ipc.js             # CHANNELS + MD_EXTENSIONS (CJS, used by main+preload)\n│   │   └── safety.js          # executable-extension deny-list + helper\n│   └── renderer/\n│       ├── index.html         # markup, CSP meta, modal scaffolding\n│       ├── styles.css         # entire UI theme (dark + light)\n│       ├── app.js             # tree, viewer, editor, history, IPC plumbing\n│       ├── lib/text.js        # pure DOM-free helpers (testable)\n│       └── vendor/            # generated: marked, hljs, dompurify, hljs themes\n├── test/                      # node:test unit specs (.mjs)\n├── assets/                    # icons + logo\n├── scripts/\n│   ├── build-icons.py         # procedural icon generator\n│   └── build-vendor.mjs       # bundles renderer deps + preload + copies hljs CSS\n├── docs/                      # user & contributor docs\n├── .github/workflows/         # cross-platform CI builds\n├── eslint.config.mjs\n├── package.json               # also holds electron-builder config\n└── LICENSE\n```\n\n## License\n\n[MIT](./LICENSE) © Dareia\n\n## Acknowledgements\n\nmdgaze stands on:\n\n- [Electron](https://www.electronjs.org/)\n- [marked](https://marked.js.org/) — Markdown parser\n- [highlight.js](https://highlightjs.org/) — syntax highlighting\n- [DOMPurify](https://github.com/cure53/DOMPurify) — HTML sanitization\n- [electron-builder](https://www.electron.build/) — packaging\n","readmeFilename":"README.md"}