From 3f9d3b4f11109b00256662c574434acef70fe69e Mon Sep 17 00:00:00 2001 From: Jakub Zych Date: Sun, 11 Oct 2026 02:01:50 +0200 Subject: [PATCH] docs: sync todos with g15office and map phases to milestone tasks Tag the 17 open todos with their g15office task IDs, close 7 todos that are already done or promoted to Phase 16.3, and record the sync rules and the phase-to-task map in .planning/G15OFFICE.md. --- .planning/G15OFFICE.md | 49 +++++++++++++++++++ .planning/todos/README.md | 6 +++ .../backend-admin-api-tokens.md | 7 +++ .../cabana-plugin-registered-field-types.md | 6 +++ .../cabana-richeditor-field-type.md | 6 +++ .../journal-imported-html-admin-resave.md | 6 +++ .../nest-framework-packages-under-modules.md | 6 +++ .../per-module-readmes-after-nest.md | 6 +++ .../rewrite-summercms-readme.md | 6 +++ ...e-application-on-wintercms-vs-summercms.md | 1 + ...slate-messages-as-nuxt-i18n-json-editor.md | 1 + ...pen-apps-when-a-new-version-is-deployed.md | 1 + .../bonfire-duplicate-command-names.md | 1 + .planning/todos/pending/faq-plugin-port.md | 1 + .../pending/journal-author-profile-fields.md | 1 + ...goon-readme-after-commit-callback-order.md | 1 + .../todos/pending/mailblocker-with-mailing.md | 1 + .planning/todos/pending/menu-plugin-port.md | 1 + .../todos/pending/readme-go-fences-src.md | 1 + .../todos/pending/refresh-fonoteka-readme.md | 1 + .../scaffold-admin-controller-incomplete.md | 1 + ...ffold-generated-header-and-command-deps.md | 1 + .../scaffold-same-second-migration-order.md | 1 + .../todos/pending/sitemap-plugin-port.md | 1 + .../wristband-neutral-resource-default.md | 1 + 25 files changed, 114 insertions(+) create mode 100644 .planning/G15OFFICE.md create mode 100644 .planning/todos/README.md rename .planning/todos/{pending => done}/backend-admin-api-tokens.md (80%) rename .planning/todos/{pending => done}/cabana-plugin-registered-field-types.md (93%) rename .planning/todos/{pending => done}/cabana-richeditor-field-type.md (85%) rename .planning/todos/{pending => done}/journal-imported-html-admin-resave.md (86%) rename .planning/todos/{pending => done}/nest-framework-packages-under-modules.md (88%) rename .planning/todos/{pending => done}/per-module-readmes-after-nest.md (81%) rename .planning/todos/{pending => done}/rewrite-summercms-readme.md (85%) diff --git a/.planning/G15OFFICE.md b/.planning/G15OFFICE.md new file mode 100644 index 0000000..1787a91 --- /dev/null +++ b/.planning/G15OFFICE.md @@ -0,0 +1,49 @@ +# g15office sync + +Todos and phases in `.planning/` are mirrored in g15office, project `summercms` (see `g15office.json`). Keep the two in sync. + +## Todos + +- Every todo in `todos/pending/` has a g15office task, and its frontmatter carries the task ID: `g15office: `. +- Capturing a todo creates its g15office task in the same session (type Bug, Feature, Improvement or Task; the description ends with `Local: .planning/todos/pending/`). Write the ID back into the frontmatter. +- Closing a todo (moving it to `todos/done/`) also moves its task to `Live`, or to `Rejected` if it was dropped, with a one-line comment saying where it was done. +- A todo promoted to a phase closes into that phase's milestone task. For example, `backend-admin-api-tokens` became the Phase 16.3 task. + +## Phases + +Each roadmap phase has one milestone task titled `[Phase N] `, type Task. Post a short comment on it whenever the phase advances (discussed, planned, a plan executed, verified, UAT, shipped), and keep its status in step: + +| Phase state | g15office status | +|---|---| +| Not discussed, or discussed but not planned | To do | +| Planned or executing | In progress | +| Executed, waiting on verification/UAT | Testing | +| Complete | Live | + +A new phase, inserted or added, gets its task when it is added to `ROADMAP.md`. A todo that a phase will deliver becomes a subtask of that phase's task. + +| Phase | Task | Phase | Task | +|---|---|---|---| +| 1 | 1ar7xvcd | 14.2 | fdlwwsfh | +| 2 | 7uqoumsi | 14.2.1 | bf2wsxhz | +| 3 | 0tszvge7 | 14.3 | utmjarsp | +| 4 | qbwhi5u9 | 15 | qqbp8xtm | +| 5 | 5ahymkhp | 16 | n0nuhzca | +| 6 | altu10qm | 16.1 | y7adhmsm | +| 7 | jzdzafce | 16.2 | gwzqpjyi | +| 8 | 9nwkuxzo | 16.3 | 5lcivllc | +| 9 | hrjqlvb8 | 17 | ejoiuzy4 | +| 10 | vgrmjuwl | 18 | 46vnjevj | +| 10.1 | hwr4istb | 18.1 | 2vriy9pw | +| 10.2 | 6nwcght4 | 19 | 6nojs2go | +| 11 | sz63omvi | 19.1 | uakdpkc8 | +| 11.1 | 9crhrf7k | 19.2 | hgol7otp | +| 11.2 | pvwvnvvi | 19.3 | lpybyjdh | +| 12 | odwb6onw | 19.4 | l7t8dbyl | +| 12.1 | c5wcij0a | 19.5 | onunbz3l | +| 12.2 | hkoccgbx | 19.6 | avoroeb4 | +| 13 | nkbr2ybg | 20 | 0rkcboo0 | +| 14 | cwlaryop | | | +| 14.1 | v0j5lwvq | | | + +Backlog phase 999.1 (newsletter) has no task until it is promoted into the roadmap. diff --git a/.planning/todos/README.md b/.planning/todos/README.md new file mode 100644 index 0000000..3f6f0ac --- /dev/null +++ b/.planning/todos/README.md @@ -0,0 +1,6 @@ +# Todos + +- `pending/`: open todos. Each one has a matching g15office task, and its frontmatter carries the task ID as `g15office: `. +- `done/`: closed todos, each ending with a `## Closed ` note. + +**Keep todos synchronized with g15office** (project `summercms`). Creating, closing or promoting a todo updates its g15office task in the same session. The rules and the phase → task map are in [`../G15OFFICE.md`](../G15OFFICE.md). diff --git a/.planning/todos/pending/backend-admin-api-tokens.md b/.planning/todos/done/backend-admin-api-tokens.md similarity index 80% rename from .planning/todos/pending/backend-admin-api-tokens.md rename to .planning/todos/done/backend-admin-api-tokens.md index 58c731e..57e8ec2 100644 --- a/.planning/todos/pending/backend-admin-api-tokens.md +++ b/.planning/todos/done/backend-admin-api-tokens.md @@ -3,6 +3,9 @@ title: Backend admin personal API tokens (Phase 16.3) date: 2026-09-28 priority: high area: summercms.go admin auth +g15office: 5lcivllc +status: done +closed: 2026-10-11 --- Apparatus provides personal API tokens for backend admins (`PersonalApiToken` model, `TokenAuthenticate` + `ForceJsonResponse` middleware, token create/revoke on the backend user form). Nothing in Płytarium calls it, so it is deferred past v1. The Phase 9 `backend` guard already accepts `Authorization: Bearer` for CLI and tests. @@ -10,3 +13,7 @@ Apparatus provides personal API tokens for backend admins (`PersonalApiToken` mo Revisit when a Golem15 project needs scripted access to the admin API. See `.planning/notes/apparatus-dissolved-into-framework.md`. **2026-10-10:** Promoted to Phase 16.3 (scoped tokens, Journal agent use case). No migration of Apparatus tokens. + +## Closed 2026-10-11 + +Promoted to Phase 16.3 on 2026-10-10. The g15office task is now the Phase 16.3 milestone task. diff --git a/.planning/todos/pending/cabana-plugin-registered-field-types.md b/.planning/todos/done/cabana-plugin-registered-field-types.md similarity index 93% rename from .planning/todos/pending/cabana-plugin-registered-field-types.md rename to .planning/todos/done/cabana-plugin-registered-field-types.md index 059f9ba..21e4009 100644 --- a/.planning/todos/pending/cabana-plugin-registered-field-types.md +++ b/.planning/todos/done/cabana-plugin-registered-field-types.md @@ -9,6 +9,8 @@ files: - modules/cabana/extension.go - modules/pact - admin/src/components/form/registry.ts +status: done +closed: 2026-10-11 --- ## Problem @@ -30,3 +32,7 @@ Add a capability interface in `pact` (for example `HasFormFieldTypes`) through w - Update the cabana README and `docs/`, the admin OpenAPI and the generated types, and commit `dist/`, all in the same change. Decide in a framework phase (or a decimal phase before the first plugin that needs it). Phase 18's `money` field stays a core cabana type (18-CONTEXT); this todo covers the plugins that follow. + +## Closed 2026-10-11 + +Done in Phase 16.2: `pact.FormFieldType` plus cabana's field-type registry (`modules/cabana/field_type.go`). diff --git a/.planning/todos/pending/cabana-richeditor-field-type.md b/.planning/todos/done/cabana-richeditor-field-type.md similarity index 85% rename from .planning/todos/pending/cabana-richeditor-field-type.md rename to .planning/todos/done/cabana-richeditor-field-type.md index 9f191c7..b5947b7 100644 --- a/.planning/todos/pending/cabana-richeditor-field-type.md +++ b/.planning/todos/done/cabana-richeditor-field-type.md @@ -6,6 +6,8 @@ severity: minor files: - modules/cabana/form_schema.go - ../sm-journal-plugin/models/category/fields.yaml +status: done +closed: 2026-10-11 --- ## Problem @@ -15,3 +17,7 @@ D-21 asks for a rich content field on Journal categories. cabana has no WYSIWYG ## Solution Add a `richeditor` field type (and an `mlricheditor` variant if a translatable rich field is needed) to the cabana form schema (`modules/cabana/form_schema.go`) and to the admin SPA. Keep the server-side gate on save: the Journal plugin's `classes.CheckHTML` runs in the Categories controller's `FormBeforeCreate` and `FormBeforeUpdate`, and the new field type must not bypass it. Then switch the Journal category `content` field in `models/category/fields.yaml` from `textarea` to `richeditor`. + +## Closed 2026-10-11 + +Done in Phase 16.2: the Journal `blogeditor`/`mlblogeditor` plugin field type edits category and post HTML content. diff --git a/.planning/todos/pending/journal-imported-html-admin-resave.md b/.planning/todos/done/journal-imported-html-admin-resave.md similarity index 86% rename from .planning/todos/pending/journal-imported-html-admin-resave.md rename to .planning/todos/done/journal-imported-html-admin-resave.md index 8134a07..db4aa8d 100644 --- a/.planning/todos/pending/journal-imported-html-admin-resave.md +++ b/.planning/todos/done/journal-imported-html-admin-resave.md @@ -3,6 +3,8 @@ title: Keep imported HTML post bodies intact when a Journal post is re-saved in date: 2026-10-09 priority: high area: sm-journal-plugin +status: done +closed: 2026-10-11 --- Phase 16 RESEARCH Pitfall 2. The PHP journal export carries the pl post `content` as **HTML** (61 of 63 published posts on grzybyfunkcjonalne.pl). `journal:import-posts` stores it as is and the pl `content_html` is correct, so imported posts render fine. But an admin save of such a post runs `FormatHTML(content)`: goldmark without `html.WithUnsafe()` replaces raw HTML with ``, so the post body is wiped (probe in 16-RESEARCH.md: `pl HTML content -> out="\n"`). @@ -16,3 +18,7 @@ Fix in `sm-journal-plugin`, one of: - add a content format flag on the post so HTML-sourced posts are edited as HTML. Whatever the fix, it must keep the XSS gate (`classes.CheckHTML`) on every write path and keep the PHP API contract of `content`/`content_html` unchanged. Add a test that re-saves an imported HTML post and asserts `content_html` is unchanged. + +## Closed 2026-10-11 + +Done in Phase 16.2 (D-03): `FormatHTML` passes raw HTML through (`html.WithUnsafe()`), covered by `TestFormatHTMLKeepsRawHTML` and the posts admin smoke test. diff --git a/.planning/todos/pending/nest-framework-packages-under-modules.md b/.planning/todos/done/nest-framework-packages-under-modules.md similarity index 88% rename from .planning/todos/pending/nest-framework-packages-under-modules.md rename to .planning/todos/done/nest-framework-packages-under-modules.md index 8a5d9ac..88a7e80 100644 --- a/.planning/todos/pending/nest-framework-packages-under-modules.md +++ b/.planning/todos/done/nest-framework-packages-under-modules.md @@ -3,6 +3,8 @@ title: Nest framework packages under modules/ — same beach names date: 2026-09-28 priority: high area: summercms.go +status: done +closed: 2026-10-11 --- Mechanical layout change only. Do not rename packages. @@ -18,3 +20,7 @@ Import paths become `git.golem15.com/golem15/summercms/modules/`. Rewrite Do this before Phase 11 adds more root packages. Do not remap onto Winter `system` / `backend` / `cms`. After the move is green, run the sibling todo that writes a short `README.md` per module. + +## Closed 2026-10-11 + +Done in Phase 10.2: every framework package lives under `modules//`. diff --git a/.planning/todos/pending/per-module-readmes-after-nest.md b/.planning/todos/done/per-module-readmes-after-nest.md similarity index 81% rename from .planning/todos/pending/per-module-readmes-after-nest.md rename to .planning/todos/done/per-module-readmes-after-nest.md index 28784a1..94b34b5 100644 --- a/.planning/todos/pending/per-module-readmes-after-nest.md +++ b/.planning/todos/done/per-module-readmes-after-nest.md @@ -3,6 +3,8 @@ title: Short README.md per modules/* after the nest date: 2026-09-28 priority: medium area: summercms.go/modules +status: done +closed: 2026-10-11 --- Blocked on `.planning/todos/pending/nest-framework-packages-under-modules.md`. @@ -12,3 +14,7 @@ After the packages live under `modules/`, spawn a GSD explore / researcher pass Each file: one paragraph on what the package is for, who imports it, and one example entry point (`Package.Type` or file). No architecture essays. No copy-paste of planning docs. The top-level `summercms.go/README.md` should then link the directory instead of explaining every beach name inline. + +## Closed 2026-10-11 + +Done: all 24 `modules/*` packages ship a README (Phase 10.2, later the Role and mnemonic passes). diff --git a/.planning/todos/pending/rewrite-summercms-readme.md b/.planning/todos/done/rewrite-summercms-readme.md similarity index 85% rename from .planning/todos/pending/rewrite-summercms-readme.md rename to .planning/todos/done/rewrite-summercms-readme.md index 2ae90aa..c8d42ef 100644 --- a/.planning/todos/pending/rewrite-summercms-readme.md +++ b/.planning/todos/done/rewrite-summercms-readme.md @@ -3,6 +3,8 @@ title: Rewrite summercms.go README — onboard, recreate login, honest cutover date: 2026-09-28 priority: high area: summercms.go/README.md +status: done +closed: 2026-10-11 --- Replace `README.md`. It currently says pre-alpha / nothing runs. That is false. @@ -16,3 +18,7 @@ The long story lives here, not in `fonoteka.go`. Include: - After the `modules/` nest lands, point at `modules//README.md` instead of listing beach-named packages at the repo root. Do not invent a production runbook. Operator procedure stays in the PHP `docs/deploy/plytarium.com.md` until Phase 15. + +## Closed 2026-10-11 + +Done: the root README now covers key concepts, requirements, quick start and links to every module README. diff --git a/.planning/todos/pending/2026-10-01-benchmark-the-application-on-wintercms-vs-summercms.md b/.planning/todos/pending/2026-10-01-benchmark-the-application-on-wintercms-vs-summercms.md index 36af992..13cda82 100644 --- a/.planning/todos/pending/2026-10-01-benchmark-the-application-on-wintercms-vs-summercms.md +++ b/.planning/todos/pending/2026-10-01-benchmark-the-application-on-wintercms-vs-summercms.md @@ -5,6 +5,7 @@ area: docs severity: minor files: - docs/architecture/performance-and-scaling.md +g15office: gy0u2z5c --- ## Problem diff --git a/.planning/todos/pending/2026-10-07-translate-messages-as-nuxt-i18n-json-editor.md b/.planning/todos/pending/2026-10-07-translate-messages-as-nuxt-i18n-json-editor.md index 606fd46..45e7918 100644 --- a/.planning/todos/pending/2026-10-07-translate-messages-as-nuxt-i18n-json-editor.md +++ b/.planning/todos/pending/2026-10-07-translate-messages-as-nuxt-i18n-json-editor.md @@ -7,6 +7,7 @@ files: - ../sm-translate-plugin/admin_settings.go - modules/pact/capabilities.go (SettingsItem.Controller) - ../examples/golem15-wintercms-starter/plugins/golem15/translate/Plugin.php (registerSettings: messages) +g15office: ewlzc7we --- ## Problem diff --git a/.planning/todos/pending/2026-10-11-reload-open-apps-when-a-new-version-is-deployed.md b/.planning/todos/pending/2026-10-11-reload-open-apps-when-a-new-version-is-deployed.md index a3a9678..f4848ca 100644 --- a/.planning/todos/pending/2026-10-11-reload-open-apps-when-a-new-version-is-deployed.md +++ b/.planning/todos/pending/2026-10-11-reload-open-apps-when-a-new-version-is-deployed.md @@ -7,6 +7,7 @@ files: - modules/boardwalk/boardwalk.go:110-133 - admin/src/app/fieldTypes.ts - admin/src/components/form/registry.ts +g15office: ltcvqext --- ## Problem diff --git a/.planning/todos/pending/bonfire-duplicate-command-names.md b/.planning/todos/pending/bonfire-duplicate-command-names.md index 3a23ab4..2779112 100644 --- a/.planning/todos/pending/bonfire-duplicate-command-names.md +++ b/.planning/todos/pending/bonfire-duplicate-command-names.md @@ -3,6 +3,7 @@ title: Reject duplicate console command names in bonfire.NewRoot date: 2026-09-30 priority: low area: summercms.go bonfire +g15office: u4rtpcl1 --- `bonfire.NewRoot` validates each command name's form (`namespace:verb`, or one of the bare framework names) but does not check for duplicates. The generated application `main` appends plugin commands after the framework's runtime commands, so a plugin that declares a command with the same name as a framework command, or as another plugin's command, builds and starts without an error, and which one runs is decided by Cobra. diff --git a/.planning/todos/pending/faq-plugin-port.md b/.planning/todos/pending/faq-plugin-port.md index 552deff..894c37f 100644 --- a/.planning/todos/pending/faq-plugin-port.md +++ b/.planning/todos/pending/faq-plugin-port.md @@ -3,6 +3,7 @@ title: Port the FAQ plugin as sm-faq-plugin so FAQs become editable date: 2026-10-07 priority: medium area: sm-faq-plugin +g15office: ylgfanlk --- Phase 16 ships the grzybyfunkcjonalne.pl FAQ (`g15_faq` slug `what-mushrooms-can-give-you`) as static i18n/markdown content in the Nuxt app. Later blogs need editors to manage FAQs, so port `Golem15.Faq` 1:1 as its own `sm-faq-plugin` repo (see `.planning/notes/core-plugins-own-repos.md`): models, admin screens and a public read API by slug. diff --git a/.planning/todos/pending/journal-author-profile-fields.md b/.planning/todos/pending/journal-author-profile-fields.md index 82d9b44..1f7bd74 100644 --- a/.planning/todos/pending/journal-author-profile-fields.md +++ b/.planning/todos/pending/journal-author-profile-fields.md @@ -6,6 +6,7 @@ severity: minor files: - ../sm-journal-plugin/controllers/api/authors.go - modules/lagoon/backend_admin_migrations.go +g15office: esrp4qtx --- ## Problem diff --git a/.planning/todos/pending/lagoon-readme-after-commit-callback-order.md b/.planning/todos/pending/lagoon-readme-after-commit-callback-order.md index d6b01c3..eec84bd 100644 --- a/.planning/todos/pending/lagoon-readme-after-commit-callback-order.md +++ b/.planning/todos/pending/lagoon-readme-after-commit-callback-order.md @@ -3,6 +3,7 @@ title: lagoon README registers an after-commit GORM callback that can sort after date: 2026-09-30 priority: high area: summercms.go lagoon +g15office: fqfoclxq --- The `lagoon.OnDatabase` example in `modules/lagoon/README.md` registers its create callback with `After("gorm:after_create")` and calls `lagoon.AfterCommit` from it. GORM sorts that callback after `lagoon:after_commit` (itself `After("gorm:commit_or_rollback_transaction")`), so the work is buffered after the buffer was flushed and never runs, with no error or log. A docs test reproduced it: the same callback registered with `After("gorm:create").Before("gorm:commit_or_rollback_transaction")` runs as expected. diff --git a/.planning/todos/pending/mailblocker-with-mailing.md b/.planning/todos/pending/mailblocker-with-mailing.md index 7da6860..e4f7908 100644 --- a/.planning/todos/pending/mailblocker-with-mailing.md +++ b/.planning/todos/pending/mailblocker-with-mailing.md @@ -3,6 +3,7 @@ title: Port MailBlocker and the block-mail checkbox with the mailing work date: 2026-10-04 priority: medium area: sm-user-plugin mail +g15office: 9cxuwfzy --- The PHP user form has a "block all mail to this user" checkbox (`block_mail`, update context) backed by `Golem15\User\Models\MailBlocker`. Phase 12.1 left it out (12.1-CONTEXT D-21): it needs its own table and a check in every mail send path, which is a mail feature rather than an admin screen. diff --git a/.planning/todos/pending/menu-plugin-port.md b/.planning/todos/pending/menu-plugin-port.md index 74d30fc..f8cd351 100644 --- a/.planning/todos/pending/menu-plugin-port.md +++ b/.planning/todos/pending/menu-plugin-port.md @@ -3,6 +3,7 @@ title: Port the menu plugin as sm-menu-plugin so blog menus become editable date: 2026-10-07 priority: medium area: sm-menu-plugin +g15office: rfd6l4u4 --- Phase 16 hardcodes the grzybyfunkcjonalne.pl main menu as typed config in the Nuxt app, replacing the `g15_menu` component. Later blogs need editors to manage menus again, so port `Golem15.Menu` 1:1 as its own `sm-menu-plugin` repo (see `.planning/notes/core-plugins-own-repos.md`): models, admin screens and a public read API that the shared `vue-journal-layer` (or a sibling layer) can consume. diff --git a/.planning/todos/pending/readme-go-fences-src.md b/.planning/todos/pending/readme-go-fences-src.md index 33d0010..44b6ff6 100644 --- a/.planning/todos/pending/readme-go-fences-src.md +++ b/.planning/todos/pending/readme-go-fences-src.md @@ -3,6 +3,7 @@ title: Convert module README Go code blocks to compiled src= references date: 2026-09-30 priority: medium area: summercms.go/modules/*/README.md, internal/docsite +g15office: gplauwlb --- Phase 11.1 (D-18) publishes every module README as an `api/` docs page, but its Go code blocks (about 41 across 22 READMEs) are only identifier-checked, not compiled. Move each to an `Example*` or region in the module's `example_test.go` and reference it with `src=`, then drop the README exemption in `internal/docsite` `check_policy.go` so ROADMAP 11.1 SC4 can be widened back to "every Go example in the docs". diff --git a/.planning/todos/pending/refresh-fonoteka-readme.md b/.planning/todos/pending/refresh-fonoteka-readme.md index c6c3c4d..0d8866e 100644 --- a/.planning/todos/pending/refresh-fonoteka-readme.md +++ b/.planning/todos/pending/refresh-fonoteka-readme.md @@ -3,6 +3,7 @@ title: Refresh fonoteka.go README — short status plus migrate/serve/login date: 2026-09-28 priority: high area: ../fonoteka.go/README.md +g15office: is8whvje --- Keep this file a short run card. Do not duplicate the framework story. diff --git a/.planning/todos/pending/scaffold-admin-controller-incomplete.md b/.planning/todos/pending/scaffold-admin-controller-incomplete.md index 0a24e48..c9a6a6e 100644 --- a/.planning/todos/pending/scaffold-admin-controller-incomplete.md +++ b/.planning/todos/pending/scaffold-admin-controller-incomplete.md @@ -3,6 +3,7 @@ title: make:admin-controller output does not boot and names the model after the date: 2026-09-30 priority: medium area: summercms.go internal/build +g15office: evdzmic4 --- `summer make:admin-controller acme.blog Posts` writes a controller and YAML that compile but are not a working admin screen: diff --git a/.planning/todos/pending/scaffold-generated-header-and-command-deps.md b/.planning/todos/pending/scaffold-generated-header-and-command-deps.md index ec94781..cf6d205 100644 --- a/.planning/todos/pending/scaffold-generated-header-and-command-deps.md +++ b/.planning/todos/pending/scaffold-generated-header-and-command-deps.md @@ -3,6 +3,7 @@ title: Scaffolded files carry a DO NOT EDIT header, and make:command cannot reac date: 2026-09-30 priority: medium area: summercms.go internal/build +g15office: hqyet7qh --- Two scaffolder conventions that the porting walkthrough had to work around: diff --git a/.planning/todos/pending/scaffold-same-second-migration-order.md b/.planning/todos/pending/scaffold-same-second-migration-order.md index e88aeb8..291ef52 100644 --- a/.planning/todos/pending/scaffold-same-second-migration-order.md +++ b/.planning/todos/pending/scaffold-same-second-migration-order.md @@ -3,6 +3,7 @@ title: make:model and make:migration in the same second produce migrations that date: 2026-09-30 priority: high area: summercms.go internal/build +g15office: xp2bt2rl --- `nextMigrationFile` in `internal/build/artifact.go` names a migration `_` and only moves to the next second when a file with the same full name already exists. Two migrations with different slugs created in the same second share one timestamp, and `refreshRegistry` sorts them by file name. Running `summer make:model acme.news Item` and `summer make:migration acme.news AddFlag` back to back (a probe in a copy of examples/hello, 2026-09-30) wrote `20260930213644_add_flag.go` and `20260930213644_create_acme_news_items.go`, and `registry.gen.go` listed `AddFlag` before `CreateItems`. gormigrate runs the set in slice order, so the ALTER TABLE migration would run before the CREATE TABLE one and fail. diff --git a/.planning/todos/pending/sitemap-plugin-port.md b/.planning/todos/pending/sitemap-plugin-port.md index fbd180a..247679c 100644 --- a/.planning/todos/pending/sitemap-plugin-port.md +++ b/.planning/todos/pending/sitemap-plugin-port.md @@ -3,6 +3,7 @@ title: Port the sitemap plugin 1:1 as sm-sitemap-plugin for the next blog projec date: 2026-10-03 priority: medium area: sm-sitemap-plugin +g15office: krx9geua --- Phase 14 dropped sitemap for Płytarium, because Nuxt builds its own sitemap with `@nuxtjs/seo` and fonoteka registers no menu item types. The next port after Płytarium is a blog project (grzybyfunkcjonalne.pl or golem15.com), and it needs `Golem15.Sitemap` 1:1. diff --git a/.planning/todos/pending/wristband-neutral-resource-default.md b/.planning/todos/pending/wristband-neutral-resource-default.md index a1912ef..64c6c2d 100644 --- a/.planning/todos/pending/wristband-neutral-resource-default.md +++ b/.planning/todos/pending/wristband-neutral-resource-default.md @@ -3,6 +3,7 @@ title: Neutral default resource URL in wristband.DefaultOptions date: 2026-09-30 priority: medium area: summercms.go wristband +g15office: iarcg5dk --- `wristband.DefaultOptions()` ships a `Resource` default (the RFC 8707 resource indicator) whose URL names a consuming application, and the comments around it name that application too: the `Resource` field comment and the default in `modules/wristband/server.go`, the package comment at the top of `server.go`, and comments in `stores.go` and `client_issue.go`.