Skip to content

Bugfix/several bugs#18

Merged
hexplus merged 21 commits intomainfrom
bugfix/several-bugs
Apr 9, 2026
Merged

Bugfix/several bugs#18
hexplus merged 21 commits intomainfrom
bugfix/several-bugs

Conversation

@hexplus
Copy link
Copy Markdown
Owner

@hexplus hexplus commented Apr 9, 2026

Description

Fix three framework-level issues discovered during NESForge development and bump to v1.2.0.

Reconciler (bindChildNode.ts): Returning the same HTMLElement instance from a reactive nodes function across re-evaluations caused DOM corruption (duplicates/disappearing elements). The reconciler now performs identity-aware reconciliation — reused nodes are kept in the DOM and only repositioned if needed.

Boolean attributes (tagFactory.ts): Passing false for an attribute (e.g., textarea({ spellcheck: false })) was silently skipped instead of removing the attribute. Boolean handling now matches bindAttribute behavior: true sets empty attribute, false calls removeAttribute(), IDL properties (checked, disabled, selected) are set as DOM properties directly.

Lint inline disable (linting.ts, lint.ts): The no-direct-dom-mutation rule had no escape hatch. Added // sibujs-disable-next-line and // sibujs-disable inline comment support to both the build-system and CLI linters.

Also updated:

  • sibujs-cli: version string, template dependency pins (sibujs ^1.2.0, sibujs-cli ^1.2.0, sibujs-ui ^1.0.11)
  • sibujs-web: hero badge, API reference, entry-server meta, llms.txt, llms-full.txt

Related Issue

Closes #

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update

Checklist

  • I have read CONTRIBUTING.md
  • My code builds without errors
  • I have tested my changes (1,875 tests pass, 157 test files, 0 regressions)
  • I have updated documentation if needed

hexplus added 21 commits March 28, 2026 15:11
…t disable comments (v1.2.0)

- Fix bindChildNode identity-aware reconciliation: reused nodes are no longer
  removed and re-inserted, preventing DOM corruption when reactive nodes
  functions return the same HTMLElement instance across re-evaluations
- Fix tagFactory boolean attribute handling: false now calls removeAttribute()
  instead of being silently skipped; IDL properties (checked, disabled,
  selected) set as DOM properties directly, matching bindAttribute behavior
- Add inline disable comments for no-direct-dom-mutation lint rule:
  // sibujs-disable-next-line and // sibujs-disable on same line
- Bump version to 1.2.0
@hexplus hexplus merged commit f8813d9 into main Apr 9, 2026
1 check passed
@hexplus hexplus deleted the bugfix/several-bugs branch April 9, 2026 19:42
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