Commit Graph

1107 Commits

Author SHA1 Message Date
f734d25d05 test(16.1): persist human verification items as UAT 2026-10-10 00:58:42 +02:00
967449bf62 docs(16.1): add phase verification; record Docker-host suites green 2026-10-10 00:58:28 +02:00
c21fe36de7 docs(16.1): record translation and duplicate-attribute sanitizing; close audit warnings v0.1.17 2026-10-10 00:14:14 +02:00
17d467e9c2 docs(phase-16.1): add security threat verification; fix stale validation row 2026-10-10 00:07:06 +02:00
60892ad49b docs(16.2): create phase plan 2026-10-09 23:55:01 +02:00
cd25af0878 fix(admin): scope remembered list state to the signed-in admin and recover from bad restored queries
- Store list queries under summer-admin.list:<admin id>:<controller>; me()
  and setCurrentUser set the owner, which removes other admins' keys and
  the unscoped keys of older builds; nothing is read or written without one
- clearUser removes every stored query, so logout, session expiry and an
  unrecoverable 401 (expireSession, now used by main.ts) all clear them
- A list request built from a restored query that fails for any reason
  (422, 500, network) forgets the query and loads the plain list once
- A failing URL query keeps the error and offers a reset button
  (backend::lang.list.reset_list, en and pl)
- Document remembered list state in docs/backend/lists-and-filters.md
- Rebuild modules/boardwalk/dist
2026-10-09 23:53:19 +02:00
5be98a0c83 docs(16.1): decide bluemonday for journal HTML sanitizing 2026-10-09 23:35:17 +02:00
cd076b881d docs(16.1): add code review report 2026-10-09 23:22:14 +02:00
b319b59989 docs(16.2): map phase patterns 2026-10-09 23:17:15 +02:00
1920ea6462 docs(phase-16.2): add validation strategy 2026-10-09 23:11:57 +02:00
99dd072f07 docs(16.2): research phase domain 2026-10-09 23:11:04 +02:00
b4adf751c8 docs(16.1-03): update state and roadmap after plan 03 2026-10-09 22:52:51 +02:00
62025d22b3 docs(16.1-03): complete unit tests plan 2026-10-09 22:52:32 +02:00
837e40ae6a docs(16.1-03): record phase 16.1 validation results 2026-10-09 22:51:10 +02:00
837922cf43 test(cabana): relation subquery and locale order coverage
- TestListRelationSQL: DryRun matrix for belongsToMany (incl. custom pivot keys and self-reference), hasMany, hasOne and belongsTo search and sort, soft delete, 422 refusals, bound and LIKE-escaped search values, no outer JOIN next to ListExtendQuery and scope predicates
- TestListRelationSearchPostgres: exact total through two matching tags, string_agg sort order and hasMany search on Postgres
- TestEnabledLocalesDefaultFirst: default-locale ordering cases
2026-10-09 22:47:57 +02:00
a8bce9c01f test(admin): list state round trip and storage coverage
- Form back, cancel, save-and-close and delete land on the list with the stored query; every list request after the return carries it
- listState helpers: key prefix, malformed stored values removed, empty query stores nothing, throwing storage
- ListView entry: URL wins, cleared controls forget the query, same-list navigation, 422 forgets, page clamp
- Logout removes every list key and keeps the sidebar preference
2026-10-09 22:42:36 +02:00
3b8527b397 docs(16.1-02): update state and roadmap after plan 02 2026-10-09 22:37:49 +02:00
80f4497f95 docs(16.1-02): complete release and UAT redeploy plan 2026-10-09 22:37:19 +02:00
d77393b4d1 docs(16.1-01): update state and roadmap after plan 01 v0.1.16 2026-10-09 21:05:55 +02:00
0ec2e31ffa docs(16.1-01): complete journal admin fixes plan 2026-10-09 21:05:31 +02:00
9cac45c389 fix(admin): keep list state in the URL and browser storage
- listState.ts stores each list's query (search, sort, dir, page, per_page,
  filter[name]) under summer-admin.list:<controller>; an empty query is
  never stored, malformed stored values are dropped like a hand-edited URL
- ListView restores the stored query into the URL before its first list
  request when entered without list params; a URL with list params wins
- a 422 forgets the stored query; an out-of-range page clamps to last_page
- logout clears every stored list query
- check-phase10.sh allows browser storage in useSidebar.ts and listState.ts
- list smoke tests start from a clean list state
- rebuilt modules/boardwalk/dist
2026-10-09 21:04:00 +02:00
bd8626e5fc fix(cabana): send the default content locale first in enabledLocales
- enabledContentLocales moves TranslationWriter.DefaultLocale to index 0
  and keeps the other enabled codes in the writer's order
- every ML control opens on enabledLocales[0], so the form now shows the
  host-column values (content, excerpt, title, slug) instead of an empty
  non-default locale
- a DefaultLocale error is logged and keeps the writer's order
- README and forms docs: default locale first
2026-10-09 20:58:12 +02:00
06d75cb654 fix(cabana): search and sort to-many relation columns through subqueries
- relationSubquery reads the pivot, key and table names from GORM's parsed
  relationship (Schema.Relationships.Relations), never from a convention
- list search matches every relation column through a correlated EXISTS,
  so the count query gains no JOIN and belongsToMany search stops failing
- sorting a hasMany or belongsToMany column orders by a correlated
  string_agg subquery before the primary-key tiebreak
- polymorphic relations and unknown related columns answer 422
- DryRun smoke test TestListRelationSearchSmoke needs no Docker
2026-10-09 20:56:53 +02:00
3ca6a0d4b2 docs(16.2): capture phase context 2026-10-09 20:52:50 +02:00
24f258f149 docs(16.1): create phase plan 2026-10-09 20:51:02 +02:00
ef6feb3441 docs(16.1): list state via URL + localStorage, three plans 2026-10-09 20:25:34 +02:00
17ee383a4f docs(phase-16.1): add research and validation strategy 2026-10-09 20:19:59 +02:00
1ef21b0e43 docs(16.1): insert phases 16.1 and 16.2 with 16.1 context 2026-10-09 20:19:29 +02:00
1c2dc28588 docs(16-05): complete unit tests and phase gate plan 2026-10-09 20:18:50 +02:00
a8c65bc71a docs(16-05): Phase 16 validation sign-off
Per-task rows bound to their plan tasks with threat refs, all green after
scripts/check-phase16.sh --all; Wave 0 ticked; nyquist_compliant: true.
2026-10-09 20:16:02 +02:00
c5e03f4a3a test(16-05): Phase 16 gate
scripts/check-phase16.sh runs the layer unit tests, the layer playground
SSR smoke, the site app install/build/tests/smokes, the host boot tests,
the grzyby command tests with -race and check-deploy. Each stage fails on
not ok, fail/skip/todo/cancelled counts, missing named tests, go test
failures, skips, no tests to run, data races or a smoke without ok; it
ends with "Phase 16 gate passed".
2026-10-09 20:15:14 +02:00
679d5544f1 docs(state): record phase 19.1 context session 2026-10-09 20:10:22 +02:00
cbb8f4c6f5 docs(19.1): capture phase context 2026-10-09 20:10:21 +02:00
b7649581da docs(16-04): complete staging deploy plan 2026-10-09 19:56:16 +02:00
4ef6776382 docs(state): record phase 19 context session 2026-10-09 19:53:17 +02:00
bf297d5244 docs(19): capture phase context 2026-10-09 19:53:16 +02:00
90cdc7145c docs(state): record phase 18.1 context session 2026-10-09 19:19:43 +02:00
9248b26f87 docs(18.1): capture phase context 2026-10-09 19:19:36 +02:00
01a34f87f8 docs(roadmap): insert phase 18.1 payment gateway subscriptions 2026-10-09 19:19:36 +02:00
296b9cda87 docs(16-03): complete host, migration runbook and staging deploy plan 2026-10-09 18:56:51 +02:00
6ff7d5da3e docs(16-03): todo for Journal HTML content re-save 2026-10-09 18:45:59 +02:00
719830410e docs(state): record phase 18 context session 2026-10-09 18:45:15 +02:00
65d577b828 docs(todos): capture plugin-registered cabana field types 2026-10-09 18:45:14 +02:00
6ea3652303 docs(18): capture phase context 2026-10-09 18:45:14 +02:00
e381f2cc0f docs(16-02): record plan 16-02 progress and decisions in STATE and ROADMAP v0.1.15 2026-10-09 18:30:15 +02:00
070da81907 docs(16-02): complete vue-grzybyfunkcjonalne-app plan 2026-10-09 18:29:54 +02:00
ee5ab31492 docs(16-01): record plan 16-01 progress and decisions in STATE and ROADMAP 2026-10-09 18:10:01 +02:00
b53892c316 docs(16-01): complete vue-journal-layer plan
- SUMMARY with the D-20/D-21 prerequisite contract
- USER-SETUP: both Gitea repos exist; the site repo is private (SSH)
2026-10-09 18:09:36 +02:00
7c5b8a8cb7 docs(quick-261009-mys): subtitle, avatar and My account page for backend users 2026-10-09 18:01:43 +02:00
89611eaaf9 test(cabana): cover My account profile, password and avatar
- account_internal_test: metadata subtitle reader and writer (NULL, blank,
  null, [], invalid JSON, non-objects, key preservation, NULL on the last
  key), the attachOne contract, avatar cap, unique-violation mapping,
  English fallbacks, and 401 for non-backend principals on all three routes
- account_test (Postgres): profile payload incl. copied WinterCMS metadata
  and avatar rows, trimmed profile saves and metadata keys, the forbidden-key
  allow-list with unchanged rows, email rules, password rules, the failed
  attempt log, Bearer and cookie session effects, CSRF, avatar upload,
  refusals (SVG, HTML as PNG, size, part shape, 413, no bucket) with no row
  or blob left, replace and remove with blob cleanup
- lagoon: TestBackendAdminMetadataColumn covers type, Winter row round trip,
  rollback of only the column and re-migrate
- SPA: AccountView, the user menu account item and avatar image,
  setCurrentUser and profileInitials; lang fixture gains myaccount keys
2026-10-09 17:59:27 +02:00