diff --git a/CHANGELOG.md b/CHANGELOG.md index 2208b21..7891187 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,22 @@ All notable changes are documented here. FSQ follows Semantic Versioning after p ## [Unreleased] +## [0.3.2] - 2026-10-21 + +Release preparation; this entry does not establish a published package, tag, or GitHub release. See the [release notes](docs/releases/v0.3.2.md) for upgrade steps and validation limits. + +### Fixed + +- Android text-entry verification tolerates geometry changes only when a unique locator remains bound to the original resource, while retaining exact readback and target-identity checks. Ambiguous, unreadable, disabled, or mismatched targets remain non-success results without implicit write retries (#39). +- Android's initial device-context read retries once for the specifically identified `ApplicationSharedMemory not initialized` backend error; it does not repeat the application action or retry unrelated failures (#39). + +### Changed + +- Refreshed the bilingual README, Landing Page, current Android Quick Test demonstration, captions, screenshots, and media source records. The Website retains its headline and white/green visual identity, activates inline native video only on user action, and preserves independent viewing links (#41). +- Both public entry paths now lead to Quick Test through Coding Agent or FSQ UI as equal alternatives, with one complete repository-search → About website → homepage-verification example, evidence review, separate advanced Case/replay workflows, and Star/feedback destinations. Documentation contract tests follow the current onboarding (#41). +- Removed the duplicate YouTube cover-image links from both READMEs while retaining the GitHub inline video, text links, and three explanatory images (#42). +- Python distribution metadata is prepared for version 0.3.2. The private npm package remains independently versioned at 0.1.0; this metadata preparation adds no runtime or dependency change. + ## [0.3.1] - 2026-10-20 Release preparation; this entry does not establish a published package, tag, or GitHub release. See the [release notes](docs/releases/v0.3.1.md) for upgrade steps and validation limits. @@ -73,8 +89,11 @@ Release preparation; this entry does not establish a published package, tag, or - This is an alpha release. Public APIs and Case authoring details may evolve before 1.0. -[Unreleased]: https://github.com/FSQ-lab/FSQ/compare/v0.3.1...HEAD +[Unreleased]: https://github.com/FSQ-lab/FSQ/compare/v0.3.2...HEAD +[0.3.2]: https://github.com/FSQ-lab/FSQ/compare/v0.3.1...v0.3.2 [0.3.1]: https://github.com/FSQ-lab/FSQ/compare/v0.3.0...v0.3.1 [0.1.6]: https://github.com/FSQ-lab/FSQ/compare/v0.1.5...v0.1.6 [0.1.5]: https://github.com/FSQ-lab/FSQ/compare/v0.1.0...v0.1.5 [0.1.0]: https://github.com/FSQ-lab/FSQ/releases/tag/v0.1.0 + +The 0.3.2 comparison references anticipate release tags; they do not establish that a tag or publication exists. diff --git a/docs/releases/v0.3.2.md b/docs/releases/v0.3.2.md new file mode 100644 index 0000000..96ee562 --- /dev/null +++ b/docs/releases/v0.3.2.md @@ -0,0 +1,112 @@ +# FSQ v0.3.2 release preparation + +Date: 2026-10-21. Python distribution: `fsq-agent` 0.3.2. FSQ remains alpha. +This document prepares a release identity and notes; it does not establish a +`v0.3.2` tag, GitHub release, PyPI publication, or deployed Website revision. + +## Changes since the 0.3.1 preparation + +- [Android input and context fixes (#39)](https://github.com/FSQ-lab/FSQ/pull/39): + text-entry readback can recognize the same uniquely resource-bound control + after keyboard or layout changes. It retains exact text, package, class, + resource, editability, and uniqueness checks. Positional locators do not + gain permission to follow a different input. Masked/unreadable values, + ambiguous or disabled targets, mismatches, and lost identity cannot produce + success; no alternative target or implicit write retry is introduced. + Initial device context also retries one read for the specifically identified + `ApplicationSharedMemory not initialized` backend failure. Other errors + propagate normally; no application action is repeated by that recovery. +- [Public presentation and onboarding (#41)](https://github.com/FSQ-lab/FSQ/pull/41): + synchronized English/Chinese README and guides with the Landing Page, while + preserving the Website headline and white/green visual system. Coding Agent + and FSQ UI are equal Quick Test entry paths with expandable setup, visible + prerequisites, and private Provider/model setup. The shared example searches + for FSQ-lab/FSQ, follows its About website link, and verifies both homepage + headlines. Case management and deterministic replay remain separately chosen + advanced workflows. Star and sanitized-feedback links follow the trial. + The current Android demonstration, matching explanatory screenshots, captions, + cover, social image, and source records replace the active old presentation. + Native Website playback starts only after activation; controls, captions, + keyboard focus, and fallback viewing links remain available. +- [README demo simplification (#42)](https://github.com/FSQ-lab/FSQ/pull/42): + removed the duplicate YouTube cover-image links from both READMEs. The GitHub + inline video, YouTube/caption/provenance text links, and three story images + remain. Website playback and its cover asset are unchanged by that trim. +- Python metadata and its exact distribution-contract assertion advance to + 0.3.2. The private npm package retains its independent 0.1.0 version. + This release-preparation edit does not change runtime code, dependencies, + public interfaces, or configuration. + +These changes are established by repository history following the merged +0.3.1 preparation (#38). The comparison references below anticipate release +tags, rather than claiming an earlier package or tag was published. + +## Upgrade after publication + +Once 0.3.2 is published and obtainable from the package index used by your +Python environment, upgrade with: + +```bash +python -m pip install --upgrade fsq-agent==0.3.2 +``` + +Project-local Skills are copies. Package installation or a host reload alone +does not refresh them. From your Coding Agent project, explicitly run: + +```bash +fsq init --agent skill +``` + +Review installer updates, backups, and conflicts under `.agents/skills/fsq/`, +then reload Skill discovery or start a new Coding Agent session. +`--no-overwrite` preserves an existing copy. No Workspace reinitialization or +Provider reconfiguration is required solely for this version change. + +Continue through either [Coding Agent or FSQ UI](../getting-started.md). +Quick Test uses the dedicated user-level Workspace, returns inspectable +results/evidence, and does not save a formal Case or automatically replay one. +Python 3.11+, a configured supported Provider and selected model, and +[platform-specific prerequisites](../platform-prerequisites.md) still apply. +Never paste Provider credentials into Coding Agent chat. + +## Validation and publication status + +The preparation uses a failing exact-version contract check before the metadata +bump, followed by the focused distribution-contract module, Ruff lint/format, +and diff checks. Results belong to the final identified source snapshot and its +external validation evidence; these instructions do not assert a passing result. +Earlier PR, release, or local results are historical and are not final 0.3.2 +validation evidence. + +Final frontend compilation, wheel and sdist creation, a wheel rebuilt from the +sdist, metadata/resource comparisons, fresh source-free installed-package smoke +tests, and independent review are pending integration verification. The smoke +must use the built artifact outside the source checkout, including both console +entry points, platform presets, copied Skill resources, and packaged static +serving. These checks do not replace a real target or Provider test. + +The complete 0.3.2 Python/frontend CI and supported-platform matrix are pending. +No all-platform live execution, clean public-index end-to-end first-use run, or +successful release pipeline is claimed. Building a local wheel does not prove +public installation availability. + +[Media provenance](../media/quick-test-demo-provenance.md) records the matching +Android Run's producer as FSQ 0.2.1; it is not a recording of 0.3.2. Source commit, +capture/export timestamps, and some runtime conditions remain unestablished. +The [media acceptance record](../media/media-acceptance.md) separately retains +whole-video privacy/security, complete caption synchronization and muted +comprehension, three-person new-user acceptance, public first-use, and deployed +canonical-page verification limits. Selected-image review is not full-video +privacy clearance. Evidence may contain private application data; review it +before sharing. These publication checks are not satisfied by a version bump, +unit test, or build. + +No tag creation, workflow dispatch, GitHub release, PyPI upload, or deployment +is performed by this preparation. Publication requires a separate authorized +release action and its existing manual verification/environment prerequisites. + +- [Anticipated v0.3.1 → v0.3.2 comparison](https://github.com/FSQ-lab/FSQ/compare/v0.3.1...v0.3.2) +- [Unreleased comparison after v0.3.2](https://github.com/FSQ-lab/FSQ/compare/v0.3.2...HEAD) + +These links use the canonical repository and do not establish that the tags or +published artifacts exist. diff --git a/pyproject.toml b/pyproject.toml index 2015084..5e3e965 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "fsq-agent" -version = "0.3.1" +version = "0.3.2" description = "Goal-driven FSQ automated testing agent with a local agent engine, OpenAI-compatible model access, harness actions, local utilities, observation, and reporting." readme = "README.md" license = "MIT" diff --git a/tests/test_distribution_contract.py b/tests/test_distribution_contract.py index a986929..5c4ea97 100644 --- a/tests/test_distribution_contract.py +++ b/tests/test_distribution_contract.py @@ -79,7 +79,7 @@ def test_default_distribution_contract() -> None: metadata = project["project"] assert metadata["name"] == "fsq-agent" - assert metadata["version"] == "0.3.1" + assert metadata["version"] == "0.3.2" version = Version(metadata["version"]) assert version.local is None dependencies = metadata["dependencies"]