Repository navigation
chore(license): standardize LICENSE files to use http URLs and enforce in tooling - #3205
Merged
gspencergoog merged 2 commits intoOct 14, 2026
Merged
Conversation
…e in tooling - Update root LICENSE to use http:// URLs for Apache 2.0 license text while retaining the transcrypt MIT license notice. - Update dart/a2ui_cli/LICENSE to use http:// URLs and remove the transcrypt MIT notice to align with dart/a2ui_core and dart/a2ui_agent. - Update scripts/fix_licenses.py to enforce http:// Apache URLs across all tracked LICENSE files while preserving https:// enforcement on source file headers. - Update scripts/test_fix_licenses.py unit tests to verify http:// enforcement on root and nested LICENSE files.
…fix_licenses Update should_ignore to accept an optional patterns parameter, and filter out 'LICENSE' from IGNORE_PATTERNS when selecting LICENSE files so that LICENSE files inside ignored directories (such as third_party/) are not modified or flagged.
gspencergoog
marked this pull request as ready for review
October 14, 2026 17:17
gspencergoog
requested review from
jacobsimionato and
polina-c
and removed request for
jacobsimionato
October 14, 2026 17:18
polina-c
approved these changes
Oct 14, 2026
andrewkolos
added a commit
that referenced
this pull request
Oct 14, 2026
#3205 standardized LICENSE files on http://www.apache.org/licenses/ and made the license check enforce it. a2ui_flutter's LICENSE, added in #3084, used https, so the static-checks job fails on main.⚠️ Agent-generated
nan-yu
pushed a commit
that referenced
this pull request
Oct 14, 2026
* fix(a2ui_flutter): adopt a2ui_core's renderer renames #3194 renamed A2uiClientAction and A2uiClientError to A2uiRendererAction and A2uiRendererError, MessageProcessor.groupModel to model and getClientDataModel to getRendererDataModel, and replaced EventSource.addListener with subscribe. The adapter's tests and README still used the old names, so the package's tests no longer compiled on main.⚠️ Agent-generated * fix(a2ui_flutter): use the http Apache license URL #3205 standardized LICENSE files on http://www.apache.org/licenses/ and made the license check enforce it. a2ui_flutter's LICENSE, added in #3084, used https, so the static-checks job fails on main.⚠️ Agent-generated
andrewkolos
added a commit
that referenced
this pull request
Oct 15, 2026
* feat(a2ui_flutter): add the framework adapter core A2uiSurface renders a SurfaceModel through a NodeResolver, and NodeView renders each ComponentNode through its catalog entry, rebuilding when the node's props change. ComponentImplementation pairs a component schema with a widget builder, WidgetCatalog is a catalog of them, and ComponentProps reads a node's resolved properties, bindings and actions. A component that has not arrived shows a small progress indicator. * feat(a2ui_core): expose the v0.9 basic catalog's API BasicCatalog.v0_9Api() returns the published v0.9 basic catalog document parsed with Catalog.fromJson: its components, function signatures and theme schema, so a framework adapter can read the component schemas without embedding its own copy of the document. * feat(a2ui_flutter): add the v0.9 basic catalog package:a2ui_flutter/basic_catalog.dart implements the 18 components of the v0.9 basic catalog with Material widgets, with their schemas from a2ui_core's BasicCatalog.v0_9Api() and the functions of BasicCatalog.v0_9(). basicCatalog() builds the whole catalog under the basic catalog's id; BasicComponents holds each component for a catalog of the app's own. The components apply the surface theme's primaryColor as the primary color, and every specification example renders in a test. * fix(a2ui_flutter): key a node's subtree by its implementation A component whose catalogId changes is recreated with the same instance id, like one whose type changes. Keying the subtree by the type name kept the old implementation's state when only the catalog changed. Keying by the resolved implementation resets it in both cases. * test(a2ui_flutter): cover A2uiSurface.of and maybeOf * fix(a2ui_flutter): forward the basic catalog's protocol version and instructions * refactor(a2ui_flutter): rename WidgetCatalog to CatalogImplementation Pairs it with CatalogApi in a2ui_core, as ComponentImplementation and FunctionImplementation pair with ComponentApi and FunctionApi. 🤖 Agent-generated * refactor(a2ui_flutter): use CatalogImplementation in the basic catalog 🤖 Agent-generated * feat(a2ui_flutter): apply a component's accessibility label and description NodeView wraps every resolved component in a Semantics that carries the component's accessibility label as its label and its description as its hint, so basic and custom components both get them. Without either attribute the Semantics adds no node, and it stays in the tree so that adding one later keeps the component's state. 🤖 Agent-generated * fix(a2ui_flutter): adopt a2ui_core's renderer renames #3194 renamed A2uiClientAction and A2uiClientError to A2uiRendererAction and A2uiRendererError, MessageProcessor.groupModel to model and getClientDataModel to getRendererDataModel, and replaced EventSource.addListener with subscribe. The adapter's tests and README still used the old names, so the package's tests no longer compiled on main.⚠️ Agent-generated * fix(a2ui_flutter): use the http Apache license URL #3205 standardized LICENSE files on http://www.apache.org/licenses/ and made the license check enforce it. a2ui_flutter's LICENSE, added in #3084, used https, so the static-checks job fails on main.⚠️ Agent-generated * docs(a2ui_flutter): match the README's a2ui_core constraint to the pubspec The package now depends on a2ui_core ^0.3.0 (#3192), but the install sample still showed ^0.2.2.⚠️ Agent-generated * docs(a2ui_flutter): drop accessibility from the README's unsupported list NodeView applies a component's accessibility label and description, the two attributes v0.9 defines, since effca52.⚠️ Agent-generated
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.
Summary
Standardizes Apache 2.0 URLs across all repository
LICENSEfiles tohttp://while preservinghttps://Apache URLs in source file headers. Updatesscripts/fix_licenses.pyto enforcehttp://across all trackedLICENSEfiles and adds corresponding unit test coverage inscripts/test_fix_licenses.py.This is for consistency, and because pana and other license tools don't recognize the license as an Apache license if it's not identical.
Background & Rationale
pub.dev'spanaanalyzer match the Apache 2.0 license against the canonical SPDX template, which specifieshttp://www.apache.org/licenses/andhttp://www.apache.org/licenses/LICENSE-2.0(as previously identified in a2ui_core and a2ui_agent lose 30 and 20 pub points to packaging, not code #2957 and addressed fora2ui_coreanda2ui_agentin chore(dart): let pub.dev recognize the license of a2ui_core and a2ui_agent #2958).https://is used in a packageLICENSEfile,panafails to identify the license and treats it as unknown.LICENSEcovers the entire repository (includingeval/bin/transcrypt, which requires the appended MIT license notice), whereas individual packages (dart/a2ui_cli,dart/a2ui_core,dart/a2ui_agent) should not include the Transcrypt MIT notice since they do not bundle that script.Changes
LICENSE: Converted Apache license URLs on lines 4 and 196 tohttp://. Retained theeval/bin/transcryptMIT license notice at the bottom.dart/a2ui_cli/LICENSE: Converted Apache license URLs tohttp://and removed the Transcrypt MIT notice to matchdart/a2ui_core/LICENSEanddart/a2ui_agent/LICENSE.scripts/fix_licenses.py:LICENSE.--checkmode, reports an error if any trackedLICENSEfile containshttps://www.apache.org/licenses.https://withhttp://in all trackedLICENSEfiles.https://Apache URLs and copyright year2024forGoogle LLCacross source code headers.scripts/test_fix_licenses.py:test_process_files_check_mode_errorsto asserthttps://inLICENSEproduces a check-mode error.test_process_files_license_http_enforcementto verifyhttp://root and nestedLICENSEfiles pass check mode,https://in nestedLICENSEfiles is detected, and fix mode converts them tohttp://.Testing
python3 -m unittest scripts.test_fix_licenses(20/20 tests passed)../scripts/fix_licenses.py --check(passed with 0 errors)../scripts/fix_format.sh --check(Prettier, Pyink, and Dart format checks passed).