Skip to content

Release v0.6.2: unified deep-build, lifecycle consolidation & bare-translation display#71

Merged
smartlabsAT merged 4 commits into
mainfrom
feature/70-consolidate-deep-build-and-lifecycle
Jun 13, 2026
Merged

Release v0.6.2: unified deep-build, lifecycle consolidation & bare-translation display#71
smartlabsAT merged 4 commits into
mainfrom
feature/70-consolidate-deep-build-and-lifecycle

Conversation

@smartlabsAT

@smartlabsAT smartlabsAT commented Jun 13, 2026

Copy link
Copy Markdown
Owner

Closes #70.

Consolidates the super-table.vue orchestrator and unifies deep-query construction onto a single schema-driven classifier (describeHop), plus a folded-in display improvement. Released as 0.6.2 (patch on the 0.6.x line — a deliberate, contained behavior change; see note below).

Changes

Refactor — one schema-driven deep classifier (buildDeep)

  • First-level and nested deep entries are both derived via describeHop, removing the ad-hoc special.includes(...) first-level branch from the SFC. super-table.vue shrinks ~98 lines.

Behavior change — to-many fetched completely

  • First-level o2m/m2m/files columns (and bare translations) now fetch unbounded (deep[<field>][_limit]=-1), consistent with the nested-M2A policy. Previously they were capped at the server default page size (silently truncating the comma-joined list) or not fetched. Trade-off: a column on a very large to-many relation fetches every row — the inherent cost of displaying it fully. Verified live that first-level to-many columns render ALL elements joined (e.g. tags → "Urgent1, VIP2"), so the unbounded fetch is required for completeness, not cosmetic.

Lifecycle consolidation

  • The two onMounted/onUnmounted blocks are merged into one auditable pair (4 listeners add/remove symmetric; initial loadPresets/scheduleGetItems preserved).

Feature — bare translations columns render the active-language value

  • Instead of raw JSON, a bare translations column renders the active-language row (current user's language → first-row fallback) through its configured template or a heuristic field (description/title/…), HTML-stripped. Pure, testable renderBareTranslation reusing the exported pickTranslationRow + resolveUserLanguage.

Verification

  • Unit: 431/431 (24 added). vue-tsc, ESLint --max-warnings=0, Prettier — all green.
  • Live Playwright (comprehensive): 13 collections smoke (all render, 0 console errors); m2m-unbounded confirmed live (deep[tags][_limit]=-1); core interactions (search, pagination→page 2 single-fetch, bookmarks M2A relationship is not displayed correctly #60/Support deep relational paths in M2A templates (nested translations inside the target) #65 repro presets); full M2A/translation regression identical to v0.6.1; bare-translations column shows readable descriptions, not JSON.
  • Two adversarial review rounds: deep/lifecycle (the "use _limit:1" finding was refuted live — it would break m2m/o2m column display) and the bare-translation render branch (test-gap auflagen closed by extracting renderBareTranslation + direct pickTranslationRow tests).

Note on versioning

Strict SemVer would call the behavior change a minor; on this 0.x project it ships as a patch (0.6.2) at maintainer discretion.

Test plan

  • Unit suite green (incl. new buildDeep / bareTranslation / pickTranslationRow tests)
  • type-check / lint / format green
  • 13-collection smoke, 0 console errors
  • to-many unbounded deep param confirmed live; columns render completely
  • M2A/translation feature regression identical to v0.6.1
  • bare translations renders active-language value, not raw JSON
  • lifecycle merged (1 onMounted/onUnmounted, 4/4 listeners)

Behavior change: first-level to-many (o2m/m2m/files) and bare translations are now fetched unbounded (deep _limit=-1), consistent with the nested-M2A policy. See CHANGELOG v0.7.0.
A bare translations column now shows the active-language row through its configured/heuristic template (HTML-stripped) instead of raw JSON. Reuses the exported pickTranslationRow and resolveUserLanguage.
@smartlabsAT smartlabsAT linked an issue Jun 13, 2026 that may be closed by this pull request
4 tasks
@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown

Quality Check Results

TypeScript Type Check

Passed - No type errors found

ESLint

Passed - No linting errors

Prettier Format Check

Passed - Code is properly formatted

Build

Passed - Extension builds successfully


Updated: 2026-06-13T15:00:13.766Z

@smartlabsAT smartlabsAT changed the title Release v0.7.0: unified deep-build, lifecycle consolidation & bare-translation display Release v0.6.2: unified deep-build, lifecycle consolidation & bare-translation display Jun 13, 2026
@smartlabsAT smartlabsAT merged commit 12759a5 into main Jun 13, 2026
22 checks passed
@smartlabsAT smartlabsAT deleted the feature/70-consolidate-deep-build-and-lifecycle branch June 13, 2026 15:01
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.

Refactor: consolidate super-table.vue deep-build and lifecycle blocks

1 participant