Skip to content

fix(i18n): a refused node-bound field write has a localized sentence (#5600) - #5639

Merged
meshweaver-cloud[bot] merged 1 commit into
mainfrom
fix/5600-textarea-readonly-without-update
Sep 24, 2026
Merged

meshweaver-cloud[bot] merged 1 commit into
mainfrom
fix/5600-textarea-readonly-without-update

Conversation

@rbuergi

@rbuergi rbuergi commented Sep 24, 2026

Copy link
Copy Markdown
Contributor

What

Core half of #5600: one catalog key, ui.fieldWriteRefused (en + de), and the rule in Doc/GUI/DataBinding.

#5600 reports the course wish books offering editable boxes to anonymous visitors. The save was then refused ("Anonymous lacks Update permission") and logged at Error through BlazorView.SurfaceError, and the visitor got the raw English exception in the error modal.

Two halves:

  • Content (the root). Already fixed in MeshWeaver.Education#366 (be03dee1, Education#363). WishBookAreas.Write (EN + DE) folds GetEffectivePermissions(...).HasFlag(Update) into the structure and sets Readonly = !canWrite.
  • Platform (this PR + the Plugins PR). A node-bound write that is refused anyway is a refusal, not a fault. That happens when grants change under an open page, or when an area forgets the check. BlazorView.UpdatePointer (Plugins) will show this sentence through SurfaceRefusal (Warning), not SurfaceError (Error + raw exception). The catalog key lands in core first.

Verification

  • LocalizationTest: 60/60 passed locally (en/de completeness, no orphans).
  • dotnet build -c Release -warnaserror on MeshWeaver.Messaging.Hub: 0 warnings, 0 errors.

Pairs-with: none — adds a key, removes nothing
Mirror-sync: tracked on #5600 — npm run sync:i18n -- --ref <merged core sha> in MeshWeaver.Plugins after this merges; the Plugins PR for the view half follows

Refs #5600

🤖 Generated with Claude Code

…5600)

Adds ui.fieldWriteRefused (en + de) — the sentence BlazorView.UpdatePointer shows when the
owning hub refuses a node-bound field write for lack of Update, instead of the raw English
UnauthorizedAccessException in the error modal plus an Error log line. The view half lands in
MeshWeaver.Plugins (core catalog first). DataBinding.md states the rule: editability is the
producing area's decision (Readonly = !canUpdate); a refusal that still happens is a refusal,
not a fault.

Refs #5600

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings September 24, 2026 06:47

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

One or more issues must be addressed before approval.

Review effort: Lite
Findings: None

What changed in this PR

Adds the localized refusal message and documents permission-aware node-bound editing behavior.

Changes:

  • Adds English and German ui.fieldWriteRefused catalog entries.
  • Documents producer-side editability checks and refusal handling.
File Description
src/​MeshWeaver.Messaging.Hub/​Localization/​strings.en.json Updated as part of this pull request.
src/​MeshWeaver.Messaging.Hub/​Localization/​strings.de.json Updated as part of this pull request.
src/​MeshWeaver.Documentation/​Data/​GUI/​DataBinding.md Updated as part of this pull request.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 0)

  1 files  ±0    1 suites  ±0   3m 5s ⏱️ +2s
332 tests ±0  332 ✅ ±0  0 💤 ±0  0 ❌ ±0 
336 runs  ±0  336 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit dd41593. ± Comparison against base commit bf5ac85.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 1)

547 tests   - 1 097   547 ✅  - 1 097   1m 5s ⏱️ - 2m 1s
  1 suites  -     1     0 💤 ±    0 
  1 files    -     1     0 ❌ ±    0 

Results for commit dd41593. ± Comparison against base commit bf5ac85.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 3)

429 tests   - 14   429 ✅  - 14   1m 10s ⏱️ ±0s
  2 suites  -  1     0 💤 ± 0 
  2 files    -  1     0 ❌ ± 0 

Results for commit dd41593. ± Comparison against base commit bf5ac85.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 4)

    2 files   -   1      2 suites   - 1   5m 34s ⏱️ +5s
2 604 tests +603  2 604 ✅ +603  0 💤 ±0  0 ❌ ±0 
2 605 runs  +603  2 605 ✅ +603  0 💤 ±0  0 ❌ ±0 

Results for commit dd41593. ± Comparison against base commit bf5ac85.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 2)

1 602 tests  +870   1 602 ✅ +1 062   8m 56s ⏱️ + 1m 51s
    2 suites  -   1       0 💤  -   192 
    2 files    -   1       0 ❌ ±    0 

Results for commit dd41593. ± Comparison against base commit bf5ac85.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 5)

    5 files  ±  0      5 suites  ±0   14m 38s ⏱️ -6s
3 414 tests  - 645  3 414 ✅  - 643  0 💤  - 2  0 ❌ ±0 
3 418 runs   - 645  3 418 ✅  - 643  0 💤  - 2  0 ❌ ±0 

Results for commit dd41593. ± Comparison against base commit bf5ac85.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results

   13 files   -   4     13 suites   - 4   34m 31s ⏱️ -8s
8 928 tests  - 283  8 928 ✅  - 89  0 💤  - 194  0 ❌ ±0 
8 937 runs   - 283  8 937 ✅  - 89  0 💤  - 194  0 ❌ ±0 

Results for commit dd41593. ± Comparison against base commit bf5ac85.

@meshweaver-cloud
meshweaver-cloud Bot added this pull request to the merge queue Sep 24, 2026
Merged via the queue into main with commit 140c5fb Sep 24, 2026
40 checks passed
@rbuergi
rbuergi deleted the fix/5600-textarea-readonly-without-update branch October 10, 2026 13:10
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.

2 participants