api.runQuery calls query.serialize(), so a plain object failed with
'query.serialize is not a function'. Each non-table key is applied as the
Query method of the same name; unknown keys error. Document that this
function returns raw integer cents.
Server 26.10.0 sends account_group_id changes the 26.7 API cannot apply
(SyncError: invalid-schema). better-sqlite3 13.0.3 ships prebuilt binaries
and has no install script, so allowScripts denies it: approving it makes npm
run an implicit node-gyp rebuild, which fails without a compiler.
actual-helper.sh, setup.sh, audit-reconcile.mjs and reconcile.mjs hardcoded
~/.config/actual-budget; only actual-query.mjs honored the documented override,
so actual_check_config reported 'Config file missing' in the OpenClaw gateway.
Without it npm ci 'succeeds' but never builds better_sqlite3.node, and every
query fails with {"error":"No budget file is open"}. Troubleshooting entry added,
incl. the shared-budget-copy migration trap when clones run different API versions.
Schwab stamps some rows 'MM/DD/YYYY as of MM/DD/YYYY' where the as-of
date is the effective one; asOf() handles that and falls back to mdy().
The brokerage parser treats Amount as the cash effect (sign already
matches Actual) and drops zero-amount split rows.
Keeps the Schwab account as a commented worked example rather than live
config, matching the other ACCOUNTS entries, and leaves STAMP at its
per-run placeholder. Corrects the target comment: 65859.13 is statement
cash plus the holdings valuation, not cash alone.
Jarvis was grep-ing transaction JSON for text like "swim" instead of
resolving the Swim Lessons category UUID first. Added:
- Warning that payee/category fields are UUIDs
- Two-step lookup patterns for category and payee searches
- Date range guidance: topic queries without dates search all-time
- Updated Groceries example with proper UUID filter
- SKILL.md: Add Presentation Guidelines and Privacy sections for
consistent financial data presentation
- actual-query.mjs: Support ACTUAL_BUDGET_CONFIG_DIR env var to
override default ~/.config/actual-budget/ path, enabling use in
containers where that path isn't persisted
Inter-account transfers have no category and a non-null transfer_id.
The spending-by-category command was only filtering out positive amounts
(income) but not transfers, causing the negative side of each transfer
to appear as "Uncategorized" spending.
- Redirect console.log to stderr before importing @actual-app/api
so breadcrumb/sync messages don't mix with JSON output
- Use groupId (not cloudFileId) for downloadBudget sync ID
- Fix setup.sh to display and select groupId