Skip to content

CI check for krishhgg/Insomnia#58 (temporary) - #1

Closed
D4TBot wants to merge 12 commits into
mainfrom
macos-27-ci
Closed

D4TBot wants to merge 12 commits into
mainfrom
macos-27-ci

Conversation

@D4TBot

@D4TBot D4TBot commented Oct 11, 2026

Copy link
Copy Markdown
Owner

Temporary pull request inside the fork to run the project's CI on the updated macOS 27 branch before pushing it to krishhgg#58. Closed and deleted after the run.

🤖 Generated with Claude Code

krishhgg and others added 12 commits October 10, 2026 03:25
…of main

A pushed v<version> tag now publishes a stable release: not a prerelease,
marked Latest, titled "Insomnia <version> (stable)". A new nightly channel
publishes the head of main once a day (07:17 UTC) as a prerelease that is
never Latest, under a new tag nightly-<UTC date>-<first 12 hex digits of
the commit>, with the zip named Insomnia-<version>-nightly-<date>-<commit>-
macos.zip. A manual run builds the artifact only, as before, unless its new
nightly input is set, which runs the nightly path and refuses any ref but
main.

A read-only plan job picks the channel. For a nightly it lists the
nightly-* tags and the releases: a commit that already has a nightly is
skipped before anything is built, a tag without a release or on another
commit stops the run. The nightly job creates the tag with the API call
that fails when the ref exists, so no tag is ever moved; a rerun of its
own failed job finds its tag on the same commit. Neither publishing job
can replace a published release or asset.

Both channels keep the same tests, build, checksum and attestation steps,
the pinned actions and per-job permissions (plan and build read only).
The notes' verify command adds --source-digest, and its --source-ref is
the tag or refs/heads/main, so a nightly never passes for a stable tag.

README's Install section and docs/releasing.md let readers and coding
agents choose stable or nightly, and send v0.1.0, which was packaged by
hand from the maintainer's installed app and has no attestation, to its
own release notes. SECURITY.md and docs/release-validation.md describe
both channels and the v0.1.0 exception; both channels' end-to-end runs
are recorded as not run. ReleaseWorkflowTests cover the triggers, gates,
release flags, tag creation and the README's channel choice.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…s the commit

The README's nightly download is now one function. It reads every page of
the release list with gh api --paginate and downloads only when the newest
published nightly prerelease has a tag of the form nightly-<8 digits>-<12
hex digits>. A failed list, no nightly yet, or any other tag stops it with
a message, a nonzero status and nothing downloaded. Before, an empty or
failed list left the tag empty, and gh release download "" fetched the
Latest stable release instead.

Step 2's attestation command now carries --source-digest <commit>, the full
commit the release notes name, since every nightly shares refs/heads/main
and the ref alone lets another nightly's zip pass.

README and SECURITY.md scope the installer's version check, the backstop
sealed in the app and the code requirement the recovery agent pins to
workflow-built releases and builds of current source. v0.1.0's installer
checks no version; its agent runs a backstop.sh copied into Application
Support with /bin/bash and checks no signature. Readers are sent to the
README in its zip.

ReleaseWorkflowTests runs the plan job's script from release.yml under
bash -e with a stub gh: a published nightly of the commit is skipped, a
tag without a release or naming another commit stops the run with no
outputs, and a commit with no nightly gets a new tag. The README check now
requires --source-digest <commit>.

README also gains a Star history section with the star-history.com chart
(light and dark).

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
ReleaseWorkflowTests now also runs the nightly job's "Create the tag and
the prerelease" step from release.yml under bash -e with a stub gh. A new
tag is created on the built commit and the prerelease follows. When the
tag already exists, as on a rerun of the job, the step reads it and goes
on only if it names the built commit. A tag on another commit, or one that
cannot be read, stops the step before gh release create runs.

The plan test and this one share one runner that extracts a step's run
block by name and records the stub's calls.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…hannels

Release: stable v* releases marked Latest, daily nightly prereleases of main
The README drops from 736 lines to about 255 and keeps every image. The
long, mandatory parts (what the installer changes, hotspot and tmux,
Chrome throttling, configuration and privacy) are collapsed.

The detail moves, unchanged apart from em dashes and curly quotes, into
docs/install.md, docs/lid-close.md, docs/recovery.md and docs/extras.md.
skills/install-insomnia and skills/maintain-insomnia are agent playbooks
that follow those pages, and the README's install prompt points at the
install skill.

The README keeps the Install section with the Apple Silicon requirement,
the Build from source heading install.sh names, the four sudoers commands
and the microphone sentence. ReleaseWorkflowTests now checks the channel
and v0.1.0 text in docs/install.md, and the Greptile sudoers rule covers
that page.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…laims

Greptile on 988be58:
- The battery floors are defaults that apply on battery power, and the
  heat rules can be turned off in Settings.
- Quit does not wait for saved audio of an output that is not connected.
- Owner-only permissions skip symlinks and access control lists.
- The maintain skill lists the journal entries that still need undoing
  and names the records that do not (keptDisplayReadLit,
  keptDisplayUnderLowPower, displayRestoredUnderLowPower, a brightness
  kept after a refused restore), as RuntimeState.isDirty does.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…s next launch

Greptile 4240232135 on 8457e6f: after Quit, a reconnected output stays
muted until Insomnia opens again.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
README: shorten it and move the details into docs and agent skills
Measured on macOS 27.0.1 (26A434, MacBook Pro M5 Pro): all three
DisplayServices symbols resolve, GetBrightness returns 0 for the built-in
display and CanChangeBrightness is true; in a supervised lid test the
display was darkened to 0 and restored. Tests now use 28 as the
unmeasured major.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_016LRkYqs4KG6k4Dxe5aoCjw
macOS 27 pmset -g custom prints powermode (0 automatic, 1 Low Power,
2 High Power) and no lowpowermode line, so every read failed and Low
Power Mode was never enabled on lid close. pmset -b lowpowermode 0|1
still sets the mode there, so the sudoers commands are unchanged; only
the parser falls back to powermode. lowpowermode wins when both appear,
and High Power reads as unknown so it is never taken over.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_016LRkYqs4KG6k4Dxe5aoCjw
Probe, supervised lid test, the Low Power Mode read failure and what
was not exercised.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_016LRkYqs4KG6k4Dxe5aoCjw
… refusal text from the measured list

Review on krishhgg#58: two RefusedDarkeningTests still expected "measured on macOS 26
only" (PrivateDisplayGuardTests.swift:1124, :1148). Every expected refusal
message is now built from DisplayPower.measuredDisplayServicesMajors and an
unmeasured major past the list, so measuring the next macOS is a one-line
change. docs/spec.md and docs/lid-close.md say 26 and 27; the unmeasured-version
row of the hardware table says 26 or 27, and a Not run row covers a macOS 27
session that reads powermode, enables Low Power Mode and leaves High Power alone.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01R72BAk5W5GvNnS2GR7qAFN
@D4TBot

D4TBot commented Oct 11, 2026

Copy link
Copy Markdown
Owner Author

CI checked; results posted on krishhgg#58.

@D4TBot D4TBot closed this Oct 11, 2026
@D4TBot
D4TBot deleted the macos-27-ci branch October 11, 2026 13:40
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.

2 participants