Skip to content

Release: merge beta into main - #463

Merged
rubenvdlinde merged 16 commits into
mainfrom
beta
Aug 30, 2026
Merged

Release: merge beta into main#463
rubenvdlinde merged 16 commits into
mainfrom
beta

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Stable promotion. beta holds 2 commit(s) main does not.

App signing is known-broken on part of the fleet and is being fixed separately; a failure whose only red is the release/signing step is waived here by explicit decision, so the merge lands but no artifact publishes until the secret is valid.

rubenvdlinde and others added 16 commits August 30, 2026 17:02
…ed the E2E failures (#443)

DELIBERATE EXPERIMENT, and revertible in one commit.

CI bisected launchpad's 11 E2E failures to the 9.9.0 -> 9.11.0 move:

  f93f767  9.11.0   E2E failure
  d158755  9.9.0    E2E success   (the pin)

But an isolated reproduction contradicts it. Running the same specs
against a launchpad-demo instance on :8605, seeded exactly as CI seeds
(tests/e2e/seed.sh: e2e-grantee, recipient, firstrunwizard disabled,
demo-data skipped), with a local build against 9.11:

  conditional-visibility-editor.spec.ts   13 passed   <- the 7 CI failures
                                                         do NOT reproduce
  dashboard-sharing.spec.ts                4 failed   <- but at line 83, on
                                                         the switcher row,
                                                         NOT on CI's
                                                         .sharee-option

So two runs correlate the version with the failure, and a controlled run
says 9.11 passes those tests. Correlation across two CI runs is not
causation, and the difference may be load rather than version.

This puts 9.11 back so CI can answer it:

  the 7 recur   -> the NcSelect rework really is the cause, and the specs
                   get adapted to the new component
  the 7 pass    -> they were load-flakes, the pin was incidental, and the
                   other ten apps on 9.11 need nothing

Either answer is worth more than shipping a pin whose justification does
not survive a controlled test.

Co-authored-by: Conduction Release Bot <release-bot@conduction.nl>
#446)

The experiment in #443 has its answer, and it is the one that keeps the
pin: E2E on 9.11 failed with the SAME ELEVEN tests and the SAME
signatures as before.

  127 passed, 11 failed
    7x conditional-visibility-editor   waiting for '.vs__dropdown-option'
    4x dashboard-sharing               waiting for '.sharee-option'

That is deterministic, not load. Two independent CI runs on 9.11 produce
an identical failure set, and 9.9.0 produces none, so the NcSelect rework
is the cause.

My isolated reproduction said otherwise -- those same specs passed on a
9.11 build against a seeded launchpad-demo -- and I have not yet found
what differs between that environment and CI. That gap is real and worth
closing before the specs are adapted, because adapting them against an
environment that does not reproduce the failure fixes nothing.

So development goes back to green on the pin while that work happens,
rather than sitting red. The adaptation is still the plan; this is not a
retreat from it.

The one adaptation already understood and shipped separately is stackiq's
(#841): 9.10 turned .vs__search from the <input> into a wrapper div
around it, measured on a live build. launchpad's two failure modes are
different and not yet explained.

Co-authored-by: Conduction Release Bot <release-bot@conduction.nl>
…260830153148

chore(sync): carry beta back into development
Adapts to @nextcloud/vue 9.11 rather than pinning away from it, and
takes the pin off.

The eleven E2E failures were never an unstable element. The Playwright
trace from CI says so directly:

  - locator resolved to <li class="vs__dropdown-option">
  - attempting click action
    - element is visible, enabled and stable      <- stable
    - scrolling into view if needed
    - <div class="visibility-rule-row__actions"> ... intercepts

The option was VISIBLE, ENABLED AND STABLE. The click was intercepted by
the element painted on top of it.

Both failing areas are the same shape. A column of blocks; a select in
one of them; its dropdown opens downward over the LATER siblings; those
siblings have no stacking context, so they paint last and win:

  conditional-visibility  <div class="visibility-rule-row__actions">
  dashboard-sharing       <div class="dashboard-config__field ...public">
                          <p class="dashboard-config__hint">

9.10's floating-label rework (#8570) is what made it reachable: the
control got taller, so the dropdown now extends far enough to reach them.
That is why 9.9.0 was green and 9.11 is not, without either version being
broken.

The fix is a stacking context on the block that holds the select, in both
places. Nothing else changes, and the dropdown is only raised where a
select actually lives.

⚠️ This could not be verified locally. The same specs PASS against a
seeded launchpad-demo on :8605 built with 9.11 -- the layout there does
not put the dropdown over those siblings. The trace from CI is the
evidence this rests on, and CI is where it has to be confirmed.

Co-authored-by: Conduction Release Bot <release-bot@conduction.nl>
…e modal mask (#452)

The stacking fix in #450 was built on the trace and was not enough. E2E
on 9.11 with it merged is still 127 passed / 11 failed, the same eleven.

The second trace names a bigger interceptor than the first one did:

  70x  class="modal-mask"
  24x  class="checkbox-content__text checkbox-radio-switch__text"
  20x  class="dashboard-config__hint"
  18x  class="visibility-rule-row__actions"
   8x  class="dashboard-config__field dashboard-config__public"

 is Nextcloud's own modal backdrop, and it dominates. A
z-index inside the modal cannot lift the dropdown above the mask if the
dropdown is no longer INSIDE the modal: 9.10's NcSelect appears to render
its menu outside the dialog (appended/teleported), which puts it beneath
the backdrop in stacking order. That is a different defect from the one
#450 addressed, and it needs the menu kept in place or lifted above the
mask -- not more per-component z-index.

The CSS from #450 is KEPT. Those three smaller interceptors are real, the
rule is documented against its trace, and it is inert while the dropdown
renders inline on 9.9.0.

So the pin goes back while that is worked out, because leaving
development red to hold a position is not a trade worth making. This is
not a decision that 9.11 is unusable -- it is a decision not to sit red
while the portal behaviour is understood.

Co-authored-by: Conduction Release Bot <release-bot@conduction.nl>
…#454)

EXPERIMENT. Reverted in one commit if CI stays red.

A real difference between the two versions, verified in the published
packages:

  9.9.0   --vs-dropdown-z-index: 9999  declared on  body
  9.11.0  --vs-dropdown-z-index: 9999  declared on  .nc-select.v-select.select

NcSelect renders its menu with appendToBody: true in BOTH versions -- so
the menu is a child of <body> and is NOT a descendant of the select root.
A custom property declared on the root therefore cannot reach it, while
one declared on body can. That is a plausible mechanism for the
modal-mask interception the trace shows, and it is the only substantive
CSS difference I found between the versions.

WHAT I HAVE NOT SHOWN is that it is the cause. Probing a live 9.11 build
on an isolated instance:

  with the rule:     body --vs-dropdown-z-index=9999, menu z-index=100001
  without the rule:  body --vs-dropdown-z-index=9999, menu z-index=100001

Identical. Something else already declares the variable on body there, so
that environment cannot tell the two states apart -- and it is the same
environment that fails to reproduce the 11 failures at all. The probe is
not evidence for the fix; it is evidence that the probe cannot judge it.

CI is the only place the failure reproduces, so CI is where this gets
judged. The rule is harmless either way: identical value, and inert once
upstream fixes the scope.

Co-authored-by: Conduction Release Bot <release-bot@conduction.nl>
…74027

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

chore(sync): carry beta back into development
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
The 1.0.20 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.
…0.20

chore(release): sync main back into development
…468)

Dependabot re-proposes these on every run, and each one takes `npm ci` or
`npm run build` from green to red with no code change in this repository that
can fix it. Closing the pull requests does nothing: without an ignore rule they
come straight back.

Each is blocked by a package we do not control, verified against the registry
rather than assumed:

- typescript 7      typescript-eslint hard-throws on TS >= 7 (a `versionMajor
                    >= 7` guard in its dist/index.js) and every published
                    version still peers `typescript: ">=4.8.4 <6.1.0"`.
- webpack-cli 7     @nextcloud/webpack-vue-config 7.0.4, the LATEST, peers
                    `webpack-cli: ^6.0.1`.
- @babel/core 8     the same package peers `@babel/core: ^7.22.9`.
- @babel/preset-env preset-env 8 requires core 8, so the pair moves together
                    or not at all. Splitting them is what broke filinq.

These are COMPATIBILITY limits, not security ones. `npm audit` reports no
advisory against any version pinned here, so holding them costs no exposure.
Lift each the moment its blocker ships support.

Deliberately NOT held: stylelint 17, vitest 4 and pinia 4. All three were
blocked earlier today and all three are now adoptable, so dependabot should
keep proposing them.

Co-authored-by: Conduction Release Bot <release-bot@conduction.nl>
Release: merge development into beta
@rubenvdlinde
rubenvdlinde merged commit 4235649 into main Aug 30, 2026
7 of 8 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/launchpad @ d9cd761

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

Quality workflow — 2026-08-30 19:09 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