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.
- rustfava-0.1.1/PKG-INFO +123 -0
- rustfava-0.1.1/README.md +72 -0
- rustfava-0.1.1/contrib/docker/README.md +129 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/capabilities/default.json +5 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/src/main.rs +27 -12
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/tauri.conf.json +3 -0
- rustfava-0.1.1/docs/deployment.md +92 -0
- rustfava-0.1.1/docs/index.md +35 -0
- rustfava-0.1.1/docs/screenshot.png +0 -0
- rustfava-0.1.1/docs/upstream-sync.md +128 -0
- rustfava-0.1.1/docs/usage.md +84 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/flake.lock +1 -22
- rustfava-0.1.1/flake.nix +174 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/bun.lock +3 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/package.json +1 -0
- rustfava-0.1.1/frontend/src/extension-api.d.ts +45 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/extensions.ts +23 -48
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/router.ts +11 -0
- rustfava-0.1.1/packaging/rpm/rustfava.spec +62 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/ext/portfolio_list/PortfolioList.js +4 -4
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/ext/rustfava_ext_test/RustfavaExtTest.js +2 -2
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/extensions.md +4 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/app.js +4 -4
- rustfava-0.1.0/src/rustfava/static/beancount-VTTKRGSK.js → rustfava-0.1.1/src/rustfava/static/beancount-MH465CAD.js +2 -2
- rustfava-0.1.0/src/rustfava/static/chunk-V24TLQHT.js → rustfava-0.1.1/src/rustfava/static/chunk-P3BY4CCB.js +28 -23
- rustfava-0.1.0/src/rustfava/static/chunk-V24TLQHT.js.map → rustfava-0.1.1/src/rustfava/static/chunk-P3BY4CCB.js.map +2 -2
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/bg/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/ca/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/de/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/es/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/fa/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/fr/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/ja/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/nl/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/pt_BR/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/ru/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/sk/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/sv/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/uk/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/zh/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/zh_Hant_TW/LC_MESSAGES/messages.mo +0 -0
- rustfava-0.1.1/src/rustfava.egg-info/PKG-INFO +123 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava.egg-info/SOURCES.txt +8 -5
- rustfava-0.1.0/PKG-INFO +0 -102
- rustfava-0.1.0/README.md +0 -51
- rustfava-0.1.0/RUSTLEDGER_WASI_SPEC.md +0 -451
- rustfava-0.1.0/contrib/docker/README.md +0 -249
- rustfava-0.1.0/docs/deployment.md +0 -35
- rustfava-0.1.0/docs/index.md +0 -24
- rustfava-0.1.0/docs/usage.md +0 -53
- rustfava-0.1.0/flake.nix +0 -133
- rustfava-0.1.0/src/rustfava.egg-info/PKG-INFO +0 -102
- {rustfava-0.1.0 → rustfava-0.1.1}/.dev-bin/rustfava +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/.dockerignore +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/AUTHORS +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/CONTRIBUTING.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/Dockerfile +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/LICENSE +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/MANIFEST.in +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/SECURITY.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/_build_backend.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/biome.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/contrib/docker/Dockerfile +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/contrib/examples/budgets-example.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/contrib/examples/example.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/contrib/examples/huge-example.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/contrib/icon.svg +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/contrib/pyinstaller_spec.spec +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/contrib/scripts.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/.dev-bin/rustfava +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/README.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/build-sidecar.sh +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/bun.lock +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/index.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/package.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/scripts/ensure-rustledger.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src/index.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src/logo.svg +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src/main.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src/styles.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/Cargo.lock +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/Cargo.toml +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/build.rs +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/gen/schemas/acl-manifests.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/gen/schemas/capabilities.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/gen/schemas/desktop-schema.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/gen/schemas/linux-schema.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/icons/128x128.png +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/icons/128x128@2x.png +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/icons/32x32.png +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/icons/icon.icns +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/icons/icon.ico +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/src-tauri/icons/icon.png +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/desktop/vite.config.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/docs/api.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/docs/changelog.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/docs/development.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/docs/logo.svg +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/.npmrc +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/build.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/base.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/charts.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/components.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/editor.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/fonts.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/grid.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/help.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/journal-table.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/layout.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/notifications.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/style.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/css/tree-table.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/deno.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/eslint.config.js +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/prettier.config.js +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/setup.js +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/AutocompleteInput.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/ambient.d.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/api/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/api/validators.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/app.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/Axis.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/BarChart.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/Chart.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/ChartLegend.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/ChartSwitcher.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/ConversionAndInterval.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/HierarchyContainer.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/Icicle.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/LineChart.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/ModeSwitch.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/ScatterPlot.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/SelectCombobox.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/Sunburst.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/Treemap.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/bar.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/context.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/helpers.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/hierarchy.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/line.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/query-charts.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/scatterplot.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/charts/tooltip.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/clipboard.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/base-extensions.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/beancount-autocomplete.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/beancount-fold.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/beancount-format.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/beancount-highlight.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/beancount-indent.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/beancount-language.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/beancount-snippets.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/beancount.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/bql-autocomplete.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/bql-grammar.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/bql-highlight.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/bql-language.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/bql-stream-parser.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/bql.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/dom.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/editor-transactions.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/ruler.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/tree-sitter-beancount.wasm +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/tree-sitter-parser.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/codemirror/types.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/editor/DeleteButton.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/editor/DocumentPreviewEditor.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/editor/SaveButton.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/editor/SliceEditor.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entries/amount.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entries/cost.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entries/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entries/metadata.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entries/position.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entry-forms/AccountInput.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entry-forms/AddMetadataButton.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entry-forms/Balance.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entry-forms/Entry.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entry-forms/EntryMetadata.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entry-forms/Note.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entry-forms/Posting.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/entry-forms/Transaction.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/format.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/helpers.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/i18n.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/keyboard-shortcuts.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/account.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/array.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/dom.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/equals.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/errors.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/fetch.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/focus.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/fuzzy.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/interval.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/iso4217.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/json.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/objects.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/paths.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/regex.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/result.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/set.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/sources.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/store.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/tree.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/lib/validation.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/log.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/modals/AddEntry.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/modals/Context.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/modals/DocumentUpload.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/modals/EntryContextBalances.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/modals/EntryContextLocation.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/modals/Export.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/modals/ModalBase.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/modals/Modals.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/modals/document-upload.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/notifications.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/ReportLoadError.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/accounts/AccountReport.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/accounts/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/commodities/Commodities.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/commodities/CommodityTable.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/commodities/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/documents/Accounts.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/documents/DocumentPreview.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/documents/Documents.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/documents/Table.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/documents/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/documents/stores.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/editor/AppMenu.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/editor/AppMenuItem.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/editor/AppMenuSubItem.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/editor/Editor.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/editor/EditorMenu.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/editor/Key.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/editor/Sources.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/editor/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/editor/stores.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/errors/Errors.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/errors/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/events/EventTable.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/events/Events.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/events/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/holdings/Holdings.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/holdings/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/import/Extract.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/import/FileList.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/import/Import.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/import/ImportFileUpload.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/import/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/journal/Journal.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/journal/JournalFilters.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/journal/JournalHeaders.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/journal/JournalTable.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/journal/click_handler.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/journal/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/journal/sort.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/options/Options.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/options/OptionsTable.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/options/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/query/Query.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/query/QueryBox.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/query/QueryEditor.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/query/QueryLinks.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/query/QueryTable.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/query/ReadonlyQueryEditor.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/query/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/query/query_table.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/route.svelte.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/route.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/routes.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/statistics/EntriesByType.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/statistics/Statistics.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/statistics/UpdateActivity.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/statistics/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/tree_reports/BalanceSheet.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/tree_reports/IncomeStatement.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/tree_reports/TrialBalance.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/reports/tree_reports/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/AccountIndicator.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/AccountPageTitle.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/AccountSelector.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/AsideContents.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/AsideWithButton.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/FilterForm.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/Header.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/HeaderAndAside.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/HeaderIcon.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/PageTitle.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/SidebarLink.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sidebar/page-title.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sort/SortHeader.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sort/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/sort/sortable-table.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/accounts.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/chart.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/color_scheme.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/editor.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/fava_options.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/filters.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/format.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/journal.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/mtime.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/options.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/query.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/stores/url.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/svelte-custom-elements.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/tree-table/AccountCell.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/tree-table/AccountCellHeader.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/tree-table/Diff.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/tree-table/IntervalTreeTable.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/tree-table/IntervalTreeTableNode.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/tree-table/TreeTable.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/tree-table/TreeTableNode.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/tree-table/helpers.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/src/tree-table/tree-table-custom-element.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/stylelint.config.js +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/sync-pre-commit.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/AutocompleteInput.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/account.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/charts.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/dom.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/editor.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/end-to-end-validation.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/entries.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/format.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/fuzzy.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/helpers.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/misc.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/parser.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/paths.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/result.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/sources.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/store.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/tree.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/urls.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test/validation.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/frontend/tsconfig.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/justfile +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/mkdocs.yml +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/pyproject.toml +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/setup.cfg +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/_ctx_globals_class.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/api_models.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/application.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/abc.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/account.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/create.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/flags.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/funcs.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/helpers.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/ingest.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/load.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/prices.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/protocols.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/str.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/beans/types.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/cli.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/context.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/accounts.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/attributes.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/budgets.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/charts.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/commodities.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/conversion.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/documents.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/extensions.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/fava_options.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/file.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/filters.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/group_entries.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/ingest.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/inventory.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/misc.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/module_base.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/number.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/query.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/query_shell.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/tree.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/core/watcher.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/ext/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/ext/auto_commit.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/ext/portfolio_list/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/ext/portfolio_list/templates/PortfolioList.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/ext/rustfava_ext_test/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/ext/rustfava_ext_test/templates/RustfavaExtTest.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/ext/rustfava_ext_test/templates/RustfavaExtTestInclude.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/_index.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/beancount_syntax.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/budgets.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/conversion.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/features.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/filters.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/import.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/help/options.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/helpers.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/internal_api.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/json_api.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/plugins/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/plugins/link_documents.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/plugins/tag_discovered_documents.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/py.typed +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/rustledger/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/rustledger/constants.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/rustledger/engine.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/rustledger/loader.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/rustledger/options.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/rustledger/query.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/rustledger/types.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/serialisation.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/app.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/app.css.map +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/app.js.map +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/beancount-JFV44ZVZ.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/beancount-JFV44ZVZ.css.map +0 -0
- /rustfava-0.1.0/src/rustfava/static/beancount-VTTKRGSK.js.map → /rustfava-0.1.1/src/rustfava/static/beancount-MH465CAD.js.map +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/bql-MGFRUMBP.js +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/bql-MGFRUMBP.js.map +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/chunk-E7ZF4ASL.js +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/chunk-E7ZF4ASL.js.map +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/favicon.ico +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-cyrillic-400-normal-BLAGXRCE.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-cyrillic-500-normal-EN7JUAAW.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-cyrillic-ext-400-normal-EX7VARTS.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-cyrillic-ext-500-normal-ZDPTUPRR.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-greek-400-normal-COGHKMOA.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-greek-500-normal-4EN2PKZT.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-greek-ext-400-normal-DYEQIJH7.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-greek-ext-500-normal-SG73CVKQ.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-latin-400-normal-NA3VLV7E.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-latin-500-normal-YC77GFWD.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-latin-ext-400-normal-DIKTZ5PW.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-latin-ext-500-normal-ZWY4UO4V.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-symbols2-400-normal-UITXT77Q.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-mono-symbols2-500-normal-VWPC2EFN.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-cyrillic-400-normal-KLQMBCA6.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-cyrillic-500-normal-NFG7UD6J.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-cyrillic-ext-400-normal-GWO44OPC.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-cyrillic-ext-500-normal-SP47E5SC.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-greek-400-normal-UMQBTLC3.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-greek-500-normal-4ZKHN4FQ.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-greek-ext-400-normal-O2DVJAJZ.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-greek-ext-500-normal-SK6GNWGO.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-latin-400-normal-OYYTPMAV.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-latin-500-normal-SMQPZW5A.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-latin-ext-400-normal-OAUP3WK5.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-latin-ext-500-normal-LY3YDR5Y.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-vietnamese-400-normal-OBMQ72MR.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/fira-sans-vietnamese-500-normal-Y4NZR5EU.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-cyrillic-400-normal-TO22V6M3.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-cyrillic-500-normal-OGBWWWYW.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-cyrillic-ext-400-normal-XH44UCIA.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-cyrillic-ext-500-normal-3Z6MMVM6.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-greek-400-normal-OUXXUQWK.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-greek-500-normal-JA2Z5UXO.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-greek-ext-400-normal-WCDKMX7U.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-greek-ext-500-normal-ZHVI4VKW.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-latin-400-normal-QOGTXED5.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-latin-500-normal-X57QEOLQ.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-latin-ext-400-normal-QXC74NBF.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-latin-ext-500-normal-QGOY7MTT.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-vietnamese-400-normal-NPDCDTBA.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/source-code-pro-vietnamese-500-normal-M6PJKTR5.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/tree-sitter-beancount-MLXFQBZ5.wasm +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/static/web-tree-sitter-RNOQ6E74.wasm +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/template_filters.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/templates/_journal_table.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/templates/_layout.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/templates/_query_table.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/templates/beancount_file +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/templates/help.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/templates/macros/_account_macros.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/templates/macros/_commodity_macros.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/bg/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/ca/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/de/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/es/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/fa/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/fr/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/ja/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/nl/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/pt/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/pt_BR/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/ru/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/sk/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/sv/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/uk/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/zh/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/translations/zh_Hant_TW/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/util/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/util/date.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/util/excel.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/util/ranking.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/util/sets.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava/util/unreachable.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava.egg-info/dependency_links.txt +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava.egg-info/entry_points.txt +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava.egg-info/requires.txt +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/src/rustfava.egg-info/top_level.txt +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/stubs/beangulp/__init__.pyi +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/stubs/beangulp/cache.pyi +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_application-test_download_journal +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_attributes-test_narrations.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_interval_totals-2.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_interval_totals.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_interval_totals_inverted-2.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_interval_totals_inverted.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_linechart_data-2.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_linechart_data-3.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_linechart_data-4.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_linechart_data.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_net_worth.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_net_worth_off_by_one-2.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_charts-test_net_worth_off_by_one.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_file-test_render_entries +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_ingest-test_ingest_examplefile-2.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_ingest-test_ingest_examplefile.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_query_shell-test_query_balances +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_query_shell-test_query_to_file +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_query_shell-test_text_queries +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_tree-test_tree_cap +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_tree-test_tree_from_entries +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_core_tree-test_tree_from_entries-2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_internal_api-test_chart_api.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_internal_api-test_get_ledger_data.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-account_report_off_by_one.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-account_report_off_by_one_journal.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-balance_sheet.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-balance_sheet_with_cost.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-commodities.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-documents.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-events.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-income_statement.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-journal.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-narrations.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-options.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-statistics.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api-trial_balance.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_context-2.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_context-3.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_context-4.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_context.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_errors +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_imports-2.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_imports.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_payee_accounts.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_payee_transaction.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_query_result-balances.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_query_result-help.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_query_result-journal.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_query_result-misc.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_json_api-test_api_query_result-sum.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_serialisation-test_deserialise_posting_and_format +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/__snapshots__/test_serialisation-test_serialise_entry_types.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/conftest.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/edit-example.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/errors.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/example-balances.csv +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/example-utf8-/360/237/246/201.txt" +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/example.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/extension-report-example.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/import.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/import.csv +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/import_config.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/import_config_with_duplicate_names.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/invalid-unicode.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/long-example.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/off-by-one.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/query-example.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/data/receipt.pdf +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_application.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_beans.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_beans_str.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_build_backend.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_cli.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_accounts.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_attributes.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_budgets.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_charts.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_commodities.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_conversion.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_documents.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_fava_options.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_file.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_filters.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_ingest.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_inventory.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_misc.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_number.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_query_shell.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_tree.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_core_watcher.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_ext.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_extensions.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_internal_api.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_json_api.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_plugins_link_documents.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_plugins_tag_discovered_documents.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_serialisation.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_template_filters.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_templates.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_util.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_util_date.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_util_excel.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_util_ranking.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/tests/test_util_sets.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.1}/uv.lock +0 -0
rustfava-0.1.1/PKG-INFO
ADDED
|
@@ -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
|
+
[](https://github.com/rustledger/rustfava/actions/workflows/ci.yml)
|
|
61
|
+
[](https://github.com/rustledger/rustfava/releases)
|
|
62
|
+
[](LICENSE)
|
|
63
|
+
[](https://pypi.org/project/rustfava/)
|
|
64
|
+
|
|
65
|
+

|
|
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.
|
rustfava-0.1.1/README.md
ADDED
|
@@ -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
|
+
[](https://github.com/rustledger/rustfava/actions/workflows/ci.yml)
|
|
10
|
+
[](https://github.com/rustledger/rustfava/releases)
|
|
11
|
+
[](LICENSE)
|
|
12
|
+
[](https://pypi.org/project/rustfava/)
|
|
13
|
+
|
|
14
|
+

|
|
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
|
+
```
|
|
@@ -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("
|
|
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
|
-
//
|
|
119
|
-
let
|
|
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> {
|
|
@@ -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
|
+

|
|
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
|