Skip to content

chore(release): prepare Noir 0.0.5 and coordinated companions - #116

Merged
leoafarias merged 1 commit into
mainfrom
chore/release-0.0.5
Oct 23, 2026
Merged

leoafarias merged 1 commit into
mainfrom
chore/release-0.0.5

Conversation

@leoafarias

@leoafarias leoafarias commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Prepares Noir 0.0.5. Both companions leave alpha in the same release as stable 0.0.1. The tag is cut from main, so 0.0.5 ships everything merged since noir-v0.0.4: TuiApp.copyToClipboard (#115), the fixes in #105, #106, #110, and #112, and the prerelease API removals in #107 and #111. The native ABI and bundled native artifacts are unchanged from 0.0.4: nothing under native/, third_party/, hook/, lib/src/ffi/, native_manifest.json, or the OpenTUI gitlink changed since the tag.

Rebased onto main at 0295113 (#114). The rebase had no conflicts.

  • noir 0.0.4 → 0.0.5 with a ## 0.0.5 changelog section:
  • noir_driver 0.0.1-alpha.2 (on pub.dev, noir: ^0.0.4) → 0.0.1, requiring noir: ^0.0.5. Its ## 0.0.1 section says this is the first stable release and what it requires; the library is unchanged from alpha.2. Every published section, alpha.2 down, matches the published alpha.2 archive byte-for-byte.
  • noir_signals 0.0.1-alpha.1 (on pub.dev, noir: ^0.0.3) → 0.0.1, requiring noir: ^0.0.5. The unpublished alpha.2 candidate is gone; its section became ## 0.0.1, which says this is the first stable release and what it requires. The library is unchanged from alpha.1, and the alpha.1 and alpha.0 sections match the published alpha.1 archive byte-for-byte.
  • Versions moved with the documented melos version -V noir:0.0.5 -V noir_driver:0.0.1 -V noir_signals:0.0.1 --no-changelog --no-git-commit-version --dependent-constraints --no-dependent-versions. It changed the two companion version: lines and Noir's noir_driver dev dependency (now ^0.0.1); both noir: ^0.0.5 constraints were already in place.
  • Neither companion's library changed: fix(widgets): paint Select clusters and pad DiffView columns by cells #105–test(noir): remove duplicate gates and observe real behavior #114 touch neither package, and both lib/ trees match their latest pub.dev archives byte-for-byte. Neither re-exports a noir symbol.
  • publication.json now records noir_driver 0.0.1-alpha.2. The noir_driver-v0.0.1-alpha.2 run published it on 2026-10-19 and only its record step failed. Corrected with the documented release:record, which changed only noir_driver, then npm run sync.
  • availability.ts regenerated: manifests noir 0.0.5, noir_driver 0.0.1, noir_signals 0.0.1; published noir 0.0.4, noir_driver 0.0.1-alpha.2, noir_signals 0.0.1-alpha.1.
  • Checkout guidance (signals README, installation page) names noir_signals 0.0.1 as the candidate requiring Noir 0.0.5. The testing page now says "noir_driver 0.0.1 requires Noir 0.0.5" instead of the stale 0.0.3. The API page's companion label is "Published companion package" instead of "Published companion prerelease".
  • Hosted install guidance still names the published noir_signals 0.0.1-alpha.1 with noir: ^0.0.3. signals_package_boundary_test requires that guidance to resolve against publication.json, so it changes after publication. Its ordered-records case now covers the records this release produces, including noir_signals 0.0.1, so the record PR cannot break it: ^0.0.1-alpha.1 admits 0.0.1. The unpublished-minimum case now uses ^0.0.1.
  • Release tooling needed no logic change for a non-prerelease companion. The tag trigger is *-v*, resolve-tag derives prerelease=false from the parsed version, and record prefers the stable 0.0.1 over the companion's alphas. Only a doc comment in tool/release/release.dart that said the companions "read today" as prerelease-only was reworded.
  • dialog_demo.dart and its example tests reference 0.0.5.
  • package_distribution_ownership_test.dart pins the 0.0.5 Added, Fixed, and Removed contracts and keeps the 0.0.4 contracts in a "published 0.0.4" test.
  • CONTRIBUTING.md tag examples use noir-v0.0.5, noir_driver-v0.0.1, and noir_signals-v0.0.1.

Checks

Local, on 0086aa0 with Dart 3.13.4 through the Melos scripts. Format also ran with CI's pinned Dart 3.10.0:

  • format:noir, format:driver, format:signals with Dart 3.10.0: 0 changed files. Dart 3.13.4 flags 11 files this PR does not touch, 9 in noir and 2 in noir_driver; format:signals is clean under both.
  • analyze, analyze:driver, analyze:signals: no issues.
  • test:architecture (260 passed), test:noir (2397 passed), test:driver (89 passed), test:signals (125 passed).
  • native:verify (manifest and 6 binaries), docs:frames (frames match), release:check ("Release ready: noir 0.0.5, noir_driver 0.0.1, noir_signals 0.0.1").
  • archive:noir, archive:driver, archive:signals: 0 warnings each from the committed tree. stage:companion, stage:driver: 0 warnings, with the expected path-override hint.
  • melos bootstrap leaves the tree clean, and pubspec.lock is unchanged.
  • release.dart resolve-tag accepts noir-v0.0.5, noir_driver-v0.0.1, and noir_signals-v0.0.1 (prerelease=false for both companion tags) and rejects noir_driver-v0.0.1-alpha.3. preflight reads pub.dev: noir would publish, and both companions are blocked until pub.dev serves Noir 0.0.5.
  • website: sync:check, format:check, lint, typecheck, build, test:smoke (20 sync tests and the smoke test) all pass.

Remaining for a maintainer

  1. Merge this PR.
  2. Push noir-v0.0.5 and approve the pub.dev environment; wait for the publish run.
  3. Then push noir_driver-v0.0.1 and noir_signals-v0.0.1, one at a time, approving each.
  4. Record publication per CONTRIBUTING.md; each publish run opens the record PR.
  5. After noir_signals 0.0.1 is on pub.dev, update the hosted install guidance that still describes the published alpha.1: the signals README "Install" section, doc/hooks.md and doc/signals.md, and on the website the installation page's companion note, hosted snippet, and two troubleshooting rows, plus the hooks page's "requires Noir 0.0.3".

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-23T12:42:08.347736Z 0086aa0 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1693f02e5c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

- `TuiApp.copyToClipboard(text)` asks the terminal to copy `text` to the
system clipboard with an OSC 52 escape sequence. It returns whether the
sequence was written, not whether the terminal honored it, and returns
`false` without writing for empty text or a headless app. Before this the

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Describe renderer absence rather than headless mode

This release contract is false for drive mode and advanced hosts: DriverHost.create constructs TuiBinding(headless: true, renderer: renderer), so TuiApp.isHeadless is true while BuildOwner.copyToClipboard still forwards the request to the attached renderer. Consequently, a headless driven app can return the renderer result instead of always returning false; describe the condition as having no renderer (or change the implementation) rather than promising this for every headless app.

AGENTS.md reference: AGENTS.md:L3-L6

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c2ebb4bf39

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/noir_driver/pubspec.yaml Outdated
name: noir_driver
description: A flutter_driver-style client for driving a Noir terminal app headlessly, over its drive-mode VM service surface.
version: 0.0.1-alpha.2
version: 0.0.1-alpha.3

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Align the driver tag instructions with alpha.3

The commit's release summary, checks, and “Remaining for a maintainer” section still identify noir_driver as 0.0.1-alpha.2 and instruct maintainers to push noir_driver-v0.0.1-alpha.2, while this manifest now declares 0.0.1-alpha.3. Following those instructions blocks the driver release because .github/workflows/publish.yml runs tool/release.dart resolve-tag, which rejects any tag whose version differs from the manifest; update all release instructions to alpha.3 or keep the manifest at alpha.2.

AGENTS.md reference: AGENTS.md:L91-L92

Useful? React with 👍 / 👎.

Prepare Noir 0.0.5. It adds TuiApp.copyToClipboard (#115); fixes
paragraph alignment, character keys, cleared text edits, highlight
ranges, Select and DiffView cell painting, and the hot-reload runner's
second Ctrl+C (#105, #106, #110, #112); and removes unused prerelease
API (#107, #111). The changelog names every removed public member, and
the architecture test pins those release contracts.

Both companions leave alpha as 0.0.1 and require noir: ^0.0.5:
noir_driver after the published 0.0.1-alpha.2, and noir_signals after
the published 0.0.1-alpha.1. Neither library changed since those
archives, and their changelog sections stay byte-for-byte as
published. Noir's noir_driver dev dependency, the tag examples, the
checkout guidance, and the testing page follow.

publication.json now records noir_driver 0.0.1-alpha.2, which was
published on 2026-10-19 when only its record step failed, and
availability.ts is regenerated from it. Hosted install guidance keeps
naming what pub.dev serves until protected publication confirms the
new versions.

The native ABI and bundled native artifacts are unchanged from 0.0.4.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0086aa0281

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".


<Availability of="driver" setup={false}>
`noir_driver` requires Noir 0.0.3.
`noir_driver` 0.0.1 requires Noir 0.0.5.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep driver guidance on the published version

Until 0.0.1 is actually published, this page renders the generated “Published version · 0.0.1-alpha.2” label and immediately runs dart pub add --dev noir_driver, which installs alpha.2; that release requires Noir 0.0.4, not 0.0.5. Keep the alpha.2 requirement here until the publication-record update, or explicitly present 0.0.1 as an unpublished checkout candidate, so the installation guidance does not contradict the version users receive.

AGENTS.md reference: AGENTS.md:L91-L92

Useful? React with 👍 / 👎.

name: noir_signals
description: Reusable lifecycle hooks and Signals reactive state for Noir, the Flutter-like terminal UI framework for Dart.
version: 0.0.1-alpha.2
version: 0.0.1

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Update the install docs shipped in noir_signals 0.0.1

Publishing this manifest as 0.0.1 will freeze the current package documentation into that archive, but packages/noir_signals/README.md and the shipped doc/hooks.md and doc/signals.md still tell consumers to declare 0.0.1-alpha.1 with Noir 0.0.3. The new package actually requires Noir ^0.0.5, so the stable pub.dev package page and reference docs will direct users to the obsolete release pair; update those hosted-install snippets before tagging 0.0.1.

AGENTS.md reference: AGENTS.md:L91-L92

Useful? React with 👍 / 👎.

@leoafarias
leoafarias merged commit 927ba41 into main Oct 23, 2026
8 checks passed
@leoafarias
leoafarias deleted the chore/release-0.0.5 branch October 23, 2026 12:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant