From 2740d51446ccb620d0af8a1bae0ec985d63e0ee3 Mon Sep 17 00:00:00 2001 From: George Lambert Date: Fri, 11 Sep 2026 18:24:09 -0400 Subject: [PATCH] Clear the UI-review leftover table; backlog is empty. Swagger stays stock, CS/staff share verae-staff-ui, and staff cookies take STAFF_COOKIE_DOMAIN. Those are shipped, not open issues. --- packages/ui-docs/REPORT.md | 13 ++--- packages/ui-docs/UI-REVIEW.pdf | 60 ++++++++++---------- packages/ui-docs/scripts/build-review-pdf.py | 30 ++-------- 3 files changed, 39 insertions(+), 64 deletions(-) diff --git a/packages/ui-docs/REPORT.md b/packages/ui-docs/REPORT.md index 275c6df..66d2a66 100644 --- a/packages/ui-docs/REPORT.md +++ b/packages/ui-docs/REPORT.md @@ -1,6 +1,6 @@ # UI issues still to consider -Follow-up to the 2026-09-11 review PDF. Items the review listed as open are now implemented except the three left below. +Follow-up to the 2026-09-11 review PDF. Every item from that list has shipped. There is nothing left to consider from the review. ## Resolved from the review list @@ -14,17 +14,14 @@ Follow-up to the 2026-09-11 review PDF. Items the review listed as open are now | Low | Portal statement empty cells in a table | Empty lists use the same card empty state as invoices. | | Low | Overflow menus off-screen | Menu flips upward when near the bottom of the viewport. | | Low | Simulator empty console was a black void | Placeholder: “Run a step to fill this trace.” | - -## Still to consider - -None of the previous review leftovers are open. - -| Severity | Issue | What shipped | -|----------|-------|----------------| | Med | Swagger `/docs` stock | Left as vendor Swagger. Title + banner: “OpenAPI explorer — stock Swagger UI for integrators.” Not skinned. | | Low | access-staff and CS HTML twins | Shared template in `verae-staff-ui` (`review.html` + tokens). Both servers load it in the monorepo. | | Low | Staff cookie host-scoped | `STAFF_COOKIE_DOMAIN` / `STAFF_COOKIE_SECURE` plus nginx example on `verae-staff-session`. | +## Still to consider + +None. The review backlog is empty. + ## How to use each surface - **Operator** http://127.0.0.1:3850/ — Fleet (replicas, overflow, grey disabled machines), Trace, Docs. diff --git a/packages/ui-docs/UI-REVIEW.pdf b/packages/ui-docs/UI-REVIEW.pdf index 1cf4b6d..47fd8cb 100644 --- a/packages/ui-docs/UI-REVIEW.pdf +++ b/packages/ui-docs/UI-REVIEW.pdf @@ -527,7 +527,7 @@ endobj endobj 56 0 obj << -/Author (UI-Docs) /CreationDate (D:20260911182248-04'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260911182248-04'00') /Producer (ReportLab PDF Library - \(opensource\)) +/Author (UI-Docs) /CreationDate (D:20260911182403-04'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260911182403-04'00') /Producer (ReportLab PDF Library - \(opensource\)) /Subject (\(unspecified\)) /Title (Verae Time \327 Zapier UI review) /Trapped /False >> endobj @@ -540,10 +540,10 @@ endobj endobj 58 0 obj << -/Filter [ /ASCII85Decode /FlateDecode ] /Length 2109 +/Filter [ /ASCII85Decode /FlateDecode ] /Length 1739 >> stream -Gau0CCK&tI'`H=\\0#F?(sB*B0`-F/K^O:1lW)UVV!"[J;fSi]*SbYea]\G0@`M"L_L$+:@"PR$F6$hQlO41V%iP:uDlm>^S(/]JKpK4j7Vem5Z5qCDmo]*`RIR"2&f>788!nnQ(BD!GA*lL=RM/sF?B!s#W?i!0c4B$&2*ju\nskOKe"c)eb4JKH.#J'_]LUN_]dCG6r2Pu`UkUIl-%lU#4=86(dc)V&N\,D/E0IP%gdEc--jo(*09fu>dRW%i"=obkTq2&9pOMddFNG2u/t5UCrbGV#tApd_Xt/'1HfhCV%JrM\kn;SF1]k_)=VUAX.#4M@"CAnD>`KQ`"c-3*FJOeGgG9!4.UH:.R4bSk$"4]GlcdC9HZI@3Xn-ek?>?gWCd_"V&:"_:.U`iGW.*_X_Cgg2nX.H>;`VbON>HD`1_60#8Q@s#e)BUB,Z:kc*&[7--mpD!luAX3c;m1PAP<,^*3adH/;cn%j/p;("lRA,FRS"Ufi4sAn%\#(nnO.fc1pP6J+)i>%U^\m,OXGks%kl#k#Ca\S1\-e^/`>)EL%Vki@1%_\Ms?$)Fo"]eGHEm]bC&2-A^)IAAX:b-,Vd)/jOT4DZteI\LSIJBV`aE#Zg9<7Y$iC?k";;Am>iO9->:TU,P"@OYO;!Vk"&DFX[CZCDX>f/ChG8N".!K:l5LYeHZ-ha@Ypj0R_O@?6T'jO8CDqZl:31_gBp>>I]U_4>B''$DU>q!SP"M6[?%h!ZP7lrg^,?u0^?0&dQbct6,_4oqi`gVbG0E$Ro<822JA=?J]*55okI3ILi7F"?M/[N;POp$c01[C[$-?BJt-GmPX$3Jk[(Uc*=sTb#RJhJfF2#+o+UFLrC(,+/q-`Uc^`$ZI'jK=#<']/Pp=FO&8d1pib,Zmkd8Yc$e3[gLT6WJg5=\'SKP,md*W\sI#^AF8)3N8nR1'+>ock\R5*:<=u+3jl;q*%5!kl2f>A!WkStRsNk5\Nia940@Aljl].S.mEFTo"#Y6N"PnE9*SP$8UYl(ZqhL@o%GAjI@hr5p?>s`K^F"Til2b'rFLl9"c&+J-A\#%&tbT659:h_pp]"DB91>Q]slj;QWp&-FNUf\d/'in"n>(\c9i(ori7%0M/,oAQHc.;,o%/mq=3=(QVtVJU8tbi)!5>geD:jbf^R`\`\'g6oAOH@)oP=:K]Jgin#*BP8C=,$X#K#c/;=ZehS2'&W>;RR@dDr#NSC[b2tDL$.h(7iMmX+&#Ug]cp(&=)'6s*M_sV>iBJkT^qtgH$Y2@dn(M])iZbEkg)j98p[U=jH)T:f/K/\=i468eJ*jLPF<`_O;l4-t8ALtajO>etd9c<_/6qJ:+Ge[ujj(YHBAfruJ"K_,03_^V:$6?21=s!aUJYj98]gKQ.b+B0(W_4#"8>cI16'<$p3n?Muo^),F<91,T+endstream +Gatm;?#Sa]&:Dg-fZ2bjaTk^J8G2hGu*dJOs.hqLl<3#E2(&UA@9"jrFEIb9_%m@f=&qiTM!LD5G#(`X/NgYl3:[U2!Z'Y[#''V42HgY4*bjnX$iTjoWqnHFQl)\#-hSu6[V5`VI/.^M@RpL9Nmo,X@;W.0?hImWfWC>]4OG52LtRaXK'^,@JflfIDjFJ:`Joh$-N7^Zi$IKj$\';[+D,da^7DQklB>q_OL)kN3@.O@$di2+iX$hh:>g^amFrNQmSj9>5^":"DK&,uem)!hh>^4RCcaHrt`[DL=b*tEVr\/,8hI8FsbTnl+&>3:3!V'K)A\O`)"Z6ZT;<16p$YUF!#JVB=D_g;'lc04+#b?-B`U^bm&KWR.7W/\miI8HiH+(GO*5_S6oh8R8JeKn7Z=`GqeUS4d7F4.pE8pQ]Fh8?jBC;T1)V.DZ=[/;8=.qWJ<1hG[oVPXJ?TrDL)G964.Dp1oI>%2flk7@L)Q2-_@++iI50(8"o1s3ua^QK=4MPW.o=QNC,eGdfZNX/p8f/`$6F<4&OM9&N3*Pe7:a4HD0?Y,/*I>RNB`[A;IX0f&p'q%`Ui?ep"/I,r6nGm>=fbqH8JsY_mMsJG;BjR;/4ReJOlu<8#d\[uK+?ms?nHiJ1>n.T:*";p)U<6l#SOWq&2mO-X?`!"am1QR/PiTEl=kfQ#.;b-#2)I3#S>%_tB&=o-7UDWCY&9T`?=!#*@q)i#M>SJ=9ZOU&7!Z"sqn&m:\o[J&>nYRm[5@f5VGEtIrBDM*BNt=%S&m-mka&^lp=kFgeRnK`8!d"OIbkK!*o0eAE]EQY=Z>j61L!O,@.$/tn]&Jl,_r-:IX?@&jI(?$BEhtiU2=0!l`0RC2`HQECZ,X*..l2XSZ9)"_BjNqbL;%hCMQ2>*G9o[;aDf2!<%04Yl~>endstream endobj 59 0 obj << @@ -781,35 +781,35 @@ xref 0005443418 00000 n 0005443712 00000 n 0005443952 00000 n -0005446153 00000 n -0005446920 00000 n -0005447551 00000 n -0005448151 00000 n -0005448743 00000 n -0005449343 00000 n -0005449940 00000 n -0005450525 00000 n -0005451113 00000 n -0005451731 00000 n -0005452326 00000 n -0005452913 00000 n -0005453493 00000 n -0005454065 00000 n -0005454637 00000 n -0005455230 00000 n -0005455827 00000 n -0005456397 00000 n -0005456972 00000 n -0005457568 00000 n -0005458153 00000 n -0005458721 00000 n -0005459327 00000 n -0005459907 00000 n -0005460502 00000 n +0005445783 00000 n +0005446550 00000 n +0005447181 00000 n +0005447781 00000 n +0005448373 00000 n +0005448973 00000 n +0005449570 00000 n +0005450155 00000 n +0005450743 00000 n +0005451361 00000 n +0005451956 00000 n +0005452543 00000 n +0005453123 00000 n +0005453695 00000 n +0005454267 00000 n +0005454860 00000 n +0005455457 00000 n +0005456027 00000 n +0005456602 00000 n +0005457198 00000 n +0005457783 00000 n +0005458351 00000 n +0005458957 00000 n +0005459537 00000 n +0005460132 00000 n trailer << /ID -[] +[<096c812b34b009cb5fb9743d916201d3><096c812b34b009cb5fb9743d916201d3>] % ReportLab generated PDF document -- digest (opensource) /Info 56 0 R @@ -817,5 +817,5 @@ trailer /Size 84 >> startxref -5461268 +5460898 %%EOF diff --git a/packages/ui-docs/scripts/build-review-pdf.py b/packages/ui-docs/scripts/build-review-pdf.py index 8cb96c1..450cf37 100644 --- a/packages/ui-docs/scripts/build-review-pdf.py +++ b/packages/ui-docs/scripts/build-review-pdf.py @@ -123,7 +123,9 @@ def main(): "Simulator indigo; orange only on Inject faults.", "Portal API key masked. Invoice and statement empty states are cards, not table rows. Staff typeahead uses customer names. STAFF_AUTH=1 uses verae-staff-session.", "Admin customers: list vs edit drawer. Invoice empty state.", - "Catalog body font is system-ui. Swagger /docs labeled stock.", + "Catalog body font is system-ui. Swagger /docs stays stock with an integrator banner only.", + "CS and access-staff share verae-staff-ui review.html.", + "Staff cookies accept STAFF_COOKIE_DOMAIN for a reverse-proxy host.", ] for it in items: story.append(p("• " + it, s["body"])) @@ -132,31 +134,7 @@ def main(): story.append(p("Operator: open :3850, Fleet for replicas, Trace to inject a Zap step, Docs for PDFs. Staff: CS :3011 credit in USD; Sales :3012 quote; Accounting :3013 export; Staff plane :3025 after authz. Customers: /portal. Ops: /admin. Lab: simulator :3847.", s["body"])) story.append(p("Issues still to consider", s["h1"])) - remaining = [ - ["Severity", "Issue", "What shipped"], - ["Med", "Swagger /docs remains stock (intentional).", "Left unskinned. Banner: OpenAPI explorer for integrators. Use x-api-key."], - ["Low", "access-staff and CS HTML were twins.", "Shared template package verae-staff-ui."], - ["Low", "Staff cookie was host-scoped.", "STAFF_COOKIE_DOMAIN plus reverse-proxy example in verae-staff-session."], - ] - body = getSampleStyleSheet()["BodyText"] - body.fontSize = 8 - body.leading = 10 - rows = [] - for i, row in enumerate(remaining): - rows.append([Paragraph(f"{c}" if i == 0 else c, body) for c in row]) - grid = Table(rows, colWidths=[0.7 * inch, 2.6 * inch, 3.4 * inch], repeatRows=1) - grid.setStyle(TableStyle([ - ("BACKGROUND", (0, 0), (-1, 0), ACCENT), - ("TEXTCOLOR", (0, 0), (-1, 0), colors.white), - ("VALIGN", (0, 0), (-1, -1), "TOP"), - ("GRID", (0, 0), (-1, -1), 0.4, colors.HexColor("#e5e7f0")), - ("LEFTPADDING", (0, 0), (-1, -1), 6), - ("RIGHTPADDING", (0, 0), (-1, -1), 6), - ("TOPPADDING", (0, 0), (-1, -1), 5), - ("BOTTOMPADDING", (0, 0), (-1, -1), 5), - ("ROWBACKGROUNDS", (0, 1), (-1, -1), [colors.white, colors.HexColor("#f4f5fb")]), - ])) - story.append(grid) + story.append(p("None. The designer-review backlog is empty.", s["body"])) story.append(PageBreak()) story.append(p("Screenshot atlas with usage notes", s["h1"]))