Commit Graph

1373 Commits

Author SHA1 Message Date
Jakub Zych
05bacad997 docs(18.1): create phase plan 2026-10-14 14:05:08 +02:00
Jakub Zych
b1ed92490d docs(18.1): map file patterns to existing analogs 2026-10-14 13:30:39 +02:00
Jakub Zych
0849f98041 docs(18.1): record context amendments from research premise shifts 2026-10-14 13:27:10 +02:00
Jakub Zych
b36acb375a docs(phase-18.1): add validation strategy 2026-10-14 13:19:58 +02:00
Jakub Zych
b30dceeb0e docs(18.1): research phase domain 2026-10-14 13:19:04 +02:00
Jakub Zych
d369549740 docs(roadmap): mark executed phases complete and add missing decimal rows 2026-10-14 11:19:26 +02:00
Jakub Zych
95e011accb docs(phase-18): add security threat verification 2026-10-14 01:32:20 +02:00
Jakub Zych
db55996a08 test(18): persist human verification items as UAT 2026-10-14 00:44:47 +02:00
Jakub Zych
df66d99624 docs(18): phase re-verification report after gap closure 18-08 (human_needed, 11/11) 2026-10-14 00:44:47 +02:00
Jakub Zych
e691b8300b docs(18): record code review disposition after gap closure 18-08 2026-10-14 00:34:32 +02:00
Jakub Zych
195882c39d docs(18): add code review report (re-review after gap closure 18-08) 2026-10-14 00:34:32 +02:00
Jakub Zych
fa773b0b49 docs(18-08): complete Stripe decline gap-closure plan
- 18-08-SUMMARY.md: four sm-pgstripe-plugin commits, 17-subtest TestHostStripeFlow, gate stages, decisions, open follow-ups
- push reply recorded verbatim; sm-pgstripe-plugin main pushed to 0313820, no tag
- STATE and ROADMAP: plan 18-08 complete (8/8), three decisions, session record
2026-10-14 00:21:03 +02:00
d1f39cc109 docs(18): create gap-closure plan 18-08 (Stripe payment_failed is non-terminal) 2026-10-13 18:43:35 +02:00
96f094bcb0 docs(18): phase verification report (gaps_found: Stripe payment_failed rejects a retryable payment) 2026-10-13 18:11:05 +02:00
a591932fee docs(18): add code review report and per-finding disposition
- 48 findings over 106 files (7 critical, 20 warning, 21 info), all open
- reviewed after the v0.1.25 push; advisory
2026-10-13 18:01:01 +02:00
c96001abc1 docs(18): record code review disposition 2026-10-13 18:00:49 +02:00
a377953820 docs(18-07): record the pushed heads and the v0.1.25 tag in the plan summary 2026-10-13 17:48:18 +02:00
2f5e8e3014 docs(18-07): record plan 07 progress in STATE and ROADMAP v0.1.25 2026-10-13 17:47:32 +02:00
8d33af4f22 docs(18-07): complete unit tests and phase gate plan 2026-10-13 17:47:05 +02:00
efdc11647c docs(18-07): record the deferred RegisterDetailsParams reader and a pre-existing gofmt item 2026-10-13 17:35:40 +02:00
63febdde98 docs(18-07): phase 18 validation map validated and Nyquist-compliant
- every per-task row green; Wave 0 and sign-off complete
- gate record: check-phase18.sh --all passed every stage, postgres run on
  a Docker host
- PHP map 72 of 74 (the 2 pgstripe reliability cases are 18.1)
- D-11: no host shop rows supplied; the synthetic fixtures stand in
2026-10-13 17:35:30 +02:00
fc3cb26322 test(18-07): the phase 18 gate requires the Stripe operator suites and every layer spec (task 4)
- plugins stage: TestStripeAuthentication, TestStripeDataHandling,
  TestSDKPin and TestStripeOperator in sm-pgstripe-plugin
- postgres stage: TestStripeSettingsSmoke and TestStripeImportWinterSmoke
  beside TestHostStripeFlow
- layers stage: the ten spec files and all 69 TAP test names
2026-10-13 17:35:02 +02:00
be853996c7 test(18-07): the phase 18 gate requires the payment gateway suites per package (task 3)
- plugins stage: money, fsm, orders, payments, cart, operators, support,
  currency, models, events, console, api and root suites by name (-short)
- postgres stage: every Postgres suite of sm-paymentgateway-plugin,
  the plan 02 to 06 smokes and the new service, bridge, event, migration,
  command and converter suites
2026-10-13 17:24:08 +02:00
0f35c9a0ca test(18-07): framework unit coverage of money, settings secrets, tabs, richeditor and danger actions (task 2)
- money_field_test.go: compile gates (moved from the smoke file and
  extended), model column gate, save-time value check, list projection
- settings secret projection and put without a database; tabs, settings
  richeditor sanitize and the danger flag as internal unit tests
- Postgres: TestMoneyFieldSave, TestSettingsSecretPostgres and the Phase 18
  payload cases of TestPhase10OpenAPIConformance
- vitest: money.ts helpers spec, MoneyField blur-only and server-error cases
- gate arrays and the cabana README Testing section name every test
2026-10-13 16:58:03 +02:00
eb60c329d8 fix(18-07): money accepts trailing zeros beyond the field scale
A scale-2 money field over a four-decimal column (the documented fee
example) was served "12.5000" and answered money.too_precise when the
untouched value was saved back. Trailing zeros carry no precision, so the
server check and the SPA parser count only significant fraction digits;
the value still reaches the column unchanged, never rounded or truncated.

- cabana validateMoneyValue and admin parseMoneyInput trim trailing zeros
  before the scale comparison
- forms docs and cabana README name the rule; embedded dist rebuilt
- MoneyField spec asserts 12.5000 at scale 2 is accepted, 12.5010 refused
2026-10-13 16:53:58 +02:00
5141059026 test(18-07): phase 18 fail-closed gate with one required test per layer and the detector self-test (task 1)
- stages go, plugins, admin, layers, docs, postgres over summercms.go,
  sm-paymentgateway-plugin, sm-pgstripe-plugin and vue-paymentgateway-layer
- go test -json, vitest JSON and TAP detectors refuse fails, skips, empty
  runs and missing required names; --self-test plants each case
- --all reports NOT RUN postgres without Docker; PHASE18_REQUIRE_POSTGRES=1
  makes that a failure
2026-10-13 16:44:59 +02:00
593f67d12d docs(18-06): record plan 06 progress in STATE and ROADMAP 2026-10-13 16:35:02 +02:00
5c1968891c docs(18-06): complete customer API and payment gateway layer plan 2026-10-13 16:35:02 +02:00
25cfb0a4cc docs(18-05): record plan 05 progress in STATE and ROADMAP 2026-10-13 14:59:20 +02:00
3255a815c7 docs(18-05): correct the framework head hashes in the plan summary 2026-10-13 14:58:30 +02:00
623876a166 docs(18-05): complete Stripe operator plugin plan 2026-10-13 14:58:24 +02:00
7252cfd3cd docs(18-04): record plan 04 progress in STATE and ROADMAP 2026-10-13 14:32:25 +02:00
79dd3a0bb1 docs(18-04): complete payment gateway settings and mail plan 2026-10-13 14:31:53 +02:00
21c5618dd1 feat(18-04): settings forms take method-backed dropdown options from the settings model (task 1)
- the settings schema passes the settings model as the DropdownOptionsProvider
- boot refuses a dropdown method on a settings model without DropdownOptions
- cabana README and docs/backend/settings.md describe it
2026-10-13 14:08:14 +02:00
dff931c865 docs(18-03): record plan 03 progress in STATE and ROADMAP 2026-10-13 14:01:50 +02:00
9b193c1c4c docs(18-03): complete payment gateway admin screens plan 2026-10-13 14:01:16 +02:00
49fef6c35a docs(18-02): complete payment gateway domain core plan 2026-10-13 13:20:20 +02:00
Jakub Zych
a22bd8a934 docs(18-02): decision note for the go-hashids dependency
- github.com/speps/go-hashids/v2 v2.0.1 for sm-paymentgateway-plugin (24/24 PHP vectors)
- stripe-go v87.0.0 stays a D-12 decision for sm-pgstripe-plugin; shopspring/decimal indirect only, never money
2026-10-13 12:10:41 +02:00
Jakub Zych
3572030c74 docs(18-01): complete framework admin pieces plan 2026-10-13 11:49:55 +02:00
Jakub Zych
1e841b4281 feat(18-01): write-only settings secrets, richeditor and tabs on settings forms (task 3)
- type: password on a settings form binds a lagoon.Encrypted column as a
  write-only secret (any other column fails boot naming the field): the
  GET omits it from data and reports stored, env or empty per field in
  meta.secrets; on PUT an absent key or "" keeps the value, null clears
  it, a non-string is a 422; the answer never carries a value
- cabana.SecretFallbacks (field to config key) gives the env state;
  cabana.SettingsMeta, SecretStored/SecretEnv/SecretEmpty exported
- settings forms accept richeditor: the Put sanitizes through seaglass
  like a controller save and returns meta.notices; repeater and
  dependsOn stay refused (settingsFormOnly next to controllerFormOnly)
- backend::lang secret.* phrases in en and pl
- admin SPA: PasswordField secret status line (stored with Remove stored
  value, env, empty, pending clear with Undo), SettingsFormView tabs with
  error-tab activation and the secrets/notices meta, settings payload
  that never sends an untouched secret; regenerated OpenAPI and TS
  types; rebuilt dist
- vault fixture, TestSettingsSecretCompile, Docker TestSettingsSecretSmoke
  and TestSettingsRichEditorSmoke, conform settings fixture with a
  password field; settings.md sections, forms.md notes, cabana README
2026-10-13 11:36:12 +02:00
Jakub Zych
0c8605123e feat(18-01): money list column, danger record actions, preview Edit rule and table kit (task 2)
- columns.yaml type: money with currency or currencyFrom (exactly one),
  never searchable, not sortable by default; every list row carries the
  currencyFrom column's value under its own key; the schema serves
  currency and currencyFrom on the column
- pact.AdminRecordAction.Danger, served as danger on cabana.RecordAction
  (absent when false); RecordActions.vue passes it to the confirm dialog
- CellValue money kind through formatMoney with the row's code, the em
  dash when empty and the amount alone without a code; DataTable aligns
  money headers and cells to the right
- PreviewView renders Edit only when a registered value field allows
  update (F6)
- main.css .summer-table* and .summer-stat__note kit classes (F7) over
  --c-* variables; cabana README kit rows
- fixture record actions void (danger) and resend; TestMoneyListCompile,
  TestMoneyListSmoke and TestRecordActionDangerSmoke; regenerated OpenAPI
  and TS types; rebuilt dist; lists-and-filters and admin-controllers docs
2026-10-13 11:22:36 +02:00
Jakub Zych
20385e53ee feat(18-01): add the cabana money field (task 1)
- type: money on fields.yaml with currency or currencyFrom, scale (2..4,
  default 4) and max; boot fails naming the field on two sources, none,
  a bad scale or max, a column that is not a string or a Scanner/Valuer,
  or a currencyFrom that is not a string column
- a save answers 422 money.invalid, money.too_precise or money.too_large
  on the field and fills the accepted decimal string unchanged; the same
  check runs on controller, settings and relation child saves
- backend::lang money.* phrases in en and pl
- admin SPA: money.ts (parseMoneyInput, trimMoneyDisplay, formatMoney over
  Intl with the string itself), MoneyField.vue with the currency suffix,
  blur validation and the read-only box, preview through the control,
  the field scope on PreviewView; regenerated OpenAPI and TS types,
  rebuilt modules/boardwalk/dist
- acme.payments fixture with TestMoneyFieldCompile and the Docker
  TestMoneyFieldSmoke; forms.md Money section and cabana README
2026-10-13 11:15:05 +02:00
Jakub Zych
99ccae232c docs(18): create phase plan 2026-10-13 05:17:07 +02:00
Jakub Zych
79b1f85564 docs(phase-17): update security threat verification (T-17-15 closed, 0 open) 2026-10-13 01:23:04 +02:00
Jakub Zych
faa749f5a9 docs(quick-261013-0wa): close T-17-15 in the sitemap frontend_url rewrite v0.1.24 2026-10-13 01:03:05 +02:00
Jakub Zych
6e5a8e761f test(17): require the sitemap review-fix and T-17-15 tests by name 2026-10-13 01:00:17 +02:00
Jakub Zych
3a101cc6e1 docs(18): amend D-09 to scale-4 int64 money after plan-count checkpoint 2026-10-13 00:35:13 +02:00
Jakub Zych
7fa648dcaf docs(phase-17): add security threat verification (1 open: T-17-15) 2026-10-13 00:25:42 +02:00
c21d1135b0 docs(18): approve UI design contract and close probe gaps
Checker approved 6/7 PASS + spacing FLAG. Post-verification probe re-run raised 109 pairs; uncovered ones added, PgCart hides Remove on the last item.
2026-10-12 22:45:52 +02:00
8e55dc2837 docs(17): match fix report headings to the review titles 2026-10-12 21:50:05 +02:00