Skip to content

feat(config): turn the Form View on by default - #8528

Open
yangzhang75 wants to merge 1 commit into
apache:mainfrom
yangzhang75:formview-pr17
Open

yangzhang75 wants to merge 1 commit into
apache:mainfrom
yangzhang75:formview-pr17

Conversation

@yangzhang75

@yangzhang75 yangzhang75 commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

What changes were proposed in this PR?

Closes #8537. The closing PR of the Form View stack (parent issue #8011). Every piece of the feature has landed behind form-view-enabled = false; this flips the default to true, with the GuiConfigSpec assertion updated to match. Nothing else changes. A deployment that wants the feature off sets GUI_WORKFLOW_WORKSPACE_FORM_VIEW_ENABLED=false, which the config already reads.

On main now that #8456 (the entry points) has merged; the branch's single commit is the whole change.

Any related issues, documentation, discussions?

Closes #8537. Part of the Form View feature (parent issue #8011).

How was this PR tested?

GuiConfigSpec asserts the new default. The frontend specs that exercise the entry points already run with the flag on (the shared config mock defaults it off and each such spec enables it), so they are unaffected by the default.

Was this PR authored or co-authored using generative AI tooling?

Co-authored with Claude Code.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FVvP3ttj22f9LB4p9u2anY

@github-actions github-actions Bot added frontend Changes related to the frontend GUI common labels Sep 13, 2026
@github-actions

github-actions Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

Automated Reviewer Suggestions

Based on the git blame history of the changed files, we recommend the following reviewers:

  • Contributors with relevant context: @Neilk1021
    You can notify them by mentioning @Neilk1021 in a comment.

@codecov-commenter

codecov-commenter commented Sep 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.90%. Comparing base (5042d96) to head (a3c3639).

Additional details and impacted files
@@            Coverage Diff            @@
##               main    #8528   +/-   ##
=========================================
  Coverage     95.90%   95.90%           
  Complexity      459      459           
=========================================
  Files           589      589           
  Lines         33953    33953           
  Branches       4246     4246           
=========================================
  Hits          32564    32564           
  Misses          811      811           
  Partials        578      578           
Flag Coverage Δ *Carryforward flag
access-control-service 80.18% <ø> (ø)
agent-service 99.32% <ø> (ø) Carriedforward from 5042d96
amber 90.82% <ø> (ø)
computing-unit-managing-service 77.14% <ø> (ø)
config-service 87.12% <ø> (ø)
file-service 83.65% <ø> (ø) Carriedforward from 5042d96
frontend 96.72% <ø> (ø) Carriedforward from 5042d96
notebook-migration-service 83.73% <ø> (ø)
pyamber 98.47% <ø> (ø) Carriedforward from 5042d96
workflow-compiling-service 74.09% <ø> (ø)

*This pull request uses carry forward flags. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

⚠️ Benchmark changes need a look

🟢 4 better · 🔴 2 worse · ⚪ 9 noise (<±5%) · 0 without baseline

Compared against main 5042d96 benchmarked on this same runner, so the delta is largely free of cross-runner hardware noise. The "7d avg" column still reflects the gh-pages dashboard. Treat <±5% as noise unless repeated.

Dashboard · Run

config throughput MB/s latency max Δ latest / 7d
🔴 bs=10 sw=10 sl=64 426 0.26 22,708/27,974/27,974 us 🟢 -17.7% / 🔴 +91.2%
bs=100 sw=10 sl=64 954 0.582 105,563/117,833/117,833 us ⚪ within ±5% / 🔴 +18.4%
🟢 bs=1000 sw=10 sl=64 1,092 0.666 917,404/970,561/970,561 us 🟢 -6.3% / ⚪ within ±5%
Baseline details

Latest main 5042d96 from same runner

config metric PR latest main 7d avg Δ latest Δ 7d
bs=10 sw=10 sl=64 throughput 426 tuples/sec 448 tuples/sec 838.23 tuples/sec -4.9% -49.2%
bs=10 sw=10 sl=64 MB/s 0.26 MB/s 0.274 MB/s 0.512 MB/s -5.1% -49.2%
bs=10 sw=10 sl=64 p50 22,708 us 19,650 us 11,878 us +15.6% +91.2%
bs=10 sw=10 sl=64 p95 27,974 us 33,984 us 14,690 us -17.7% +90.4%
bs=10 sw=10 sl=64 p99 27,974 us 33,984 us 18,483 us -17.7% +51.4%
bs=100 sw=10 sl=64 throughput 954 tuples/sec 960 tuples/sec 1,095 tuples/sec -0.6% -12.9%
bs=100 sw=10 sl=64 MB/s 0.582 MB/s 0.586 MB/s 0.668 MB/s -0.7% -12.9%
bs=100 sw=10 sl=64 p50 105,563 us 104,682 us 92,901 us +0.8% +13.6%
bs=100 sw=10 sl=64 p95 117,833 us 114,751 us 99,480 us +2.7% +18.4%
bs=100 sw=10 sl=64 p99 117,833 us 114,751 us 112,580 us +2.7% +4.7%
bs=1000 sw=10 sl=64 throughput 1,092 tuples/sec 1,110 tuples/sec 1,126 tuples/sec -1.6% -3.0%
bs=1000 sw=10 sl=64 MB/s 0.666 MB/s 0.678 MB/s 0.687 MB/s -1.8% -3.1%
bs=1000 sw=10 sl=64 p50 917,404 us 891,479 us 912,010 us +2.9% +0.6%
bs=1000 sw=10 sl=64 p95 970,561 us 1,035,408 us 950,922 us -6.3% +2.1%
bs=1000 sw=10 sl=64 p99 970,561 us 1,035,408 us 983,333 us -6.3% -1.3%
Raw CSV
config_idx,batch_size,schema_width,string_len,num_batches,total_ms,total_tuples,total_bytes,tuples_per_sec,mb_per_sec,lat_p50_us,lat_p95_us,lat_p99_us
0,10,10,64,20,469.44,200,128000,426,0.260,22707.62,27973.83,27973.83
1,100,10,64,20,2095.71,2000,1280000,954,0.582,105563.11,117832.91,117832.91
2,1000,10,64,20,18317.64,20000,12800000,1092,0.666,917404.45,970561.44,970561.44

@yangzhang75
yangzhang75 force-pushed the formview-pr17 branch 2 times, most recently from 32f93aa to e1a0c0a Compare September 13, 2026 23:36
renovate-bot pushed a commit to renovate-bot/apache-_-texera that referenced this pull request Sep 13, 2026
### What changes were proposed in this PR?

Closes apache#8028. Part of the Form View stack (parent issue apache#8011), on main
now that apache#8516 and apache#8517 have merged. The review commit is the branch's
single commit.

Wires the Form View entry points. The flag stays off here; the stack's
closing PR, apache#8528, flips it.

- The dashboard opens a workflow in its `default_view` (form or canvas),
with a toggle that persists the choice; the deep link goes to the
existing `/workflow/:id/form` route. Both renderers of the dashboard,
the list row and the card, follow one shared rule
(`default-view-landing.ts`: mark, deep link, toggle), so switching the
view mode does not lose the entry point. The toggle is offered only with
WRITE access, which the endpoint requires, and the handler checks the
same rule rather than trusting the template; it is a proper toggle
button (constant accessible name, state in `aria-pressed`, the hover
title spelling out what a click does); hub links are left untouched.
- The canvas menu gains the same Canvas / Form View switch the form
already shows, so the two views swap in place. It saves first and hands
over only once the save has completed: the switch is a full-page load,
which aborts a request still in flight. Two more things the hand-over
must not lose: an autosave already in flight when the switch is clicked
(`WorkflowPersistService` now sends saves one at a time and in call
order, at the one place every save goes through, so the switch's save
lands and completes after it; each caller still gets only its own result
and a failed save does not hold up the next), and an edit made while the
switch's save is out (the page stays editable until the load;
`workflowChanged` marks it and the hand-over saves once more before
leaving). A reader, who cannot save, goes straight over. A workflow the
canvas holds but has never saved (the default id) is created by that
save, and the hand-over opens the id the save answered with. On the card
the toggle sits in the always-visible action footer, in the same slot as
on the row (right after Detail); the row's hover-revealed action group
also appears while the row has the keyboard focus, so the toggle can be
reached without a pointer there too. A second click while the hand-over
is in progress is a no-op. A failed save keeps the user on the canvas
with the error shown. Every workflow offers both views whenever the flag
is on: `default_view` only decides the landing view, and neither view
gates the other.
- Download/upload round-trips `defaultView` as a sibling key next to the
workflow content, in one shared export shape (`exportedWorkflow`) used
by the dashboard download and the canvas menu's export alike; an old
export without the key imports unchanged.
- The computing unit the user picks is remembered per workflow
(localStorage) so it survives switching between the two views; a unit
selected on load (the remembered one, the last execution's, a running
one) is derived rather than chosen and is not stored, or a derived unit
would later outrank a fresher last execution. On load the remembered
unit is honoured only once the unit list has arrived and still holds it:
a unit that has since been terminated is forgotten and the last
execution's unit is used instead, and a decision still pending when the
workflow changes underneath it is dropped (the remembered-unit check,
the last-execution lookup and its running-unit fallback alike).

### Any related issues, documentation, discussions?

Closes apache#8028. Part of the Form View feature (parent issue apache#8011).

### How was this PR tested?

Unit tests (vitest) cover the menu's Canvas / Form View switch through
the DOM (absent with the flag off, Canvas pressed, Form View handing
over, hidden while an older version is displayed), the row's and the
card's default-view behavior (mark and deep link, hub link untouched,
flag off leaves the dashboard as today, WRITE-only toggle in the DOM,
toggle on / off / failed request / no cached row), the menu switch
(navigates only once the save completes, stays on the canvas with the
error when it fails, saves once more when an edit lands while its save
is out, takes a reader straight over without a save, ignores a second
click mid hand-over), the canvas export carrying `defaultView` next to
the content and omitting it when unset, the hand-over opening the id the
save assigned when the canvas held a never-saved workflow, the persist
service sending saves one at a time in order with each caller getting
its own result and a failure not holding up the next, the dashboard
toggle handlers refusing without WRITE access, the toggle's aria-pressed
following the state, the export/import round-trip including a legacy
file without `defaultView`, and the computing-unit recall (waits for the
first non-empty unit list, forgets a terminated unit and falls back,
drops a stale decision after the workflow changed, a late last-execution
answer or fallback included, positive-integer validation, storage
failures, only an explicit pick remembered). Each new guard was
deletion-checked (removing it turns the corresponding test red). eslint,
prettier and the production (AOT) build pass; every changed line,
template lines included, is statement and function covered.

#### Video

##### 1. Default view on the dashboard
(row and card toggle, Form View icon, deep link into the form, toggle
off again, no toggle without write access)


https://github.com/user-attachments/assets/04f71ba5-27ad-489d-a5be-51cdd8d811aa



##### 2. Canvas / Form View switch
(save first, then the hand-over; and back)


https://github.com/user-attachments/assets/39c3d395-6329-403d-9719-ca7ef179889f


##### 3. Computing unit remembered across the switch


https://github.com/user-attachments/assets/6fe70b5f-d936-4333-bcf0-b3fa44f84323


##### 4. Download / upload keeps the default view


https://github.com/user-attachments/assets/0519bfcd-0677-478f-866c-6eb0350d842c


##### 5. Default view on the card view
(the same toggle in the card's action row, Form View icon, deep link
into the form)


https://github.com/user-attachments/assets/471192b3-7935-4da9-be87-fa08a7dd6c13



### Was this PR authored or co-authored using generative AI tooling?

Yes. Generated-by: Claude Code (Claude Fable 5.1, Anthropic).
Co-authored with Claude, reviewed line by line by the author before
submission.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01FVvP3ttj22f9LB4p9u2anY

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Every piece of the Form View (parent issue apache#8011) has landed behind
form-view-enabled = false. Flip the default to true, with the GuiConfigSpec
assertion updated to match. GUI_WORKFLOW_WORKSPACE_FORM_VIEW_ENABLED=false
turns it off for a deployment.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVvP3ttj22f9LB4p9u2anY
@yangzhang75
yangzhang75 marked this pull request as ready for review September 14, 2026 00:20
@github-actions github-actions Bot removed the frontend Changes related to the frontend GUI label Sep 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(config): turn the Form View on by default

2 participants