Add trailing slash to node_modules entries in sub-package .gitignore
files so they match only directories, not files named node_modules.
The root .gitignore already uses **/node_modules/ (fixed in #203);
these per-package entries were also missing the slash.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The root .gitignore had a typo: `node-modules` (hyphen) instead of
`node_modules` (underscore), so the glob pattern never matched the
directory that npm creates. The `ignore = dirty` setting in .gitmodules
(added in #147) already suppresses the dirty-submodule report; this
commit corrects the broken pattern so it also provides defence-in-depth
at the parent-repo level.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace ambiguous .collapsed-body.history CSS selector with a
component-specific .history-body class in CollapseHistory.vue.
The old compound class shared a name with collapse.sass rules
(.collapsed-body.history { flex-direction: row }) and reviewers
could not confirm the selector matched. The new class is unique
to CollapseHistory, making the flex-column layout and purple
router-link colour unambiguous.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Extract relativeTime and formatTokenAmount to helper.ts, eliminating
duplicated logic between CollapseHistory and NotificationBell
- Use formatUnits (via formatTokenAmount) instead of Number(BigInt)/1e18
to avoid precision loss on large token amounts
- Fix allRecentSnatches emptying after mark-seen: now runs two parallel
queries — one filtered by lastSeen timestamp (unseen badge count) and
one unfiltered (panel history), so history is preserved after opening
- Remove dead no-op watch block from useSnatchNotifications
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Refactor address interpolation in fetchWalletData to use a proper
GraphQL variables object instead of embedding the address directly
in the query string template literal.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Clarify that @tanstack/vue-query is a required peer dependency of
@wagmi/vue, not a dead import. Add a comment in main.ts explaining the
rationale, and document the dependency in ARCHITECTURE.md and
landing/AGENTS.md.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add `require(averageTaxRate <= 1e18, "Invalid tax rate")` to match
the existing `percentageStaked` guard and prevent silent acceptance
of out-of-range values.
- Expand contract-level NatSpec with a @dev note clarifying this is an
equivalence proof only: it intentionally exposes `isBullMarket` alone
and is not a deployable upgrade (full optimizer interface missing).
All 15 Foundry tests pass (15 unit + fuzz).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
onchain/ uses Foundry for dependency management, not yarn/npm.
Adding yarn.lock, package-lock.json, and node_modules/ to .gitignore
prevents accidental commits of JS toolchain artifacts in future.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
yarn install was run during forge build troubleshooting; the generated
lock file was not intentional and is architecturally inconsistent with
the Foundry-only onchain/ toolchain. Also restores package-lock.json
to its pre-npm-install state.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>