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

79 lines
3.7 KiB
Markdown

# 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