Commit Graph

926 Commits

Author SHA1 Message Date
Jakub Zych
ed81f2a0c1 docs(14.2.1): create phase plan 2026-10-06 15:19:22 +02:00
Jakub Zych
249b4d10ca docs(14.2.1-04): complete translate tests, gate, and security review
Record the last-plan SUMMARY, closed high-threat review, validation sign-off, and 4/4 roadmap progress.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-06 14:23:06 +02:00
Jakub Zych
ba6e4369f6 test(14.2.1-04): add fail-closed check-phase14.2.1.sh
Require named PASS lines, real Postgres, sibling go -C, and a closed high-threat review before the phase gate can pass.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-06 14:21:56 +02:00
Jakub Zych
1bc6200dbd test(14.2.1-04): add ML, markdown, resolver, and SPA test matrices
Prove nested ML writes, unsafe markdown rejection, request-locale isolation, and generated FormView types.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-06 14:02:49 +02:00
Jakub Zych
c7e2e4b4ed docs(14.2.1-03): complete cabana ML fields and proof-host boot plan
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-06 13:30:18 +02:00
Jakub Zych
e3b3475b1c feat(14.2.1-03): document ML fields and regenerate admin artifacts
- Document markdown, mltext, and mlmarkdown plus TranslationWriter save semantics
- Extend the SPA registry tests and rebuild committed boardwalk dist

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-06 13:29:00 +02:00
Jakub Zych
a04116d41f feat(14.2.1-03): add markdown and multilingual cabana fields
Lift locale maps before ProjectWritableFields so a Journal-shaped save can persist the default host scalar and non-default locales through TranslationWriter without dropping nested JSON.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-06 12:32:54 +02:00
Jakub Zych
234111d245 docs(14.2.1-02): mark Translatable API plan complete in state and roadmap
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-06 12:24:01 +02:00
Jakub Zych
44a8cbf29d docs(14.2.1-02): complete Translatable API and Locales admin plan
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-06 12:23:39 +02:00
Jakub Zych
de202fcb03 docs(14.2.1-01): complete translate plugin repository and locale seam plan
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-06 11:56:36 +02:00
Jakub Zych
b2ce986604 feat(14.2.1-01): add optional surf LocaleResolver seam
Look up a backpack-published resolver so a compiled translate plugin can
strip an enabled URL prefix and write a validated locale onto context.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-06 11:54:00 +02:00
Jakub Zych
bd0a27f59f docs(14.2.1): lock Go tables to golem15_translate_*
Execute-phase Task 2 chose golem15-prefix over the researched winter_translate_* names so the plugin ships vendor tables; PHP winter names stay a later import mapping.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-06 11:36:28 +02:00
Jakub Zych
28bd45fa04 docs(14.2.1-01): record Task 1 sibling checkout setup
- Pause execution at the Winter table contract decision
- Note local plugin and proof-host work trees for resume

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-06 11:30:16 +02:00
Jakub Zych
e88007aa76 docs(quick-261006-eyj): widget field payload and data channel v0.1.5 2026-10-06 11:23:37 +02:00
Jakub Zych
f829d17dca docs(14.2.1): create phase plan 2026-10-06 11:22:45 +02:00
Jakub Zych
e723c391fb docs(cabana): widget element contract and payload fixture (quick-261006-eyj)
- acme-demo-lookup fixture is a reorder widget: a click reverses its items,
  sends the new id order as detail.payload and renders the returned items from
  the data attribute and the summer-result event with textContent, no HTTP
- partials-and-widgets gains a Widget element contract subsection listing the
  attributes the SPA sets and the summer-action / summer-result events
- cabana README names both events in the form widgets bullet
2026-10-06 11:18:03 +02:00
Jakub Zych
c6f68e4639 feat(admin): widget field payload and summer-result data channel (quick-261006-eyj)
- WidgetField posts the summer-action event's detail.payload as payload only
  when the detail carries one; a payload-less post body is unchanged
- after a successful action the response data is set on the element as the
  data attribute (removed when the answer has none) and announced with a
  summer-result event carrying {data, fill, message}; failures dispatch nothing
- WIDGET_RESULT_EVENT exported from formContext; unit tests for both directions
- modules/boardwalk/dist rebuilt
2026-10-06 11:16:46 +02:00
Jakub Zych
6af88f9df6 feat(cabana): widget action payload and data channel (quick-261006-eyj)
- pact.AdminActionInput.Payload (json.RawMessage) carries the widget's own
  JSON value untouched; pact.AdminActionResult.Data is passed through as data
- cabana decodes payload with a 64 KiB cap (422 on body), refuses it on the
  toolbar and record routes, and embeds Data once encoded with a 256 KiB cap
  (opaque 500 when larger or unencodable); fill stays filtered
- root .swaggo overrides json.RawMessage so swag keeps record_id and values;
  admin.json and schema.d.ts regenerated (payload?: unknown, data?: unknown)
- TestWidgetPayloadAndData covers pass-through, cap, refusal and data 500
- cabana and pact READMEs, partials-and-widgets and admin-spa docs updated
2026-10-06 11:13:16 +02:00
Jakub Zych
964145628a docs(14.2.1): add research and validation strategy 2026-10-06 10:57:17 +02:00
Jakub Zych
d2609e9499 docs(state): record phase 14.2.1 context session 2026-10-06 10:41:45 +02:00
Jakub Zych
6d2e5e6f4b docs(14.2.1): capture phase context 2026-10-06 10:41:43 +02:00
Jakub Zych
2449e36ef0 docs(state): record phase 15 context session 2026-10-06 01:29:02 +02:00
Jakub Zych
b1e101cdc0 docs(15): capture phase context 2026-10-06 01:28:58 +02:00
Jakub Zych
e18885fb14 docs(phase-14.1): sync machine state after complete
phase.complete marked 14.1 complete in state.json; keep it with the tracking files.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-05 21:49:53 +02:00
Jakub Zych
b439c8583a docs(phase-14.1): close 1 resolved todo
oauth-identities and /me now have a completed phase; the orphan-pending-routes todo is done.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-05 21:49:40 +02:00
Jakub Zych
9607796d8e docs(phase-14.1): complete phase execution
Corpus is 175/175/0. Tracking advances off 14.1; live Nuxt/MCP checks stay Phase 15.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-05 21:49:40 +02:00
Jakub Zych
eb84825724 docs(14.1): record code review and verification
WR-01 is fixed; WR-02 and the three info findings stay open. The phase
goal is 8/8 with corpus 175/175/0.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-05 21:48:08 +02:00
Jakub Zych
c7c796cb45 docs(14.1-02): complete OAuth identities unit-test plan
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-05 21:38:34 +02:00
Jakub Zych
0d1b5caf3d docs(14.1-01): complete OAuth identities and /me routes plan
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-05 21:25:29 +02:00
Jakub Zych
c3bbbcbb9f docs(14.1): reset STATE progress bar after planning
The planned-phase write left the previous phase's 100% bar; execution of 14.1 has not started.

Co-authored-by: Cursor <cursoragent@cursor.com>
v0.1.4
2026-10-05 19:49:12 +02:00
Jakub Zych
7fc13f7155 docs(14.1): mark phase planned 2026-10-05 19:49:01 +02:00
Jakub Zych
5c65a94db0 docs(14.1): revise plans from checker
Slash-form -run is the only way go test executes the nested phase08 jwt-surface subtest, so verify can emit its PASS line.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-05 19:45:21 +02:00
Jakub Zych
57fdaa0d85 docs(14.1): revise plans from checker 2026-10-05 19:40:40 +02:00
Jakub Zych
3bd461ec68 docs(14.1): create phase plan 2026-10-05 19:36:32 +02:00
Jakub Zych
a160bda55a docs(quick-261005-qvk): map Winter icon-* names onto lucide for plugin navigation 2026-10-05 19:31:22 +02:00
Jakub Zych
1f228f85bd docs(14.1): add pattern map 2026-10-05 19:29:31 +02:00
Jakub Zych
a00dafaf65 fix(admin): map Winter icon-* names onto lucide for plugin navigation
Ported plugins send Winter icon-* class names on nav and settings; the SPA
never loads Font Awesome, so unknown names rendered as empty squares. Map
BM Studies, Quizzes, icon-pencil, and a closed Winter backend alias table
onto named @lucide/vue 1.17.0 exports, keep Square for unknown names, and
rebuild the embedded boardwalk dist.
2026-10-05 19:28:35 +02:00
Jakub Zych
f453b80dc7 docs(14.1): add validation strategy 2026-10-05 19:26:11 +02:00
Jakub Zych
0ea0c787a5 docs(14.1): research phase domain 2026-10-05 19:24:49 +02:00
Jakub Zych
104a1c9f0b docs(12.1): add verification covered_digest so the report is not stale 2026-10-05 16:54:01 +02:00
Jakub Zych
30336e44c6 docs(12.1): verification, UAT, and code-review close-out 2026-10-05 16:53:16 +02:00
Jakub Zych
4e4ce40dbb docs(12.1-05): close plan 05 with SUMMARY after the executor died before writing it 2026-10-05 16:51:31 +02:00
Jakub Zych
93f0171e9c docs(12.1-05): security review and validation sign-off for Phase 12.1
- 12.1-SECURITY-REVIEW.md: every threat T-12.1-01 to T-12.1-40 and T-12.1-SC with its mitigation, test and observed result; T-12-18 revisited; the D-30 guard and its boundary; the eleven handed-over items; five findings that need a decision
- 12.1-VALIDATION.md: per-task map with real task ids and measured run times, signed off
- deferred-items.md: older framework files that name an application
2026-10-05 16:13:50 +02:00
Jakub Zych
83feeef9fa docs(12.1-05): state the limits of relation locks and locked permission codes
- a relation lock covers the form field only; a relation manager on the same relation does not ask the provider
- a locked permission code must be stored with a value its mode can send
2026-10-05 16:01:10 +02:00
Jakub Zych
3190b1ce59 test(12.1-05): complete the Phase 12.1 gate with the removal, coverage, app and evidence stages
- --go, --spa, --openapi, --dist, --docs and --hygiene on the pattern of the Phase 12.2 gate
- --app runs vet and the tests of every module of the application workspace, with the application's name masked in output
- --coverage refuses a package of pact, cabana or the user plugin below 80 percent
- --removal: 27 anchor-exact mutations, one per high or critical protection and one per fix; a dirty file is refused and every file is restored and compared with cmp
- --evidence ties every threat of the five plans to a review row, a test and a removal row
- --self-test plants an input for every detector
2026-10-05 16:01:10 +02:00
Jakub Zych
aced6c7df3 test(12.1-05): unit tests for the list, form, preview and routing behaviours of Phase 12.1 in the SPA
- list: the bulk menu in the toolbar and on the list view with its three failure rows, row states and invisible columns in the table
- form: the forbidden banner, password and preset on the form view, locked relation options, the save body of password and permission fields
- preview view: context fields, hidden tabs, the status hint, the footer with zero, one and several actions, load failures
- routing: the preview route and mapWinterUrl
- backstops: focus returns to the bulk menu trigger; preview URL mapping and the route replacement; locked relation options
- the slug preset runs on the table the user plugin's slug test uses
2026-10-05 15:36:00 +02:00
Jakub Zych
84efdc09e0 test(12.1-05): unit tests for the Phase 12.1 SPA components
- BulkActionsMenu, RowStateBadges, RecordActions, PreviewField, FormErrorBanner, PasswordField and PermissionEditorField, each mounted on its own
- backstop: a row state outside the fixed set renders no badge and no class
- backstop: the permission editor's emission rules per mode, the locked row and codes outside the options
2026-10-05 15:29:44 +02:00
Jakub Zych
2e94cbf9f8 test(12.1-05): unit tests for bulk and record actions, row state, forbidden, preview and the form seams
- bulk action: empty, duplicate, unordered, absent, partial, out-of-scope, rollback, concurrent runs, permissions, CSRF, body cap
- record action: scope, Applies, strict body, offered order, rollback, Applies error
- ForbiddenError from every Form hook, the bulk delete and the relation link and child hooks
- permission editor modes, locked codes and provider errors; relation locks on create, update and belongsTo
- TestPhase121BootErrors: every boot error of plans 01 and 02 with plugin, controller and file
- pact: the action, row state and filter contracts on a sample controller
2026-10-05 14:48:34 +02:00
Jakub Zych
c076b4c059 test(12.1-05): threat test for the Phase 12.1 framework contracts and the first gate stages
- TestPhase121Threats: one subtest per mitigated threat T-12.1-01 to T-12.1-15
- roster fixture: sentinel names and knobs for failing hooks and providers
- scripts/check-phase12.1.sh: fail-closed go test detector, --self-test and --security
2026-10-05 14:30:31 +02:00
Jakub Zych
52f864ebfc docs(12.1-04): update state and roadmap after the groups and organisations plan 2026-10-05 14:10:11 +02:00