rustfava 0.1.0__tar.gz → 0.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (618) hide show
  1. rustfava-0.1.1/PKG-INFO +123 -0
  2. rustfava-0.1.1/README.md +72 -0
  3. rustfava-0.1.1/contrib/docker/README.md +129 -0
  4. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/capabilities/default.json +5 -0
  5. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/src/main.rs +27 -12
  6. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/tauri.conf.json +3 -0
  7. rustfava-0.1.1/docs/deployment.md +92 -0
  8. rustfava-0.1.1/docs/index.md +35 -0
  9. rustfava-0.1.1/docs/screenshot.png +0 -0
  10. rustfava-0.1.1/docs/upstream-sync.md +128 -0
  11. rustfava-0.1.1/docs/usage.md +84 -0
  12. {rustfava-0.1.0 → rustfava-0.1.1}/flake.lock +1 -22
  13. rustfava-0.1.1/flake.nix +174 -0
  14. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/bun.lock +3 -0
  15. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/package.json +1 -0
  16. rustfava-0.1.1/frontend/src/extension-api.d.ts +45 -0
  17. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/extensions.ts +23 -48
  18. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/router.ts +11 -0
  19. rustfava-0.1.1/packaging/rpm/rustfava.spec +62 -0
  20. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/ext/portfolio_list/PortfolioList.js +4 -4
  21. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/ext/rustfava_ext_test/RustfavaExtTest.js +2 -2
  22. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/extensions.md +4 -0
  23. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/app.js +4 -4
  24. rustfava-0.1.0/src/rustfava/static/beancount-VTTKRGSK.js → rustfava-0.1.1/src/rustfava/static/beancount-MH465CAD.js +2 -2
  25. rustfava-0.1.0/src/rustfava/static/chunk-V24TLQHT.js → rustfava-0.1.1/src/rustfava/static/chunk-P3BY4CCB.js +28 -23
  26. rustfava-0.1.0/src/rustfava/static/chunk-V24TLQHT.js.map → rustfava-0.1.1/src/rustfava/static/chunk-P3BY4CCB.js.map +2 -2
  27. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/bg/LC_MESSAGES/messages.mo +0 -0
  28. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/ca/LC_MESSAGES/messages.mo +0 -0
  29. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/de/LC_MESSAGES/messages.mo +0 -0
  30. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/es/LC_MESSAGES/messages.mo +0 -0
  31. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/fa/LC_MESSAGES/messages.mo +0 -0
  32. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/fr/LC_MESSAGES/messages.mo +0 -0
  33. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/ja/LC_MESSAGES/messages.mo +0 -0
  34. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/nl/LC_MESSAGES/messages.mo +0 -0
  35. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/pt/LC_MESSAGES/messages.mo +0 -0
  36. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/pt_BR/LC_MESSAGES/messages.mo +0 -0
  37. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/ru/LC_MESSAGES/messages.mo +0 -0
  38. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/sk/LC_MESSAGES/messages.mo +0 -0
  39. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/sv/LC_MESSAGES/messages.mo +0 -0
  40. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/uk/LC_MESSAGES/messages.mo +0 -0
  41. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/zh/LC_MESSAGES/messages.mo +0 -0
  42. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/zh_Hant_TW/LC_MESSAGES/messages.mo +0 -0
  43. rustfava-0.1.1/src/rustfava.egg-info/PKG-INFO +123 -0
  44. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava.egg-info/SOURCES.txt +8 -5
  45. rustfava-0.1.0/PKG-INFO +0 -102
  46. rustfava-0.1.0/README.md +0 -51
  47. rustfava-0.1.0/RUSTLEDGER_WASI_SPEC.md +0 -451
  48. rustfava-0.1.0/contrib/docker/README.md +0 -249
  49. rustfava-0.1.0/docs/deployment.md +0 -35
  50. rustfava-0.1.0/docs/index.md +0 -24
  51. rustfava-0.1.0/docs/usage.md +0 -53
  52. rustfava-0.1.0/flake.nix +0 -133
  53. rustfava-0.1.0/src/rustfava.egg-info/PKG-INFO +0 -102
  54. {rustfava-0.1.0 → rustfava-0.1.1}/.dev-bin/rustfava +0 -0
  55. {rustfava-0.1.0 → rustfava-0.1.1}/.dockerignore +0 -0
  56. {rustfava-0.1.0 → rustfava-0.1.1}/AUTHORS +0 -0
  57. {rustfava-0.1.0 → rustfava-0.1.1}/CONTRIBUTING.md +0 -0
  58. {rustfava-0.1.0 → rustfava-0.1.1}/Dockerfile +0 -0
  59. {rustfava-0.1.0 → rustfava-0.1.1}/LICENSE +0 -0
  60. {rustfava-0.1.0 → rustfava-0.1.1}/MANIFEST.in +0 -0
  61. {rustfava-0.1.0 → rustfava-0.1.1}/SECURITY.md +0 -0
  62. {rustfava-0.1.0 → rustfava-0.1.1}/_build_backend.py +0 -0
  63. {rustfava-0.1.0 → rustfava-0.1.1}/biome.json +0 -0
  64. {rustfava-0.1.0 → rustfava-0.1.1}/contrib/docker/Dockerfile +0 -0
  65. {rustfava-0.1.0 → rustfava-0.1.1}/contrib/examples/budgets-example.beancount +0 -0
  66. {rustfava-0.1.0 → rustfava-0.1.1}/contrib/examples/example.beancount +0 -0
  67. {rustfava-0.1.0 → rustfava-0.1.1}/contrib/examples/huge-example.beancount +0 -0
  68. {rustfava-0.1.0 → rustfava-0.1.1}/contrib/icon.svg +0 -0
  69. {rustfava-0.1.0 → rustfava-0.1.1}/contrib/pyinstaller_spec.spec +0 -0
  70. {rustfava-0.1.0 → rustfava-0.1.1}/contrib/scripts.py +0 -0
  71. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/.dev-bin/rustfava +0 -0
  72. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/README.md +0 -0
  73. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/build-sidecar.sh +0 -0
  74. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/bun.lock +0 -0
  75. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/index.html +0 -0
  76. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/package.json +0 -0
  77. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/scripts/ensure-rustledger.ts +0 -0
  78. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src/index.html +0 -0
  79. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src/logo.svg +0 -0
  80. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src/main.ts +0 -0
  81. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src/styles.css +0 -0
  82. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/Cargo.lock +0 -0
  83. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/Cargo.toml +0 -0
  84. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/build.rs +0 -0
  85. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/gen/schemas/acl-manifests.json +0 -0
  86. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/gen/schemas/capabilities.json +0 -0
  87. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/gen/schemas/desktop-schema.json +0 -0
  88. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/gen/schemas/linux-schema.json +0 -0
  89. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/icons/128x128.png +0 -0
  90. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/icons/128x128@2x.png +0 -0
  91. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/icons/32x32.png +0 -0
  92. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/icons/icon.icns +0 -0
  93. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/icons/icon.ico +0 -0
  94. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/icons/icon.png +0 -0
  95. {rustfava-0.1.0 → rustfava-0.1.1}/desktop/vite.config.ts +0 -0
  96. {rustfava-0.1.0 → rustfava-0.1.1}/docs/api.md +0 -0
  97. {rustfava-0.1.0 → rustfava-0.1.1}/docs/changelog.md +0 -0
  98. {rustfava-0.1.0 → rustfava-0.1.1}/docs/development.md +0 -0
  99. {rustfava-0.1.0 → rustfava-0.1.1}/docs/logo.svg +0 -0
  100. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/.npmrc +0 -0
  101. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/build.ts +0 -0
  102. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/base.css +0 -0
  103. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/charts.css +0 -0
  104. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/components.css +0 -0
  105. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/editor.css +0 -0
  106. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/fonts.css +0 -0
  107. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/grid.css +0 -0
  108. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/help.css +0 -0
  109. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/journal-table.css +0 -0
  110. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/layout.css +0 -0
  111. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/notifications.css +0 -0
  112. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/style.css +0 -0
  113. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/tree-table.css +0 -0
  114. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/deno.json +0 -0
  115. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/eslint.config.js +0 -0
  116. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/prettier.config.js +0 -0
  117. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/setup.js +0 -0
  118. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/AutocompleteInput.svelte +0 -0
  119. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/ambient.d.ts +0 -0
  120. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/api/index.ts +0 -0
  121. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/api/validators.ts +0 -0
  122. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/app.ts +0 -0
  123. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/Axis.svelte +0 -0
  124. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/BarChart.svelte +0 -0
  125. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/Chart.svelte +0 -0
  126. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/ChartLegend.svelte +0 -0
  127. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/ChartSwitcher.svelte +0 -0
  128. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/ConversionAndInterval.svelte +0 -0
  129. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/HierarchyContainer.svelte +0 -0
  130. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/Icicle.svelte +0 -0
  131. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/LineChart.svelte +0 -0
  132. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/ModeSwitch.svelte +0 -0
  133. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/ScatterPlot.svelte +0 -0
  134. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/SelectCombobox.svelte +0 -0
  135. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/Sunburst.svelte +0 -0
  136. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/Treemap.svelte +0 -0
  137. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/bar.ts +0 -0
  138. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/context.ts +0 -0
  139. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/helpers.ts +0 -0
  140. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/hierarchy.ts +0 -0
  141. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/index.ts +0 -0
  142. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/line.ts +0 -0
  143. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/query-charts.ts +0 -0
  144. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/scatterplot.ts +0 -0
  145. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/tooltip.ts +0 -0
  146. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/clipboard.ts +0 -0
  147. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/base-extensions.ts +0 -0
  148. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/beancount-autocomplete.ts +0 -0
  149. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/beancount-fold.ts +0 -0
  150. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/beancount-format.ts +0 -0
  151. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/beancount-highlight.ts +0 -0
  152. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/beancount-indent.ts +0 -0
  153. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/beancount-language.ts +0 -0
  154. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/beancount-snippets.ts +0 -0
  155. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/beancount.ts +0 -0
  156. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/bql-autocomplete.ts +0 -0
  157. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/bql-grammar.ts +0 -0
  158. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/bql-highlight.ts +0 -0
  159. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/bql-language.ts +0 -0
  160. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/bql-stream-parser.ts +0 -0
  161. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/bql.ts +0 -0
  162. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/dom.ts +0 -0
  163. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/editor-transactions.ts +0 -0
  164. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/ruler.ts +0 -0
  165. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/tree-sitter-beancount.wasm +0 -0
  166. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/tree-sitter-parser.ts +0 -0
  167. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/types.ts +0 -0
  168. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/editor/DeleteButton.svelte +0 -0
  169. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/editor/DocumentPreviewEditor.svelte +0 -0
  170. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/editor/SaveButton.svelte +0 -0
  171. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/editor/SliceEditor.svelte +0 -0
  172. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entries/amount.ts +0 -0
  173. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entries/cost.ts +0 -0
  174. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entries/index.ts +0 -0
  175. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entries/metadata.ts +0 -0
  176. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entries/position.ts +0 -0
  177. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entry-forms/AccountInput.svelte +0 -0
  178. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entry-forms/AddMetadataButton.svelte +0 -0
  179. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entry-forms/Balance.svelte +0 -0
  180. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entry-forms/Entry.svelte +0 -0
  181. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entry-forms/EntryMetadata.svelte +0 -0
  182. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entry-forms/Note.svelte +0 -0
  183. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entry-forms/Posting.svelte +0 -0
  184. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entry-forms/Transaction.svelte +0 -0
  185. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/format.ts +0 -0
  186. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/helpers.ts +0 -0
  187. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/i18n.ts +0 -0
  188. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/keyboard-shortcuts.ts +0 -0
  189. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/account.ts +0 -0
  190. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/array.ts +0 -0
  191. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/dom.ts +0 -0
  192. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/equals.ts +0 -0
  193. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/errors.ts +0 -0
  194. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/fetch.ts +0 -0
  195. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/focus.ts +0 -0
  196. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/fuzzy.ts +0 -0
  197. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/interval.ts +0 -0
  198. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/iso4217.ts +0 -0
  199. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/json.ts +0 -0
  200. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/objects.ts +0 -0
  201. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/paths.ts +0 -0
  202. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/regex.ts +0 -0
  203. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/result.ts +0 -0
  204. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/set.ts +0 -0
  205. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/sources.ts +0 -0
  206. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/store.ts +0 -0
  207. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/tree.ts +0 -0
  208. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/validation.ts +0 -0
  209. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/log.ts +0 -0
  210. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/modals/AddEntry.svelte +0 -0
  211. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/modals/Context.svelte +0 -0
  212. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/modals/DocumentUpload.svelte +0 -0
  213. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/modals/EntryContextBalances.svelte +0 -0
  214. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/modals/EntryContextLocation.svelte +0 -0
  215. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/modals/Export.svelte +0 -0
  216. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/modals/ModalBase.svelte +0 -0
  217. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/modals/Modals.svelte +0 -0
  218. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/modals/document-upload.ts +0 -0
  219. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/notifications.ts +0 -0
  220. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/ReportLoadError.svelte +0 -0
  221. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/accounts/AccountReport.svelte +0 -0
  222. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/accounts/index.ts +0 -0
  223. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/commodities/Commodities.svelte +0 -0
  224. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/commodities/CommodityTable.svelte +0 -0
  225. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/commodities/index.ts +0 -0
  226. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/documents/Accounts.svelte +0 -0
  227. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/documents/DocumentPreview.svelte +0 -0
  228. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/documents/Documents.svelte +0 -0
  229. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/documents/Table.svelte +0 -0
  230. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/documents/index.ts +0 -0
  231. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/documents/stores.ts +0 -0
  232. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/editor/AppMenu.svelte +0 -0
  233. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/editor/AppMenuItem.svelte +0 -0
  234. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/editor/AppMenuSubItem.svelte +0 -0
  235. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/editor/Editor.svelte +0 -0
  236. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/editor/EditorMenu.svelte +0 -0
  237. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/editor/Key.svelte +0 -0
  238. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/editor/Sources.svelte +0 -0
  239. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/editor/index.ts +0 -0
  240. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/editor/stores.ts +0 -0
  241. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/errors/Errors.svelte +0 -0
  242. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/errors/index.ts +0 -0
  243. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/events/EventTable.svelte +0 -0
  244. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/events/Events.svelte +0 -0
  245. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/events/index.ts +0 -0
  246. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/holdings/Holdings.svelte +0 -0
  247. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/holdings/index.ts +0 -0
  248. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/import/Extract.svelte +0 -0
  249. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/import/FileList.svelte +0 -0
  250. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/import/Import.svelte +0 -0
  251. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/import/ImportFileUpload.svelte +0 -0
  252. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/import/index.ts +0 -0
  253. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/journal/Journal.svelte +0 -0
  254. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/journal/JournalFilters.svelte +0 -0
  255. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/journal/JournalHeaders.svelte +0 -0
  256. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/journal/JournalTable.svelte +0 -0
  257. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/journal/click_handler.ts +0 -0
  258. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/journal/index.ts +0 -0
  259. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/journal/sort.ts +0 -0
  260. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/options/Options.svelte +0 -0
  261. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/options/OptionsTable.svelte +0 -0
  262. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/options/index.ts +0 -0
  263. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/query/Query.svelte +0 -0
  264. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/query/QueryBox.svelte +0 -0
  265. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/query/QueryEditor.svelte +0 -0
  266. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/query/QueryLinks.svelte +0 -0
  267. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/query/QueryTable.svelte +0 -0
  268. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/query/ReadonlyQueryEditor.svelte +0 -0
  269. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/query/index.ts +0 -0
  270. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/query/query_table.ts +0 -0
  271. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/route.svelte.ts +0 -0
  272. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/route.ts +0 -0
  273. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/routes.ts +0 -0
  274. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/statistics/EntriesByType.svelte +0 -0
  275. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/statistics/Statistics.svelte +0 -0
  276. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/statistics/UpdateActivity.svelte +0 -0
  277. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/statistics/index.ts +0 -0
  278. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/tree_reports/BalanceSheet.svelte +0 -0
  279. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/tree_reports/IncomeStatement.svelte +0 -0
  280. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/tree_reports/TrialBalance.svelte +0 -0
  281. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/tree_reports/index.ts +0 -0
  282. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/AccountIndicator.svelte +0 -0
  283. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/AccountPageTitle.svelte +0 -0
  284. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/AccountSelector.svelte +0 -0
  285. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/AsideContents.svelte +0 -0
  286. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/AsideWithButton.svelte +0 -0
  287. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/FilterForm.svelte +0 -0
  288. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/Header.svelte +0 -0
  289. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/HeaderAndAside.svelte +0 -0
  290. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/HeaderIcon.svelte +0 -0
  291. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/PageTitle.svelte +0 -0
  292. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/SidebarLink.svelte +0 -0
  293. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/index.ts +0 -0
  294. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/page-title.ts +0 -0
  295. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sort/SortHeader.svelte +0 -0
  296. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sort/index.ts +0 -0
  297. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sort/sortable-table.ts +0 -0
  298. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/accounts.ts +0 -0
  299. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/chart.ts +0 -0
  300. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/color_scheme.ts +0 -0
  301. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/editor.ts +0 -0
  302. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/fava_options.ts +0 -0
  303. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/filters.ts +0 -0
  304. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/format.ts +0 -0
  305. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/index.ts +0 -0
  306. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/journal.ts +0 -0
  307. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/mtime.ts +0 -0
  308. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/options.ts +0 -0
  309. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/query.ts +0 -0
  310. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/url.ts +0 -0
  311. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/svelte-custom-elements.ts +0 -0
  312. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/tree-table/AccountCell.svelte +0 -0
  313. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/tree-table/AccountCellHeader.svelte +0 -0
  314. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/tree-table/Diff.svelte +0 -0
  315. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/tree-table/IntervalTreeTable.svelte +0 -0
  316. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/tree-table/IntervalTreeTableNode.svelte +0 -0
  317. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/tree-table/TreeTable.svelte +0 -0
  318. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/tree-table/TreeTableNode.svelte +0 -0
  319. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/tree-table/helpers.ts +0 -0
  320. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/tree-table/tree-table-custom-element.ts +0 -0
  321. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/stylelint.config.js +0 -0
  322. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/sync-pre-commit.ts +0 -0
  323. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/AutocompleteInput.test.ts +0 -0
  324. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/account.test.ts +0 -0
  325. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/charts.test.ts +0 -0
  326. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/dom.ts +0 -0
  327. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/editor.test.ts +0 -0
  328. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/end-to-end-validation.test.ts +0 -0
  329. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/entries.test.ts +0 -0
  330. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/format.test.ts +0 -0
  331. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/fuzzy.test.ts +0 -0
  332. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/helpers.ts +0 -0
  333. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/misc.test.ts +0 -0
  334. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/parser.test.ts +0 -0
  335. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/paths.test.ts +0 -0
  336. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/result.test.ts +0 -0
  337. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/sources.test.ts +0 -0
  338. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/store.test.ts +0 -0
  339. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/tree.test.ts +0 -0
  340. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/urls.test.ts +0 -0
  341. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/validation.test.ts +0 -0
  342. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test.ts +0 -0
  343. {rustfava-0.1.0 → rustfava-0.1.1}/frontend/tsconfig.json +0 -0
  344. {rustfava-0.1.0 → rustfava-0.1.1}/justfile +0 -0
  345. {rustfava-0.1.0 → rustfava-0.1.1}/mkdocs.yml +0 -0
  346. {rustfava-0.1.0 → rustfava-0.1.1}/pyproject.toml +0 -0
  347. {rustfava-0.1.0 → rustfava-0.1.1}/setup.cfg +0 -0
  348. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/__init__.py +0 -0
  349. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/_ctx_globals_class.py +0 -0
  350. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/api_models.py +0 -0
  351. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/application.py +0 -0
  352. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/__init__.py +0 -0
  353. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/abc.py +0 -0
  354. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/account.py +0 -0
  355. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/create.py +0 -0
  356. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/flags.py +0 -0
  357. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/funcs.py +0 -0
  358. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/helpers.py +0 -0
  359. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/ingest.py +0 -0
  360. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/load.py +0 -0
  361. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/prices.py +0 -0
  362. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/protocols.py +0 -0
  363. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/str.py +0 -0
  364. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/types.py +0 -0
  365. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/cli.py +0 -0
  366. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/context.py +0 -0
  367. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/__init__.py +0 -0
  368. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/accounts.py +0 -0
  369. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/attributes.py +0 -0
  370. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/budgets.py +0 -0
  371. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/charts.py +0 -0
  372. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/commodities.py +0 -0
  373. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/conversion.py +0 -0
  374. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/documents.py +0 -0
  375. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/extensions.py +0 -0
  376. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/fava_options.py +0 -0
  377. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/file.py +0 -0
  378. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/filters.py +0 -0
  379. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/group_entries.py +0 -0
  380. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/ingest.py +0 -0
  381. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/inventory.py +0 -0
  382. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/misc.py +0 -0
  383. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/module_base.py +0 -0
  384. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/number.py +0 -0
  385. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/query.py +0 -0
  386. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/query_shell.py +0 -0
  387. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/tree.py +0 -0
  388. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/watcher.py +0 -0
  389. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/ext/__init__.py +0 -0
  390. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/ext/auto_commit.py +0 -0
  391. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/ext/portfolio_list/__init__.py +0 -0
  392. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/ext/portfolio_list/templates/PortfolioList.html +0 -0
  393. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/ext/rustfava_ext_test/__init__.py +0 -0
  394. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/ext/rustfava_ext_test/templates/RustfavaExtTest.html +0 -0
  395. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/ext/rustfava_ext_test/templates/RustfavaExtTestInclude.html +0 -0
  396. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/__init__.py +0 -0
  397. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/_index.md +0 -0
  398. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/beancount_syntax.md +0 -0
  399. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/budgets.md +0 -0
  400. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/conversion.md +0 -0
  401. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/features.md +0 -0
  402. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/filters.md +0 -0
  403. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/import.md +0 -0
  404. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/options.md +0 -0
  405. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/helpers.py +0 -0
  406. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/internal_api.py +0 -0
  407. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/json_api.py +0 -0
  408. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/plugins/__init__.py +0 -0
  409. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/plugins/link_documents.py +0 -0
  410. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/plugins/tag_discovered_documents.py +0 -0
  411. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/py.typed +0 -0
  412. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/rustledger/__init__.py +0 -0
  413. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/rustledger/constants.py +0 -0
  414. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/rustledger/engine.py +0 -0
  415. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/rustledger/loader.py +0 -0
  416. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/rustledger/options.py +0 -0
  417. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/rustledger/query.py +0 -0
  418. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/rustledger/types.py +0 -0
  419. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/serialisation.py +0 -0
  420. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/app.css +0 -0
  421. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/app.css.map +0 -0
  422. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/app.js.map +0 -0
  423. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/beancount-JFV44ZVZ.css +0 -0
  424. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/beancount-JFV44ZVZ.css.map +0 -0
  425. /rustfava-0.1.0/src/rustfava/static/beancount-VTTKRGSK.js.map → /rustfava-0.1.1/src/rustfava/static/beancount-MH465CAD.js.map +0 -0
  426. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/bql-MGFRUMBP.js +0 -0
  427. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/bql-MGFRUMBP.js.map +0 -0
  428. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/chunk-E7ZF4ASL.js +0 -0
  429. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/chunk-E7ZF4ASL.js.map +0 -0
  430. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/favicon.ico +0 -0
  431. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-cyrillic-400-normal-BLAGXRCE.woff2 +0 -0
  432. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-cyrillic-500-normal-EN7JUAAW.woff2 +0 -0
  433. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-cyrillic-ext-400-normal-EX7VARTS.woff2 +0 -0
  434. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-cyrillic-ext-500-normal-ZDPTUPRR.woff2 +0 -0
  435. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-greek-400-normal-COGHKMOA.woff2 +0 -0
  436. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-greek-500-normal-4EN2PKZT.woff2 +0 -0
  437. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-greek-ext-400-normal-DYEQIJH7.woff2 +0 -0
  438. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-greek-ext-500-normal-SG73CVKQ.woff2 +0 -0
  439. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-latin-400-normal-NA3VLV7E.woff2 +0 -0
  440. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-latin-500-normal-YC77GFWD.woff2 +0 -0
  441. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-latin-ext-400-normal-DIKTZ5PW.woff2 +0 -0
  442. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-latin-ext-500-normal-ZWY4UO4V.woff2 +0 -0
  443. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-symbols2-400-normal-UITXT77Q.woff2 +0 -0
  444. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-symbols2-500-normal-VWPC2EFN.woff2 +0 -0
  445. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-cyrillic-400-normal-KLQMBCA6.woff2 +0 -0
  446. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-cyrillic-500-normal-NFG7UD6J.woff2 +0 -0
  447. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-cyrillic-ext-400-normal-GWO44OPC.woff2 +0 -0
  448. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-cyrillic-ext-500-normal-SP47E5SC.woff2 +0 -0
  449. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-greek-400-normal-UMQBTLC3.woff2 +0 -0
  450. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-greek-500-normal-4ZKHN4FQ.woff2 +0 -0
  451. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-greek-ext-400-normal-O2DVJAJZ.woff2 +0 -0
  452. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-greek-ext-500-normal-SK6GNWGO.woff2 +0 -0
  453. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-latin-400-normal-OYYTPMAV.woff2 +0 -0
  454. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-latin-500-normal-SMQPZW5A.woff2 +0 -0
  455. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-latin-ext-400-normal-OAUP3WK5.woff2 +0 -0
  456. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-latin-ext-500-normal-LY3YDR5Y.woff2 +0 -0
  457. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-vietnamese-400-normal-OBMQ72MR.woff2 +0 -0
  458. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-vietnamese-500-normal-Y4NZR5EU.woff2 +0 -0
  459. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-cyrillic-400-normal-TO22V6M3.woff2 +0 -0
  460. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-cyrillic-500-normal-OGBWWWYW.woff2 +0 -0
  461. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-cyrillic-ext-400-normal-XH44UCIA.woff2 +0 -0
  462. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-cyrillic-ext-500-normal-3Z6MMVM6.woff2 +0 -0
  463. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-greek-400-normal-OUXXUQWK.woff2 +0 -0
  464. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-greek-500-normal-JA2Z5UXO.woff2 +0 -0
  465. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-greek-ext-400-normal-WCDKMX7U.woff2 +0 -0
  466. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-greek-ext-500-normal-ZHVI4VKW.woff2 +0 -0
  467. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-latin-400-normal-QOGTXED5.woff2 +0 -0
  468. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-latin-500-normal-X57QEOLQ.woff2 +0 -0
  469. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-latin-ext-400-normal-QXC74NBF.woff2 +0 -0
  470. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-latin-ext-500-normal-QGOY7MTT.woff2 +0 -0
  471. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-vietnamese-400-normal-NPDCDTBA.woff2 +0 -0
  472. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-vietnamese-500-normal-M6PJKTR5.woff2 +0 -0
  473. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/tree-sitter-beancount-MLXFQBZ5.wasm +0 -0
  474. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/web-tree-sitter-RNOQ6E74.wasm +0 -0
  475. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/template_filters.py +0 -0
  476. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/templates/_journal_table.html +0 -0
  477. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/templates/_layout.html +0 -0
  478. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/templates/_query_table.html +0 -0
  479. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/templates/beancount_file +0 -0
  480. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/templates/help.html +0 -0
  481. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/templates/macros/_account_macros.html +0 -0
  482. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/templates/macros/_commodity_macros.html +0 -0
  483. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/bg/LC_MESSAGES/messages.po +0 -0
  484. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/ca/LC_MESSAGES/messages.po +0 -0
  485. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/de/LC_MESSAGES/messages.po +0 -0
  486. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/es/LC_MESSAGES/messages.po +0 -0
  487. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/fa/LC_MESSAGES/messages.po +0 -0
  488. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/fr/LC_MESSAGES/messages.po +0 -0
  489. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/ja/LC_MESSAGES/messages.po +0 -0
  490. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/nl/LC_MESSAGES/messages.po +0 -0
  491. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/pt/LC_MESSAGES/messages.po +0 -0
  492. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/pt_BR/LC_MESSAGES/messages.po +0 -0
  493. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/ru/LC_MESSAGES/messages.po +0 -0
  494. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/sk/LC_MESSAGES/messages.po +0 -0
  495. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/sv/LC_MESSAGES/messages.po +0 -0
  496. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/uk/LC_MESSAGES/messages.po +0 -0
  497. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/zh/LC_MESSAGES/messages.po +0 -0
  498. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/zh_Hant_TW/LC_MESSAGES/messages.po +0 -0
  499. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/util/__init__.py +0 -0
  500. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/util/date.py +0 -0
  501. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/util/excel.py +0 -0
  502. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/util/ranking.py +0 -0
  503. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/util/sets.py +0 -0
  504. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/util/unreachable.py +0 -0
  505. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava.egg-info/dependency_links.txt +0 -0
  506. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava.egg-info/entry_points.txt +0 -0
  507. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava.egg-info/requires.txt +0 -0
  508. {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava.egg-info/top_level.txt +0 -0
  509. {rustfava-0.1.0 → rustfava-0.1.1}/stubs/beangulp/__init__.pyi +0 -0
  510. {rustfava-0.1.0 → rustfava-0.1.1}/stubs/beangulp/cache.pyi +0 -0
  511. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__init__.py +0 -0
  512. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_application-test_download_journal +0 -0
  513. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_attributes-test_narrations.json +0 -0
  514. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_interval_totals-2.json +0 -0
  515. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_interval_totals.json +0 -0
  516. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_interval_totals_inverted-2.json +0 -0
  517. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_interval_totals_inverted.json +0 -0
  518. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_linechart_data-2.json +0 -0
  519. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_linechart_data-3.json +0 -0
  520. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_linechart_data-4.json +0 -0
  521. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_linechart_data.json +0 -0
  522. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_net_worth.json +0 -0
  523. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_net_worth_off_by_one-2.json +0 -0
  524. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_net_worth_off_by_one.json +0 -0
  525. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_file-test_render_entries +0 -0
  526. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_ingest-test_ingest_examplefile-2.json +0 -0
  527. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_ingest-test_ingest_examplefile.json +0 -0
  528. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_query_shell-test_query_balances +0 -0
  529. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_query_shell-test_query_to_file +0 -0
  530. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_query_shell-test_text_queries +0 -0
  531. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_tree-test_tree_cap +0 -0
  532. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_tree-test_tree_from_entries +0 -0
  533. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_tree-test_tree_from_entries-2 +0 -0
  534. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_internal_api-test_chart_api.json +0 -0
  535. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_internal_api-test_get_ledger_data.json +0 -0
  536. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-account_report_off_by_one.json +0 -0
  537. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-account_report_off_by_one_journal.json +0 -0
  538. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-balance_sheet.json +0 -0
  539. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-balance_sheet_with_cost.json +0 -0
  540. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-commodities.json +0 -0
  541. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-documents.json +0 -0
  542. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-events.json +0 -0
  543. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-income_statement.json +0 -0
  544. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-journal.json +0 -0
  545. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-narrations.json +0 -0
  546. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-options.json +0 -0
  547. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-statistics.json +0 -0
  548. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-trial_balance.json +0 -0
  549. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_context-2.json +0 -0
  550. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_context-3.json +0 -0
  551. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_context-4.json +0 -0
  552. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_context.json +0 -0
  553. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_errors +0 -0
  554. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_imports-2.json +0 -0
  555. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_imports.json +0 -0
  556. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_payee_accounts.json +0 -0
  557. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_payee_transaction.json +0 -0
  558. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_query_result-balances.json +0 -0
  559. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_query_result-help.json +0 -0
  560. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_query_result-journal.json +0 -0
  561. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_query_result-misc.json +0 -0
  562. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_query_result-sum.json +0 -0
  563. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_serialisation-test_deserialise_posting_and_format +0 -0
  564. {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_serialisation-test_serialise_entry_types.json +0 -0
  565. {rustfava-0.1.0 → rustfava-0.1.1}/tests/conftest.py +0 -0
  566. {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/edit-example.beancount +0 -0
  567. {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/errors.beancount +0 -0
  568. {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/example-balances.csv +0 -0
  569. {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/example-utf8-/360/237/246/201.txt" +0 -0
  570. {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/example.beancount +0 -0
  571. {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/extension-report-example.beancount +0 -0
  572. {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/import.beancount +0 -0
  573. {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/import.csv +0 -0
  574. {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/import_config.py +0 -0
  575. {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/import_config_with_duplicate_names.py +0 -0
  576. {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/invalid-unicode.beancount +0 -0
  577. {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/long-example.beancount +0 -0
  578. {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/off-by-one.beancount +0 -0
  579. {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/query-example.beancount +0 -0
  580. {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/receipt.pdf +0 -0
  581. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_application.py +0 -0
  582. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_beans.py +0 -0
  583. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_beans_str.py +0 -0
  584. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_build_backend.py +0 -0
  585. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_cli.py +0 -0
  586. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core.py +0 -0
  587. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_accounts.py +0 -0
  588. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_attributes.py +0 -0
  589. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_budgets.py +0 -0
  590. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_charts.py +0 -0
  591. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_commodities.py +0 -0
  592. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_conversion.py +0 -0
  593. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_documents.py +0 -0
  594. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_fava_options.py +0 -0
  595. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_file.py +0 -0
  596. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_filters.py +0 -0
  597. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_ingest.py +0 -0
  598. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_inventory.py +0 -0
  599. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_misc.py +0 -0
  600. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_number.py +0 -0
  601. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_query_shell.py +0 -0
  602. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_tree.py +0 -0
  603. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_watcher.py +0 -0
  604. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_ext.py +0 -0
  605. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_extensions.py +0 -0
  606. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_internal_api.py +0 -0
  607. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_json_api.py +0 -0
  608. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_plugins_link_documents.py +0 -0
  609. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_plugins_tag_discovered_documents.py +0 -0
  610. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_serialisation.py +0 -0
  611. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_template_filters.py +0 -0
  612. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_templates.py +0 -0
  613. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_util.py +0 -0
  614. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_util_date.py +0 -0
  615. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_util_excel.py +0 -0
  616. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_util_ranking.py +0 -0
  617. {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_util_sets.py +0 -0
  618. {rustfava-0.1.0 → rustfava-0.1.1}/uv.lock +0 -0
@@ -0,0 +1,123 @@
1
+ Metadata-Version: 2.4
2
+ Name: rustfava
3
+ Version: 0.1.1
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/ci.yml/badge.svg)](https://github.com/rustledger/rustfava/actions/workflows/ci.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
+ | Platform | Download |
85
+ |----------|----------|
86
+ | **macOS** | [`rustfava_0.1.0_aarch64.dmg`](https://github.com/rustledger/rustfava/releases/download/v0.1.0/rustfava_0.1.0_aarch64.dmg) |
87
+ | **Windows** | [`rustfava_0.1.0_x64-setup.exe`](https://github.com/rustledger/rustfava/releases/download/v0.1.0/rustfava_0.1.0_x64-setup.exe) |
88
+ | **Linux** | [`rustfava_0.1.0_amd64.AppImage`](https://github.com/rustledger/rustfava/releases/download/v0.1.0/rustfava_0.1.0_amd64.AppImage) |
89
+ | **Docker** | `docker run -p 5000:5000 -v /path/to/ledger:/data ghcr.io/rustledger/rustfava /data/main.beancount` |
90
+ | **PyPI** | `uv tool install rustfava` (requires Python 3.13+ and [wasmtime](https://wasmtime.dev/)) |
91
+
92
+ <sub>Missing your platform? [Open an issue](https://github.com/rustledger/rustfava/issues/new) to request it.</sub>
93
+
94
+ ## Quick Start
95
+
96
+ ### Desktop App
97
+
98
+ 1. Download the app for your platform
99
+ 2. Double-click to launch
100
+ 3. Open your `.beancount` file
101
+
102
+ ### Command Line
103
+
104
+ ```bash
105
+ rustfava ledger.beancount
106
+ # Then visit http://localhost:5000
107
+ ```
108
+
109
+ ## What is this?
110
+
111
+ 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.
112
+
113
+ The desktop app bundles everything into a native application using [Tauri](https://tauri.app/), so you get a fast, lightweight app with no dependencies.
114
+
115
+ ## Links
116
+
117
+ - **Website**: https://rustledger.github.io/rustfava/
118
+ - **Documentation**: https://rustledger.github.io/rustfava/docs/
119
+ - **rustledger**: https://github.com/rustledger/rustledger
120
+
121
+ ## License
122
+
123
+ MIT License - see [LICENSE](LICENSE) for details.
@@ -0,0 +1,72 @@
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/ci.yml/badge.svg)](https://github.com/rustledger/rustfava/actions/workflows/ci.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
+ | Platform | Download |
34
+ |----------|----------|
35
+ | **macOS** | [`rustfava_0.1.0_aarch64.dmg`](https://github.com/rustledger/rustfava/releases/download/v0.1.0/rustfava_0.1.0_aarch64.dmg) |
36
+ | **Windows** | [`rustfava_0.1.0_x64-setup.exe`](https://github.com/rustledger/rustfava/releases/download/v0.1.0/rustfava_0.1.0_x64-setup.exe) |
37
+ | **Linux** | [`rustfava_0.1.0_amd64.AppImage`](https://github.com/rustledger/rustfava/releases/download/v0.1.0/rustfava_0.1.0_amd64.AppImage) |
38
+ | **Docker** | `docker run -p 5000:5000 -v /path/to/ledger:/data ghcr.io/rustledger/rustfava /data/main.beancount` |
39
+ | **PyPI** | `uv tool install rustfava` (requires Python 3.13+ and [wasmtime](https://wasmtime.dev/)) |
40
+
41
+ <sub>Missing your platform? [Open an issue](https://github.com/rustledger/rustfava/issues/new) to request it.</sub>
42
+
43
+ ## Quick Start
44
+
45
+ ### Desktop App
46
+
47
+ 1. Download the app for your platform
48
+ 2. Double-click to launch
49
+ 3. Open your `.beancount` file
50
+
51
+ ### Command Line
52
+
53
+ ```bash
54
+ rustfava ledger.beancount
55
+ # Then visit http://localhost:5000
56
+ ```
57
+
58
+ ## What is this?
59
+
60
+ 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.
61
+
62
+ The desktop app bundles everything into a native application using [Tauri](https://tauri.app/), so you get a fast, lightweight app with no dependencies.
63
+
64
+ ## Links
65
+
66
+ - **Website**: https://rustledger.github.io/rustfava/
67
+ - **Documentation**: https://rustledger.github.io/rustfava/docs/
68
+ - **rustledger**: https://github.com/rustledger/rustledger
69
+
70
+ ## License
71
+
72
+ MIT License - see [LICENSE](LICENSE) for details.
@@ -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
+ ```
@@ -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 from PATH (for NixOS/system installs)
152
+ // This allows the desktop app to work when rustfava CLI is installed separately
153
+ let command = app
154
+ .shell()
155
+ .command("rustfava")
156
+ .args([path, "-p", &port.to_string()]);
157
+
158
+ let (_, child) = command
159
+ .spawn()
160
+ .map_err(|e| format!("Failed to spawn rustfava: {}. Make sure rustfava is installed and in PATH.", 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,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
@@ -0,0 +1,128 @@
1
+ # Syncing with Upstream Fava
2
+
3
+ rustfava is a fork of [Fava](https://github.com/beancount/fava) that replaces the beancount parser with [rustledger](https://github.com/rustledger/rustledger). This document describes how to sync relevant changes from upstream.
4
+
5
+ ## Background
6
+
7
+ The fork diverges significantly from upstream in the backend:
8
+
9
+ | Component | Fava | rustfava |
10
+ |-----------|------|----------|
11
+ | Parser | Python beancount | rustledger (WASM) |
12
+ | Core modules | `fava/core/`, `fava/beans/` | `rustfava/rustledger/` |
13
+ | Package manager | npm | bun |
14
+
15
+ The frontend is largely unchanged and can usually accept upstream patches.
16
+
17
+ ## Checking for Upstream Changes
18
+
19
+ ```bash
20
+ # Fetch upstream
21
+ git fetch upstream
22
+
23
+ # Find the common ancestor (fork point)
24
+ git merge-base main upstream/main
25
+
26
+ # Count commits since fork
27
+ git rev-list --count $(git merge-base main upstream/main)..upstream/main
28
+
29
+ # List upstream commits since fork
30
+ git log --oneline $(git merge-base main upstream/main)..upstream/main
31
+ ```
32
+
33
+ ## Categorizing Commits
34
+
35
+ Review each upstream commit and categorize:
36
+
37
+ ### Safe to cherry-pick
38
+
39
+ - **Frontend changes** (`frontend/src/`) - UI, routing, components
40
+ - **Documentation** (`docs/`, `*.md`)
41
+ - **Templates** (`src/fava/templates/`)
42
+ - **Static assets** (`src/fava/static/`)
43
+ - **Extension API** (if not touching core)
44
+
45
+ ### Requires review
46
+
47
+ - **Tests** - may reference beancount-specific behavior
48
+ - **API endpoints** - check if they depend on beancount types
49
+
50
+ ### Cannot cherry-pick
51
+
52
+ - **Core modules** - `src/fava/core/`, `src/fava/beans/`
53
+ - **Beancount imports** - anything importing from `beancount.*`
54
+ - **Inventory/position logic** - replaced by rustledger
55
+
56
+ ## Cherry-Pick Workflow
57
+
58
+ ```bash
59
+ # 1. Create a sync branch
60
+ git checkout main
61
+ git pull origin main
62
+ git checkout -b sync/upstream-YYYY-MM
63
+
64
+ # 2. Cherry-pick safe commits (oldest first)
65
+ git cherry-pick <commit-hash>
66
+
67
+ # 3. If conflicts occur, resolve them:
68
+ # - For package-lock.json conflicts: git rm frontend/package-lock.json
69
+ # - For renamed files (fava -> rustfava): update paths
70
+ # - For deleted files: skip the commit with git cherry-pick --skip
71
+
72
+ # 4. Update lockfile if package.json changed
73
+ nix develop --command bash -c "cd frontend && bun install"
74
+ git add frontend/bun.lock
75
+ git commit -m "chore: update bun.lock for upstream sync"
76
+
77
+ # 5. Test the build
78
+ nix develop --command bash -c "cd frontend && bun run build"
79
+ nix develop --command bash -c "just test"
80
+
81
+ # 6. Push and create PR
82
+ git push -u origin sync/upstream-YYYY-MM
83
+ gh pr create --title "chore: sync upstream fava changes (Month YYYY)"
84
+ ```
85
+
86
+ ## Common Conflicts
87
+
88
+ ### package-lock.json
89
+
90
+ rustfava uses bun instead of npm. Remove the conflicting file:
91
+
92
+ ```bash
93
+ git rm frontend/package-lock.json
94
+ git cherry-pick --continue
95
+ ```
96
+
97
+ ### File renames (fava -> rustfava)
98
+
99
+ Upstream references `src/fava/` but rustfava uses `src/rustfava/`. The cherry-pick usually handles this via directory mapping, but manual fixes may be needed.
100
+
101
+ ### Deleted core files
102
+
103
+ If upstream modifies files that rustfava deleted (like `core/inventory.py`), skip the commit:
104
+
105
+ ```bash
106
+ git cherry-pick --skip
107
+ ```
108
+
109
+ ## After Syncing
110
+
111
+ 1. **Run the test suite**: `just test`
112
+ 2. **Build the frontend**: `just frontend`
113
+ 3. **Manual testing**: Start the app and verify functionality
114
+ 4. **Update this doc**: Note the last sync date and any new patterns
115
+
116
+ ## Sync History
117
+
118
+ | Date | PR | Commits | Notes |
119
+ |------|-----|---------|-------|
120
+ | 2026-01-25 | #22 | 2 | Extension types, router improvements |
121
+
122
+ ## Upstream Monitoring
123
+
124
+ Consider setting up notifications for upstream releases:
125
+
126
+ 1. Watch the [beancount/fava](https://github.com/beancount/fava) repository
127
+ 2. Review the [Fava changelog](https://github.com/beancount/fava/blob/main/CHANGELOG.md) periodically
128
+ 3. Sync quarterly or when significant features are added