deltadeck 0.2.0__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.
- deltadeck-0.2.0/.gitignore +28 -0
- deltadeck-0.2.0/LICENSE +21 -0
- deltadeck-0.2.0/PKG-INFO +167 -0
- deltadeck-0.2.0/README.md +132 -0
- deltadeck-0.2.0/hatch_build.py +20 -0
- deltadeck-0.2.0/pyproject.toml +80 -0
- deltadeck-0.2.0/server/deltadeck/__init__.py +3 -0
- deltadeck-0.2.0/server/deltadeck/__main__.py +6 -0
- deltadeck-0.2.0/server/deltadeck/app.py +309 -0
- deltadeck-0.2.0/server/deltadeck/cli.py +111 -0
- deltadeck-0.2.0/server/deltadeck/config.py +394 -0
- deltadeck-0.2.0/server/deltadeck/desktop.py +301 -0
- deltadeck-0.2.0/server/deltadeck/docx.py +786 -0
- deltadeck-0.2.0/server/deltadeck/edit.py +650 -0
- deltadeck-0.2.0/server/deltadeck/edit_routes.py +275 -0
- deltadeck-0.2.0/server/deltadeck/errors.py +33 -0
- deltadeck-0.2.0/server/deltadeck/events.py +44 -0
- deltadeck-0.2.0/server/deltadeck/file_routes.py +183 -0
- deltadeck-0.2.0/server/deltadeck/fsops.py +143 -0
- deltadeck-0.2.0/server/deltadeck/git.py +810 -0
- deltadeck-0.2.0/server/deltadeck/git_routes.py +49 -0
- deltadeck-0.2.0/server/deltadeck/hidden.py +242 -0
- deltadeck-0.2.0/server/deltadeck/http_common.py +79 -0
- deltadeck-0.2.0/server/deltadeck/names.py +99 -0
- deltadeck-0.2.0/server/deltadeck/paths.py +377 -0
- deltadeck-0.2.0/server/deltadeck/pdf.py +377 -0
- deltadeck-0.2.0/server/deltadeck/readers.py +203 -0
- deltadeck-0.2.0/server/deltadeck/reconcile.py +413 -0
- deltadeck-0.2.0/server/deltadeck/recovery.py +371 -0
- deltadeck-0.2.0/server/deltadeck/roots.py +459 -0
- deltadeck-0.2.0/server/deltadeck/search.py +1280 -0
- deltadeck-0.2.0/server/deltadeck/seen.py +480 -0
- deltadeck-0.2.0/server/deltadeck/store.py +772 -0
- deltadeck-0.2.0/web/out/404.html +1 -0
- deltadeck-0.2.0/web/out/__next.__PAGE__.txt +35 -0
- deltadeck-0.2.0/web/out/__next._full.txt +31 -0
- deltadeck-0.2.0/web/out/__next._tree.txt +3 -0
- deltadeck-0.2.0/web/out/_next/static/Gw6M6fxM3aEj0n-ZqJJ4a/_buildManifest.js +11 -0
- deltadeck-0.2.0/web/out/_next/static/Gw6M6fxM3aEj0n-ZqJJ4a/_clientMiddlewareManifest.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/Gw6M6fxM3aEj0n-ZqJJ4a/_ssgManifest.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0-wb0zlv4fraf.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/01p-raf8lqk27.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/032ykre2bnri8.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0336mqc8l-u5_.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/04ez-o2l4o42j.js +4 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/04njl6dpcj5du.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/05_6295hyq3hs.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/05i_pb-4sod72.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/063x1fm-axugv.js +66 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/06bkit1w9xkil.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/06q08a4vhb65a.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0ash-9bppuz64.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0ba5gc5bhtd21.js +77 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0bk68y6ulxiqc.css +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0cz1d0mv5g_q7.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0ddvch5u_tkod.js +79 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0ettfkje508xs.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0g3bmow2o6ryj.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0h-upsn6lazz9.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0hpdbh5840flr.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0knge03tyejx7.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0npwoogk1edkj.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0ooh5ltmcljc8.js +3 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0p3iz33mgcaih.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0pyjpjo88bqy7.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0tvysmxvj5v0j.js +203 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0udjrf1iq4fuk.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0ukld36iqalgh.js +287 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0va2a7jsjmv12.js +38 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0vk-f147r1rsw.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0w_drhom8r86n.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0y2g0ctlf5oun.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0y8yqekdf2p1s.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/0zcdw19u5g48m.js +2 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1-eb6ubxl1zy0.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1-srxa7hk2_y5.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/10vdv64yk0odn.js +31 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/10xdnyh3oo0e4.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/10xpbkeuur1_0.js +24 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1178ms98k8h8x.js +10 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/123yrmmwha8uh.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/13jklb69rtm7g.js +86 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/14g2qr9-ac9_w.js +179 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/14uv7in3hq33c.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/15s134ttbtii8.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/18mh54xq67c88.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1_gv4d2u9qmn5.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1b2hau0_697gg.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1cbv07r70is7e.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1ck4x9qed_h2r.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1cr8soqffviy4.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1ctl-01dm3brq.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1cxper-3md1o-.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1d0je4el_be8s.js +36 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1dcd-anbt29ze.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1f1182516lh5d.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1frzy0c-d3tf7.js +41 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1ib4bqx1yadoq.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1ijnbjhgkhviq.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1jp_4giffrr5c.js +61 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1kd8ih36je1cc.js +93 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1khocfuulae2_.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1ljfghevr8007.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1mrguikl1mfmy.js +2 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1n3avhvzagjqo.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1nu18zblzzkxr.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1nxtwvwc1-g9z.js +309 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1oqyvtqy352xk.js +160 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1qf05_j_wigan.js +135 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1shqupz4psfrm.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1su1--jeub0vd.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1t67aekbcq1y3.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1ubm9mtml7ye6.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1vctqj-4qx0f1.js +32 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1x65vx7fbh5f2.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1xmdq3m655638.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1y9mnk06touvm.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/1zgb46ecbigo9.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2-936-wie2c7z.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2-lhuoqw-8u6m.js +22 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2168en1g_ff0m.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/22fvu1i8drv0y.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/22nye0w1-65or.js +138 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/23jcrmneulc-t.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/252yyuyz9o6wd.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/25dikvv_q4k84.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/26y99mhsiclgy.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/27ly0qb-et_jc.js +15 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/28g7ko42eee5a.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/29ig-8esac5vg.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/29k_24gthdxe3.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/29wydom8qwv9i.js +24 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2coohofy6ysw4.js +5 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2dfi-3n0im0zh.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2fsxl6h9wu_5o.js +23 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2idqz4xj9bcod.js +286 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2iqj05imzhp4m.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2itsqt_1jw8_y.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2kaw65j578cef.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2krtxbjoqmvi1.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2n-qh2g6xqyon.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2of5-a32h_fzo.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2ovdd04qwksb2.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2piucm-g64elp.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2r4yjf9zlczgc.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2v-nzhb17_fmx.js +15 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2x5312oohk9i1.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2yecjfgk9i16a.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2yk59ik12pbte.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2z3sh82dl8glu.js.map +5 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/2zin2_z0f0kdt.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/309-hcw850qmx.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/31kdobv016cs1.js +122 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/338p9ntbs06p9.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/36l9fbswts8w8.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/36rd86hnjy--8.js +34 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/371c8kx9yq-nr.js +62 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/37d5batav2n82.js +148 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/37uockrobxqrf.js +92 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/384kjvhilvq0i.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/38l10l8pa-kih.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/39il1efd5-s8w.js +94 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/3actn9as2ghnu.js +2 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/3czk1zwynepq1.js +104 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/3d2tm2i87o5p_.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/3ed96tb7kaefk.js +15 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/3fqx0481wur_n.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/3g8rs-0o1gmnz.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/3iermca84mhmd.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/3kv82kxg4c50f.js +64 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/3lb6zi3ns5rpz.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/3ok2kyuqnjk1x.js +115 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/3pl3fu8ycp70s.js +62 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/3ti94rnk8g3g9.js +15 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/3waspvyikyn8d.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/3wo0teggh8855.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/3x3y44ggx9amw.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/3x_p7gm_efbdf.js +212 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/40aaur_-qhj85.js +22 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/41jdd8wvvl-p8.js +4 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/41ngr_kzkqmbv.js +27 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/41ymya8gm_nwe.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/43p3o8p9_gmdm.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/44_sq5v-kidea.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/44oxs3_litch8.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/44t0wft6n2b5n.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/turbopack-0y0dee_nb28iz.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/turbopack-2c3mg3r-05n1w.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/turbopack-2ikcxs2-0edba.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/chunks/turbopack-worker-1hrsqshz0gfey.js +1 -0
- deltadeck-0.2.0/web/out/_next/static/media/icon.15prq8m0ln7xb.svg +18 -0
- deltadeck-0.2.0/web/out/_next/static/media/worker.2tknvk8mcp098.ts +40 -0
- deltadeck-0.2.0/web/out/_next/static/media/worker.3o_k-bouwf2w4.ts +27 -0
- deltadeck-0.2.0/web/out/_not-found/__next._full.txt +26 -0
- deltadeck-0.2.0/web/out/_not-found/__next._not-found.__PAGE__.txt +32 -0
- deltadeck-0.2.0/web/out/_not-found/__next._tree.txt +4 -0
- deltadeck-0.2.0/web/out/_not-found.html +1 -0
- deltadeck-0.2.0/web/out/_not-found.txt +26 -0
- deltadeck-0.2.0/web/out/icon.svg +18 -0
- deltadeck-0.2.0/web/out/index.html +1 -0
- deltadeck-0.2.0/web/out/index.txt +31 -0
- deltadeck-0.2.0/web/out/logo.svg +18 -0
- deltadeck-0.2.0/web/out/print/__next._full.txt +31 -0
- deltadeck-0.2.0/web/out/print/__next._tree.txt +4 -0
- deltadeck-0.2.0/web/out/print/__next.print.__PAGE__.txt +37 -0
- deltadeck-0.2.0/web/out/print.html +1 -0
- deltadeck-0.2.0/web/out/print.txt +31 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# recovery store: history, trash, audit log, remembered folders (contains your docs)
|
|
2
|
+
.data/
|
|
3
|
+
|
|
4
|
+
# python
|
|
5
|
+
.venv/
|
|
6
|
+
__pycache__/
|
|
7
|
+
*.pyc
|
|
8
|
+
.ruff_cache/
|
|
9
|
+
.pytest_cache/
|
|
10
|
+
|
|
11
|
+
# local uv cache (UV_CACHE_DIR=$PWD/.cache/uv)
|
|
12
|
+
.cache/
|
|
13
|
+
|
|
14
|
+
# misc
|
|
15
|
+
.DS_Store
|
|
16
|
+
.env
|
|
17
|
+
.env.*
|
|
18
|
+
|
|
19
|
+
# desktop app build outputs (desktop/build/icon.* are sources)
|
|
20
|
+
desktop/node_modules/
|
|
21
|
+
desktop/dist/
|
|
22
|
+
desktop/release/
|
|
23
|
+
desktop/build/server/
|
|
24
|
+
desktop/build/pyenv/
|
|
25
|
+
desktop/build/pyinstaller/
|
|
26
|
+
|
|
27
|
+
# python package builds (uv build)
|
|
28
|
+
/dist/
|
deltadeck-0.2.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Dharmendra Sharma
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
deltadeck-0.2.0/PKG-INFO
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: deltadeck
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Review what your AI changed, and hand it back. A local viewer for docs and code that highlights what changed.
|
|
5
|
+
Project-URL: Homepage, https://github.com/dharmen8980/deltadeck
|
|
6
|
+
Project-URL: Repository, https://github.com/dharmen8980/deltadeck
|
|
7
|
+
Project-URL: Issues, https://github.com/dharmen8980/deltadeck/issues
|
|
8
|
+
Project-URL: Documentation, https://github.com/dharmen8980/deltadeck/tree/main/docs
|
|
9
|
+
Author: Dharmendra Sharma
|
|
10
|
+
License-Expression: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: ai,code-review,diff,docs,fastapi,local,markdown,viewer
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Environment :: Web Environment
|
|
15
|
+
Classifier: Framework :: FastAPI
|
|
16
|
+
Classifier: Intended Audience :: Developers
|
|
17
|
+
Classifier: Operating System :: MacOS
|
|
18
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Topic :: Documentation
|
|
23
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
24
|
+
Classifier: Topic :: Text Processing :: Markup :: Markdown
|
|
25
|
+
Requires-Python: >=3.13
|
|
26
|
+
Requires-Dist: fastapi>=0.115
|
|
27
|
+
Requires-Dist: mammoth>=1.8
|
|
28
|
+
Requires-Dist: openpyxl>=3.1
|
|
29
|
+
Requires-Dist: playwright>=1.64.0
|
|
30
|
+
Requires-Dist: python-multipart>=0.0.32
|
|
31
|
+
Requires-Dist: sse-starlette>=2.1
|
|
32
|
+
Requires-Dist: uvicorn>=0.30
|
|
33
|
+
Requires-Dist: watchfiles>=0.24
|
|
34
|
+
Description-Content-Type: text/markdown
|
|
35
|
+
|
|
36
|
+
<img src="site/public/logo.svg" alt="" width="72" height="72">
|
|
37
|
+
|
|
38
|
+
# DeltaDeck
|
|
39
|
+
|
|
40
|
+
Every change, stacked for review. DeltaDeck is a local-only viewer for one
|
|
41
|
+
folder of documents and code. Editing and file
|
|
42
|
+
management are on by default; `--read-only` turns them off
|
|
43
|
+
(see [Editing](https://github.com/dharmen8980/deltadeck/blob/main/docs/editing.md)). The folder is given with `--root` /
|
|
44
|
+
`DELTADECK_ROOT`, or chosen in the browser with the native folder dialog and
|
|
45
|
+
switched at runtime from a list of recent folders (see [Choosing and switching
|
|
46
|
+
folders](https://github.com/dharmen8980/deltadeck/blob/main/docs/configuration.md#choosing-and-switching-folders)). A FastAPI server (`server/deltadeck/`)
|
|
47
|
+
reads the folder and serves a static Next.js single-page app (`web/`, built to
|
|
48
|
+
`web/out`) on `http://127.0.0.1:8765/`.
|
|
49
|
+
|
|
50
|
+
## Install
|
|
51
|
+
|
|
52
|
+
Desktop app, macOS and Linux x86_64 (downloads the latest release, checks it
|
|
53
|
+
and installs it for you only):
|
|
54
|
+
|
|
55
|
+
```sh
|
|
56
|
+
curl -fsSL https://raw.githubusercontent.com/dharmen8980/deltadeck/main/install.sh | bash
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Browser version, macOS and Linux (Windows: use WSL; needs [uv](https://docs.astral.sh/uv/)):
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
uvx deltadeck --root . # then open http://127.0.0.1:8765/
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Building from source, pipx, direct downloads, updating and uninstalling:
|
|
66
|
+
[Installing](https://github.com/dharmen8980/deltadeck/blob/main/docs/install.md).
|
|
67
|
+
|
|
68
|
+
What it does:
|
|
69
|
+
|
|
70
|
+
- A file tree with sorting by name or modified time, a filter box and a
|
|
71
|
+
"Recently changed" list.
|
|
72
|
+
- Files git ignores are hidden like the viewer's own ignore list. **Show
|
|
73
|
+
hidden files** lists them dimmed; protected files like `.env` open read-only
|
|
74
|
+
after a confirmation. See [Layout](https://github.com/dharmen8980/deltadeck/blob/main/docs/layout.md#hidden-files).
|
|
75
|
+
- Viewers for each file type:
|
|
76
|
+
- Markdown: GFM, a table of contents, mermaid diagrams, shiki highlighting,
|
|
77
|
+
and relative links and images that resolve inside the folder.
|
|
78
|
+
- `.mmd` diagrams and source code with line anchors.
|
|
79
|
+
- A code outline next to source code (Python, JavaScript / TypeScript,
|
|
80
|
+
CSS / SCSS / LESS, HTML, Java, C#, shell): classes, functions, methods,
|
|
81
|
+
selectors, headings and so on, with jump-to-line; see [Code
|
|
82
|
+
outline](https://github.com/dharmen8980/deltadeck/blob/main/docs/outline.md).
|
|
83
|
+
- JSON as a tree or as source.
|
|
84
|
+
- CSV and xlsx as sortable tables.
|
|
85
|
+
- Word `.docx`, view-only: converted on the server (mammoth) to sanitized
|
|
86
|
+
HTML in the markdown typography, with a table of contents, search,
|
|
87
|
+
change highlights and PDF export. Layout and styling are not kept; see
|
|
88
|
+
[Word documents](https://github.com/dharmen8980/deltadeck/blob/main/docs/docx.md).
|
|
89
|
+
- Images and PDFs.
|
|
90
|
+
- Large logs, loaded in chunks with real line numbers. The whole file is
|
|
91
|
+
never loaded.
|
|
92
|
+
- Full-text search (SQLite FTS5, a contentless index on disk) with folder and type filters.
|
|
93
|
+
Match lines are ranked (whole phrase, then most distinct terms, then
|
|
94
|
+
whole-word hits). Choosing a markdown/mermaid match opens
|
|
95
|
+
`/?p=...&hl=<query>&hll=<match line>` and scrolls to the rendered block that
|
|
96
|
+
best matches that line.
|
|
97
|
+
- Live updates through Server-Sent Events: new, modified, renamed and deleted
|
|
98
|
+
files and folders.
|
|
99
|
+
- Changed since you last looked: files that changed since you last opened them
|
|
100
|
+
get a dot in the sidebar (and their folders too). Opening one shows what
|
|
101
|
+
changed, with highlighted markdown blocks or a line diff. A **What's new**
|
|
102
|
+
feed in the sidebar lists them all, newest first, with what changed in each.
|
|
103
|
+
The history is kept in the server's data dir, never in the folder; see
|
|
104
|
+
[Changes](https://github.com/dharmen8980/deltadeck/blob/main/docs/changes.md).
|
|
105
|
+
- Read-only git awareness, when the folder is inside a git repository: what
|
|
106
|
+
changed since the last commit (same banner, highlights and diff), an
|
|
107
|
+
**Uncommitted** list in What's new with M/A/D/R/?? and +/- lines, and blame.
|
|
108
|
+
Nothing is ever written to the repository; see [Git](https://github.com/dharmen8980/deltadeck/blob/main/docs/git.md).
|
|
109
|
+
- Find in the open file (Cmd/Ctrl+F, also in the desktop Edit menu): live
|
|
110
|
+
matches with match case, whole word and regex, across the whole text of large
|
|
111
|
+
files, every CSV cell and rendered markdown; see [Find in the file](https://github.com/dharmen8980/deltadeck/blob/main/docs/find.md).
|
|
112
|
+
- Deep links (`/?p=<path>#<heading>` or `#L<line>`), light/dark themes and a
|
|
113
|
+
print stylesheet for markdown.
|
|
114
|
+
- Resizable panels: drag (or use the arrow keys on) the edge of the file sidebar
|
|
115
|
+
and of the contents / outline panel; double-click resets. A **Reading width**
|
|
116
|
+
menu (Narrow, Medium, Wide, Full width; Full is the default) sets the markdown
|
|
117
|
+
and `.docx` column. Both are remembered; see [Layout](https://github.com/dharmen8980/deltadeck/blob/main/docs/layout.md).
|
|
118
|
+
- **Download PDF** for markdown, `.mmd` and `.docx` files: a properly paginated PDF
|
|
119
|
+
rendered by headless Google Chrome on the server (see [PDF export](https://github.com/dharmen8980/deltadeck/blob/main/docs/pdf-export.md)).
|
|
120
|
+
- Editing (on by default, `--read-only` turns it off): a CodeMirror editor with live preview, file
|
|
121
|
+
management (new, rename, move, duplicate, upload, delete to Trash), version
|
|
122
|
+
history and undo (see [Editing](https://github.com/dharmen8980/deltadeck/blob/main/docs/editing.md)).
|
|
123
|
+
|
|
124
|
+
## Get it
|
|
125
|
+
|
|
126
|
+
**Desktop app (macOS, Linux):** download the `.dmg`, `.AppImage` or `.deb` from
|
|
127
|
+
[Releases](https://github.com/dharmen8980/deltadeck/releases). The app
|
|
128
|
+
is unsigned for now: on macOS, a copy downloaded with a browser is blocked
|
|
129
|
+
until you run `xattr -dr com.apple.quarantine /Applications/DeltaDeck.app`
|
|
130
|
+
(see [docs/install.md](https://github.com/dharmen8980/deltadeck/blob/main/docs/install.md#download-from-releases)). Details in
|
|
131
|
+
[docs/desktop.md](https://github.com/dharmen8980/deltadeck/blob/main/docs/desktop.md); all the ways to install are in
|
|
132
|
+
[docs/install.md](https://github.com/dharmen8980/deltadeck/blob/main/docs/install.md).
|
|
133
|
+
|
|
134
|
+
**From source** (needs [uv](https://docs.astral.sh/uv/) and Node.js):
|
|
135
|
+
|
|
136
|
+
```sh
|
|
137
|
+
git clone https://github.com/dharmen8980/deltadeck.git
|
|
138
|
+
cd deltadeck
|
|
139
|
+
uv sync
|
|
140
|
+
cd web && npm ci && npm run build && cd ..
|
|
141
|
+
uv run deltadeck # http://127.0.0.1:8765/ (choose a folder in the browser)
|
|
142
|
+
uv run deltadeck --root ~/notes # or start on a given folder
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Documentation
|
|
146
|
+
|
|
147
|
+
| Topic | |
|
|
148
|
+
|---|---|
|
|
149
|
+
| [Installing](https://github.com/dharmen8980/deltadeck/blob/main/docs/install.md) | One-line install, building from source, `uvx` / `pipx`, Releases downloads, updating, uninstalling, where data lives |
|
|
150
|
+
| [Development](https://github.com/dharmen8980/deltadeck/blob/main/docs/development.md) | Prerequisites, install, build and run, dev mode with hot reload, tests |
|
|
151
|
+
| [Configuration](https://github.com/dharmen8980/deltadeck/blob/main/docs/configuration.md) | Flags and environment variables; choosing and switching folders; `/api/roots` |
|
|
152
|
+
| [Editing](https://github.com/dharmen8980/deltadeck/blob/main/docs/editing.md) | Editing on by default, `--read-only`, history, trash, the recovery data dir, backups, limits, how writes are protected |
|
|
153
|
+
| [Changes](https://github.com/dharmen8980/deltadeck/blob/main/docs/changes.md) | "Changed since you last looked": dots, the filter, the What's new feed, the banner, highlights, where the history is kept |
|
|
154
|
+
| [Review basket](https://github.com/dharmen8980/deltadeck/blob/main/docs/review.md) | Picking highlighted changes, a note each, and copying them as one prompt for an AI agent |
|
|
155
|
+
| [Git](https://github.com/dharmen8980/deltadeck/blob/main/docs/git.md) | Read-only git views: since last commit, the Uncommitted list, blame; which git is used; `/api/git/*` |
|
|
156
|
+
| [Find in the file](https://github.com/dharmen8980/deltadeck/blob/main/docs/find.md) | Cmd/Ctrl+F: shortcuts, what each viewer searches, the editor's search panel, limits |
|
|
157
|
+
| [Code outline](https://github.com/dharmen8980/deltadeck/blob/main/docs/outline.md) | The symbols panel for source code: languages, what is listed, how and when it is computed, bundle size |
|
|
158
|
+
| [Layout](https://github.com/dharmen8980/deltadeck/blob/main/docs/layout.md) | Resizing the sidebar and the contents / outline panel, keyboard, reading width, where it is saved |
|
|
159
|
+
| [Word documents](https://github.com/dharmen8980/deltadeck/blob/main/docs/docx.md) | How `.docx` files are converted and shown, `/api/docx`, its limits |
|
|
160
|
+
| [PDF export](https://github.com/dharmen8980/deltadeck/blob/main/docs/pdf-export.md) | How **Download PDF** renders markdown, mermaid and `.docx` |
|
|
161
|
+
| [Desktop app](https://github.com/dharmen8980/deltadeck/blob/main/docs/desktop.md) | Installing, first launch, data and logs, building the app, desktop mode |
|
|
162
|
+
| [Security model](https://github.com/dharmen8980/deltadeck/blob/main/docs/security.md) | What the server allows, refuses and why |
|
|
163
|
+
| [Known limits](https://github.com/dharmen8980/deltadeck/blob/main/docs/known-limits.md) | Things that do not work (yet) |
|
|
164
|
+
|
|
165
|
+
## License
|
|
166
|
+
|
|
167
|
+
[MIT](https://github.com/dharmen8980/deltadeck/blob/main/LICENSE)
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
<img src="site/public/logo.svg" alt="" width="72" height="72">
|
|
2
|
+
|
|
3
|
+
# DeltaDeck
|
|
4
|
+
|
|
5
|
+
Every change, stacked for review. DeltaDeck is a local-only viewer for one
|
|
6
|
+
folder of documents and code. Editing and file
|
|
7
|
+
management are on by default; `--read-only` turns them off
|
|
8
|
+
(see [Editing](https://github.com/dharmen8980/deltadeck/blob/main/docs/editing.md)). The folder is given with `--root` /
|
|
9
|
+
`DELTADECK_ROOT`, or chosen in the browser with the native folder dialog and
|
|
10
|
+
switched at runtime from a list of recent folders (see [Choosing and switching
|
|
11
|
+
folders](https://github.com/dharmen8980/deltadeck/blob/main/docs/configuration.md#choosing-and-switching-folders)). A FastAPI server (`server/deltadeck/`)
|
|
12
|
+
reads the folder and serves a static Next.js single-page app (`web/`, built to
|
|
13
|
+
`web/out`) on `http://127.0.0.1:8765/`.
|
|
14
|
+
|
|
15
|
+
## Install
|
|
16
|
+
|
|
17
|
+
Desktop app, macOS and Linux x86_64 (downloads the latest release, checks it
|
|
18
|
+
and installs it for you only):
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
curl -fsSL https://raw.githubusercontent.com/dharmen8980/deltadeck/main/install.sh | bash
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Browser version, macOS and Linux (Windows: use WSL; needs [uv](https://docs.astral.sh/uv/)):
|
|
25
|
+
|
|
26
|
+
```sh
|
|
27
|
+
uvx deltadeck --root . # then open http://127.0.0.1:8765/
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Building from source, pipx, direct downloads, updating and uninstalling:
|
|
31
|
+
[Installing](https://github.com/dharmen8980/deltadeck/blob/main/docs/install.md).
|
|
32
|
+
|
|
33
|
+
What it does:
|
|
34
|
+
|
|
35
|
+
- A file tree with sorting by name or modified time, a filter box and a
|
|
36
|
+
"Recently changed" list.
|
|
37
|
+
- Files git ignores are hidden like the viewer's own ignore list. **Show
|
|
38
|
+
hidden files** lists them dimmed; protected files like `.env` open read-only
|
|
39
|
+
after a confirmation. See [Layout](https://github.com/dharmen8980/deltadeck/blob/main/docs/layout.md#hidden-files).
|
|
40
|
+
- Viewers for each file type:
|
|
41
|
+
- Markdown: GFM, a table of contents, mermaid diagrams, shiki highlighting,
|
|
42
|
+
and relative links and images that resolve inside the folder.
|
|
43
|
+
- `.mmd` diagrams and source code with line anchors.
|
|
44
|
+
- A code outline next to source code (Python, JavaScript / TypeScript,
|
|
45
|
+
CSS / SCSS / LESS, HTML, Java, C#, shell): classes, functions, methods,
|
|
46
|
+
selectors, headings and so on, with jump-to-line; see [Code
|
|
47
|
+
outline](https://github.com/dharmen8980/deltadeck/blob/main/docs/outline.md).
|
|
48
|
+
- JSON as a tree or as source.
|
|
49
|
+
- CSV and xlsx as sortable tables.
|
|
50
|
+
- Word `.docx`, view-only: converted on the server (mammoth) to sanitized
|
|
51
|
+
HTML in the markdown typography, with a table of contents, search,
|
|
52
|
+
change highlights and PDF export. Layout and styling are not kept; see
|
|
53
|
+
[Word documents](https://github.com/dharmen8980/deltadeck/blob/main/docs/docx.md).
|
|
54
|
+
- Images and PDFs.
|
|
55
|
+
- Large logs, loaded in chunks with real line numbers. The whole file is
|
|
56
|
+
never loaded.
|
|
57
|
+
- Full-text search (SQLite FTS5, a contentless index on disk) with folder and type filters.
|
|
58
|
+
Match lines are ranked (whole phrase, then most distinct terms, then
|
|
59
|
+
whole-word hits). Choosing a markdown/mermaid match opens
|
|
60
|
+
`/?p=...&hl=<query>&hll=<match line>` and scrolls to the rendered block that
|
|
61
|
+
best matches that line.
|
|
62
|
+
- Live updates through Server-Sent Events: new, modified, renamed and deleted
|
|
63
|
+
files and folders.
|
|
64
|
+
- Changed since you last looked: files that changed since you last opened them
|
|
65
|
+
get a dot in the sidebar (and their folders too). Opening one shows what
|
|
66
|
+
changed, with highlighted markdown blocks or a line diff. A **What's new**
|
|
67
|
+
feed in the sidebar lists them all, newest first, with what changed in each.
|
|
68
|
+
The history is kept in the server's data dir, never in the folder; see
|
|
69
|
+
[Changes](https://github.com/dharmen8980/deltadeck/blob/main/docs/changes.md).
|
|
70
|
+
- Read-only git awareness, when the folder is inside a git repository: what
|
|
71
|
+
changed since the last commit (same banner, highlights and diff), an
|
|
72
|
+
**Uncommitted** list in What's new with M/A/D/R/?? and +/- lines, and blame.
|
|
73
|
+
Nothing is ever written to the repository; see [Git](https://github.com/dharmen8980/deltadeck/blob/main/docs/git.md).
|
|
74
|
+
- Find in the open file (Cmd/Ctrl+F, also in the desktop Edit menu): live
|
|
75
|
+
matches with match case, whole word and regex, across the whole text of large
|
|
76
|
+
files, every CSV cell and rendered markdown; see [Find in the file](https://github.com/dharmen8980/deltadeck/blob/main/docs/find.md).
|
|
77
|
+
- Deep links (`/?p=<path>#<heading>` or `#L<line>`), light/dark themes and a
|
|
78
|
+
print stylesheet for markdown.
|
|
79
|
+
- Resizable panels: drag (or use the arrow keys on) the edge of the file sidebar
|
|
80
|
+
and of the contents / outline panel; double-click resets. A **Reading width**
|
|
81
|
+
menu (Narrow, Medium, Wide, Full width; Full is the default) sets the markdown
|
|
82
|
+
and `.docx` column. Both are remembered; see [Layout](https://github.com/dharmen8980/deltadeck/blob/main/docs/layout.md).
|
|
83
|
+
- **Download PDF** for markdown, `.mmd` and `.docx` files: a properly paginated PDF
|
|
84
|
+
rendered by headless Google Chrome on the server (see [PDF export](https://github.com/dharmen8980/deltadeck/blob/main/docs/pdf-export.md)).
|
|
85
|
+
- Editing (on by default, `--read-only` turns it off): a CodeMirror editor with live preview, file
|
|
86
|
+
management (new, rename, move, duplicate, upload, delete to Trash), version
|
|
87
|
+
history and undo (see [Editing](https://github.com/dharmen8980/deltadeck/blob/main/docs/editing.md)).
|
|
88
|
+
|
|
89
|
+
## Get it
|
|
90
|
+
|
|
91
|
+
**Desktop app (macOS, Linux):** download the `.dmg`, `.AppImage` or `.deb` from
|
|
92
|
+
[Releases](https://github.com/dharmen8980/deltadeck/releases). The app
|
|
93
|
+
is unsigned for now: on macOS, a copy downloaded with a browser is blocked
|
|
94
|
+
until you run `xattr -dr com.apple.quarantine /Applications/DeltaDeck.app`
|
|
95
|
+
(see [docs/install.md](https://github.com/dharmen8980/deltadeck/blob/main/docs/install.md#download-from-releases)). Details in
|
|
96
|
+
[docs/desktop.md](https://github.com/dharmen8980/deltadeck/blob/main/docs/desktop.md); all the ways to install are in
|
|
97
|
+
[docs/install.md](https://github.com/dharmen8980/deltadeck/blob/main/docs/install.md).
|
|
98
|
+
|
|
99
|
+
**From source** (needs [uv](https://docs.astral.sh/uv/) and Node.js):
|
|
100
|
+
|
|
101
|
+
```sh
|
|
102
|
+
git clone https://github.com/dharmen8980/deltadeck.git
|
|
103
|
+
cd deltadeck
|
|
104
|
+
uv sync
|
|
105
|
+
cd web && npm ci && npm run build && cd ..
|
|
106
|
+
uv run deltadeck # http://127.0.0.1:8765/ (choose a folder in the browser)
|
|
107
|
+
uv run deltadeck --root ~/notes # or start on a given folder
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Documentation
|
|
111
|
+
|
|
112
|
+
| Topic | |
|
|
113
|
+
|---|---|
|
|
114
|
+
| [Installing](https://github.com/dharmen8980/deltadeck/blob/main/docs/install.md) | One-line install, building from source, `uvx` / `pipx`, Releases downloads, updating, uninstalling, where data lives |
|
|
115
|
+
| [Development](https://github.com/dharmen8980/deltadeck/blob/main/docs/development.md) | Prerequisites, install, build and run, dev mode with hot reload, tests |
|
|
116
|
+
| [Configuration](https://github.com/dharmen8980/deltadeck/blob/main/docs/configuration.md) | Flags and environment variables; choosing and switching folders; `/api/roots` |
|
|
117
|
+
| [Editing](https://github.com/dharmen8980/deltadeck/blob/main/docs/editing.md) | Editing on by default, `--read-only`, history, trash, the recovery data dir, backups, limits, how writes are protected |
|
|
118
|
+
| [Changes](https://github.com/dharmen8980/deltadeck/blob/main/docs/changes.md) | "Changed since you last looked": dots, the filter, the What's new feed, the banner, highlights, where the history is kept |
|
|
119
|
+
| [Review basket](https://github.com/dharmen8980/deltadeck/blob/main/docs/review.md) | Picking highlighted changes, a note each, and copying them as one prompt for an AI agent |
|
|
120
|
+
| [Git](https://github.com/dharmen8980/deltadeck/blob/main/docs/git.md) | Read-only git views: since last commit, the Uncommitted list, blame; which git is used; `/api/git/*` |
|
|
121
|
+
| [Find in the file](https://github.com/dharmen8980/deltadeck/blob/main/docs/find.md) | Cmd/Ctrl+F: shortcuts, what each viewer searches, the editor's search panel, limits |
|
|
122
|
+
| [Code outline](https://github.com/dharmen8980/deltadeck/blob/main/docs/outline.md) | The symbols panel for source code: languages, what is listed, how and when it is computed, bundle size |
|
|
123
|
+
| [Layout](https://github.com/dharmen8980/deltadeck/blob/main/docs/layout.md) | Resizing the sidebar and the contents / outline panel, keyboard, reading width, where it is saved |
|
|
124
|
+
| [Word documents](https://github.com/dharmen8980/deltadeck/blob/main/docs/docx.md) | How `.docx` files are converted and shown, `/api/docx`, its limits |
|
|
125
|
+
| [PDF export](https://github.com/dharmen8980/deltadeck/blob/main/docs/pdf-export.md) | How **Download PDF** renders markdown, mermaid and `.docx` |
|
|
126
|
+
| [Desktop app](https://github.com/dharmen8980/deltadeck/blob/main/docs/desktop.md) | Installing, first launch, data and logs, building the app, desktop mode |
|
|
127
|
+
| [Security model](https://github.com/dharmen8980/deltadeck/blob/main/docs/security.md) | What the server allows, refuses and why |
|
|
128
|
+
| [Known limits](https://github.com/dharmen8980/deltadeck/blob/main/docs/known-limits.md) | Things that do not work (yet) |
|
|
129
|
+
|
|
130
|
+
## License
|
|
131
|
+
|
|
132
|
+
[MIT](https://github.com/dharmen8980/deltadeck/blob/main/LICENSE)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"""Wheel build hook: ship the built web UI (web/out) as deltadeck/ui.
|
|
2
|
+
|
|
3
|
+
Editable installs (uv sync) skip this and read web/out in place."""
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
|
|
7
|
+
from hatchling.builders.hooks.plugin.interface import BuildHookInterface
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class UiBuildHook(BuildHookInterface):
|
|
11
|
+
PLUGIN_NAME = "custom"
|
|
12
|
+
|
|
13
|
+
def initialize(self, version, build_data):
|
|
14
|
+
if version == "editable":
|
|
15
|
+
return
|
|
16
|
+
out = os.path.join(self.root, "web", "out")
|
|
17
|
+
if not os.path.isfile(os.path.join(out, "index.html")):
|
|
18
|
+
raise RuntimeError(f"web UI not built ({out}/index.html missing): "
|
|
19
|
+
"run 'npm ci && npm run build' in web/ before building the wheel")
|
|
20
|
+
build_data["force_include"][out] = "deltadeck/ui"
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "deltadeck"
|
|
3
|
+
version = "0.2.0"
|
|
4
|
+
description = "Review what your AI changed, and hand it back. A local viewer for docs and code that highlights what changed."
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.13"
|
|
7
|
+
license = "MIT"
|
|
8
|
+
license-files = ["LICENSE"]
|
|
9
|
+
authors = [{ name = "Dharmendra Sharma" }]
|
|
10
|
+
keywords = ["markdown", "viewer", "docs", "diff", "code-review", "ai", "local", "fastapi"]
|
|
11
|
+
classifiers = [
|
|
12
|
+
"Development Status :: 4 - Beta",
|
|
13
|
+
"Environment :: Web Environment",
|
|
14
|
+
"Framework :: FastAPI",
|
|
15
|
+
"Intended Audience :: Developers",
|
|
16
|
+
"Operating System :: MacOS",
|
|
17
|
+
"Operating System :: POSIX :: Linux",
|
|
18
|
+
"Programming Language :: Python :: 3",
|
|
19
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
20
|
+
"Programming Language :: Python :: 3.13",
|
|
21
|
+
"Topic :: Documentation",
|
|
22
|
+
"Topic :: Software Development :: Quality Assurance",
|
|
23
|
+
"Topic :: Text Processing :: Markup :: Markdown",
|
|
24
|
+
]
|
|
25
|
+
dependencies = [
|
|
26
|
+
"fastapi>=0.115",
|
|
27
|
+
"uvicorn>=0.30",
|
|
28
|
+
"sse-starlette>=2.1",
|
|
29
|
+
"watchfiles>=0.24",
|
|
30
|
+
"openpyxl>=3.1",
|
|
31
|
+
"playwright>=1.64.0",
|
|
32
|
+
"python-multipart>=0.0.32",
|
|
33
|
+
"mammoth>=1.8",
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
[project.urls]
|
|
37
|
+
Homepage = "https://github.com/dharmen8980/deltadeck"
|
|
38
|
+
Repository = "https://github.com/dharmen8980/deltadeck"
|
|
39
|
+
Issues = "https://github.com/dharmen8980/deltadeck/issues"
|
|
40
|
+
Documentation = "https://github.com/dharmen8980/deltadeck/tree/main/docs"
|
|
41
|
+
|
|
42
|
+
[project.scripts]
|
|
43
|
+
deltadeck = "deltadeck.cli:main"
|
|
44
|
+
|
|
45
|
+
[dependency-groups]
|
|
46
|
+
# Desktop build only (desktop/scripts/build-server.sh, uv run --group build --locked): exact pins,
|
|
47
|
+
# hashes in uv.lock. Not installed by a plain `uv sync`.
|
|
48
|
+
build = [
|
|
49
|
+
"pyinstaller==6.22.3",
|
|
50
|
+
"pyinstaller-hooks-contrib==2026.9",
|
|
51
|
+
]
|
|
52
|
+
dev = [
|
|
53
|
+
"pytest>=8",
|
|
54
|
+
"httpx>=0.27",
|
|
55
|
+
]
|
|
56
|
+
|
|
57
|
+
[build-system]
|
|
58
|
+
requires = ["hatchling"]
|
|
59
|
+
build-backend = "hatchling.build"
|
|
60
|
+
|
|
61
|
+
[tool.hatch.build.targets.wheel]
|
|
62
|
+
packages = ["server/deltadeck"]
|
|
63
|
+
|
|
64
|
+
# The built web UI ships inside the wheel as deltadeck/ui (hatch_build.py; found by
|
|
65
|
+
# deltadeck.config.find_ui_dir). Run `npm run build` in web/ first. Editable installs (uv sync)
|
|
66
|
+
# use web/out in place.
|
|
67
|
+
[tool.hatch.build.targets.wheel.hooks.custom]
|
|
68
|
+
path = "hatch_build.py"
|
|
69
|
+
|
|
70
|
+
# The sdist carries the server and the built UI, so a wheel can be built from it without Node.
|
|
71
|
+
[tool.hatch.build.targets.sdist]
|
|
72
|
+
include = ["/server/deltadeck", "/hatch_build.py", "/README.md", "/LICENSE", "/pyproject.toml"]
|
|
73
|
+
|
|
74
|
+
[tool.hatch.build.targets.sdist.force-include]
|
|
75
|
+
"web/out" = "web/out"
|
|
76
|
+
|
|
77
|
+
[tool.pytest.ini_options]
|
|
78
|
+
testpaths = ["server/tests"]
|
|
79
|
+
addopts = "-p no:cacheprovider"
|
|
80
|
+
filterwarnings = ["ignore::DeprecationWarning:fastapi.testclient", "ignore:Using `httpx`"]
|