Repository navigation
🔧 chore: 0.2.0-preview.61 - #757
Merged
Merged
Conversation
The bump in Directory.Build.props and the fold of the declared public API (./scripts/public-api.sh ship): nine projects, 462 declarations join the shipped surface and 43 retire, and every Unshipped is empty afterwards. Checked as sets per project: the lines that left Shipped are exactly the 43 *REMOVED* lines main declared, and the lines that joined are exactly its declarations.
There was a problem hiding this comment.
🟢 Approval recommended
O fold mecânico está consistente, ordenado, sem duplicatas ou marcadores residuais.
0 open findings
What changed in this PR
Prepara a release 0.2.0-preview.61 conforme a issue #756.
Changes:
- Atualiza a versão global.
- Promove 462 declarações para APIs publicadas.
- Registra 43 remoções e esvazia os arquivos
Unshipped.
| File | Description |
|---|---|
Directory.Build.props |
Atualiza a versão para .61. |
src/eQuantic.UI.Code/PublicAPI.Shipped.txt |
Publica APIs do editor. |
src/eQuantic.UI.Code/PublicAPI.Unshipped.txt |
Limpa APIs pendentes. |
src/eQuantic.UI.Compiler/PublicAPI.Shipped.txt |
Publica APIs do compilador. |
src/eQuantic.UI.Compiler/PublicAPI.Unshipped.txt |
Limpa APIs pendentes. |
src/eQuantic.UI.Components/PublicAPI.Shipped.txt |
Publica APIs de componentes. |
src/eQuantic.UI.Components/PublicAPI.Unshipped.txt |
Limpa APIs pendentes. |
src/eQuantic.UI.Images/PublicAPI.Shipped.txt |
Publica APIs de imagens. |
src/eQuantic.UI.Images/PublicAPI.Unshipped.txt |
Limpa APIs pendentes. |
src/eQuantic.UI.Native.Components/PublicAPI.Shipped.txt |
Publica APIs nativas. |
src/eQuantic.UI.Native.Components/PublicAPI.Unshipped.txt |
Limpa APIs pendentes. |
src/eQuantic.UI.Native.Framework/PublicAPI.Shipped.txt |
Publica APIs do framework nativo. |
src/eQuantic.UI.Native.Framework/PublicAPI.Unshipped.txt |
Limpa APIs pendentes. |
src/eQuantic.UI.Primitives/PublicAPI.Shipped.txt |
Publica APIs primitivas. |
src/eQuantic.UI.Primitives/PublicAPI.Unshipped.txt |
Limpa APIs pendentes. |
src/eQuantic.UI.Server/PublicAPI.Shipped.txt |
Publica APIs do servidor. |
src/eQuantic.UI.Server/PublicAPI.Unshipped.txt |
Limpa APIs pendentes. |
src/eQuantic.UI.Web/PublicAPI.Shipped.txt |
Publica APIs web. |
src/eQuantic.UI.Web/PublicAPI.Unshipped.txt |
Limpa APIs pendentes. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #756
The bump to
0.2.0-preview.61, cut from main at 9305100 (#637) at Edgar's request. It carries forty-five pull requests since.60: a component that hears the server on a typed topic (#647), a page that requires its authorization and a Server Action that refuses another site's request (#686, #737), a layout that follows its box and type that follows the window (#648, #665), a control's press and focus on every target with a 24dp floor under a pointer (#617, #628), the code editor's completion (#618, #653, #733), a hot reload underdotnet watchthat keeps the page's state (#666, #672), the image optimizer on SkiaSharp (#730), the places where the producers drew one tree differently, with Photon's hit-testing and its text layout (#688, #690, #699, #739, #741, #749), a number and a date printed in the page's culture (#637), and a long family of browser answers made .NET's (#579, #588, #594, #607, #608, #621, #654, #656, #660, #661, #667, #668, #689, #696, #697, #705, #707, #708, #709, #715, #731, #748, #752), with a page that answers HEAD (#610) and the conformance harness's own comparison (#609).What this commit does
Directory.Build.props:0.2.0-preview.60→0.2.0-preview.61../scripts/public-api.sh ship: nine projects, 462 declarations join the shipped surface and 43 retire, and everyUnshippedis empty afterwards. Checked after the fold, per project and compared as sets: the lines that leftShippedare exactly the 43*REMOVED*lines declared on main, and the lines that joined are exactly its 462 declarations, so an orphan could not vanish unnoticed. The line diff reads +463 −549: the version line, 462 lines intoShippedand 43 out of it, and the 505 that leave theUnshippedfiles.Unshippedfailed the build with RS0017.v0.2.0-preview.60theShippeddiff has those 43 lines gone and no other, so no pull request rewrote a shipped line in place this time, as ✨ feat: a hover moves a box and changes its shadow on every target #512 did in.60.What the retirements are
Read out of the
*REMOVED*lines, each paired with the line that joined under the same member and attributed by the commit that wrote it, not from the log. OnlyServerActionHubleft with nothing in its place, and the rest changed shape:ServerActionHuband its constructor (✨ feat: a component hears the server on a typed topic #647): the hub, its route/_equantic/huband theAddSignalR()callAddUImade are gone. An app that injectedIHubContext<ServerActionHub>publishes throughIServerEventPublisher, and one that maps hubs of its own callsAddSignalR()itself.ICodeCompletionProvider.CompleteAsync(✨ feat: the code engine completes as a word is typed #618) takes aCodeCompletionContextand answers aCodeCompletionList.CurlyBraceLanguage.Keywordswas the protected abstract set a language overrode, and it is the public list a completion offers now.Drawing's constructor,Drawing.WidthandUI.Drawing(✨ feat: a layout follows its box #648) hold the width as aSizeValue.new Drawing(art, 240)converts, and a read into afloatbecomesdrawing.Width.Value.ImageOptimizer()andBlurPlaceholderGenerator()(🐛 fix: the image optimizer runs on SkiaSharp, past ImageSharp's advisories #730) take theImageOptimizationOptions.UseImageOptimizationregisters both, so only an app that built one withnewmeets it.HitRegion(🐛 fix: Photon hit-tests and lays out what it draws #690) gainsDrawnafterBounds, so building one and deconstructing one both change.CodeRegion(✨ feat: the code editor shows its completion list #653),SheetRegionandTextRegion(🐛 fix: Photon hit-tests and lays out what it draws #690) gain optional members at the end, so only a positional deconstruction changes.ServerActionsMiddleware's constructor (✨ feat: a Server Action refuses a request from another site #737) takes anIOptionsMonitor<ServerActionsOptions>.UseServerActions()builds it, so only an app that constructs the middleware itself meets it.UI.Positionedby the four fractions and the two shifts (✨ feat: a layout follows its box #648),UI.PressablebycanRequestFocus(✨ feat: the code editor shows its completion list #653),WebRealizer.Lowerbydensity(🐛 fix: every producer draws the same tree #688) andPhotonRealizer.RealizebysizedLike(🐛 fix: Photon hit-tests and lays out what it draws #690).eQuantic.UI.Compiler, which no app references, 21 lines: eleven of 🐛 fix: a name in the browser is the name C# means, and a LINQ argument runs once #661 (JsTemplate'sAnnotate, with its constructor, itsDeconstructand the factory that took it, and six LINQ strategies that crossed to the IR and lost their textConvert), four of 🐛 fix: a class, a record and a struct are built as C# builds them #608 (ValueMember,ComponentDependencyResolver's constructor andRecordTypeEmitter.CanEmit), two of 🐛 fix: a number and a date print in the page's culture #637 (Eq.AsIntegerandEq.AsSingle), two of 🐛 fix: a nested class is a module of its own, named by its owner #654 (UserDefinedOperators.BinaryandUnary), andHashSetStrategy(🐛 fix: a list, a set and a join answer as .NET's do #594) andRangeIndexerStrategy(🐛 fix: a collection and an indexer answer as .NET's do #707) crossing to the IR.One break is an addition, which no
*REMOVED*line shows.CurlyBraceLanguage.ReservedWords(#618) is a new abstract member, so a language derived from it renames itsKeywordsoverride toReservedWords. I listed every member that joined an interface or an abstract class already shipped, and it is the only one an implementer has to write:ICodeLanguage.KeywordsandICodeCompletionProvider.ResolveAsynchave default implementations.The additions are 118 in
eQuantic.UI.Code(the completion), 116 inPrimitives(the server events vocabulary,FluidSize,Positioned's fractions and shifts,BoxStyle.Pressed,GridTrack.AutoFill,Touch.MinPointerTarget), 98 inServer(server events, the origins a Server Action allows), 86 in the compiler, 19 inNative.Components, 12 inWeb, 7 inComponents, 4 inNative.Frameworkand 2 inImages.The rest of the surface
developer-surface.baseline.txtgains two configuration sections sincev0.2.0-preview.60,EQuantic:ServerActions(#737) andEQuantic:ServerEvents(#647), and loses nothing: no MSBuild property or template parameter came or went.What an app meets with no signature moving:
newthat meant another ran it. EQ2014 (🐛 fix: a class of the app's dispatches, enumerates and throws as .NET does #708) stops an exception built or tested where a type argument it carries is a type parameter. EQ2013 (✨ feat: a component hears the server on a typed topic #647) stops aServerTopic<T>built over a type parameter, which only new code can meet.Range, a method group over a .NET extension and a .NET collection's ownGetEnumerator()(🐛 fix: a null-conditional answers null, and a method group is the delegate C# makes #656, 🐛 fix: a collection and an indexer answer as .NET's do #707, 🐛 fix: a class of the app's dispatches, enumerates and throws as .NET does #708), EQ2007 by a comparer handed toToDictionary,ToLookup,GroupByorDistinct(🐛 fix: a collection and an indexer answer as .NET's do #707), and EQ2010 by an extension method of a server-only class and a type nested in one (🐛 fix: a nested class is a module of its own, named by its owner #654, 🐛 fix: a type is imported by what its name binds, through a namespace or an alias #705, 🐛 fix: a curve in the browser is the record C# reads #731).[Authorize]guards the page as well as its actions (✨ feat: a page requires its authorization #686).image/avifin the optimizer'sFormatsstops the app at startup (🐛 fix: the image optimizer runs on SkiaSharp, past ImageSharp's advisories #730), and aSpacerof weight below 1 or a negativeFlexibleweight throws where it is written (🐛 fix: a Flexible keeps the weight it was given #741).The rest are browser answers made .NET's and drawings made alike across the producers, listed in the tag.
The wiki's version marks
WikiVersionMarkTestscompares a mark only once a tag holds its symbol, so the.61tag is when this release's marks are judged for the first time. Emulated before the tag, with the test's own pattern and lookup and a.61at 9305100: 145 marks, no mismatch. The thirteen it judges first resolve to.61, as written:StartFraction,GridTrack.AutoFill,canRequestFocus,DENSITY_COOKIE,Drawing'sSizeValuewidth,WithPageAuthorization,AllowServerActionOrigins,IServerEvents,MapGetAndHead,UseServerEvents,TwinIsDataon the tokens,BoxStyle.PressedandScrolledThreshold.The tag's gate, rehearsed
gate-templatesruns only on av*tag, so a template that does not build costs a release attempt. Rehearsed on main at 9305100, before this branch: 50 packages packed at1.0.0-dev, the three web and the four native template shapes scaffolded and built in Release against that feed alone, with no warning and with every eQuantic package restored at the version packed, the publishedruntime.jsidentical byte for byte to the Server package's, and the dashboard template served, hydrated and navigated in a browser with no console error.Not in this release
No pull request is open. Forty-eight bugs are, none of them a regression against
.60. Three issues came out of this stretch and wait for a decision or their turn: #753 (string.Splitwith an array of separators, a count or a null separator), #754 (an app's exception class in a snippet compiled on its own) and #755 (whether generic code should carry its type arguments at run time, which EQ2014 fences).The release notes travel in the annotated tag. The wiki's Upgrading page carries the distilled entry in both languages, on the wiki branch
chore/0.2.0-preview.61, which merges into the wiki's master when this merges and before the tag. Thedocs/LEDGER.mdline for the release follows the tag, as.60's did, because it names the commit the tag lands on.Checklist
dotnet teston this branch: Compiler 1898, Server 374, Conformance 5087 with one skipped, Web 1021, and the runtime's own 2355 in 170 files, none aborted./scripts/public-api.sh shiprun, everyUnshippedempty, the retirements read from the diffchore/0.2.0-preview.61, with the wiki guards passing against it (9 of 9, and the vocabulary guard fails on that page when a word it refuses is written into it)