vantage-md 0.4.1__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.
- vantage_md-0.4.1/.github/dependabot.yml +16 -0
- vantage_md-0.4.1/.github/pull_request_template.md +21 -0
- vantage_md-0.4.1/.github/workflows/ci.yml +72 -0
- vantage_md-0.4.1/.github/workflows/publish.yml +187 -0
- vantage_md-0.4.1/.github/workflows/release.yml +84 -0
- vantage_md-0.4.1/.gitignore +66 -0
- vantage_md-0.4.1/.mise.toml +4 -0
- vantage_md-0.4.1/.pre-commit-config.yaml +50 -0
- vantage_md-0.4.1/.prettierrc.json +8 -0
- vantage_md-0.4.1/.python-version +1 -0
- vantage_md-0.4.1/CHANGELOG.md +73 -0
- vantage_md-0.4.1/Justfile +337 -0
- vantage_md-0.4.1/LICENSE +191 -0
- vantage_md-0.4.1/MANIFEST.in +2 -0
- vantage_md-0.4.1/NOTICE +14 -0
- vantage_md-0.4.1/PKG-INFO +299 -0
- vantage_md-0.4.1/Procfile +2 -0
- vantage_md-0.4.1/README.md +277 -0
- vantage_md-0.4.1/build-docs.sh +13 -0
- vantage_md-0.4.1/docs/design/jj-history-viewer.md +124 -0
- vantage_md-0.4.1/docs/design/technical_spec.md +282 -0
- vantage_md-0.4.1/docs/design/working-directory-diffs.md +79 -0
- vantage_md-0.4.1/docs/development.md +123 -0
- vantage_md-0.4.1/docs/mermaid-diagrams-test.md +206 -0
- vantage_md-0.4.1/docs/screenshot.png +0 -0
- vantage_md-0.4.1/docs-worker.js +5 -0
- vantage_md-0.4.1/docs-wrangler.toml +9 -0
- vantage_md-0.4.1/frontend/.gitignore +34 -0
- vantage_md-0.4.1/frontend/README.md +73 -0
- vantage_md-0.4.1/frontend/e2e/basic.spec.ts +20 -0
- vantage_md-0.4.1/frontend/e2e/commit_info.spec.ts +47 -0
- vantage_md-0.4.1/frontend/e2e/ctrl_click.spec.ts +151 -0
- vantage_md-0.4.1/frontend/e2e/livereload.spec.ts +86 -0
- vantage_md-0.4.1/frontend/e2e/mermaid.spec.ts +63 -0
- vantage_md-0.4.1/frontend/e2e/navigation.spec.ts +48 -0
- vantage_md-0.4.1/frontend/e2e/sidebar.spec.ts +47 -0
- vantage_md-0.4.1/frontend/e2e/ui_behavior.spec.ts +87 -0
- vantage_md-0.4.1/frontend/eslint.config.js +23 -0
- vantage_md-0.4.1/frontend/index.html +13 -0
- vantage_md-0.4.1/frontend/package-lock.json +9224 -0
- vantage_md-0.4.1/frontend/package.json +70 -0
- vantage_md-0.4.1/frontend/playwright.config.ts +27 -0
- vantage_md-0.4.1/frontend/postcss.config.js +6 -0
- vantage_md-0.4.1/frontend/public/vite.svg +1 -0
- vantage_md-0.4.1/frontend/src/App.css +42 -0
- vantage_md-0.4.1/frontend/src/App.test.tsx +19 -0
- vantage_md-0.4.1/frontend/src/App.tsx +16 -0
- vantage_md-0.4.1/frontend/src/assets/react.svg +1 -0
- vantage_md-0.4.1/frontend/src/components/AppLink.test.tsx +95 -0
- vantage_md-0.4.1/frontend/src/components/AppLink.tsx +55 -0
- vantage_md-0.4.1/frontend/src/components/ConnectionBanner.tsx +43 -0
- vantage_md-0.4.1/frontend/src/components/DiffViewer.test.tsx +72 -0
- vantage_md-0.4.1/frontend/src/components/DiffViewer.tsx +178 -0
- vantage_md-0.4.1/frontend/src/components/DirectoryViewer.test.tsx +145 -0
- vantage_md-0.4.1/frontend/src/components/DirectoryViewer.tsx +145 -0
- vantage_md-0.4.1/frontend/src/components/FilePicker.tsx +437 -0
- vantage_md-0.4.1/frontend/src/components/FileTree.test.tsx +307 -0
- vantage_md-0.4.1/frontend/src/components/FileTree.tsx +300 -0
- vantage_md-0.4.1/frontend/src/components/FrontmatterDisplay.test.tsx +123 -0
- vantage_md-0.4.1/frontend/src/components/FrontmatterDisplay.tsx +126 -0
- vantage_md-0.4.1/frontend/src/components/KeyboardShortcuts.test.tsx +75 -0
- vantage_md-0.4.1/frontend/src/components/KeyboardShortcuts.tsx +188 -0
- vantage_md-0.4.1/frontend/src/components/MarkdownViewer.test.tsx +173 -0
- vantage_md-0.4.1/frontend/src/components/MarkdownViewer.tsx +648 -0
- vantage_md-0.4.1/frontend/src/components/MermaidDiagram.test.tsx +177 -0
- vantage_md-0.4.1/frontend/src/components/MermaidDiagram.tsx +174 -0
- vantage_md-0.4.1/frontend/src/components/MiddleEllipsis.tsx +110 -0
- vantage_md-0.4.1/frontend/src/components/Modal.test.tsx +58 -0
- vantage_md-0.4.1/frontend/src/components/Modal.tsx +63 -0
- vantage_md-0.4.1/frontend/src/components/ProjectPicker.tsx +241 -0
- vantage_md-0.4.1/frontend/src/components/RecentFilePopover.test.tsx +307 -0
- vantage_md-0.4.1/frontend/src/components/RecentFilePopover.tsx +220 -0
- vantage_md-0.4.1/frontend/src/components/RecentsModal.test.tsx +207 -0
- vantage_md-0.4.1/frontend/src/components/RecentsModal.tsx +234 -0
- vantage_md-0.4.1/frontend/src/components/RelativeTime.tsx +16 -0
- vantage_md-0.4.1/frontend/src/components/ReviewCommentPopover.tsx +143 -0
- vantage_md-0.4.1/frontend/src/components/ReviewCommentViewer.tsx +87 -0
- vantage_md-0.4.1/frontend/src/components/ReviewPanel.tsx +253 -0
- vantage_md-0.4.1/frontend/src/components/ReviewToolbar.tsx +67 -0
- vantage_md-0.4.1/frontend/src/components/SettingsDropdown.test.tsx +148 -0
- vantage_md-0.4.1/frontend/src/components/SettingsDropdown.tsx +253 -0
- vantage_md-0.4.1/frontend/src/components/StyleGuideModal.tsx +111 -0
- vantage_md-0.4.1/frontend/src/components/WhatsNewModal.test.tsx +79 -0
- vantage_md-0.4.1/frontend/src/components/WhatsNewModal.tsx +204 -0
- vantage_md-0.4.1/frontend/src/hooks/useDeltaFlash.test.ts +114 -0
- vantage_md-0.4.1/frontend/src/hooks/useDeltaFlash.ts +82 -0
- vantage_md-0.4.1/frontend/src/hooks/useKeyboardShortcuts.test.ts +105 -0
- vantage_md-0.4.1/frontend/src/hooks/useKeyboardShortcuts.ts +226 -0
- vantage_md-0.4.1/frontend/src/hooks/useLineAnchor.ts +142 -0
- vantage_md-0.4.1/frontend/src/hooks/useRelativeTime.test.ts +96 -0
- vantage_md-0.4.1/frontend/src/hooks/useRelativeTime.ts +69 -0
- vantage_md-0.4.1/frontend/src/hooks/useReviewHighlights.ts +705 -0
- vantage_md-0.4.1/frontend/src/hooks/useWebSocket.test.ts +300 -0
- vantage_md-0.4.1/frontend/src/hooks/useWebSocket.ts +385 -0
- vantage_md-0.4.1/frontend/src/hooks/useWhatsNew.ts +53 -0
- vantage_md-0.4.1/frontend/src/index.css +939 -0
- vantage_md-0.4.1/frontend/src/lib/docTips.test.ts +45 -0
- vantage_md-0.4.1/frontend/src/lib/docTips.ts +77 -0
- vantage_md-0.4.1/frontend/src/lib/frontmatter.test.ts +264 -0
- vantage_md-0.4.1/frontend/src/lib/frontmatter.ts +55 -0
- vantage_md-0.4.1/frontend/src/lib/mermaidCache.ts +7 -0
- vantage_md-0.4.1/frontend/src/lib/mermaidLoader.ts +31 -0
- vantage_md-0.4.1/frontend/src/lib/multiRepoNavigation.test.ts +159 -0
- vantage_md-0.4.1/frontend/src/lib/navigation.test.ts +52 -0
- vantage_md-0.4.1/frontend/src/lib/navigation.ts +20 -0
- vantage_md-0.4.1/frontend/src/lib/rehypeSourceLines.ts +51 -0
- vantage_md-0.4.1/frontend/src/lib/staticMode.test.ts +154 -0
- vantage_md-0.4.1/frontend/src/lib/staticMode.ts +133 -0
- vantage_md-0.4.1/frontend/src/lib/utils.test.ts +29 -0
- vantage_md-0.4.1/frontend/src/lib/utils.ts +6 -0
- vantage_md-0.4.1/frontend/src/main.tsx +19 -0
- vantage_md-0.4.1/frontend/src/pages/HistoryPage.tsx +779 -0
- vantage_md-0.4.1/frontend/src/pages/RecentsPage.test.tsx +119 -0
- vantage_md-0.4.1/frontend/src/pages/RecentsPage.tsx +229 -0
- vantage_md-0.4.1/frontend/src/pages/ViewerPage.test.tsx +246 -0
- vantage_md-0.4.1/frontend/src/pages/ViewerPage.tsx +1642 -0
- vantage_md-0.4.1/frontend/src/stores/useConnectionStore.ts +18 -0
- vantage_md-0.4.1/frontend/src/stores/useGitStore.test.ts +142 -0
- vantage_md-0.4.1/frontend/src/stores/useGitStore.ts +185 -0
- vantage_md-0.4.1/frontend/src/stores/useJJStore.test.ts +101 -0
- vantage_md-0.4.1/frontend/src/stores/useJJStore.ts +132 -0
- vantage_md-0.4.1/frontend/src/stores/useRepoStore.test.ts +700 -0
- vantage_md-0.4.1/frontend/src/stores/useRepoStore.ts +497 -0
- vantage_md-0.4.1/frontend/src/stores/useReviewStore.test.ts +316 -0
- vantage_md-0.4.1/frontend/src/stores/useReviewStore.ts +417 -0
- vantage_md-0.4.1/frontend/src/test/setup.ts +1 -0
- vantage_md-0.4.1/frontend/src/types/index.ts +121 -0
- vantage_md-0.4.1/frontend/src/virtual-changelog.d.ts +10 -0
- vantage_md-0.4.1/frontend/tailwind.config.js +11 -0
- vantage_md-0.4.1/frontend/tsconfig.app.json +33 -0
- vantage_md-0.4.1/frontend/tsconfig.json +7 -0
- vantage_md-0.4.1/frontend/tsconfig.node.json +26 -0
- vantage_md-0.4.1/frontend/vite-changelog-plugin.ts +98 -0
- vantage_md-0.4.1/frontend/vite.config.ts +70 -0
- vantage_md-0.4.1/frontend/vitest.config.ts +27 -0
- vantage_md-0.4.1/main.py +6 -0
- vantage_md-0.4.1/packages/vantage-md/README.md +123 -0
- vantage_md-0.4.1/packages/vantage-md/package-lock.json +4908 -0
- vantage_md-0.4.1/packages/vantage-md/package.json +104 -0
- vantage_md-0.4.1/packages/vantage-md/src/FrontmatterDisplay.tsx +126 -0
- vantage_md-0.4.1/packages/vantage-md/src/MarkdownViewer.tsx +248 -0
- vantage_md-0.4.1/packages/vantage-md/src/MermaidDiagram.tsx +234 -0
- vantage_md-0.4.1/packages/vantage-md/src/frontmatter.ts +55 -0
- vantage_md-0.4.1/packages/vantage-md/src/index.ts +27 -0
- vantage_md-0.4.1/packages/vantage-md/src/mermaidCache.ts +6 -0
- vantage_md-0.4.1/packages/vantage-md/src/mermaidLoader.ts +31 -0
- vantage_md-0.4.1/packages/vantage-md/src/react.ts +35 -0
- vantage_md-0.4.1/packages/vantage-md/src/rehypeSourceLines.ts +51 -0
- vantage_md-0.4.1/packages/vantage-md/src/renderMarkdown.ts +122 -0
- vantage_md-0.4.1/packages/vantage-md/src/renderMermaidBlocks.ts +96 -0
- vantage_md-0.4.1/packages/vantage-md/src/resolveLinks.ts +92 -0
- vantage_md-0.4.1/packages/vantage-md/src/sanitize.ts +59 -0
- vantage_md-0.4.1/packages/vantage-md/src/scrollToLineAnchor.ts +114 -0
- vantage_md-0.4.1/packages/vantage-md/src/styles/index.css +7 -0
- vantage_md-0.4.1/packages/vantage-md/src/styles/line-anchor.css +22 -0
- vantage_md-0.4.1/packages/vantage-md/src/styles/prose.css +210 -0
- vantage_md-0.4.1/packages/vantage-md/src/useLineAnchor.ts +129 -0
- vantage_md-0.4.1/packages/vantage-md/tsconfig.json +18 -0
- vantage_md-0.4.1/packages/vantage-md/tsup.config.ts +49 -0
- vantage_md-0.4.1/pyproject.toml +61 -0
- vantage_md-0.4.1/ruff.toml +9 -0
- vantage_md-0.4.1/scripts/build-site.sh +14 -0
- vantage_md-0.4.1/scripts/hooks/commit-msg +30 -0
- vantage_md-0.4.1/scripts/hooks/pre-commit +4 -0
- vantage_md-0.4.1/scripts/hooks/pre-push +41 -0
- vantage_md-0.4.1/setup.cfg +4 -0
- vantage_md-0.4.1/src/vantage/__init__.py +0 -0
- vantage_md-0.4.1/src/vantage/cli.py +587 -0
- vantage_md-0.4.1/src/vantage/config.py +289 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/_baseUniq-BzjAJ5JS.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/arc-DW1GZeyX.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/architectureDiagram-Q4EWVU46-etwRjL9h.js +36 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/blockDiagram-DXYQGD6D-D2xPqqOj.js +132 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/c4Diagram-AHTNJAMY-BBk3XTxE.js +10 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/channel-Br_HNLzt.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/chunk-4BX2VUAB-BnH5aWVT.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/chunk-4TB4RGXK-CxpPNuPM.js +206 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/chunk-55IACEB6-0GgW-XH2.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/chunk-EDXVE4YY-JPlt4r7q.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/chunk-FMBD7UC4-CjVIXvwj.js +15 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/chunk-OYMX7WX6-B_s5Oyto.js +231 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/chunk-QZHKN3VN-CQf9A4kd.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/chunk-YZCP3GAM-Dxjqtgkp.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/classDiagram-6PBFFD2Q-Du8hDS8t.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/classDiagram-v2-HSJHXN6E-Du8hDS8t.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/clone-Brjjqzcg.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/cose-bilkent-S5V4N54A-ZpMdfjHh.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/cytoscape.esm-DkOyvmE4.js +321 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/dagre-KV5264BT-Cc7lqTnk.js +4 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/defaultLocale-DX6XiGOO.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/diagram-5BDNPKRD-BO6NioEI.js +10 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/diagram-G4DWMVQ6-BVXLGuNL.js +24 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/diagram-MMDJMWI5-ByuR5ZTG.js +43 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/diagram-TYMM5635-5W8JSU0H.js +24 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/erDiagram-SMLLAGMA-BLT__Y4b.js +85 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/flowDiagram-DWJPFMVM-ESrwQaOL.js +162 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/ganttDiagram-T4ZO3ILL-Dsx3-ocM.js +292 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/gitGraphDiagram-UUTBAWPF-kFxlqkjs.js +106 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/graph-CUsmYolQ.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/index-B3U0nrhq.css +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/index-BrU0vSaY.js +524 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/infoDiagram-42DDH7IO-BuHfLnJ4.js +2 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/init-Gi6I4Gst.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/ishikawaDiagram-UXIWVN3A-43xxoQXf.js +70 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/journeyDiagram-VCZTEJTY-B9JjJfzf.js +139 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/kanban-definition-6JOO6SKY-CDNNwYqE.js +89 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/layout-CQUnwyiV.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/linear-DHXzPUd4.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/mermaid.core-BBOkBt1D.js +303 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/min-CmQGJ1WS.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/mindmap-definition-QFDTVHPH-Ds1Ac4jf.js +96 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/ordinal-Cboi1Yqb.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/pieDiagram-DEJITSTG-_PAeuwxX.js +30 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/quadrantDiagram-34T5L4WZ-ZJy13LwY.js +7 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/requirementDiagram-MS252O5E-BrKpOeGK.js +84 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/sankeyDiagram-XADWPNL6-D9T7x1rR.js +10 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/sequenceDiagram-FGHM5R23-troUvgyD.js +157 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/stateDiagram-FHFEXIEX-CWfVDcVk.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/stateDiagram-v2-QKLJ7IA2-DjUyDw-5.js +1 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/timeline-definition-GMOUNBTQ-BQXjYav1.js +120 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/vendor-katex-Dehg5p_Y.js +261 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/vendor-markdown-BLwYaWWF.js +40 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/vendor-react-DF8rR34Z.js +3 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/vennDiagram-DHZGUBPP-C3ZD4R0z.js +34 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/wardley-RL74JXVD-HY0CblDc.js +162 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/wardleyDiagram-NUSXRM2D-C9In7O-h.js +20 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/assets/xychartDiagram-5P7HB3ND-DpRh5iFB.js +7 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/index.html +17 -0
- vantage_md-0.4.1/src/vantage/frontend_dist/vite.svg +1 -0
- vantage_md-0.4.1/src/vantage/main.py +161 -0
- vantage_md-0.4.1/src/vantage/routers/__init__.py +0 -0
- vantage_md-0.4.1/src/vantage/routers/api.py +716 -0
- vantage_md-0.4.1/src/vantage/routers/socket.py +77 -0
- vantage_md-0.4.1/src/vantage/schemas/__init__.py +0 -0
- vantage_md-0.4.1/src/vantage/schemas/models.py +125 -0
- vantage_md-0.4.1/src/vantage/services/__init__.py +0 -0
- vantage_md-0.4.1/src/vantage/services/fs_service.py +367 -0
- vantage_md-0.4.1/src/vantage/services/git_service.py +1218 -0
- vantage_md-0.4.1/src/vantage/services/jj_service.py +437 -0
- vantage_md-0.4.1/src/vantage/services/perf.py +415 -0
- vantage_md-0.4.1/src/vantage/services/review_service.py +57 -0
- vantage_md-0.4.1/src/vantage/services/socket_manager.py +64 -0
- vantage_md-0.4.1/src/vantage/services/static_builder.py +305 -0
- vantage_md-0.4.1/src/vantage/services/watcher.py +406 -0
- vantage_md-0.4.1/src/vantage/settings.py +55 -0
- vantage_md-0.4.1/src/vantage/version.py +11 -0
- vantage_md-0.4.1/src/vantage_md.egg-info/PKG-INFO +299 -0
- vantage_md-0.4.1/src/vantage_md.egg-info/SOURCES.txt +296 -0
- vantage_md-0.4.1/src/vantage_md.egg-info/dependency_links.txt +1 -0
- vantage_md-0.4.1/src/vantage_md.egg-info/entry_points.txt +3 -0
- vantage_md-0.4.1/src/vantage_md.egg-info/requires.txt +9 -0
- vantage_md-0.4.1/src/vantage_md.egg-info/top_level.txt +1 -0
- vantage_md-0.4.1/tests/__init__.py +0 -0
- vantage_md-0.4.1/tests/conftest.py +22 -0
- vantage_md-0.4.1/tests/e2e/test_repo/README.md +3 -0
- vantage_md-0.4.1/tests/e2e/test_repo/mermaid-diagrams-test.md +206 -0
- vantage_md-0.4.1/tests/e2e/test_repo/page1.md +4 -0
- vantage_md-0.4.1/tests/e2e/test_repo/page2.md +3 -0
- vantage_md-0.4.1/tests/e2e/test_repo/subdir/README.md +1 -0
- vantage_md-0.4.1/tests/test_api.py +143 -0
- vantage_md-0.4.1/tests/test_clean_worktree.py +77 -0
- vantage_md-0.4.1/tests/test_cli.py +133 -0
- vantage_md-0.4.1/tests/test_config.py +227 -0
- vantage_md-0.4.1/tests/test_fs_service.py +227 -0
- vantage_md-0.4.1/tests/test_git_service.py +866 -0
- vantage_md-0.4.1/tests/test_global_files.py +61 -0
- vantage_md-0.4.1/tests/test_perf.py +316 -0
- vantage_md-0.4.1/tests/test_security.py +489 -0
- vantage_md-0.4.1/tests/test_startup_perf.py +56 -0
- vantage_md-0.4.1/tests/test_static_builder.py +220 -0
- vantage_md-0.4.1/userguide/README.md +39 -0
- vantage_md-0.4.1/userguide/cli-reference.md +123 -0
- vantage_md-0.4.1/userguide/configuration.md +126 -0
- vantage_md-0.4.1/userguide/daemon-mode.md +153 -0
- vantage_md-0.4.1/userguide/features.md +187 -0
- vantage_md-0.4.1/userguide/getting-started.md +57 -0
- vantage_md-0.4.1/userguide/keyboard-shortcuts.md +45 -0
- vantage_md-0.4.1/userguide/static-sites.md +152 -0
- vantage_md-0.4.1/uv.lock +714 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: "pip"
|
|
4
|
+
directory: "/"
|
|
5
|
+
schedule:
|
|
6
|
+
interval: "weekly"
|
|
7
|
+
|
|
8
|
+
- package-ecosystem: "npm"
|
|
9
|
+
directory: "/frontend"
|
|
10
|
+
schedule:
|
|
11
|
+
interval: "weekly"
|
|
12
|
+
|
|
13
|
+
- package-ecosystem: "github-actions"
|
|
14
|
+
directory: "/"
|
|
15
|
+
schedule:
|
|
16
|
+
interval: "weekly"
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## Summary
|
|
2
|
+
|
|
3
|
+
Brief description of the changes.
|
|
4
|
+
|
|
5
|
+
## Motivation
|
|
6
|
+
|
|
7
|
+
Why is this change needed?
|
|
8
|
+
|
|
9
|
+
## Changes
|
|
10
|
+
|
|
11
|
+
- List of changes made
|
|
12
|
+
|
|
13
|
+
## Testing
|
|
14
|
+
|
|
15
|
+
- [ ] Ran `just check` (format, lint, typecheck, tests)
|
|
16
|
+
- [ ] Added/updated tests for new functionality
|
|
17
|
+
- [ ] Tested manually in browser
|
|
18
|
+
|
|
19
|
+
## Screenshots
|
|
20
|
+
|
|
21
|
+
If applicable, add screenshots of UI changes.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
secrets-scan:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v6
|
|
17
|
+
with:
|
|
18
|
+
fetch-depth: 0
|
|
19
|
+
- name: TruffleHog secret scan
|
|
20
|
+
uses: trufflesecurity/trufflehog@main
|
|
21
|
+
with:
|
|
22
|
+
extra_args: --only-verified
|
|
23
|
+
|
|
24
|
+
check:
|
|
25
|
+
strategy:
|
|
26
|
+
fail-fast: false
|
|
27
|
+
matrix:
|
|
28
|
+
os: [ubuntu-latest, macos-latest]
|
|
29
|
+
runs-on: ${{ matrix.os }}
|
|
30
|
+
steps:
|
|
31
|
+
- uses: actions/checkout@v6
|
|
32
|
+
with:
|
|
33
|
+
fetch-depth: 0 # setuptools-scm needs tags
|
|
34
|
+
|
|
35
|
+
- name: Install mise
|
|
36
|
+
uses: jdx/mise-action@v4
|
|
37
|
+
|
|
38
|
+
- name: Install uv
|
|
39
|
+
uses: astral-sh/setup-uv@v7
|
|
40
|
+
|
|
41
|
+
- name: Install Python dependencies
|
|
42
|
+
run: uv sync
|
|
43
|
+
|
|
44
|
+
- name: Build vantage-md package
|
|
45
|
+
run: cd packages/vantage-md && npm ci && npx tsup
|
|
46
|
+
|
|
47
|
+
- name: Install Node dependencies
|
|
48
|
+
run: cd frontend && npm ci
|
|
49
|
+
|
|
50
|
+
- name: Lint Python
|
|
51
|
+
run: uv run ruff check .
|
|
52
|
+
|
|
53
|
+
- name: Format check Python
|
|
54
|
+
run: uv run ruff format --check .
|
|
55
|
+
|
|
56
|
+
- name: Type check Python
|
|
57
|
+
run: uv run basedpyright src/ --warnings || true
|
|
58
|
+
|
|
59
|
+
- name: Lint JavaScript
|
|
60
|
+
run: cd frontend && npm run lint
|
|
61
|
+
|
|
62
|
+
- name: Type check TypeScript
|
|
63
|
+
run: cd frontend && npx tsc --noEmit
|
|
64
|
+
|
|
65
|
+
- name: Test Python
|
|
66
|
+
run: uv run pytest tests/ -v
|
|
67
|
+
|
|
68
|
+
- name: Test JavaScript
|
|
69
|
+
run: cd frontend && npm run test
|
|
70
|
+
|
|
71
|
+
- name: Build frontend
|
|
72
|
+
run: cd frontend && npm run build
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
name: Publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
inputs:
|
|
8
|
+
version:
|
|
9
|
+
description: "Version to (re)publish to the homebrew tap, e.g. 0.4.0. PyPI upload is skipped — must already be on PyPI."
|
|
10
|
+
required: true
|
|
11
|
+
type: string
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
id-token: write
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
build:
|
|
19
|
+
# Skip on workflow_dispatch — dispatch only re-runs the brew job to
|
|
20
|
+
# backfill or recover; the package must already be on PyPI.
|
|
21
|
+
if: github.event_name == 'release'
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
steps:
|
|
24
|
+
- uses: actions/checkout@v6
|
|
25
|
+
with:
|
|
26
|
+
fetch-depth: 0 # setuptools-scm needs tags
|
|
27
|
+
|
|
28
|
+
- name: Install mise
|
|
29
|
+
uses: jdx/mise-action@v4
|
|
30
|
+
|
|
31
|
+
- name: Install uv
|
|
32
|
+
uses: astral-sh/setup-uv@v7
|
|
33
|
+
|
|
34
|
+
- name: Install Python dependencies
|
|
35
|
+
run: uv sync
|
|
36
|
+
|
|
37
|
+
# The frontend imports from the local `vantage-md` package; build it
|
|
38
|
+
# first so TypeScript + Vite can resolve the module.
|
|
39
|
+
- name: Build local vantage-md package
|
|
40
|
+
run: cd packages/vantage-md && npm ci && npx tsup
|
|
41
|
+
|
|
42
|
+
- name: Install frontend deps
|
|
43
|
+
run: cd frontend && npm ci
|
|
44
|
+
|
|
45
|
+
- name: Build frontend
|
|
46
|
+
run: cd frontend && npm run build
|
|
47
|
+
|
|
48
|
+
- name: Bundle frontend into Python package
|
|
49
|
+
run: python3 -c "import shutil; from pathlib import Path; dst=Path('src/vantage/frontend_dist'); shutil.rmtree(dst, ignore_errors=True); shutil.copytree('frontend/dist', dst)"
|
|
50
|
+
|
|
51
|
+
- name: Build sdist + wheel
|
|
52
|
+
run: uv build
|
|
53
|
+
|
|
54
|
+
- name: Upload build artifacts
|
|
55
|
+
uses: actions/upload-artifact@v4
|
|
56
|
+
with:
|
|
57
|
+
name: dist
|
|
58
|
+
path: dist/
|
|
59
|
+
|
|
60
|
+
publish-pypi:
|
|
61
|
+
if: github.event_name == 'release'
|
|
62
|
+
needs: build
|
|
63
|
+
runs-on: ubuntu-latest
|
|
64
|
+
environment: pypi
|
|
65
|
+
steps:
|
|
66
|
+
- name: Download build artifacts
|
|
67
|
+
uses: actions/download-artifact@v4
|
|
68
|
+
with:
|
|
69
|
+
name: dist
|
|
70
|
+
path: dist/
|
|
71
|
+
|
|
72
|
+
- name: Install uv
|
|
73
|
+
uses: astral-sh/setup-uv@v7
|
|
74
|
+
|
|
75
|
+
- name: Publish to PyPI
|
|
76
|
+
run: uv publish dist/* --check-url https://pypi.org/simple/
|
|
77
|
+
|
|
78
|
+
brew:
|
|
79
|
+
# Run after publish-pypi on release events, or standalone on workflow_dispatch.
|
|
80
|
+
# `always()` is required so the job still runs when upstream jobs are
|
|
81
|
+
# skipped (manual dispatch); the inner condition gates on either PyPI
|
|
82
|
+
# having succeeded, or the event being manual.
|
|
83
|
+
if: |
|
|
84
|
+
always() &&
|
|
85
|
+
(github.event_name == 'workflow_dispatch' ||
|
|
86
|
+
needs.publish-pypi.result == 'success')
|
|
87
|
+
needs: [publish-pypi]
|
|
88
|
+
runs-on: ubuntu-latest
|
|
89
|
+
steps:
|
|
90
|
+
- name: Determine version
|
|
91
|
+
id: version
|
|
92
|
+
run: |
|
|
93
|
+
if [ "$GITHUB_EVENT_NAME" = "release" ]; then
|
|
94
|
+
VERSION="${GITHUB_REF_NAME#v}"
|
|
95
|
+
else
|
|
96
|
+
VERSION="${{ github.event.inputs.version }}"
|
|
97
|
+
fi
|
|
98
|
+
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
|
|
99
|
+
echo "Publishing vantage-md ${VERSION} to homebrew tap"
|
|
100
|
+
|
|
101
|
+
- name: Check out homebrew tap
|
|
102
|
+
uses: actions/checkout@v6
|
|
103
|
+
with:
|
|
104
|
+
repository: mschulkind-oss/homebrew-tap
|
|
105
|
+
token: ${{ secrets.HOMEBREW_TAP_TOKEN }}
|
|
106
|
+
path: tap
|
|
107
|
+
|
|
108
|
+
- name: Set up Python
|
|
109
|
+
uses: actions/setup-python@v5
|
|
110
|
+
with:
|
|
111
|
+
python-version: "3.13"
|
|
112
|
+
|
|
113
|
+
- name: Install homebrew-pypi-poet + vantage-md from PyPI
|
|
114
|
+
run: |
|
|
115
|
+
python -m venv /tmp/poet-venv
|
|
116
|
+
# poet still uses the deprecated pkg_resources API, which was removed
|
|
117
|
+
# in setuptools 81. Pin below that for the lifetime of this job.
|
|
118
|
+
/tmp/poet-venv/bin/pip install --quiet 'setuptools<81' homebrew-pypi-poet
|
|
119
|
+
# Retry the vantage-md install in case PyPI index replication lags
|
|
120
|
+
# behind the publish step (rare but documented).
|
|
121
|
+
VERSION="${{ steps.version.outputs.version }}"
|
|
122
|
+
for i in 1 2 3 4 5 6; do
|
|
123
|
+
if /tmp/poet-venv/bin/pip install --quiet "vantage-md==${VERSION}"; then
|
|
124
|
+
echo "Installed vantage-md==${VERSION}"
|
|
125
|
+
break
|
|
126
|
+
fi
|
|
127
|
+
echo "PyPI not ready yet, retrying in 15s..."
|
|
128
|
+
sleep 15
|
|
129
|
+
done
|
|
130
|
+
|
|
131
|
+
- name: Generate + patch formula
|
|
132
|
+
run: |
|
|
133
|
+
set -euo pipefail
|
|
134
|
+
/tmp/poet-venv/bin/poet -f vantage-md > /tmp/formula.rb
|
|
135
|
+
|
|
136
|
+
# Poet leaves placeholder fields — patch them here instead of
|
|
137
|
+
# maintaining a separate template that could drift from poet's output.
|
|
138
|
+
python3 <<'PY'
|
|
139
|
+
from pathlib import Path
|
|
140
|
+
|
|
141
|
+
f = Path("/tmp/formula.rb")
|
|
142
|
+
text = f.read_text()
|
|
143
|
+
|
|
144
|
+
text = text.replace(
|
|
145
|
+
'desc "Shiny new formula"',
|
|
146
|
+
'desc "Beautiful local Markdown viewer with live reload and Git awareness"',
|
|
147
|
+
)
|
|
148
|
+
text = text.replace(
|
|
149
|
+
'homepage "None"',
|
|
150
|
+
'homepage "https://github.com/mschulkind-oss/vantage"\n license "Apache-2.0"',
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
# vantage-md's pyproject.toml requires Python >=3.13.
|
|
154
|
+
text = text.replace(
|
|
155
|
+
'depends_on "python3"',
|
|
156
|
+
'depends_on "python@3.13"',
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
# Replace poet's `false` test stub with a real smoke test.
|
|
160
|
+
# `--version` exits 0 without binding a port or loading a repo.
|
|
161
|
+
text = text.replace(
|
|
162
|
+
" test do\n false\n end",
|
|
163
|
+
' test do\n assert_match "vantage-md", shell_output("#{bin}/vantage-md --version")\n end',
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
f.write_text(text)
|
|
167
|
+
PY
|
|
168
|
+
|
|
169
|
+
echo "--- Generated formula ---"
|
|
170
|
+
cat /tmp/formula.rb
|
|
171
|
+
|
|
172
|
+
- name: Commit and push to tap
|
|
173
|
+
run: |
|
|
174
|
+
set -euo pipefail
|
|
175
|
+
VERSION="${{ steps.version.outputs.version }}"
|
|
176
|
+
mkdir -p tap/Formula
|
|
177
|
+
cp /tmp/formula.rb tap/Formula/vantage-md.rb
|
|
178
|
+
cd tap
|
|
179
|
+
git config user.name "vantage-md release bot"
|
|
180
|
+
git config user.email "noreply@github.com"
|
|
181
|
+
git add Formula/vantage-md.rb
|
|
182
|
+
if git diff --cached --quiet; then
|
|
183
|
+
echo "Formula unchanged; nothing to commit."
|
|
184
|
+
exit 0
|
|
185
|
+
fi
|
|
186
|
+
git commit -m "vantage-md ${VERSION}"
|
|
187
|
+
git push
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*" # Full release: v0.3.5
|
|
7
|
+
- "vantage-md@*" # npm-only release: vantage-md@0.1.5
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: write # gh release create
|
|
11
|
+
id-token: write # npm provenance (OIDC trusted publishing)
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
release:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v6
|
|
18
|
+
with:
|
|
19
|
+
fetch-depth: 0 # setuptools-scm needs tags to compute the version
|
|
20
|
+
|
|
21
|
+
- name: Install mise
|
|
22
|
+
uses: jdx/mise-action@v4
|
|
23
|
+
|
|
24
|
+
- name: Install uv
|
|
25
|
+
uses: astral-sh/setup-uv@v7
|
|
26
|
+
|
|
27
|
+
- name: Setup Node with npm registry
|
|
28
|
+
uses: actions/setup-node@v4
|
|
29
|
+
with:
|
|
30
|
+
node-version: "24"
|
|
31
|
+
registry-url: https://registry.npmjs.org
|
|
32
|
+
|
|
33
|
+
- name: Install Python dependencies
|
|
34
|
+
run: uv sync
|
|
35
|
+
|
|
36
|
+
- name: Build vantage-md
|
|
37
|
+
run: cd packages/vantage-md && npm ci && npx tsup
|
|
38
|
+
|
|
39
|
+
- name: Install frontend deps
|
|
40
|
+
run: cd frontend && npm ci
|
|
41
|
+
|
|
42
|
+
# --- npm publish with provenance ---
|
|
43
|
+
# Skip if the version in package.json is already on the registry. This
|
|
44
|
+
# lets `v*` tags (Python releases) ride past a stale npm version without
|
|
45
|
+
# failing the whole workflow; only `vantage-md@*` tags or v* tags that
|
|
46
|
+
# also bumped npm actually publish.
|
|
47
|
+
- name: Check if npm version needs publishing
|
|
48
|
+
id: npm_check
|
|
49
|
+
run: |
|
|
50
|
+
set -euo pipefail
|
|
51
|
+
pkg_version=$(node -p "require('./packages/vantage-md/package.json').version")
|
|
52
|
+
if npm view "vantage-md@${pkg_version}" version > /dev/null 2>&1; then
|
|
53
|
+
echo "skip=true" >> "$GITHUB_OUTPUT"
|
|
54
|
+
echo "vantage-md@${pkg_version} is already on npm; skipping publish."
|
|
55
|
+
else
|
|
56
|
+
echo "skip=false" >> "$GITHUB_OUTPUT"
|
|
57
|
+
echo "Publishing vantage-md@${pkg_version}."
|
|
58
|
+
fi
|
|
59
|
+
|
|
60
|
+
- name: Publish vantage-md to npm
|
|
61
|
+
if: steps.npm_check.outputs.skip == 'false'
|
|
62
|
+
run: cd packages/vantage-md && npm publish --provenance --access public
|
|
63
|
+
|
|
64
|
+
# --- Python build + GitHub release (only for v* tags) ---
|
|
65
|
+
- name: Build frontend
|
|
66
|
+
if: startsWith(github.ref_name, 'v')
|
|
67
|
+
run: cd frontend && npm run build
|
|
68
|
+
|
|
69
|
+
- name: Bundle frontend into Python package
|
|
70
|
+
if: startsWith(github.ref_name, 'v')
|
|
71
|
+
run: python3 -c "import shutil; from pathlib import Path; dst=Path('src/vantage/frontend_dist'); shutil.rmtree(dst, ignore_errors=True); shutil.copytree('frontend/dist', dst)"
|
|
72
|
+
|
|
73
|
+
- name: Build Python wheel
|
|
74
|
+
if: startsWith(github.ref_name, 'v')
|
|
75
|
+
run: uv build
|
|
76
|
+
|
|
77
|
+
- name: Create GitHub release
|
|
78
|
+
if: startsWith(github.ref_name, 'v')
|
|
79
|
+
run: |
|
|
80
|
+
gh release create "${{ github.ref_name }}" dist/*.whl dist/*.tar.gz \
|
|
81
|
+
--title "${{ github.ref_name }}" \
|
|
82
|
+
--generate-notes
|
|
83
|
+
env:
|
|
84
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
.venv/
|
|
6
|
+
env/
|
|
7
|
+
venv/
|
|
8
|
+
*.egg-info/
|
|
9
|
+
.coverage
|
|
10
|
+
htmlcov/
|
|
11
|
+
.pytest_cache/
|
|
12
|
+
|
|
13
|
+
# Python build artifacts
|
|
14
|
+
build/
|
|
15
|
+
dist/
|
|
16
|
+
*.egg-info/
|
|
17
|
+
pyproject.toml.bak
|
|
18
|
+
|
|
19
|
+
# Environment
|
|
20
|
+
.env
|
|
21
|
+
|
|
22
|
+
# OS
|
|
23
|
+
.DS_Store
|
|
24
|
+
Thumbs.db
|
|
25
|
+
|
|
26
|
+
# MyPy
|
|
27
|
+
.mypy_cache/
|
|
28
|
+
.dmypy.json
|
|
29
|
+
dmypy.json
|
|
30
|
+
|
|
31
|
+
# Ruff
|
|
32
|
+
.ruff_cache/
|
|
33
|
+
|
|
34
|
+
# Coverage reports
|
|
35
|
+
htmlcov/
|
|
36
|
+
.coverage
|
|
37
|
+
# Overmind
|
|
38
|
+
.overmind.sock
|
|
39
|
+
.overmind.pid
|
|
40
|
+
overmind.log
|
|
41
|
+
|
|
42
|
+
# Node
|
|
43
|
+
node_modules/
|
|
44
|
+
npm-debug.log*
|
|
45
|
+
yarn-debug.log*
|
|
46
|
+
yarn-error.log*
|
|
47
|
+
pnpm-debug.log*
|
|
48
|
+
|
|
49
|
+
# Frontend build
|
|
50
|
+
frontend/dist/
|
|
51
|
+
src/vantage/frontend_dist/
|
|
52
|
+
|
|
53
|
+
# Built docs output
|
|
54
|
+
dist/docs/
|
|
55
|
+
|
|
56
|
+
# IDE
|
|
57
|
+
.vscode/
|
|
58
|
+
.idea/
|
|
59
|
+
*.swp
|
|
60
|
+
*.swo
|
|
61
|
+
*~
|
|
62
|
+
|
|
63
|
+
/.chrome-state/
|
|
64
|
+
|
|
65
|
+
# YOLO Jail workspace state
|
|
66
|
+
.yolo/
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Pre-commit hooks for Vantage
|
|
2
|
+
# See https://pre-commit.com for more information
|
|
3
|
+
repos:
|
|
4
|
+
# Python: Ruff for formatting and linting
|
|
5
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
6
|
+
rev: v0.8.5
|
|
7
|
+
hooks:
|
|
8
|
+
# Run the formatter
|
|
9
|
+
- id: ruff-format
|
|
10
|
+
name: ruff format (Python)
|
|
11
|
+
types_or: [python, pyi]
|
|
12
|
+
# Run the linter
|
|
13
|
+
- id: ruff
|
|
14
|
+
name: ruff lint (Python)
|
|
15
|
+
types_or: [python, pyi]
|
|
16
|
+
args: [--fix]
|
|
17
|
+
|
|
18
|
+
# JavaScript/TypeScript: Prettier for formatting
|
|
19
|
+
- repo: https://github.com/pre-commit/mirrors-prettier
|
|
20
|
+
rev: v4.0.0-alpha.8
|
|
21
|
+
hooks:
|
|
22
|
+
- id: prettier
|
|
23
|
+
name: prettier (JS/TS)
|
|
24
|
+
types_or: [javascript, jsx, ts, tsx, json, yaml, markdown]
|
|
25
|
+
exclude: ^(package-lock\.json|.*\.lock|\.chrome-state/|frontend/node_modules/)
|
|
26
|
+
additional_dependencies:
|
|
27
|
+
- prettier@3.4.2
|
|
28
|
+
|
|
29
|
+
# JavaScript/TypeScript: ESLint for linting (must run from frontend/)
|
|
30
|
+
- repo: local
|
|
31
|
+
hooks:
|
|
32
|
+
- id: eslint-frontend
|
|
33
|
+
name: eslint (JS/TS in frontend/)
|
|
34
|
+
entry: bash -c 'cd frontend && npx eslint --fix $(echo "$@" | sed "s|frontend/||g")' --
|
|
35
|
+
language: system
|
|
36
|
+
files: ^frontend/.*\.(js|ts|jsx|tsx)$
|
|
37
|
+
types: [file]
|
|
38
|
+
|
|
39
|
+
# General: trailing whitespace, end of file, YAML validation
|
|
40
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
41
|
+
rev: v6.0.0
|
|
42
|
+
hooks:
|
|
43
|
+
- id: trailing-whitespace
|
|
44
|
+
exclude: ^(\.chrome-state/|frontend/node_modules/)
|
|
45
|
+
- id: end-of-file-fixer
|
|
46
|
+
exclude: ^(\.chrome-state/|frontend/node_modules/)
|
|
47
|
+
- id: check-yaml
|
|
48
|
+
- id: check-added-large-files
|
|
49
|
+
args: [--maxkb=1000]
|
|
50
|
+
- id: check-merge-conflict
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.13
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to Vantage will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.3.1] - 2026-04-06
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- `just deploy` now works after `git pull` without needing `just setup` — the build bootstraps its own environment.
|
|
13
|
+
- `just setup` no longer modifies lockfiles (`uv sync --frozen`, `npm ci`).
|
|
14
|
+
- `just build` safely patches `pyproject.toml` for dev versioning via backup+restore instead of fragile `git checkout` trap.
|
|
15
|
+
|
|
16
|
+
## [0.3.0] - 2026-04-06
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- **Review mode** — Toggle review mode on any markdown file to select text and leave inline comments. Comments are highlighted in the document and stored server-side for persistence across sessions.
|
|
21
|
+
- **Outdated comment detection** — When the document changes and a comment's selected text no longer matches, it appears as an amber "Outdated" block near the changed section with a Dismiss button — similar to GitHub's outdated review comments.
|
|
22
|
+
- **Auto-snapshots & revision history** — While in review mode, each file change automatically snapshots the previous version. Navigate revisions with `← Rev N of M →` controls.
|
|
23
|
+
- **Block-level change highlights** — Changed paragraphs between revisions are marked with a purple left border for quick scanning.
|
|
24
|
+
- **Copy all comments** — One-click export of all active review comments as markdown quotes, ready to paste back to an AI agent.
|
|
25
|
+
- **TOML frontmatter support** — Zola-style `+++` TOML frontmatter is now parsed and displayed, with taxonomies and extra fields flattened into tag pills.
|
|
26
|
+
- **Collapsible sidebar** — Click the collapse button to hide the file tree and maximize content area. State persists across sessions.
|
|
27
|
+
- **Show hidden / gitignored files** — New filter toggles in the sidebar to reveal hidden files and gitignored files.
|
|
28
|
+
- **Mermaid error handling** — Broken mermaid diagrams now show a friendly error message instead of crashing.
|
|
29
|
+
- **`disable_whats_new` config** — Suppress the What's New popup entirely via server config.
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
|
|
33
|
+
- **Startup performance** — Significantly faster initial load with background tree fetching, repo caching, and loading gate.
|
|
34
|
+
- **Auto-discover repos** — `source_dirs` now recursively discovers git repos without explicit enumeration.
|
|
35
|
+
|
|
36
|
+
### Fixed
|
|
37
|
+
|
|
38
|
+
- Suppress What's New popup in static export mode.
|
|
39
|
+
- Show directory index and README on root path in static mode.
|
|
40
|
+
- Replace bundled GitHub SVG icon with inline SVG to avoid asset issues.
|
|
41
|
+
|
|
42
|
+
## [0.2.0] - 2026-03-25
|
|
43
|
+
|
|
44
|
+
### Added
|
|
45
|
+
|
|
46
|
+
- **Global file search** — Press `T` (Shift+T) from anywhere to search files across all projects. Press `t` on the project picker page to do the same.
|
|
47
|
+
- **Project picker shortcut** — Press `P` from anywhere to fuzzy-search project names and quickly switch between repos.
|
|
48
|
+
- **Recent file search** — Press `r` to search recently modified files in the current project, or `R` to search recents across all projects.
|
|
49
|
+
- **Copy file path** — Press `y` or click the "Path" button to copy the current file's absolute filesystem path to the clipboard.
|
|
50
|
+
- **Changelog & What's New** — A built-in changelog with a "What's New" popup that appears when new features are available. Opt out anytime via settings.
|
|
51
|
+
- **Source directories** — Configure `source_dirs` in your config to auto-discover git repos from specified directories.
|
|
52
|
+
- **Repo sorting** — Toggle between alphabetical and recent-activity sorting on the project picker page.
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
|
|
56
|
+
- **Project picker redesign** — Full-page layout without sidebar, cleaner table with repo names and relative timestamps.
|
|
57
|
+
- **Repo age display** — Project picker now shows the age of the newest file in each repo rather than the last git commit.
|
|
58
|
+
|
|
59
|
+
## [0.1.0] - 2026-03-20
|
|
60
|
+
|
|
61
|
+
### Added
|
|
62
|
+
|
|
63
|
+
- Markdown rendering with GitHub-flavored markdown, syntax highlighting, and KaTeX math support.
|
|
64
|
+
- Mermaid diagram rendering with click-to-zoom.
|
|
65
|
+
- Live reload via WebSocket — files update automatically when saved.
|
|
66
|
+
- Git integration — view commit history, diffs, and file status.
|
|
67
|
+
- Jujutsu (jj) support — view revisions, evolution log, and diffs.
|
|
68
|
+
- Fuzzy file picker with `t` keyboard shortcut.
|
|
69
|
+
- Dark mode with `Shift+D` toggle.
|
|
70
|
+
- Vim-style keyboard navigation (`j`/`k` scroll, `g g`/`G` jump, `g h` home).
|
|
71
|
+
- Multi-repo daemon mode with TOML configuration.
|
|
72
|
+
- Static site export for hosting on Cloudflare Pages, GitHub Pages, etc.
|
|
73
|
+
- Print-optimized stylesheet.
|