rustfava 0.1.0__tar.gz → 0.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (620) hide show
  1. rustfava-0.1.3/PKG-INFO +133 -0
  2. rustfava-0.1.3/README.md +82 -0
  3. {rustfava-0.1.0 → rustfava-0.1.3}/_build_backend.py +4 -2
  4. rustfava-0.1.3/contrib/docker/README.md +129 -0
  5. rustfava-0.1.3/contrib/pyinstaller_spec.spec +102 -0
  6. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/capabilities/default.json +5 -0
  7. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/src/main.rs +27 -12
  8. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/tauri.conf.json +3 -0
  9. rustfava-0.1.3/desktop-sources.json +7 -0
  10. rustfava-0.1.3/docs/deployment.md +92 -0
  11. rustfava-0.1.3/docs/index.md +35 -0
  12. rustfava-0.1.3/docs/screenshot.png +0 -0
  13. rustfava-0.1.3/docs/upstream-sync.md +128 -0
  14. rustfava-0.1.3/docs/usage.md +84 -0
  15. {rustfava-0.1.0 → rustfava-0.1.3}/flake.lock +4 -25
  16. rustfava-0.1.3/flake.nix +201 -0
  17. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/bun.lock +3 -0
  18. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/package.json +1 -0
  19. rustfava-0.1.3/frontend/src/extension-api.d.ts +45 -0
  20. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/extensions.ts +23 -48
  21. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/router.ts +11 -0
  22. rustfava-0.1.3/packaging/rpm/rustfava.spec +62 -0
  23. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/ext/portfolio_list/PortfolioList.js +4 -4
  24. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/ext/rustfava_ext_test/RustfavaExtTest.js +2 -2
  25. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/extensions.md +4 -0
  26. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/app.js +4 -4
  27. rustfava-0.1.0/src/rustfava/static/beancount-VTTKRGSK.js → rustfava-0.1.3/src/rustfava/static/beancount-MH465CAD.js +2 -2
  28. rustfava-0.1.0/src/rustfava/static/chunk-V24TLQHT.js → rustfava-0.1.3/src/rustfava/static/chunk-P3BY4CCB.js +28 -23
  29. rustfava-0.1.0/src/rustfava/static/chunk-V24TLQHT.js.map → rustfava-0.1.3/src/rustfava/static/chunk-P3BY4CCB.js.map +2 -2
  30. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/bg/LC_MESSAGES/messages.mo +0 -0
  31. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/ca/LC_MESSAGES/messages.mo +0 -0
  32. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/de/LC_MESSAGES/messages.mo +0 -0
  33. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/es/LC_MESSAGES/messages.mo +0 -0
  34. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/fa/LC_MESSAGES/messages.mo +0 -0
  35. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/fr/LC_MESSAGES/messages.mo +0 -0
  36. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/ja/LC_MESSAGES/messages.mo +0 -0
  37. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/nl/LC_MESSAGES/messages.mo +0 -0
  38. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/pt/LC_MESSAGES/messages.mo +0 -0
  39. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/pt_BR/LC_MESSAGES/messages.mo +0 -0
  40. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/ru/LC_MESSAGES/messages.mo +0 -0
  41. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/sk/LC_MESSAGES/messages.mo +0 -0
  42. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/sv/LC_MESSAGES/messages.mo +0 -0
  43. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/uk/LC_MESSAGES/messages.mo +0 -0
  44. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/zh/LC_MESSAGES/messages.mo +0 -0
  45. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/zh_Hant_TW/LC_MESSAGES/messages.mo +0 -0
  46. rustfava-0.1.3/src/rustfava.egg-info/PKG-INFO +133 -0
  47. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava.egg-info/SOURCES.txt +9 -5
  48. rustfava-0.1.0/PKG-INFO +0 -102
  49. rustfava-0.1.0/README.md +0 -51
  50. rustfava-0.1.0/RUSTLEDGER_WASI_SPEC.md +0 -451
  51. rustfava-0.1.0/contrib/docker/README.md +0 -249
  52. rustfava-0.1.0/contrib/pyinstaller_spec.spec +0 -54
  53. rustfava-0.1.0/docs/deployment.md +0 -35
  54. rustfava-0.1.0/docs/index.md +0 -24
  55. rustfava-0.1.0/docs/usage.md +0 -53
  56. rustfava-0.1.0/flake.nix +0 -133
  57. rustfava-0.1.0/src/rustfava.egg-info/PKG-INFO +0 -102
  58. {rustfava-0.1.0 → rustfava-0.1.3}/.dev-bin/rustfava +0 -0
  59. {rustfava-0.1.0 → rustfava-0.1.3}/.dockerignore +0 -0
  60. {rustfava-0.1.0 → rustfava-0.1.3}/AUTHORS +0 -0
  61. {rustfava-0.1.0 → rustfava-0.1.3}/CONTRIBUTING.md +0 -0
  62. {rustfava-0.1.0 → rustfava-0.1.3}/Dockerfile +0 -0
  63. {rustfava-0.1.0 → rustfava-0.1.3}/LICENSE +0 -0
  64. {rustfava-0.1.0 → rustfava-0.1.3}/MANIFEST.in +0 -0
  65. {rustfava-0.1.0 → rustfava-0.1.3}/SECURITY.md +0 -0
  66. {rustfava-0.1.0 → rustfava-0.1.3}/biome.json +0 -0
  67. {rustfava-0.1.0 → rustfava-0.1.3}/contrib/docker/Dockerfile +0 -0
  68. {rustfava-0.1.0 → rustfava-0.1.3}/contrib/examples/budgets-example.beancount +0 -0
  69. {rustfava-0.1.0 → rustfava-0.1.3}/contrib/examples/example.beancount +0 -0
  70. {rustfava-0.1.0 → rustfava-0.1.3}/contrib/examples/huge-example.beancount +0 -0
  71. {rustfava-0.1.0 → rustfava-0.1.3}/contrib/icon.svg +0 -0
  72. {rustfava-0.1.0 → rustfava-0.1.3}/contrib/scripts.py +0 -0
  73. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/.dev-bin/rustfava +0 -0
  74. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/README.md +0 -0
  75. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/build-sidecar.sh +0 -0
  76. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/bun.lock +0 -0
  77. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/index.html +0 -0
  78. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/package.json +0 -0
  79. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/scripts/ensure-rustledger.ts +0 -0
  80. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src/index.html +0 -0
  81. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src/logo.svg +0 -0
  82. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src/main.ts +0 -0
  83. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src/styles.css +0 -0
  84. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/Cargo.lock +0 -0
  85. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/Cargo.toml +0 -0
  86. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/build.rs +0 -0
  87. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/gen/schemas/acl-manifests.json +0 -0
  88. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/gen/schemas/capabilities.json +0 -0
  89. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/gen/schemas/desktop-schema.json +0 -0
  90. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/gen/schemas/linux-schema.json +0 -0
  91. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/icons/128x128.png +0 -0
  92. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/icons/128x128@2x.png +0 -0
  93. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/icons/32x32.png +0 -0
  94. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/icons/icon.icns +0 -0
  95. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/icons/icon.ico +0 -0
  96. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/icons/icon.png +0 -0
  97. {rustfava-0.1.0 → rustfava-0.1.3}/desktop/vite.config.ts +0 -0
  98. {rustfava-0.1.0 → rustfava-0.1.3}/docs/api.md +0 -0
  99. {rustfava-0.1.0 → rustfava-0.1.3}/docs/changelog.md +0 -0
  100. {rustfava-0.1.0 → rustfava-0.1.3}/docs/development.md +0 -0
  101. {rustfava-0.1.0 → rustfava-0.1.3}/docs/logo.svg +0 -0
  102. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/.npmrc +0 -0
  103. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/build.ts +0 -0
  104. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/base.css +0 -0
  105. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/charts.css +0 -0
  106. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/components.css +0 -0
  107. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/editor.css +0 -0
  108. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/fonts.css +0 -0
  109. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/grid.css +0 -0
  110. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/help.css +0 -0
  111. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/journal-table.css +0 -0
  112. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/layout.css +0 -0
  113. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/notifications.css +0 -0
  114. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/style.css +0 -0
  115. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/tree-table.css +0 -0
  116. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/deno.json +0 -0
  117. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/eslint.config.js +0 -0
  118. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/prettier.config.js +0 -0
  119. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/setup.js +0 -0
  120. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/AutocompleteInput.svelte +0 -0
  121. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/ambient.d.ts +0 -0
  122. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/api/index.ts +0 -0
  123. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/api/validators.ts +0 -0
  124. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/app.ts +0 -0
  125. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/Axis.svelte +0 -0
  126. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/BarChart.svelte +0 -0
  127. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/Chart.svelte +0 -0
  128. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/ChartLegend.svelte +0 -0
  129. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/ChartSwitcher.svelte +0 -0
  130. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/ConversionAndInterval.svelte +0 -0
  131. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/HierarchyContainer.svelte +0 -0
  132. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/Icicle.svelte +0 -0
  133. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/LineChart.svelte +0 -0
  134. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/ModeSwitch.svelte +0 -0
  135. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/ScatterPlot.svelte +0 -0
  136. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/SelectCombobox.svelte +0 -0
  137. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/Sunburst.svelte +0 -0
  138. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/Treemap.svelte +0 -0
  139. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/bar.ts +0 -0
  140. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/context.ts +0 -0
  141. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/helpers.ts +0 -0
  142. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/hierarchy.ts +0 -0
  143. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/index.ts +0 -0
  144. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/line.ts +0 -0
  145. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/query-charts.ts +0 -0
  146. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/scatterplot.ts +0 -0
  147. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/tooltip.ts +0 -0
  148. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/clipboard.ts +0 -0
  149. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/base-extensions.ts +0 -0
  150. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/beancount-autocomplete.ts +0 -0
  151. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/beancount-fold.ts +0 -0
  152. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/beancount-format.ts +0 -0
  153. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/beancount-highlight.ts +0 -0
  154. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/beancount-indent.ts +0 -0
  155. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/beancount-language.ts +0 -0
  156. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/beancount-snippets.ts +0 -0
  157. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/beancount.ts +0 -0
  158. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/bql-autocomplete.ts +0 -0
  159. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/bql-grammar.ts +0 -0
  160. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/bql-highlight.ts +0 -0
  161. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/bql-language.ts +0 -0
  162. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/bql-stream-parser.ts +0 -0
  163. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/bql.ts +0 -0
  164. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/dom.ts +0 -0
  165. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/editor-transactions.ts +0 -0
  166. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/ruler.ts +0 -0
  167. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/tree-sitter-beancount.wasm +0 -0
  168. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/tree-sitter-parser.ts +0 -0
  169. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/types.ts +0 -0
  170. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/editor/DeleteButton.svelte +0 -0
  171. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/editor/DocumentPreviewEditor.svelte +0 -0
  172. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/editor/SaveButton.svelte +0 -0
  173. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/editor/SliceEditor.svelte +0 -0
  174. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entries/amount.ts +0 -0
  175. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entries/cost.ts +0 -0
  176. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entries/index.ts +0 -0
  177. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entries/metadata.ts +0 -0
  178. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entries/position.ts +0 -0
  179. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entry-forms/AccountInput.svelte +0 -0
  180. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entry-forms/AddMetadataButton.svelte +0 -0
  181. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entry-forms/Balance.svelte +0 -0
  182. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entry-forms/Entry.svelte +0 -0
  183. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entry-forms/EntryMetadata.svelte +0 -0
  184. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entry-forms/Note.svelte +0 -0
  185. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entry-forms/Posting.svelte +0 -0
  186. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entry-forms/Transaction.svelte +0 -0
  187. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/format.ts +0 -0
  188. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/helpers.ts +0 -0
  189. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/i18n.ts +0 -0
  190. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/keyboard-shortcuts.ts +0 -0
  191. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/account.ts +0 -0
  192. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/array.ts +0 -0
  193. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/dom.ts +0 -0
  194. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/equals.ts +0 -0
  195. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/errors.ts +0 -0
  196. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/fetch.ts +0 -0
  197. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/focus.ts +0 -0
  198. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/fuzzy.ts +0 -0
  199. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/interval.ts +0 -0
  200. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/iso4217.ts +0 -0
  201. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/json.ts +0 -0
  202. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/objects.ts +0 -0
  203. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/paths.ts +0 -0
  204. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/regex.ts +0 -0
  205. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/result.ts +0 -0
  206. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/set.ts +0 -0
  207. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/sources.ts +0 -0
  208. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/store.ts +0 -0
  209. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/tree.ts +0 -0
  210. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/validation.ts +0 -0
  211. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/log.ts +0 -0
  212. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/modals/AddEntry.svelte +0 -0
  213. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/modals/Context.svelte +0 -0
  214. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/modals/DocumentUpload.svelte +0 -0
  215. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/modals/EntryContextBalances.svelte +0 -0
  216. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/modals/EntryContextLocation.svelte +0 -0
  217. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/modals/Export.svelte +0 -0
  218. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/modals/ModalBase.svelte +0 -0
  219. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/modals/Modals.svelte +0 -0
  220. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/modals/document-upload.ts +0 -0
  221. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/notifications.ts +0 -0
  222. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/ReportLoadError.svelte +0 -0
  223. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/accounts/AccountReport.svelte +0 -0
  224. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/accounts/index.ts +0 -0
  225. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/commodities/Commodities.svelte +0 -0
  226. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/commodities/CommodityTable.svelte +0 -0
  227. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/commodities/index.ts +0 -0
  228. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/documents/Accounts.svelte +0 -0
  229. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/documents/DocumentPreview.svelte +0 -0
  230. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/documents/Documents.svelte +0 -0
  231. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/documents/Table.svelte +0 -0
  232. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/documents/index.ts +0 -0
  233. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/documents/stores.ts +0 -0
  234. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/editor/AppMenu.svelte +0 -0
  235. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/editor/AppMenuItem.svelte +0 -0
  236. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/editor/AppMenuSubItem.svelte +0 -0
  237. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/editor/Editor.svelte +0 -0
  238. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/editor/EditorMenu.svelte +0 -0
  239. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/editor/Key.svelte +0 -0
  240. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/editor/Sources.svelte +0 -0
  241. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/editor/index.ts +0 -0
  242. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/editor/stores.ts +0 -0
  243. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/errors/Errors.svelte +0 -0
  244. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/errors/index.ts +0 -0
  245. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/events/EventTable.svelte +0 -0
  246. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/events/Events.svelte +0 -0
  247. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/events/index.ts +0 -0
  248. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/holdings/Holdings.svelte +0 -0
  249. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/holdings/index.ts +0 -0
  250. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/import/Extract.svelte +0 -0
  251. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/import/FileList.svelte +0 -0
  252. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/import/Import.svelte +0 -0
  253. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/import/ImportFileUpload.svelte +0 -0
  254. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/import/index.ts +0 -0
  255. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/journal/Journal.svelte +0 -0
  256. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/journal/JournalFilters.svelte +0 -0
  257. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/journal/JournalHeaders.svelte +0 -0
  258. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/journal/JournalTable.svelte +0 -0
  259. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/journal/click_handler.ts +0 -0
  260. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/journal/index.ts +0 -0
  261. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/journal/sort.ts +0 -0
  262. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/options/Options.svelte +0 -0
  263. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/options/OptionsTable.svelte +0 -0
  264. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/options/index.ts +0 -0
  265. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/query/Query.svelte +0 -0
  266. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/query/QueryBox.svelte +0 -0
  267. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/query/QueryEditor.svelte +0 -0
  268. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/query/QueryLinks.svelte +0 -0
  269. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/query/QueryTable.svelte +0 -0
  270. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/query/ReadonlyQueryEditor.svelte +0 -0
  271. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/query/index.ts +0 -0
  272. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/query/query_table.ts +0 -0
  273. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/route.svelte.ts +0 -0
  274. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/route.ts +0 -0
  275. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/routes.ts +0 -0
  276. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/statistics/EntriesByType.svelte +0 -0
  277. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/statistics/Statistics.svelte +0 -0
  278. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/statistics/UpdateActivity.svelte +0 -0
  279. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/statistics/index.ts +0 -0
  280. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/tree_reports/BalanceSheet.svelte +0 -0
  281. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/tree_reports/IncomeStatement.svelte +0 -0
  282. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/tree_reports/TrialBalance.svelte +0 -0
  283. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/tree_reports/index.ts +0 -0
  284. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/AccountIndicator.svelte +0 -0
  285. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/AccountPageTitle.svelte +0 -0
  286. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/AccountSelector.svelte +0 -0
  287. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/AsideContents.svelte +0 -0
  288. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/AsideWithButton.svelte +0 -0
  289. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/FilterForm.svelte +0 -0
  290. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/Header.svelte +0 -0
  291. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/HeaderAndAside.svelte +0 -0
  292. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/HeaderIcon.svelte +0 -0
  293. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/PageTitle.svelte +0 -0
  294. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/SidebarLink.svelte +0 -0
  295. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/index.ts +0 -0
  296. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/page-title.ts +0 -0
  297. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sort/SortHeader.svelte +0 -0
  298. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sort/index.ts +0 -0
  299. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sort/sortable-table.ts +0 -0
  300. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/accounts.ts +0 -0
  301. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/chart.ts +0 -0
  302. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/color_scheme.ts +0 -0
  303. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/editor.ts +0 -0
  304. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/fava_options.ts +0 -0
  305. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/filters.ts +0 -0
  306. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/format.ts +0 -0
  307. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/index.ts +0 -0
  308. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/journal.ts +0 -0
  309. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/mtime.ts +0 -0
  310. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/options.ts +0 -0
  311. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/query.ts +0 -0
  312. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/url.ts +0 -0
  313. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/svelte-custom-elements.ts +0 -0
  314. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/tree-table/AccountCell.svelte +0 -0
  315. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/tree-table/AccountCellHeader.svelte +0 -0
  316. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/tree-table/Diff.svelte +0 -0
  317. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/tree-table/IntervalTreeTable.svelte +0 -0
  318. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/tree-table/IntervalTreeTableNode.svelte +0 -0
  319. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/tree-table/TreeTable.svelte +0 -0
  320. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/tree-table/TreeTableNode.svelte +0 -0
  321. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/tree-table/helpers.ts +0 -0
  322. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/tree-table/tree-table-custom-element.ts +0 -0
  323. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/stylelint.config.js +0 -0
  324. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/sync-pre-commit.ts +0 -0
  325. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/AutocompleteInput.test.ts +0 -0
  326. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/account.test.ts +0 -0
  327. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/charts.test.ts +0 -0
  328. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/dom.ts +0 -0
  329. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/editor.test.ts +0 -0
  330. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/end-to-end-validation.test.ts +0 -0
  331. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/entries.test.ts +0 -0
  332. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/format.test.ts +0 -0
  333. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/fuzzy.test.ts +0 -0
  334. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/helpers.ts +0 -0
  335. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/misc.test.ts +0 -0
  336. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/parser.test.ts +0 -0
  337. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/paths.test.ts +0 -0
  338. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/result.test.ts +0 -0
  339. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/sources.test.ts +0 -0
  340. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/store.test.ts +0 -0
  341. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/tree.test.ts +0 -0
  342. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/urls.test.ts +0 -0
  343. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/validation.test.ts +0 -0
  344. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test.ts +0 -0
  345. {rustfava-0.1.0 → rustfava-0.1.3}/frontend/tsconfig.json +0 -0
  346. {rustfava-0.1.0 → rustfava-0.1.3}/justfile +0 -0
  347. {rustfava-0.1.0 → rustfava-0.1.3}/mkdocs.yml +0 -0
  348. {rustfava-0.1.0 → rustfava-0.1.3}/pyproject.toml +0 -0
  349. {rustfava-0.1.0 → rustfava-0.1.3}/setup.cfg +0 -0
  350. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/__init__.py +0 -0
  351. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/_ctx_globals_class.py +0 -0
  352. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/api_models.py +0 -0
  353. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/application.py +0 -0
  354. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/__init__.py +0 -0
  355. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/abc.py +0 -0
  356. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/account.py +0 -0
  357. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/create.py +0 -0
  358. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/flags.py +0 -0
  359. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/funcs.py +0 -0
  360. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/helpers.py +0 -0
  361. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/ingest.py +0 -0
  362. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/load.py +0 -0
  363. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/prices.py +0 -0
  364. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/protocols.py +0 -0
  365. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/str.py +0 -0
  366. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/types.py +0 -0
  367. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/cli.py +0 -0
  368. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/context.py +0 -0
  369. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/__init__.py +0 -0
  370. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/accounts.py +0 -0
  371. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/attributes.py +0 -0
  372. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/budgets.py +0 -0
  373. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/charts.py +0 -0
  374. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/commodities.py +0 -0
  375. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/conversion.py +0 -0
  376. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/documents.py +0 -0
  377. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/extensions.py +0 -0
  378. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/fava_options.py +0 -0
  379. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/file.py +0 -0
  380. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/filters.py +0 -0
  381. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/group_entries.py +0 -0
  382. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/ingest.py +0 -0
  383. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/inventory.py +0 -0
  384. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/misc.py +0 -0
  385. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/module_base.py +0 -0
  386. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/number.py +0 -0
  387. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/query.py +0 -0
  388. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/query_shell.py +0 -0
  389. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/tree.py +0 -0
  390. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/watcher.py +0 -0
  391. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/ext/__init__.py +0 -0
  392. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/ext/auto_commit.py +0 -0
  393. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/ext/portfolio_list/__init__.py +0 -0
  394. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/ext/portfolio_list/templates/PortfolioList.html +0 -0
  395. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/ext/rustfava_ext_test/__init__.py +0 -0
  396. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/ext/rustfava_ext_test/templates/RustfavaExtTest.html +0 -0
  397. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/ext/rustfava_ext_test/templates/RustfavaExtTestInclude.html +0 -0
  398. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/__init__.py +0 -0
  399. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/_index.md +0 -0
  400. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/beancount_syntax.md +0 -0
  401. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/budgets.md +0 -0
  402. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/conversion.md +0 -0
  403. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/features.md +0 -0
  404. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/filters.md +0 -0
  405. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/import.md +0 -0
  406. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/options.md +0 -0
  407. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/helpers.py +0 -0
  408. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/internal_api.py +0 -0
  409. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/json_api.py +0 -0
  410. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/plugins/__init__.py +0 -0
  411. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/plugins/link_documents.py +0 -0
  412. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/plugins/tag_discovered_documents.py +0 -0
  413. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/py.typed +0 -0
  414. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/rustledger/__init__.py +0 -0
  415. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/rustledger/constants.py +0 -0
  416. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/rustledger/engine.py +0 -0
  417. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/rustledger/loader.py +0 -0
  418. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/rustledger/options.py +0 -0
  419. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/rustledger/query.py +0 -0
  420. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/rustledger/types.py +0 -0
  421. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/serialisation.py +0 -0
  422. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/app.css +0 -0
  423. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/app.css.map +0 -0
  424. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/app.js.map +0 -0
  425. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/beancount-JFV44ZVZ.css +0 -0
  426. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/beancount-JFV44ZVZ.css.map +0 -0
  427. /rustfava-0.1.0/src/rustfava/static/beancount-VTTKRGSK.js.map → /rustfava-0.1.3/src/rustfava/static/beancount-MH465CAD.js.map +0 -0
  428. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/bql-MGFRUMBP.js +0 -0
  429. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/bql-MGFRUMBP.js.map +0 -0
  430. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/chunk-E7ZF4ASL.js +0 -0
  431. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/chunk-E7ZF4ASL.js.map +0 -0
  432. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/favicon.ico +0 -0
  433. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-cyrillic-400-normal-BLAGXRCE.woff2 +0 -0
  434. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-cyrillic-500-normal-EN7JUAAW.woff2 +0 -0
  435. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-cyrillic-ext-400-normal-EX7VARTS.woff2 +0 -0
  436. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-cyrillic-ext-500-normal-ZDPTUPRR.woff2 +0 -0
  437. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-greek-400-normal-COGHKMOA.woff2 +0 -0
  438. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-greek-500-normal-4EN2PKZT.woff2 +0 -0
  439. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-greek-ext-400-normal-DYEQIJH7.woff2 +0 -0
  440. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-greek-ext-500-normal-SG73CVKQ.woff2 +0 -0
  441. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-latin-400-normal-NA3VLV7E.woff2 +0 -0
  442. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-latin-500-normal-YC77GFWD.woff2 +0 -0
  443. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-latin-ext-400-normal-DIKTZ5PW.woff2 +0 -0
  444. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-latin-ext-500-normal-ZWY4UO4V.woff2 +0 -0
  445. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-symbols2-400-normal-UITXT77Q.woff2 +0 -0
  446. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-symbols2-500-normal-VWPC2EFN.woff2 +0 -0
  447. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-cyrillic-400-normal-KLQMBCA6.woff2 +0 -0
  448. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-cyrillic-500-normal-NFG7UD6J.woff2 +0 -0
  449. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-cyrillic-ext-400-normal-GWO44OPC.woff2 +0 -0
  450. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-cyrillic-ext-500-normal-SP47E5SC.woff2 +0 -0
  451. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-greek-400-normal-UMQBTLC3.woff2 +0 -0
  452. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-greek-500-normal-4ZKHN4FQ.woff2 +0 -0
  453. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-greek-ext-400-normal-O2DVJAJZ.woff2 +0 -0
  454. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-greek-ext-500-normal-SK6GNWGO.woff2 +0 -0
  455. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-latin-400-normal-OYYTPMAV.woff2 +0 -0
  456. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-latin-500-normal-SMQPZW5A.woff2 +0 -0
  457. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-latin-ext-400-normal-OAUP3WK5.woff2 +0 -0
  458. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-latin-ext-500-normal-LY3YDR5Y.woff2 +0 -0
  459. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-vietnamese-400-normal-OBMQ72MR.woff2 +0 -0
  460. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-vietnamese-500-normal-Y4NZR5EU.woff2 +0 -0
  461. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-cyrillic-400-normal-TO22V6M3.woff2 +0 -0
  462. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-cyrillic-500-normal-OGBWWWYW.woff2 +0 -0
  463. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-cyrillic-ext-400-normal-XH44UCIA.woff2 +0 -0
  464. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-cyrillic-ext-500-normal-3Z6MMVM6.woff2 +0 -0
  465. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-greek-400-normal-OUXXUQWK.woff2 +0 -0
  466. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-greek-500-normal-JA2Z5UXO.woff2 +0 -0
  467. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-greek-ext-400-normal-WCDKMX7U.woff2 +0 -0
  468. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-greek-ext-500-normal-ZHVI4VKW.woff2 +0 -0
  469. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-latin-400-normal-QOGTXED5.woff2 +0 -0
  470. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-latin-500-normal-X57QEOLQ.woff2 +0 -0
  471. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-latin-ext-400-normal-QXC74NBF.woff2 +0 -0
  472. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-latin-ext-500-normal-QGOY7MTT.woff2 +0 -0
  473. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-vietnamese-400-normal-NPDCDTBA.woff2 +0 -0
  474. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-vietnamese-500-normal-M6PJKTR5.woff2 +0 -0
  475. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/tree-sitter-beancount-MLXFQBZ5.wasm +0 -0
  476. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/web-tree-sitter-RNOQ6E74.wasm +0 -0
  477. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/template_filters.py +0 -0
  478. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/templates/_journal_table.html +0 -0
  479. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/templates/_layout.html +0 -0
  480. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/templates/_query_table.html +0 -0
  481. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/templates/beancount_file +0 -0
  482. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/templates/help.html +0 -0
  483. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/templates/macros/_account_macros.html +0 -0
  484. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/templates/macros/_commodity_macros.html +0 -0
  485. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/bg/LC_MESSAGES/messages.po +0 -0
  486. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/ca/LC_MESSAGES/messages.po +0 -0
  487. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/de/LC_MESSAGES/messages.po +0 -0
  488. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/es/LC_MESSAGES/messages.po +0 -0
  489. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/fa/LC_MESSAGES/messages.po +0 -0
  490. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/fr/LC_MESSAGES/messages.po +0 -0
  491. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/ja/LC_MESSAGES/messages.po +0 -0
  492. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/nl/LC_MESSAGES/messages.po +0 -0
  493. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/pt/LC_MESSAGES/messages.po +0 -0
  494. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/pt_BR/LC_MESSAGES/messages.po +0 -0
  495. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/ru/LC_MESSAGES/messages.po +0 -0
  496. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/sk/LC_MESSAGES/messages.po +0 -0
  497. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/sv/LC_MESSAGES/messages.po +0 -0
  498. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/uk/LC_MESSAGES/messages.po +0 -0
  499. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/zh/LC_MESSAGES/messages.po +0 -0
  500. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/zh_Hant_TW/LC_MESSAGES/messages.po +0 -0
  501. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/util/__init__.py +0 -0
  502. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/util/date.py +0 -0
  503. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/util/excel.py +0 -0
  504. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/util/ranking.py +0 -0
  505. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/util/sets.py +0 -0
  506. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/util/unreachable.py +0 -0
  507. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava.egg-info/dependency_links.txt +0 -0
  508. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava.egg-info/entry_points.txt +0 -0
  509. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava.egg-info/requires.txt +0 -0
  510. {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava.egg-info/top_level.txt +0 -0
  511. {rustfava-0.1.0 → rustfava-0.1.3}/stubs/beangulp/__init__.pyi +0 -0
  512. {rustfava-0.1.0 → rustfava-0.1.3}/stubs/beangulp/cache.pyi +0 -0
  513. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__init__.py +0 -0
  514. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_application-test_download_journal +0 -0
  515. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_attributes-test_narrations.json +0 -0
  516. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_interval_totals-2.json +0 -0
  517. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_interval_totals.json +0 -0
  518. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_interval_totals_inverted-2.json +0 -0
  519. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_interval_totals_inverted.json +0 -0
  520. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_linechart_data-2.json +0 -0
  521. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_linechart_data-3.json +0 -0
  522. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_linechart_data-4.json +0 -0
  523. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_linechart_data.json +0 -0
  524. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_net_worth.json +0 -0
  525. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_net_worth_off_by_one-2.json +0 -0
  526. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_net_worth_off_by_one.json +0 -0
  527. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_file-test_render_entries +0 -0
  528. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_ingest-test_ingest_examplefile-2.json +0 -0
  529. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_ingest-test_ingest_examplefile.json +0 -0
  530. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_query_shell-test_query_balances +0 -0
  531. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_query_shell-test_query_to_file +0 -0
  532. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_query_shell-test_text_queries +0 -0
  533. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_tree-test_tree_cap +0 -0
  534. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_tree-test_tree_from_entries +0 -0
  535. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_tree-test_tree_from_entries-2 +0 -0
  536. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_internal_api-test_chart_api.json +0 -0
  537. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_internal_api-test_get_ledger_data.json +0 -0
  538. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-account_report_off_by_one.json +0 -0
  539. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-account_report_off_by_one_journal.json +0 -0
  540. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-balance_sheet.json +0 -0
  541. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-balance_sheet_with_cost.json +0 -0
  542. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-commodities.json +0 -0
  543. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-documents.json +0 -0
  544. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-events.json +0 -0
  545. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-income_statement.json +0 -0
  546. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-journal.json +0 -0
  547. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-narrations.json +0 -0
  548. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-options.json +0 -0
  549. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-statistics.json +0 -0
  550. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-trial_balance.json +0 -0
  551. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_context-2.json +0 -0
  552. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_context-3.json +0 -0
  553. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_context-4.json +0 -0
  554. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_context.json +0 -0
  555. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_errors +0 -0
  556. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_imports-2.json +0 -0
  557. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_imports.json +0 -0
  558. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_payee_accounts.json +0 -0
  559. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_payee_transaction.json +0 -0
  560. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_query_result-balances.json +0 -0
  561. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_query_result-help.json +0 -0
  562. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_query_result-journal.json +0 -0
  563. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_query_result-misc.json +0 -0
  564. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_query_result-sum.json +0 -0
  565. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_serialisation-test_deserialise_posting_and_format +0 -0
  566. {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_serialisation-test_serialise_entry_types.json +0 -0
  567. {rustfava-0.1.0 → rustfava-0.1.3}/tests/conftest.py +0 -0
  568. {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/edit-example.beancount +0 -0
  569. {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/errors.beancount +0 -0
  570. {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/example-balances.csv +0 -0
  571. {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/example-utf8-/360/237/246/201.txt" +0 -0
  572. {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/example.beancount +0 -0
  573. {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/extension-report-example.beancount +0 -0
  574. {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/import.beancount +0 -0
  575. {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/import.csv +0 -0
  576. {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/import_config.py +0 -0
  577. {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/import_config_with_duplicate_names.py +0 -0
  578. {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/invalid-unicode.beancount +0 -0
  579. {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/long-example.beancount +0 -0
  580. {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/off-by-one.beancount +0 -0
  581. {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/query-example.beancount +0 -0
  582. {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/receipt.pdf +0 -0
  583. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_application.py +0 -0
  584. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_beans.py +0 -0
  585. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_beans_str.py +0 -0
  586. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_build_backend.py +0 -0
  587. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_cli.py +0 -0
  588. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core.py +0 -0
  589. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_accounts.py +0 -0
  590. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_attributes.py +0 -0
  591. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_budgets.py +0 -0
  592. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_charts.py +0 -0
  593. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_commodities.py +0 -0
  594. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_conversion.py +0 -0
  595. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_documents.py +0 -0
  596. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_fava_options.py +0 -0
  597. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_file.py +0 -0
  598. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_filters.py +0 -0
  599. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_ingest.py +0 -0
  600. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_inventory.py +0 -0
  601. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_misc.py +0 -0
  602. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_number.py +0 -0
  603. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_query_shell.py +0 -0
  604. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_tree.py +0 -0
  605. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_watcher.py +0 -0
  606. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_ext.py +0 -0
  607. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_extensions.py +0 -0
  608. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_internal_api.py +0 -0
  609. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_json_api.py +0 -0
  610. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_plugins_link_documents.py +0 -0
  611. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_plugins_tag_discovered_documents.py +0 -0
  612. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_serialisation.py +0 -0
  613. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_template_filters.py +0 -0
  614. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_templates.py +0 -0
  615. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_util.py +0 -0
  616. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_util_date.py +0 -0
  617. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_util_excel.py +0 -0
  618. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_util_ranking.py +0 -0
  619. {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_util_sets.py +0 -0
  620. {rustfava-0.1.0 → rustfava-0.1.3}/uv.lock +0 -0
@@ -0,0 +1,133 @@
1
+ Metadata-Version: 2.4
2
+ Name: rustfava
3
+ Version: 0.1.3
4
+ Summary: Web interface for the accounting tool rustledger.
5
+ Author-email: Dominik Aumayr <dominik@aumayr.name>
6
+ Maintainer-email: Jakob Schnitzer <mail@jakobschnitzer.de>
7
+ License-Expression: MIT
8
+ Project-URL: Repository, https://github.com/rustledger/rustfava
9
+ Project-URL: Documentation, https://rustledger.github.io/rustfava
10
+ Project-URL: Issues, https://github.com/rustledger/rustfava/issues
11
+ Project-URL: Changelog, https://github.com/rustledger/rustfava/releases
12
+ Keywords: rustfava,fava,beancount,accounting,rustledger
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Environment :: Web Environment
15
+ Classifier: Framework :: Flask
16
+ Classifier: Intended Audience :: Education
17
+ Classifier: Intended Audience :: End Users/Desktop
18
+ Classifier: Intended Audience :: Financial and Insurance Industry
19
+ Classifier: Intended Audience :: Information Technology
20
+ Classifier: Natural Language :: English
21
+ Classifier: Programming Language :: JavaScript
22
+ Classifier: Programming Language :: Python :: 3 :: Only
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Programming Language :: Python :: 3.14
25
+ Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
26
+ Classifier: Topic :: Office/Business :: Financial :: Accounting
27
+ Classifier: Topic :: Office/Business :: Financial :: Investment
28
+ Requires-Python: >=3.13
29
+ Description-Content-Type: text/markdown
30
+ License-File: LICENSE
31
+ License-File: AUTHORS
32
+ Requires-Dist: Babel<3,>=2.11
33
+ Requires-Dist: Flask-Babel<5,>=3
34
+ Requires-Dist: Flask<4,>=2.2
35
+ Requires-Dist: Jinja2<4,>=3
36
+ Requires-Dist: Werkzeug<4,>=2.2
37
+ Requires-Dist: beangulp>=0.1
38
+ Requires-Dist: cheroot<12,>=8
39
+ Requires-Dist: click<9,>=7
40
+ Requires-Dist: markdown2<3,>=2.3.0
41
+ Requires-Dist: ply>=3.11
42
+ Requires-Dist: pydantic>=2.0
43
+ Requires-Dist: watchfiles>=0.20.0
44
+ Provides-Extra: excel
45
+ Requires-Dist: pyexcel>=0.5; extra == "excel"
46
+ Requires-Dist: pyexcel-ods3>=0.5; extra == "excel"
47
+ Requires-Dist: pyexcel-xlsx>=0.5; extra == "excel"
48
+ Provides-Extra: beancount-compat
49
+ Requires-Dist: beancount<4,>=2; extra == "beancount-compat"
50
+ Dynamic: license-file
51
+
52
+ <div align="center">
53
+
54
+ # rustfava
55
+
56
+ **A beautiful desktop app for [rustledger](https://github.com/rustledger/rustledger)**
57
+
58
+ Manage your finances with plain text accounting.
59
+
60
+ [![CI](https://github.com/rustledger/rustfava/actions/workflows/test.yml/badge.svg)](https://github.com/rustledger/rustfava/actions/workflows/test.yml)
61
+ [![GitHub Release](https://img.shields.io/github/v/release/rustledger/rustfava)](https://github.com/rustledger/rustfava/releases)
62
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
63
+ [![PyPI](https://img.shields.io/pypi/v/rustfava)](https://pypi.org/project/rustfava/)
64
+
65
+ ![rustfava dashboard](docs/screenshot.png)
66
+
67
+ </div>
68
+
69
+ ---
70
+
71
+ ## Why rustfava?
72
+
73
+ | | |
74
+ |---|---|
75
+ | **Native app** | Double-click to launch, no terminal required |
76
+ | **Fava interface** | The familiar Fava web UI you know and love |
77
+ | **rustledger backend** | Blazing fast parsing via WebAssembly |
78
+ | **Cross-platform** | Linux, macOS (Intel & Apple Silicon), Windows |
79
+ | **Offline first** | Your financial data stays on your machine |
80
+ | **Multiple files** | Open multiple ledgers in tabs |
81
+
82
+ ## Install
83
+
84
+ ### Desktop App
85
+
86
+ Download the latest release for your platform from the [Releases page](https://github.com/rustledger/rustfava/releases/latest).
87
+
88
+ | Platform | Format |
89
+ |----------|--------|
90
+ | **macOS** | `.dmg` (Intel & Apple Silicon) |
91
+ | **Windows** | `.exe` installer or `.msi` |
92
+ | **Linux** | `.AppImage`, `.deb`, `.rpm`, or `.tar.gz` |
93
+
94
+ ### Other Installation Methods
95
+
96
+ | Method | Command |
97
+ |--------|---------|
98
+ | **Docker** | `docker run -p 5000:5000 -v /path/to/ledger:/data ghcr.io/rustledger/rustfava /data/main.beancount` |
99
+ | **PyPI** | `uv tool install rustfava` (requires Python 3.13+ and [wasmtime](https://wasmtime.dev/)) |
100
+ | **Nix** | `nix run github:rustledger/rustfava#desktop` |
101
+
102
+ <sub>Missing your platform? [Open an issue](https://github.com/rustledger/rustfava/issues/new) to request it.</sub>
103
+
104
+ ## Quick Start
105
+
106
+ ### Desktop App
107
+
108
+ 1. Download the app for your platform
109
+ 2. Double-click to launch
110
+ 3. Open your `.beancount` file
111
+
112
+ ### Command Line
113
+
114
+ ```bash
115
+ rustfava ledger.beancount
116
+ # Then visit http://localhost:5000
117
+ ```
118
+
119
+ ## What is this?
120
+
121
+ rustfava is a fork of [Fava](https://github.com/beancount/fava) that replaces the Python beancount parser with [rustledger](https://github.com/rustledger/rustledger), compiled to WebAssembly for faster parsing and processing.
122
+
123
+ The desktop app bundles everything into a native application using [Tauri](https://tauri.app/), so you get a fast, lightweight app with no dependencies.
124
+
125
+ ## Links
126
+
127
+ - **Website**: https://rustledger.github.io/rustfava/
128
+ - **Documentation**: https://rustledger.github.io/rustfava/docs/
129
+ - **rustledger**: https://github.com/rustledger/rustledger
130
+
131
+ ## License
132
+
133
+ MIT License - see [LICENSE](LICENSE) for details.
@@ -0,0 +1,82 @@
1
+ <div align="center">
2
+
3
+ # rustfava
4
+
5
+ **A beautiful desktop app for [rustledger](https://github.com/rustledger/rustledger)**
6
+
7
+ Manage your finances with plain text accounting.
8
+
9
+ [![CI](https://github.com/rustledger/rustfava/actions/workflows/test.yml/badge.svg)](https://github.com/rustledger/rustfava/actions/workflows/test.yml)
10
+ [![GitHub Release](https://img.shields.io/github/v/release/rustledger/rustfava)](https://github.com/rustledger/rustfava/releases)
11
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
12
+ [![PyPI](https://img.shields.io/pypi/v/rustfava)](https://pypi.org/project/rustfava/)
13
+
14
+ ![rustfava dashboard](docs/screenshot.png)
15
+
16
+ </div>
17
+
18
+ ---
19
+
20
+ ## Why rustfava?
21
+
22
+ | | |
23
+ |---|---|
24
+ | **Native app** | Double-click to launch, no terminal required |
25
+ | **Fava interface** | The familiar Fava web UI you know and love |
26
+ | **rustledger backend** | Blazing fast parsing via WebAssembly |
27
+ | **Cross-platform** | Linux, macOS (Intel & Apple Silicon), Windows |
28
+ | **Offline first** | Your financial data stays on your machine |
29
+ | **Multiple files** | Open multiple ledgers in tabs |
30
+
31
+ ## Install
32
+
33
+ ### Desktop App
34
+
35
+ Download the latest release for your platform from the [Releases page](https://github.com/rustledger/rustfava/releases/latest).
36
+
37
+ | Platform | Format |
38
+ |----------|--------|
39
+ | **macOS** | `.dmg` (Intel & Apple Silicon) |
40
+ | **Windows** | `.exe` installer or `.msi` |
41
+ | **Linux** | `.AppImage`, `.deb`, `.rpm`, or `.tar.gz` |
42
+
43
+ ### Other Installation Methods
44
+
45
+ | Method | Command |
46
+ |--------|---------|
47
+ | **Docker** | `docker run -p 5000:5000 -v /path/to/ledger:/data ghcr.io/rustledger/rustfava /data/main.beancount` |
48
+ | **PyPI** | `uv tool install rustfava` (requires Python 3.13+ and [wasmtime](https://wasmtime.dev/)) |
49
+ | **Nix** | `nix run github:rustledger/rustfava#desktop` |
50
+
51
+ <sub>Missing your platform? [Open an issue](https://github.com/rustledger/rustfava/issues/new) to request it.</sub>
52
+
53
+ ## Quick Start
54
+
55
+ ### Desktop App
56
+
57
+ 1. Download the app for your platform
58
+ 2. Double-click to launch
59
+ 3. Open your `.beancount` file
60
+
61
+ ### Command Line
62
+
63
+ ```bash
64
+ rustfava ledger.beancount
65
+ # Then visit http://localhost:5000
66
+ ```
67
+
68
+ ## What is this?
69
+
70
+ rustfava is a fork of [Fava](https://github.com/beancount/fava) that replaces the Python beancount parser with [rustledger](https://github.com/rustledger/rustledger), compiled to WebAssembly for faster parsing and processing.
71
+
72
+ The desktop app bundles everything into a native application using [Tauri](https://tauri.app/), so you get a fast, lightweight app with no dependencies.
73
+
74
+ ## Links
75
+
76
+ - **Website**: https://rustledger.github.io/rustfava/
77
+ - **Documentation**: https://rustledger.github.io/rustfava/docs/
78
+ - **rustledger**: https://github.com/rustledger/rustledger
79
+
80
+ ## License
81
+
82
+ MIT License - see [LICENSE](LICENSE) for details.
@@ -9,8 +9,6 @@ from os import walk
9
9
  from pathlib import Path
10
10
  from typing import TYPE_CHECKING
11
11
 
12
- from babel.messages.mofile import write_mo
13
- from babel.messages.pofile import read_po
14
12
  from setuptools import build_meta
15
13
  from setuptools.build_meta import get_requires_for_build_editable
16
14
  from setuptools.build_meta import get_requires_for_build_sdist
@@ -69,6 +67,10 @@ def _compile_frontend() -> None:
69
67
 
70
68
  def _compile_translations() -> None:
71
69
  """Compile the translations from .po to .mo (if changed or missing)."""
70
+ # Lazy import to avoid requiring Babel for metadata preparation
71
+ from babel.messages.mofile import write_mo
72
+ from babel.messages.pofile import read_po
73
+
72
74
  for source in Path().glob("src/rustfava/translations/**/messages.po"):
73
75
  target = source.parent / "messages.mo"
74
76
  if (
@@ -0,0 +1,129 @@
1
+ # Deploying with Docker
2
+
3
+ ## Quick Start (Pre-built Image)
4
+
5
+ The easiest way to run rustfava with Docker is using the pre-built image from GitHub Container Registry:
6
+
7
+ ```bash
8
+ docker run -p 5000:5000 -v /path/to/ledger:/data ghcr.io/rustledger/rustfava /data/main.beancount
9
+ ```
10
+
11
+ Then visit http://localhost:5000.
12
+
13
+ ## Building Your Own Image
14
+
15
+ The Dockerfile in this directory allows you to build a custom rustfava image.
16
+
17
+ ### Building
18
+
19
+ ```bash
20
+ docker build -t rustfava .
21
+ ```
22
+
23
+ To incorporate a new version of rustfava, use the `--no-cache` flag:
24
+
25
+ ```bash
26
+ docker build --no-cache -t rustfava .
27
+ ```
28
+
29
+ ### Running
30
+
31
+ ```bash
32
+ docker run --detach --name="rustfava" --publish 5000:5000 \
33
+ --volume $(pwd)/ledger.beancount:/data/ledger.beancount \
34
+ rustfava /data/ledger.beancount
35
+ ```
36
+
37
+ Arguments explained:
38
+
39
+ - `--detach`: Run in the background as a daemon
40
+ - `--name`: Name for the container instance
41
+ - `--publish`: Expose container port 5000 to localhost:5000
42
+ - `--volume`: Mount your beancount file into the container
43
+
44
+ Visit http://localhost:5000 to access rustfava.
45
+
46
+ ## Advanced Deployment
47
+
48
+ For production deployments with authentication and HTTPS, see the following sections.
49
+
50
+ ### Reverse Proxy with Authentication
51
+
52
+ For a secure, authenticated deployment, use a reverse proxy like nginx or Caddy with OAuth2 authentication.
53
+
54
+ Example with [oauth2-proxy](https://github.com/oauth2-proxy/oauth2-proxy):
55
+
56
+ ```bash
57
+ # Run rustfava
58
+ docker run --detach --name="rustfava" \
59
+ --volume $(pwd)/ledger:/data \
60
+ ghcr.io/rustledger/rustfava /data/main.beancount
61
+
62
+ # Run oauth2-proxy in front
63
+ docker run --detach --name="rustfava-auth" \
64
+ --link rustfava \
65
+ --publish 4180:4180 \
66
+ quay.io/oauth2-proxy/oauth2-proxy \
67
+ --upstream="http://rustfava:5000" \
68
+ --provider=google \
69
+ --client-id="YOUR_CLIENT_ID" \
70
+ --client-secret="YOUR_CLIENT_SECRET" \
71
+ --cookie-secret="YOUR_COOKIE_SECRET" \
72
+ --email-domain="yourdomain.com"
73
+ ```
74
+
75
+ ### HTTPS with Let's Encrypt
76
+
77
+ For automatic HTTPS certificates, use [Caddy](https://caddyserver.com/) as a reverse proxy:
78
+
79
+ ```yaml
80
+ # docker-compose.yml
81
+ services:
82
+ rustfava:
83
+ image: ghcr.io/rustledger/rustfava
84
+ command: /data/main.beancount
85
+ volumes:
86
+ - ./ledger:/data
87
+
88
+ caddy:
89
+ image: caddy:2
90
+ ports:
91
+ - "80:80"
92
+ - "443:443"
93
+ volumes:
94
+ - ./Caddyfile:/etc/caddy/Caddyfile
95
+ - caddy_data:/data
96
+
97
+ volumes:
98
+ caddy_data:
99
+ ```
100
+
101
+ ```
102
+ # Caddyfile
103
+ your-domain.com {
104
+ reverse_proxy rustfava:5000
105
+ }
106
+ ```
107
+
108
+ Caddy automatically obtains and renews Let's Encrypt certificates.
109
+
110
+ ### Docker Compose Example
111
+
112
+ A complete example with persistent data:
113
+
114
+ ```yaml
115
+ # docker-compose.yml
116
+ services:
117
+ rustfava:
118
+ image: ghcr.io/rustledger/rustfava
119
+ command: /data/main.beancount
120
+ ports:
121
+ - "5000:5000"
122
+ volumes:
123
+ - ./ledger:/data
124
+ restart: unless-stopped
125
+ ```
126
+
127
+ ```bash
128
+ docker compose up -d
129
+ ```
@@ -0,0 +1,102 @@
1
+ # vim: set ft=python:
2
+ """Pyinstaller spec file for building a binary from rustfava's cli.py
3
+
4
+ This spec works without pip installing rustfava - it uses the source directly.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import os
10
+ import sys
11
+ from pathlib import Path
12
+
13
+ from PyInstaller.utils.hooks import collect_data_files
14
+ from PyInstaller.utils.hooks import collect_submodules
15
+
16
+ # Get the project root (parent of contrib/)
17
+ spec_dir = Path(SPECPATH)
18
+ project_root = spec_dir.parent
19
+ src_dir = project_root / "src"
20
+ rustfava_dir = src_dir / "rustfava"
21
+
22
+ # Add src/ to path so PyInstaller can find rustfava
23
+ sys.path.insert(0, str(src_dir))
24
+
25
+ # Collect data files from source directory
26
+ datas = []
27
+
28
+ # Static files (CSS, JS, etc.)
29
+ static_dir = rustfava_dir / "static"
30
+ if static_dir.exists():
31
+ for f in static_dir.rglob("*"):
32
+ if f.is_file():
33
+ rel_path = f.relative_to(rustfava_dir)
34
+ datas.append((str(f), f"rustfava/{rel_path.parent}"))
35
+
36
+ # Templates
37
+ templates_dir = rustfava_dir / "templates"
38
+ if templates_dir.exists():
39
+ for f in templates_dir.rglob("*"):
40
+ if f.is_file():
41
+ rel_path = f.relative_to(rustfava_dir)
42
+ datas.append((str(f), f"rustfava/{rel_path.parent}"))
43
+
44
+ # Translations (.mo files)
45
+ translations_dir = rustfava_dir / "translations"
46
+ if translations_dir.exists():
47
+ for f in translations_dir.rglob("*.mo"):
48
+ rel_path = f.relative_to(rustfava_dir)
49
+ datas.append((str(f), f"rustfava/{rel_path.parent}"))
50
+
51
+ # WASM file for rustledger
52
+ wasm_file = rustfava_dir / "rustledger" / "rustledger-wasi.wasm"
53
+ if wasm_file.exists():
54
+ datas.append((str(wasm_file), "rustfava/rustledger"))
55
+
56
+ # Help files
57
+ help_dir = rustfava_dir / "help"
58
+ if help_dir.exists():
59
+ for f in help_dir.rglob("*"):
60
+ if f.is_file():
61
+ rel_path = f.relative_to(rustfava_dir)
62
+ datas.append((str(f), f"rustfava/{rel_path.parent}"))
63
+
64
+ # Hidden imports
65
+ hiddenimports = [
66
+ "rustfava",
67
+ "rustfava.application",
68
+ "rustfava.cli",
69
+ "rustfava.core",
70
+ "rustfava.rustledger",
71
+ "rustfava.serialisation",
72
+ ]
73
+
74
+ # Optionally add beancount for legacy plugin support
75
+ try:
76
+ hiddenimports += collect_submodules("beancount")
77
+ datas += collect_data_files("beancount")
78
+ except Exception:
79
+ pass
80
+
81
+ a = Analysis(
82
+ [str(rustfava_dir / "cli.py")],
83
+ pathex=[str(src_dir)],
84
+ datas=datas,
85
+ hiddenimports=hiddenimports,
86
+ )
87
+
88
+ pyz = PYZ(
89
+ a.pure,
90
+ a.zipped_data,
91
+ )
92
+
93
+ exe = EXE(
94
+ pyz,
95
+ a.scripts,
96
+ a.binaries,
97
+ a.zipfiles,
98
+ a.datas,
99
+ [],
100
+ name="rustfava",
101
+ upx=True,
102
+ )
@@ -13,6 +13,11 @@
13
13
  "name": "binaries/rustfava-server",
14
14
  "sidecar": true,
15
15
  "args": true
16
+ },
17
+ {
18
+ "name": "rustfava",
19
+ "cmd": "rustfava",
20
+ "args": true
16
21
  }
17
22
  ]
18
23
  },
@@ -39,8 +39,8 @@ fn get_example_file_path(app: AppHandle) -> Result<String, String> {
39
39
  let resource_dir = app.path().resource_dir()
40
40
  .map_err(|e| format!("Failed to get resource dir: {}", e))?;
41
41
 
42
- // Try bundled resource first
43
- let bundled_path = resource_dir.join("examples").join("example.beancount");
42
+ // Try bundled resource first (copied to resources root by Tauri)
43
+ let bundled_path = resource_dir.join("example.beancount");
44
44
  if bundled_path.exists() {
45
45
  return Ok(bundled_path.to_string_lossy().to_string());
46
46
  }
@@ -115,16 +115,8 @@ fn open_file(
115
115
  // Find a free port
116
116
  let port = find_free_port();
117
117
 
118
- // Spawn the sidecar binary
119
- let sidecar = app
120
- .shell()
121
- .sidecar("rustfava-server")
122
- .map_err(|e| format!("Failed to create sidecar command: {}", e))?
123
- .args([&path, "-p", &port.to_string()]);
124
-
125
- let (mut _rx, child) = sidecar
126
- .spawn()
127
- .map_err(|e| format!("Failed to spawn sidecar: {}", e))?;
118
+ // Try sidecar first (bundled releases), then fall back to PATH (NixOS/system install)
119
+ let child = spawn_rustfava_server(&app, &path, port)?;
128
120
 
129
121
  // Generate tab ID and store
130
122
  let tab_id = generate_id(&state, "tab");
@@ -147,6 +139,29 @@ fn open_file(
147
139
  }))
148
140
  }
149
141
 
142
+ /// Spawn rustfava server - tries sidecar first, then falls back to PATH
143
+ fn spawn_rustfava_server(app: &AppHandle, path: &str, port: u16) -> Result<CommandChild, String> {
144
+ // Try bundled sidecar first (for AppImage/DMG/MSI releases)
145
+ if let Ok(sidecar) = app.shell().sidecar("rustfava-server") {
146
+ if let Ok((_, child)) = sidecar.args([path, "-p", &port.to_string()]).spawn() {
147
+ return Ok(child);
148
+ }
149
+ }
150
+
151
+ // Fall back to rustfava-server from PATH (for NixOS flake installs)
152
+ // The flake creates symlinks without the target triple suffix
153
+ let command = app
154
+ .shell()
155
+ .command("rustfava-server")
156
+ .args([path, "-p", &port.to_string()]);
157
+
158
+ let (_, child) = command
159
+ .spawn()
160
+ .map_err(|e| format!("Failed to spawn rustfava-server: {}. Make sure the desktop app is properly installed.", e))?;
161
+
162
+ Ok(child)
163
+ }
164
+
150
165
  /// Close a tab and kill its server
151
166
  #[tauri::command]
152
167
  fn close_tab(tab_id: String, state: State<AppState>) -> Result<(), String> {
@@ -29,6 +29,9 @@
29
29
  "bundle": {
30
30
  "active": true,
31
31
  "targets": "all",
32
+ "resources": [
33
+ "../../contrib/examples/example.beancount"
34
+ ],
32
35
  "icon": [
33
36
  "icons/32x32.png",
34
37
  "icons/128x128.png",
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": "0.1.2",
3
+ "x86_64-linux": {
4
+ "url": "https://github.com/rustledger/rustfava/releases/download/v0.1.2/rustfava-desktop-x86_64-unknown-linux-gnu.tar.gz",
5
+ "hash": "sha256-+ZWYhww1/XGlEh9ym+XG4nOiLP0qnZo5220zxtTTjp8="
6
+ }
7
+ }
@@ -0,0 +1,92 @@
1
+ # Deployment
2
+
3
+ There are several ways to deploy rustfava depending on your needs.
4
+
5
+ ## Desktop App
6
+
7
+ For personal use, the [desktop app](https://github.com/rustledger/rustfava/releases) is the simplest option. It runs entirely locally with no server setup required.
8
+
9
+ ## Docker
10
+
11
+ For server deployments, Docker is recommended:
12
+
13
+ ```bash
14
+ docker run -p 5000:5000 -v /path/to/ledger:/data ghcr.io/rustledger/rustfava /data/main.beancount
15
+ ```
16
+
17
+ For advanced Docker configurations (authentication, HTTPS, docker-compose), see the [Docker deployment guide](../contrib/docker/README.md).
18
+
19
+ ## Systemd Service
20
+
21
+ To run rustfava as a system service on Linux:
22
+
23
+ ```ini
24
+ # /etc/systemd/system/rustfava.service
25
+ [Unit]
26
+ Description=rustfava Web UI for Beancount
27
+ After=network.target
28
+
29
+ [Service]
30
+ Type=simple
31
+ ExecStart=/usr/bin/rustfava --host 127.0.0.1 --port 5000 /path/to/main.beancount
32
+ User=your-user
33
+ Restart=on-failure
34
+
35
+ [Install]
36
+ WantedBy=multi-user.target
37
+ ```
38
+
39
+ Then:
40
+
41
+ ```bash
42
+ sudo systemctl enable rustfava
43
+ sudo systemctl start rustfava
44
+ ```
45
+
46
+ ## Reverse Proxy
47
+
48
+ ### Apache
49
+
50
+ ```apache
51
+ ProxyPass "/rustfava" "http://localhost:5000/rustfava"
52
+ ProxyPassReverse "/rustfava" "http://localhost:5000/rustfava"
53
+ ```
54
+
55
+ Run rustfava with the `--prefix` option:
56
+
57
+ ```bash
58
+ rustfava --prefix /rustfava /path/to/main.beancount
59
+ ```
60
+
61
+ ### Nginx
62
+
63
+ ```nginx
64
+ location /rustfava/ {
65
+ proxy_pass http://127.0.0.1:5000/rustfava/;
66
+ proxy_set_header Host $host;
67
+ proxy_set_header X-Real-IP $remote_addr;
68
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
69
+ proxy_set_header X-Forwarded-Proto $scheme;
70
+ }
71
+ ```
72
+
73
+ ### Caddy
74
+
75
+ ```
76
+ your-domain.com {
77
+ reverse_proxy localhost:5000
78
+ }
79
+ ```
80
+
81
+ Caddy automatically handles HTTPS with Let's Encrypt.
82
+
83
+ ## Security Considerations
84
+
85
+ When exposing rustfava to the internet:
86
+
87
+ 1. **Use HTTPS** - Never expose plain HTTP to the public internet
88
+ 2. **Add authentication** - Use a reverse proxy with OAuth2 or basic auth
89
+ 3. **Restrict access** - Use firewall rules to limit access to trusted IPs
90
+ 4. **Keep updated** - Regularly update rustfava for security patches
91
+
92
+ See [SECURITY.md](../SECURITY.md) for more security best practices.
@@ -0,0 +1,35 @@
1
+ # Welcome to rustfava!
2
+
3
+ rustfava is a web interface for double-entry bookkeeping, powered by
4
+ [rustledger](https://github.com/rustledger/rustledger), a Rust-based parser for
5
+ the Beancount file format compiled to WebAssembly for fast processing.
6
+
7
+ rustfava is a fork of [Fava](https://beancount.github.io/fava/) that replaces
8
+ the Python Beancount parser with rustledger for improved performance. Your
9
+ existing Beancount files are fully compatible.
10
+
11
+ ![rustfava dashboard](screenshot.png)
12
+
13
+ If you are new to rustfava or Beancount-format files, begin with the
14
+ [Getting Started](usage.md) guide.
15
+
16
+ ## Quick Start
17
+
18
+ ### Desktop App (Recommended)
19
+
20
+ Download the desktop app from [GitHub Releases](https://github.com/rustledger/rustfava/releases) - no installation required, just double-click to run.
21
+
22
+ ### Command Line
23
+
24
+ ```bash
25
+ uv tool install rustfava
26
+ rustfava ledger.beancount
27
+ ```
28
+
29
+ Then visit [http://localhost:5000](http://localhost:5000).
30
+
31
+ ### Docker
32
+
33
+ ```bash
34
+ docker run -p 5000:5000 -v /path/to/ledger:/data ghcr.io/rustledger/rustfava /data/main.beancount
35
+ ```
Binary file