Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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.
112 changes: 112 additions & 0 deletions docs/releases/v0.3.2.md
Original file line number Diff line number Diff line change
@@ -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.
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion tests/test_distribution_contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"]
Expand Down
Loading