Commit Graph

2246 Commits

Author SHA1 Message Date
Jakub Zych
4cd35c9d66 feat(cabana): per-request options for plugin field types
- pact.FormFieldType gains RequestOptions, called with the application's
  database once per form schema request for each type the form uses
- the form schema route merges the answer into a copy of each field's
  typeOptions; a fields.yaml key wins, the compiled schema never changes
- an error logs one warning naming the type and serves the fields.yaml
  options only
- TestFieldTypeRequestOptions covers every screen, the precedence, the
  call count, the error path, unchanged schemas, form extension fields
  and the authenticated handler; a runnable example backs the docs
- the typeOptions description, the regenerated OpenAPI document and
  schema.d.ts, the field types page and the pact and cabana READMEs
  document it
2026-11-04 08:40:09 +01:00
Jakub Zych
561a56c768 feat(signpost): content descriptor fields for dates, parents, authors, media and outline
- pact.ContentDescriptor gains Kind and Tools with the ContentKind and
  ContentTool constants
- pact.ContentRecord gains PublishedAt, Parents, Authors and TopHeading;
  pact.ContentLocale gains Images, Videos and Headings, with the value
  types ContentRef, ContentPerson, ContentImage, ContentVideo and
  ContentHeading; every field is optional
- TestContentDescriptorFields proves signpost hands them through and
  that a type setting none of them describes as before
- the runnable content example, the pact and signpost READMEs and the
  menu item types page document the fields
2026-11-04 08:31:49 +01:00
Jakub Zych
399efed845 docs(20): review disposition after the gap closure
- CR-01, CR-02, CR-03, WR-01, WR-04 and WR-05 fixed, with commits, tags
  and the live checks of release 195aa213c546
- WR-02, WR-03, WR-06 and IN-01 to IN-09 deferred, one todo each
2026-11-03 23:07:32 +01:00
Jakub Zych
2035563fc7 docs(phase-20): update tracking after wave 7 2026-11-02 18:50:35 +01:00
Jakub Zych
8afc9bbc3e docs(20-08): call and session fixes summary 2026-11-02 18:50:35 +01:00
Jakub Zych
d1be8aa54d docs(20-07): filter hardening summary 2026-11-02 18:50:35 +01:00
Jakub Zych
762f0ae9aa docs(phase-20): add gap-closure plans 20-07 to 20-09 to the roadmap 2026-11-02 18:23:43 +01:00
Jakub Zych
5da9387427 docs(20): gap-closure plans for the code review findings
Claude-Session: https://claude.ai/code/session_01BK6kckmLyJ4a91Vm9rqaDP
2026-11-02 18:20:39 +01:00
Jakub Zych
f3032950be docs(20): code review of the chat family and the demo 2026-11-02 00:53:14 +01:00
Jakub Zych
a4b32b14e6 docs(phase-20): update tracking after wave 6 2026-11-02 00:38:09 +01:00
Jakub Zych
b113e12215 docs(20-06): unit tests for the chat family, two-browser checks and the live sign-off summary 2026-11-02 00:37:58 +01:00
Jakub Zych
8a3ac87abb docs(phase-20): update tracking after wave 5 2026-11-01 18:41:06 +01:00
Jakub Zych
079ef3e61e docs(20-05): chat family deployed on demo.summercms.io with its own LiveKit summary
Claude-Session: https://claude.ai/code/session_01BK6kckmLyJ4a91Vm9rqaDP
2026-11-01 18:40:42 +01:00
Jakub Zych
6389479906 docs(phase-20): update tracking after wave 4 2026-10-31 20:11:45 +01:00
Jakub Zych
d50a1575ca docs(20-04): forum, friends and video-call layers v0.1.0 on the demo site summary 2026-10-31 20:11:26 +01:00
Jakub Zych
0301dc2ae4 docs(20-04): API coverage of livekit-client, LiveKit, Centrifugo and Web Push 2026-10-31 15:07:39 +01:00
Jakub Zych
b40c519747 docs(phase-20): update tracking after wave 3 2026-10-31 14:20:33 +01:00
Jakub Zych
f1236743ae docs(20-03): vue-chat-layer v0.1.0 and chat on the demo site summary 2026-10-31 14:19:57 +01:00
Jakub Zych
baa0f20eb2 docs(phase-20): update tracking after wave 2 2026-10-30 19:13:00 +01:00
Jakub Zych
00607d165d docs(20-02): demo backend for the chat family summary 2026-10-30 19:11:58 +01:00
Jakub Zych
d6f490a9ab docs(20-02): close the sm-demo-app journal/oauthserver pointer todo
Already done by sm-demo-app 2133309 and 5ec5941 (oauthserver v0.1.6,
journal v0.2.6).
2026-10-30 18:37:35 +01:00
Jakub Zych
159cd5ecf4 docs(phase-20): update tracking after wave 1 2026-10-30 18:26:41 +01:00
Jakub Zych
2d28c9485c docs(20-01): chat family release summary 2026-10-30 18:25:54 +01:00
Jakub Zych
677e30f6f5 docs(34): record the v0.6.0 release, summercms.io and demo deploys 2026-10-30 15:54:28 +01:00
Jakub Zych
76288cd9e8 test(34): persist human verification items as UAT v0.6.0 2026-10-30 12:41:26 +01:00
Jakub Zych
f6d4c67314 test(34): persist human verification items as UAT 2026-10-30 12:40:44 +01:00
Jakub Zych
024fd82732 docs(34): re-verification passes, presentations ledger counts 2026-10-30 12:40:44 +01:00
Jakub Zych
c739a7dd06 docs(34): presentations v0.1.2 includes the sztab theme commit 2026-10-30 12:34:00 +01:00
Jakub Zych
211be60648 docs(34): roll out plugin.yaml to sm-presentations-plugin 2026-10-30 12:24:06 +01:00
Jakub Zych
65e0cdd1fa test(34): phase gate covers sm-presentations-plugin 2026-10-30 12:24:06 +01:00
Jakub Zych
ba39bb1125 docs(34): roll out plugin.yaml to the remaining public plugin repos 2026-10-29 23:25:08 +01:00
Jakub Zych
999054b0bd test(34): phase gate covers the remaining public plugin repos 2026-10-29 23:25:08 +01:00
Jakub Zych
87921c27f6 fix(kiosk): fetch a required plugin module whose replace directory is missing
A plugin developed inside an application replaces its required plugins
with sibling directories (../user). Checked out on its own, that
directory is missing and plugin.yaml lost the minimum (golem15.user: ""),
so the manifest differed between the two layouts and TestPluginManifest
could not pass in both. Such a module is now fetched at the version
go.mod requires, as a consumer would see it.

- listedModule.fallback marks a local replace whose directory is absent
- fallback modules download separately, so one unfetchable version does
  not hold up the others
- TestDeriveMissingReplace over a file:// proxy (offline)
2026-10-29 23:18:07 +01:00
Jakub Zych
a9237c8ec3 docs(34): phase verification report 2026-10-29 22:57:25 +01:00
Jakub Zych
7b60c17138 docs(34): code review fix report 2026-10-29 22:37:01 +01:00
Jakub Zych
75a0dea0a5 fix(34): WR-10 expect older compatible releases in the Plugins screen smoke test
The smoke fixture's acme.blog has v0.1.1 for framework v0.6.0 under a
newest release that needs v0.7.0; plugin:install picks v0.1.1, so the
marketplace now marks it compatible.
2026-10-29 22:23:05 +01:00
Jakub Zych
e6b3aa2222 fix(34): WR-11 accept an inline plugins list in plugin:add again
The comment-keeping summer.yaml edit refused a flow-style plugins list
(plugins: [{id: a, module: b}]) that plugin:add used to handle with a
full rewrite. The edit now replaces an inline list, over one or several
lines, with a block list of its items plus the new ones and keeps every
other line. A list it cannot edit in place (a tagged one, say) falls
back to the full SaveManifest rewrite with a note that the comments were
not kept. plugin:install gets the same behaviour.
2026-10-29 22:15:09 +01:00
Jakub Zych
754ab5423a fix(34): WR-10 align the marketplace compatibility marker with plugin:install
With a framework version that is not a release (a devel build, an empty
FrameworkVersion) every plugin with a minimum was marked as needing a
newer framework, and Compatible looked only at the newest release, so a
plugin whose older release fits was marked although plugin:install
would install that release. An unknown framework now gives no marker
(and no needs-framework note on the Installed tab), and a plugin whose
newest release is too new is looked up (cached, four at a time) and
counts as compatible when an older release fits.
2026-10-29 22:12:54 +01:00
Jakub Zych
7b193032c8 fix(34): WR-06 bound the Plugins screen's search cache
pluginCatalog.lists was keyed by every distinct query and category and
never dropped an expired entry, so searching distinct strings grew the
process without limit (each entry can hold a 4 MiB answer). Storing a
search into a full cache now drops the expired searches and then the
ones that expire first, keeping at most 256.
2026-10-29 22:10:41 +01:00
Jakub Zych
2f3eba0cb1 fix(34): WR-03 refuse user info in https git URLs
validateGitURL refused only a password, but GitHub, GitLab and Gitea take
a token as the user part of an https URL. Such a URL was printed and
written to .gitmodules by git submodule add, and so committed with the
application. An https URL with any user info is now refused with a hint
to use a credential helper; the user of an ssh URL stays allowed.
2026-10-29 22:09:39 +01:00
Jakub Zych
9977e31ac9 fix(34): WR-02 undo a failed plugin:install or plugin:update
A failure after the first change left the application half-modified: a
checkout moved into plugins/<vendor>/<name> but not registered, go.mod
edited, submodules without summer.yaml entries (and the next install
refused the leftover directory), or some submodules updated and others
not. Both commands now snapshot go.mod, go.sum, go.work, go.work.sum,
summer.yaml and .gitmodules (with its index entry) before applying; a
failure restores them, removes the submodules the run added (index
entry, submodule config, absorbed git dir, checkout; registered right
after the move) and checks moved submodules out where they were. What
cannot be undone is named in the error.
2026-10-29 22:08:54 +01:00
Jakub Zych
07673e4f30 fix(34): WR-01 keep summer build working for frameworks before party.Describe
summer build always emitted party.Describe and []party.Info, so an
application whose framework requirement predates v0.6.0 stopped compiling
once the CLI was updated. The build now checks the party package go list
resolves in the application (a static look for Describe and Info, not a
version compare, since a local checkout reports the previous tag until
it is tagged) and, when they are missing, writes main.go and
plugins.gen.go exactly as before, with a warning to move the framework
to v0.6.0. An unresolvable party package keeps the current sources.
2026-10-29 22:03:57 +01:00
Jakub Zych
9b72439533 fix(34): CR-02 install plugins of an installed module at its version
plugin:install pinned only modules chosen in the same plan, so a second
plugin package in a module the application already required was
installed at the newest release, moving the plugin already there, and
with --source the repository was cloned a second time. PlanInstall now
seeds every module of summer.yaml: a plugin in one installs at the
installed version with no go get or clone (only its summer.yaml entry),
and is refused with a plugin:update hint when that version has no
release of it or is not a release. A git URL whose repository is already
a submodule, or whose module the application has, is refused.
2026-10-29 22:01:30 +01:00
Jakub Zych
60551485ed fix(34): CR-01 never move a pseudo-version install back to its base release
plugin:update dropped a go.mod require that was not a strict vX.Y.Z and
treated it as v0.0.0, so a module at a commit after v0.4.0
(v0.4.1-0.<ts>-<hash>) was moved back to v0.4.0. kiosk.Newer now places
a release against a release, a git describe string or a pseudo-version
(by the tag it builds on, in Go's version order); plugin:update and the
admin Plugins screen badge share it. A pseudo-version with no tag before
its commit is left alone with a note naming go get <module>@<tag>.
2026-10-29 21:58:07 +01:00
Jakub Zych
d30ef5de47 docs(34): add code review report 2026-10-29 21:50:37 +01:00
Jakub Zych
16318b0c4a docs(34-06): roadmap plan progress 2026-10-29 21:39:42 +01:00
Jakub Zych
06ac86409a docs(34-06): complete phase gate, unit tests and release ledger plan 2026-10-29 21:39:21 +01:00
Jakub Zych
74c8146c46 docs(34): release ledger and validation map
- 34-release-log.md: v0.6.0 contents, plugin tag table (current -> new),
  release order with the three rebases, 32 pointer bumps, app
  regenerations, summercms.io deploy, v0.6.0 tag message draft, rules
- 34-VALIDATION.md: per-task map for 34-01..34-06, Wave 0 ticked
2026-10-29 21:39:21 +01:00
Jakub Zych
dfc6127009 test: phase 34 gate requires the summercms.io unit tests
- --site: the site plugin's registry unit tests by required name
- --docker: TestRegistryAPIShapes and TestRegistryIngestEndpoint
2026-10-29 21:35:00 +01:00
Jakub Zych
bad273b753 test(admin): PluginsView and settings paths
- PluginsView: tab switching, one request per typing burst and a blank
  search without q, name fallback on cards, copied state clearing, a
  refused clipboard write, a failed marketplace request
- useSettings: settingsPath prefers path, then controller, then the
  singleton form; settingsEntryForPath
2026-10-29 21:27:55 +01:00