Skip to content

feat(intent+harmonia): process task-form UX - full-height layout, status step indicator, dialog close icon#6393

Merged
delchev merged 2 commits into
masterfrom
feat/process-form-ux
Jul 22, 2026
Merged

feat(intent+harmonia): process task-form UX - full-height layout, status step indicator, dialog close icon#6393
delchev merged 2 commits into
masterfrom
feat/process-form-ux

Conversation

@delchev

@delchev delchev commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

What

Step-indicator + polish for the status-driven UX, in three areas.

1. Full-height task-form layout

The generated task-form template hard-coded max-width: 720px, so in the full-screen task dialog the form floated tiny in the top-left. Removed the cap; the body is a flex column and, on a task form, the card fills the dialog height with the action buttons in a bottom-pinned footer.

2. Document status step indicator (extracted from the intent)

A status flow (function: EntityStatus relation) now renders as a read-only x-h-step-indicator, current status active - so the user sees where in the lifecycle a document is. Two surfaces:

  • BPM task forms - a horizontal indicator at the top of the form, bracketed by separators.
  • Single-record document page - a vertical indicator card under the Details box in the right sidebar (the title-bar status pill is kept).

The steps come straight from the intent: the status entity's base seed rows, in seed = workflow order, dropping terminal cancel/reject/void/… statuses (the same heuristic the badge colouring uses). The task form embeds them at generation time (FormIntentGenerator -> metadata.steps + metadata.statusVar); the document page reads the status options loaded at runtime (statusSteps() / activeStep()).

Step descriptions - an optional description seed column on the status entity is surfaced under each step title (title-only when absent). Emitted as {label, description} on task forms; carried on the status option objects for the document page.

Requires harmonia 2.6.0 (dynamic step number, codbex/harmonia#45), already on master.

3. Empty dialog close ("X") button

Every x-h-dialog-close button across the shells and generated page views was emitted empty - no icon child - so the close control was invisible (only its focus ring showed). Added the standard <i x-h-lucide data-lucide="x"> to all 26 occurrences.

Verification

  • FormStepIndicatorTest (new): ordered non-terminal steps, description flows (and is absent when the seed row has none), translation seeds ignored, statusVar correct, none on a non-task form. Green.
  • Regenerated a status-bearing module on this build and confirmed the emitted task form (object steps + findIndex active-match + description spans) and document page (optionsStatus carries description, statusSteps()/activeStep(), vertical stepper card). Layout + rendering validated live.

Follow-up (same pattern, not in this PR)

The vertical stepper on the manage/form view (has a sidebar) and the my-document / my-form views (no sidebar - placement TBD).

🤖 Generated with Claude Code

delchev and others added 2 commits July 22, 2026 23:07
…tus step indicator, dialog close icon

Three fixes to the BPM task-form experience (a form opened in the app-wide task dialog):

1. Form layout (template-form-builder-harmonia/ui/index.html.template): drop the hard-coded
   `max-width: 720px` and let the form fill the dialog; the body is a flex column and, on a task
   form, the card grows to full height with the action buttons pulled into a bottom-pinned footer.
   The 720px cap left the form floating tiny in the top-left of the full-screen dialog.

2. Document status step indicator (FormIntentGenerator + the same template): a task form whose bound
   entity has a `function: EntityStatus` relation now renders a read-only horizontal
   `x-h-step-indicator` of the document's status flow, active = the current status. The steps are
   extracted from the intent - the status entity's base seed rows in order, dropping terminal
   cancel/reject/void-style statuses (the same heuristic the badge colouring uses). Emitted as
   `metadata.steps` + `metadata.statusVar`; skipped for a cross-model status entity or a <2-step flow.
   Requires harmonia 2.6.0 (dynamic step number, harmonia #45). New FormStepIndicatorTest covers the
   emission (ordered non-terminal steps, translation seeds ignored, none on a non-task form).

3. Dialog close button icon (13 shell / page-view templates + static shells): every
   `x-h-dialog-close` button was emitted empty, so the close control was invisible (only its focus
   ring showed). Added the standard `<i x-h-lucide data-lucide="x">` glyph to all of them
   (application / my / partner shells, the document/master/manage/form views, and the document
   dialogs).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…er on the document page

Extends the step-indicator feature:

- Step descriptions: a status entity's optional `description` seed column is now surfaced under each
  step title. FormIntentGenerator emits steps as {label, description} objects (description omitted
  when blank); the task-form template renders an x-h-step-indicator-description. FormStepIndicatorTest
  updated to assert the description flows and is absent when the seed row has none.

- Single-record document page: the document view now shows the same read-only status flow as a
  VERTICAL x-h-step-indicator card under the Details box in the right sidebar, active = the current
  status, descriptions from the same seed column. Driven by two small page.js helpers (statusSteps()
  = the loaded status options minus terminal ones; activeStep() = 1-based current index) reusing the
  existing statusVariant() heuristic; the status option map now carries `description`. The title-bar
  pill is kept. The sidebar renders for a status-bearing document even with no audit/read-only fields.

Follow-up (same pattern): the manage/form view (has a sidebar) and the my-document / my-form views
(no sidebar - placement TBD).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@delchev
delchev merged commit 95a922d into master Jul 22, 2026
10 checks passed
@delchev
delchev deleted the feat/process-form-ux branch July 22, 2026 21:02
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