Files
summercms/.planning/phases/15-journal-plugin/15-DISCUSSION-LOG.md
2026-10-06 01:28:58 +02:00

3.7 KiB

Phase 15: Journal plugin - Discussion Log

Audit trail only. Do not use as input to planning, research, or execution agents. Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.

Date: 2026-10-06 Phase: 15-journal-plugin Areas discussed: PHP source of truth, what ships this phase, public HTTP, where it boots


PHP source of truth

Option Description Selected
Fonoteka's pin 02110eb Newest master; API, tags, search, security fixes ✓
grzybyfunkcjonalne.pl pin 2ad25e0 What the first blog runs today; no API/tags
GitHub master at plan time Moving target

User's choice: Fonoteka's pin, then freeze at 02110eb, read from the Fonoteka path on disk. Notes: All three checkouts are github.com/golem15com/wn-journal-plugin. Binding surface is the full tree (models, YAML, permissions, commands, API shapes). PHPUnit tests are a behavioral spec. Locales en+pl. PHP is read-only this phase, but an urgent pre-migration PHP upgrade is allowed and forces a re-pin. Embed the admin SVG.


What ships this phase

Option Description Selected
Single-locale now No translate plugin
Minimal translate seam in this phase Extra scope
Insert sm-translate-plugin before Journal New phase, not extra Journal scope ✓

User's choice: Insert translate as its own phase before 15. Journal then depends on it so fields stay translatable. Notes: Cabana markdown field this phase (not textarea). Typesense setting off by default, wired to Phase 11 when enabled. Import/export CLI+admin in; Pages menu items and report widget deferred.


Public HTTP

Option Description Selected
Full /_journal/api/v1 Public reads + writes ✓
Public reads only Writes later
No public HTTP Admin+models only

User's choice: Full API. Writes use Phase 9 backend Bearer. Notes: User first thought sm-user-plugin tokens were Apparatus admin tokens. Clarified: frontend user.api_token exists; backend PersonalApiToken / g15_ is still a todo. User then confirmed backend Bearer. Proof is API.md + mapped PHPUnit tests, not tide. Same 120/min buckets and _journal/api/* CORS.


Where it boots

Option Description Selected
In-module testhost No new app (superseded)
sm-journal-dev-app Disposable host
Mount in an existing app fonoteka / summercms.io
sm-grzybyfunkcjonalne-app Empty repo, proof host ✓

User's choice: "we'll start fast" — git@git.golem15.com:golem15/sm-grzybyfunkcjonalne-app.git is the proof that Journal is migrated. Notes: Phase 15 proves mount, migrate, admin, API. Site HTML/views stay Phase 16. Local app at summercms/sm-grzybyfunkcjonalne-app/. Mounts journal + translate + user. Journal remote already created and public. Checkout-location question was skipped; sibling of summercms.go used as default. Testhost-deps question was skipped, then superseded by the grzyby app decision.


Claude's Discretion

  • Markdown field identifiers and docs/OpenAPI/dist/ bundling
  • Plan count and split (unit tests last; plan-count checkpoint)
  • Exact sm-grzybyfunkcjonalne-app wiring files
  • How Winter components are pointed at Phase 16
  • Security-review agent (plugin API + public HTTP + permissions)
  • Local sm-journal-plugin checkout path (skipped question → sibling of summercms.go)

Deferred Ideas

  • Insert sm-translate-plugin before Phase 15
  • Phase 16 site/views
  • Pages menu item types, report widget, sitemap plugin, g15_ admin tokens, extra locales, WYSIWYG/redactor