Skip to content

Platform batch: PLAT-18/19/21/24, session reload fix, tab session touch, deps (-> main) - #124

Merged
ATRIwOX merged 16 commits into
mainfrom
dev
Oct 12, 2026
Merged

ATRIwOX merged 16 commits into
mainfrom
dev

Conversation

@ATRIwOX

@ATRIwOX ATRIwOX commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

Platform batch: PLAT-18/19/21/24, session reload fix, tab session touch, deps (-> main)

jay009id and others added 16 commits October 4, 2026 04:14
Platform primitives for transactional verticals (issue #57):

- Move core.currency from addons/geo to addons/base so the catalog,
  its rates, and the UoM master data ship as one always-on platform unit.
- Add core.currency.rate (currency, rate, date_from, active) with
  (currency, date_from) natural keys for idempotent data syncs.
- Add uom.category and uom.uom (factor, rounding) with (name, category)
  natural keys.
- Add sdk.ConvertCurrency / sdk.ConvertUom / sdk.ConvertMoneyField:
  ConvertMoneyField resolves the currency=<field> tag from the model
  registry, so ORM float/money fields tagged as currency convert via
  the newest effective rate for the requested date.
- Seed data + admin views/menus/actions in addons/base (no accounting
  app): 8 currencies with bootstrap rates, 5 UoM categories, 16 units.
- Tests: pure math unit tests, addon registration tests, integration
  tests for conversions, and an isolated Addon.SyncToDB regression test
  covering cross-record refs and natural-key upserts.

Co-Authored-By: Claude Code <noreply@anthropic.com>
test/module/integration/install_closure_test.go no longer compiled
(orm.InitDB returns no value) and, with kernel models registered,
searches on sys.module without a bypass context fail access checks.
Give both integration smoke tests the model registry and a bypass
context so they pass against an initialized database.

Co-Authored-By: Claude Code <noreply@anthropic.com>
Date-sensitive bootstrap rates are business data, not master data: a
fresh production database should not be born with stale 2026-01-01
rates. The currency catalog and UoM data stay core; core.currency.rate
rows are now created by verticals or rate providers, and the
(currency, date_from) natural keys remain so verticals can ship their
own rate data files idempotently.

- Rename data/core_currency_rate_data.xml to core_currency_data.xml and
  drop the rate records (catalog only).
- Document the non-seeding policy on the core.currency.rate model.
- SyncToDB regression test now asserts the catalog and UoM data load
  with zero seeded rate rows.
- Conversion tests load the i18n addon so schema sync can ensure the
  sys.translation index on already-installed databases.

Co-Authored-By: Claude Code <noreply@anthropic.com>
Keep base small, following the geo/i18n/im pattern: each core concern
ships as its own addon on top of the kernel.

- addons/currency: core.currency + core.currency.rate, catalog data,
  views, actions, and a Currencies menu section.
- addons/uom: uom.category + uom.uom, seed data (5 categories, 16
  units), views, actions, and a Units of Measure menu section.
- base keeps only the kernel: currency/uom models, data files, views,
  actions, and menu entries move out of its manifest.
- cmd/sumeru/zimports.go and model registrations regenerated; model
  names are unchanged, so sdk.ConvertCurrency/ConvertUom and the
  data-sync natural keys keep working untouched.
- Tests: addon registration tests split per addon, integration tests
  load the new addons, and the SyncToDB regression test now syncs the
  install closure base -> currency -> uom.

Co-Authored-By: Claude Code <noreply@anthropic.com>
The govulncheck job went red on every PR after GO-2026-6599/6600 were
published: go1.26.6's standard library carries 12 reachable
vulnerabilities (html/template, net/http) fixed in the go1.26.9 patch
release. Bump the go directive and all CI go-version pins; patch
releases keep API compatibility, so no code changes are needed.

Verified locally with go1.26.9: govulncheck reports 0 vulnerabilities,
build/vet/lint clean, test suite green, coverage 42.5% (min 42).

Co-Authored-By: Claude Code <noreply@anthropic.com>
Close SUM-PLAT-18: currency rates and UoM platform models
…ction UI

Wire record.created/updated/deleted to sys.server.action with unlink-safe
domains, depth cap 5, 60s cooldown via sys.server.action.log, and https-only
webhooks. Run actions as the event actor without bypass; reject sensitive
write: fields. Add activity: server actions and form fields for model,
event, domain, and code.
Introduce sys.property.definition seeding, domain support for field.key,
ORM properties handling, and SWC PropertiesField registration with tests.
Add mail addon for mail.activity and mail.message, board grouping
(overdue/today/later), done/snooze actions, parent deep links, shell
Activities link, and calendar arch date_start behavior. Outbound SMTP
unchanged; no inbound routing.
Stop pagehide GET /web/logout from shell tabs; make GET /web/logout
redirect-only. Portal sign-out uses POST with CSRF. RpcService and HttpService
send unauthenticated clients to /web/login on 401.
…ating

Add shell tab lease and POST /web/session/touch, browser_seen_at on sys.session,
grace checks in resolveSession, and config keys in sumeru.conf.example.
…SWC/CSS

Add addons/digest README and compute test coverage; LinkOAuthUser edge cases;
drop unused sum template parser path, debug aliases, and orphaned message CSS.
Update x/crypto to v0.58.0 and vitest/jsdom patch releases; refresh
package-lock.json (source-map-js audit fix).
Wire currency_field through arch and MonetaryField; add platform.pricing.sample.
Add sys.property.definition views, partner extra_properties, and PropertiesField polish.
Group activity board by type; link activities from the messages panel; extend tests.
Platform batch: PLAT-18/19/21/24, session reload fix, tab session touch, deps (-> dev)
@ATRIwOX
ATRIwOX requested a review from a team October 12, 2026 19:20
@ATRIwOX
ATRIwOX merged commit 2fc7499 into main Oct 12, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants