Skip to content

Release: merge beta into main - #615

Open
rubenvdlinde wants to merge 21 commits into
mainfrom
beta
Open

Release: merge beta into main#615
rubenvdlinde wants to merge 21 commits into
mainfrom
beta

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Stable promotion. Signing failures waived by explicit decision; being fixed separately.

github-actions Bot and others added 11 commits August 30, 2026 17:40
…260830174015

chore(sync): carry beta back into development
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
The 0.2.4 release bumped the version on main. Without this,
development stays behind main and the next development -> main promotion
conflicts on the version file.

Version files resolve to development's side, which is the higher line,
so this never moves a version backwards.
chore(release): sync main back into development
Release: merge development into beta
The 0.2.5-beta.20260830190915 release bumped the version on beta. Without this,
development stays behind beta and the next development -> beta promotion
conflicts on the version file.

Version files resolve to development's side, which is the higher line,
so this never moves a version backwards.
…91050

chore(sync): carry main back into beta
…260830191057

chore(sync): carry beta back into development
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/larpinq @ c826115

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
test-l10n
format
check-l10n-js
check-schema-l10n
composer ✅ 105/105
npm ✅ 525/525
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-30 23:40 UTC

Download the full PDF report from the workflow artifacts.

rubenvdlinde and others added 10 commits August 31, 2026 03:26
…618)

2.25.x makes the canonical KPI card flat and horizontal, so dashboards stop
drawing a grey box inside the white card CnWidgetWrapper already draws, and
2.25.1 fixes the narrow-tile step-down that 2.25.0 shipped inert (a source-order
bug left KPI values clipped on a three-column tile).

The caret range already allowed both; only the lockfile pinned this app back.
Lockfile only.
#620)

initializeStores() called useObjectStore() on line 39 while the file imported
createObjectStore (the factory) and generateUrl, neither of which it used. The
call would have thrown ReferenceError the moment initializeStores() ran.

src/store/modules/object.js already builds the store from the factory and
exports it, and dossiq imports it from exactly there, so this restores the
fleet's shape rather than inventing one.

Also removed a shadowed binding and two JSDoc errors that eslint reported:

  - store.js declared a register binding that was immediately shadowed inside
    the loop and never read. Removing it changes no behaviour — the
    'larpingapp' default it carried was already unreachable.
  - Settings.vue carried @Package twice (once empty) and used @link as a BLOCK
    tag, which is inline-only. Now @see.

prettier reported three files, two of which this change never touched
(src/main.js, webpack.config.js) — that check was already failing.

Verified: lint, format and build all exit 0.
* fix(l10n): cover the schema strings that broke the check

check:schema-l10n failed on development:

  221 schema string(s); 196 uncovered, baseline 134
  62 schema string(s) added with no catalogue key. They will render
  in English inside an otherwise translated form.

Adds Dutch for the field titles and short descriptions a user actually
reads in a form: names, dates, currencies, game master notes, the
requirement-override fields and the experience-point award fields.

en.json takes the identity mapping, which is what the checker requires:
the English string IS the key, so changing it there would stop the schema
matching at all. The Dutch is the part being authored.

The .js catalogues are regenerated with npm run l10n:build rather than
edited, because the .json files are the source and hand-editing the
generated side is how the two drift apart.

Uncovered goes 196 -> 125, which is nine BELOW the previous baseline, so
the baseline is lowered to 125 in the same commit. Leaving it at 134
would let the coverage slip back by nine without the check noticing.

Verified: check:schema-l10n, check:l10n and check:l10n-js all exit 0.

* fix(l10n): translate the 71 schema strings in the other 35 locales

The previous commit added the schema field labels to en.json and nl.json
and left the other 35 catalogues short by the same 71 keys, so
`npm run test:l10n` failed on the parity gate: every required locale must
carry a real translation for every English source key.

Each locale now has all 71. The wording is taken from the terms the
catalogue already uses for the same nouns rather than from a fresh
choice per string: character, skill, event, player, item, condition and
effect all keep the word that locale already picked, and the five keys
that only differ from an existing one by capitalisation ("Start Date"
next to "Start date", the three "Required ..." pairs) reuse the same
translation.

Two schema notes drove specific choices. The `setting` schema is titled
"World", and its own note records that all 35 non-Dutch locales had read
the old title as a UI preference, so "Setting Name" is translated as the
name of the world, not of a setting. "Ability" and "Stat" are separate
schemas, so the locales that had already spent their obvious word on one
of them use a distinct word for the other.

Fifteen locales keep "Status" as-is. It is the actual word in those
languages, and the parity gate counts values identical to English rather
than rejecting them, so nothing needs recording anywhere.

The .js catalogues are regenerated with `npm run l10n:build`. The .json
files are the source; hand-editing the generated side is how the two
drift apart.

Verified: test:l10n, check:l10n-js, check:schema-l10n and format all
exit 0. en.json and nl.json are untouched.

---------

Co-authored-by: Conduction Release Bot <release-bot@conduction.nl>
check:specs failed on development:

  larping_register.json: missing or incomplete top-level x-openregister block
  (needs at least { type, app })

The file is a leftover from the larpingapp -> larpinq rename. It is an OpenAPI
document (openapi/info/components) with no x-openregister block at all, and
larpinq_register.json beside it carries that block correctly and is the one the
app actually uses.

Verified before removing: nothing in the repository references it — not PHP,
not JS, not a workflow, not another register. The validator picked it up only
because it matches the *register*.json glob.

check:specs now PASSES (2 register files, 2 pre-existing warnings about stub
schemas in larpinq_register.json, which this change does not touch). lint and
build both exit 0.
check:specs fails on development:

  [validate-register] ERROR lib/Settings/larping_register.json: missing
  or incomplete top-level x-openregister block (needs at least { type, ...
  [validate-register] FAIL — 1 error(s), 12 warning(s).

lib/Settings/larping_register.json is residue from before the app was
renamed larpingapp -> larpinq. It was last touched on 2026-04-23
('Working on the larping refactor for object store'), carries only
{ openapi, info, components } with no x-openregister block at all, and is
15KB against the 33KB larpinq_register.json that replaced it.

Nothing loads it. ConfigFileLoaderService names the current file
explicitly:

  private const REGISTER_FILE = '/lib/Settings/larpinq_register.json'

and a repo-wide grep for 'larping_register' returns no other hit. The
only thing that reads it is the gate, which scans lib/Settings for
*register*.json and correctly refuses a register declaring no register.

Deleting rather than back-filling the block: adding x-openregister would
make a dead file valid, and a second register file that nothing loads is
the next reader's puzzle. OpenRegister slugs are frozen once written into
stored data -- this file never declared one, so nothing can be pointing at
it.
…2.5-beta.20260830190915

chore(release): sync beta back into development
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
hydra-gates v1.10.0 -> v1.10.0
nc-vue      2.25.1 -> 2.26.0

Lock-only: both packages are already declared with caret ranges that
permit these versions, so nothing about what this app ACCEPTS changes
- only what it currently resolves to. Opened by the weekly fleet
shared-dependency bump, because a lock nobody re-resolves is a pin
nobody chose.

Merging is gated by this repository's own suite, deliberately: taking
hydra-gates v1.8.1 added patchObject() to a published interface, which
is a load-time fatal for any concrete double that implements it without
the method. CI is the only thing that can tell a safe bump from that.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Carries the two KPI-card fixes this dashboard reads: the canonical card is flat
and horizontal (no grey box inside the white card CnWidgetWrapper already
draws), and a calendar-aligned date range follows the reader's calendar rather
than UTC — "Current month" previously showed a To of 1 September in CEST on
31 August.

The caret range already allowed it; only the lockfile pinned this app back.
Lockfile only, and npm pruned nothing.
Release: merge development into beta
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/larpinq @ b07f400

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
test-l10n
format
check-l10n-js
check-schema-l10n
composer ✅ 105/105
npm ✅ 525/525
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-31 10:59 UTC

Download the full PDF report from the workflow artifacts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant