topcoat #1

Merged
rubenjr0 merged 7 commits from topcoat into main 2026-09-28 16:49:12 +00:00
Owner

Migrate Axum + Yew to topcoat. Bump dep versions. Fix some bugs.

Migrate Axum + Yew to topcoat. Bump dep versions. Fix some bugs.
"5.5" parsed as 5.05 and "12.995" as 12.10: the fraction was read as an
integer and repeatedly divided. The first two decimals are now the cents and
a third digit rounds half away from zero, carrying into the units. Malformed
input and overflow return a dedicated ParseCentsError.

Drops AddTransactionRequest::try_new, used only by the Yew frontend.
crates/server becomes crates/web (budgit-web): server-rendered pages with
signals, shards and procedures, Tailwind styles and vendored Topcoat UI
components restyled to the instrument-panel look. The JSON API keeps its
paths as Topcoat routes and returns 4xx/5xx instead of panicking.

- core: install the aws-lc-rs rustls provider (Topcoat pulls in ring)
- toasty 0.10 -> 0.11 (no code changes; mimalloc/fts no longer enabled)
- container: bundle Topcoat assets instead of building wasm with trunk;
  keep local .cargo/ out of the build context
- just dev runs topcoat dev
Spending is booked on leaves, so a group's own budget never saw it:
Savings showed 0 spent while ETF and Bitcoin under it had spending. A group
now reports its children's allocated and spent (plus anything booked on the
group itself), with remaining = allocated - spent. Its stored amount is
ignored, as it carries over its own untouched remaining each month.

Only leaves are bought, so the DCA cadence and per-buy amount move into an
optional `dca` field (null for groups in the JSON API). The budget table
labels the columns "Month left" and "Per buy" to tell them apart.
core::month::add_transaction records the row and takes the amount from the
budget in a single transaction, rejecting bad input with
InvalidTransaction (400 in the web app). The CLI's add-transaction used to
lower the budget without recording a transaction, so its spends never
showed in the ledger and could not be deleted; it now goes through the
same path.
Kode Mono replaces Space Mono for labels, figures and controls. Chakra
Petch replaces Space Grotesk for headings and text: its chamfered corners
match Kode Mono's. Both are self-hosted from Fontsource.
"Month left", "Cadence" and "Per buy" read ambiguously. The table now
has "Remaining this month" and "Remaining per period", the latter with
its unit ("54.00€ / mo", "/ wk", "/ 2wk"), replacing the cadence column.
Dca::per_buy is renamed per_period to match.
A plain DIN-style grotesk lets Kode Mono carry the character, instead of
Chakra Petch echoing it.
rubenjr0 deleted branch topcoat 2026-09-28 16:49:14 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
rubenjr0/budgit!1
No description provided.