Skip to content

docs: update README positioning#212

Merged
Astro-Han merged 1 commit into
devfrom
codex/docs-readme-positioning
Apr 24, 2026
Merged

docs: update README positioning#212
Astro-Han merged 1 commit into
devfrom
codex/docs-readme-positioning

Conversation

@Astro-Han

@Astro-Han Astro-Han commented Apr 24, 2026

Copy link
Copy Markdown
Owner

Summary

  • rewrite README.md and README_CN.md around PawWork as an open-source desktop AI agent for everyday work
  • replace the old office-tool framing with agent-style task examples, a comparison table, and a simpler how-it-works section
  • update download copy for macOS + Windows, remove the visible screenshot TODO, and clarify first-launch instructions for both macOS and Windows

Why

The current README was outdated and undersold PawWork's direction. It still read like a lightweight office tool, did not explain why PawWork goes beyond chat, and still listed macOS Apple Silicon only. This PR aligns the README copy with issue #134 and the current product direction.

Related Issue

Closes #134

How To Verify

git diff --check -- README.md README_CN.md
rg -n "AI workflow|workbench|super app|fully autonomous|artifact|BYOK|Your data never leaves|Apple_Silicon|TODO: add screenshot|添加截图|普通话" README.md README_CN.md

Manual checks:

  • cold-read both README files for SEO, clarity, and over-claim risks
  • confirm English and Chinese structures stay aligned
  • confirm the download section now mentions both macOS and Windows
  • confirm macOS first-launch guidance points users to Open / Open Anyway
  • confirm Windows first-launch guidance covers SmartScreen prompts

Screenshots or Recordings

N/A. README copy only, no visible app UI change.

Checklist

  • I linked the related issue, or stated why there is no issue
  • This PR has type, scope, and priority labels, or I requested maintainer labeling
  • I listed the relevant verification steps, including tests when behavior changed
  • I manually checked visible UI or copy changes when needed, with screenshots or recordings
  • I considered macOS and Windows impact for desktop, packaging, updater, signing, paths, shell, or permissions changes
  • I called out docs, release notes, dependencies, permissions, credentials, deletion behavior, or generated/local file changes when relevant
  • I am targeting dev, and my PR title and commit messages use Conventional Commits in English

@coderabbitai

coderabbitai Bot commented Apr 24, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

Restructures README content to present PawWork as an examples-first AI agent (adds comparison, workflow, and focus sections), expands cross‑platform download/troubleshooting guidance, and revises acknowledgements. Adds docs-only detection and conditional skipping to CodeQL and E2E GitHub Actions; updates corresponding workflow tests.

Changes

Cohort / File(s) Summary
README / Localization
README.md, README_CN.md
Rewrites positioning to an "Ask PawWork to" examples-first narrative; replaces capability lists with concrete tasks; adds "Why PawWork Is Different", "How It Works", "Current Focus"; expands download instructions to GitHub Releases (macOS + Windows) and first-launch troubleshooting; removes "Who This Is For"; expands OpenCode acknowledgements.
CI Workflows
.github/workflows/codeql.yml, .github/workflows/e2e-artifacts.yml
Add full git checkout (fetch-depth: 0) and a new filter step that diffs base vs head to detect docs-only changes using an allowlist; introduce conditional steps to skip CodeQL analysis and E2E setup/run when docs_only is true; emit informational messages for docs-only runs.
Workflow Tests
packages/opencode/test/config/e2e-artifacts-workflow.test.ts, packages/opencode/test/github/codeql-workflow.test.ts
Update tests to assert the new filter step, fetch-depth: 0 on checkout, and conditional execution (or skipping) of Node/Bun/Playwright/setup and CodeQL/E2E steps when steps.filter.outputs.docs_only == 'true'; adjust failure/artifact conditions to avoid triggering on docs-only runs.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

ci

Poem

🐰 I nibble on changelogs bright,

PawWork learns to shine its light,
Docs are quiet, CI skips the dance,
Agents ready, examples enhance,
Hoppity-hop—deploy, delight!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning Changes to workflow files (.github/workflows/codeql.yml, e2e-artifacts.yml) and related tests introduce docs-only filtering logic, which is outside the README positioning scope. Move workflow documentation-filtering changes to a separate PR, as they are not related to the README positioning objectives specified in issue #134.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The PR title 'docs: update README positioning' directly matches the main change, following Conventional Commits format and clearly describing the README restructuring.
Linked Issues check ✅ Passed The PR fulfills all coding requirements from issue #134: repositions PawWork as an AI agent using clear language, avoids 'super app' framing, preserves technical credibility, and contains only documentation changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description check ✅ Passed The pull request description comprehensively follows the template with all required sections (Summary, Why, Related Issue, How To Verify, Screenshots/Recordings, Checklist) and provides specific details aligned with the PR objectives.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/docs-readme-positioning

Comment @coderabbitai help to get the list of available commands and usage tips.

@Astro-Han Astro-Han added documentation Improvements or additions to documentation app Application behavior and product flows P3 Low priority labels Apr 24, 2026

@gemini-code-assist gemini-code-assist 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.

Code Review

This pull request updates the documentation in README.md and README_CN.md to reposition PawWork as an AI Agent for everyday work, adding Windows support, detailed use cases, and a comparison table. Feedback was provided to improve the macOS installation instructions by suggesting more effective methods for bypassing Gatekeeper warnings than re-downloading the app.

Comment thread README.md Outdated
Comment thread README_CN.md Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@README.md`:
- Around line 52-58: Add a short "Windows first launch" one-liner to README.md
mirroring the "macOS first launch" section that advises users how to bypass
common SmartScreen prompts (e.g., use "More info" → "Run anyway" or right-click
and select "Run as administrator" / "Open" as needed), and apply the same
sentence to README_CN.md for parity; locate the existing "macOS first launch"
heading and insert the Windows note directly below it so both platforms are
covered.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 2bbdba25-47c9-41f6-8b6a-7083f928eb66

📥 Commits

Reviewing files that changed from the base of the PR and between 1b0a8b8 and 603994c.

📒 Files selected for processing (2)
  • README.md
  • README_CN.md
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: e2e-artifacts
  • GitHub Check: analyze-js-ts
🔇 Additional comments (3)
README_CN.md (2)

3-49: Strong positioning rewrite with clear task-first narrative.

This section is concise, credible, and aligned with the “everyday work AI agent” direction. The examples/comparison/workflow structure improves readability and intent clarity.


52-58: Download and macOS first-launch guidance is clear and actionable.

Good improvement on installer specificity (.dmg / .exe) and first-launch instructions.

README.md (1)

3-49: Excellent repositioning and structure for the new product direction.

The messaging is approachable without dumbing down for technical users, and the “Ask/Why/How/Current Focus” flow is strong.

Comment thread README.md
@Astro-Han Astro-Han force-pushed the codex/docs-readme-positioning branch from 603994c to 6d20aa0 Compare April 24, 2026 06:48
@Astro-Han Astro-Han force-pushed the codex/docs-readme-positioning branch from bd6c723 to b745597 Compare April 24, 2026 07:11

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/codeql.yml:
- Around line 44-100: The docs-only filter logic (functions and variables like
is_docs_path, docs_only, the EVENT_NAME case, BASE_SHA fallback, mapfile -t
changes and the git diff parsing loop) is duplicated across workflows; extract
that entire block into a single reusable location (a composite GitHub Action or
a shell script in .github/actions or .github/scripts) that exposes the result
via outputs (e.g., docs_only) and accepts inputs (BASE_SHA/HEAD_SHA), then
update this workflow to call the shared action/script and use its output instead
of inlining is_docs_path/docs_only/git diff logic so all workflows share the
same implementation and avoid drift.
- Around line 36-114: The PR modifies the CI workflow by adding the "filter"
step and the docs_only output used to conditionally skip CodeQL (see the filter
step, the docs_only variable and the if: checks on the Initialize CodeQL /
Analyze with CodeQL steps), which conflicts with the linked objective that
required docs-only content changes; either remove these workflow changes from
this branch (revert the added filter step and the if: conditions on the CodeQL
steps) and keep only documentation edits, or move the workflow changes into a
separate infra/workflow PR and reference that PR from the current one; ensure
you update or remove the docs_only variable and the conditional uses in
Initialize CodeQL and Analyze with CodeQL if you revert the workflow change.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 2f19ca41-9cce-413c-b848-7ba7d6b3212b

📥 Commits

Reviewing files that changed from the base of the PR and between 603994c and b745597.

📒 Files selected for processing (6)
  • .github/workflows/codeql.yml
  • .github/workflows/e2e-artifacts.yml
  • README.md
  • README_CN.md
  • packages/opencode/test/config/e2e-artifacts-workflow.test.ts
  • packages/opencode/test/github/codeql-workflow.test.ts
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (12)
  • GitHub Check: unit-windows-opencode-session
  • GitHub Check: unit-windows-app
  • GitHub Check: typecheck
  • GitHub Check: unit-windows-opencode-server-tools
  • GitHub Check: unit-windows-desktop
  • GitHub Check: unit-windows-opencode-config-project
  • GitHub Check: unit-opencode
  • GitHub Check: unit-desktop
  • GitHub Check: unit-app
  • GitHub Check: smoke-macos-arm64
  • GitHub Check: analyze-js-ts
  • GitHub Check: e2e-artifacts
🧰 Additional context used
📓 Path-based instructions (2)
packages/opencode/**/*.ts

📄 CodeRabbit inference engine (packages/opencode/AGENTS.md)

packages/opencode/**/*.ts: Use Effect.gen(function* () { ... }) for Effect composition
Use Effect.fn("Domain.method") for named/traced effects and Effect.fnUntraced for internal helpers; these accept pipeable operators as extra arguments to avoid unnecessary outer .pipe() wrappers
Use Effect.callback for callback-based APIs
Prefer DateTime.nowAsDate over new Date(yield* Clock.currentTimeMillis) when you need a Date in Effect code
Use Schema.Class for multi-field data in Effect schemas
Use branded schemas (Schema.brand) for single-value types in Effect
Use Schema.TaggedErrorClass for typed errors in Effect schemas
Use Schema.Defect instead of unknown for defect-like causes in Effect code
In Effect.gen / Effect.fn, prefer yield* new MyError(...) over yield* Effect.fail(new MyError(...)) for direct early-failure branches
Use makeRuntime from src/effect/run-service.ts for all services; it returns { runPromise, runFork, runCallback } backed by a shared memoMap that deduplicates layers
Use InstanceState from src/effect/instance-state.ts for per-directory or per-project state that needs per-instance cleanup; do work directly in the InstanceState.make closure where ScopedCache handles run-once semantics
Use Effect.addFinalizer or Effect.acquireRelease inside the InstanceState.make closure for cleanup (subscriptions, process teardown, etc.)
Use Effect.forkScoped inside the InstanceState.make closure for background stream consumers — the fiber is interrupted when the instance is disposed
Prefer FileSystem.FileSystem instead of raw fs/promises for effectful file I/O in Effect services
Prefer ChildProcessSpawner.ChildProcessSpawner with ChildProcess.make(...) instead of custom process wrappers in Effect services
Prefer HttpClient.HttpClient instead of raw fetch in Effect services
Prefer Path.Path, Config, Clock, and DateTime services when those concerns are already inside Effect code
For backgroun...

Files:

  • packages/opencode/test/github/codeql-workflow.test.ts
  • packages/opencode/test/config/e2e-artifacts-workflow.test.ts
packages/opencode/test/**/*.test.{ts,tsx}

📄 CodeRabbit inference engine (packages/opencode/test/AGENTS.md)

packages/opencode/test/**/*.test.{ts,tsx}: Use the tmpdir function from fixture/fixture.ts to create temporary directories for tests with automatic cleanup. Use await using syntax to ensure automatic cleanup when the variable goes out of scope.
When using the tmpdir function with git repository support, pass the git: true option to initialize a git repo with a root commit.
Use the config option in tmpdir to write an opencode.json config file during test setup by passing a partial Config.Info object.
Use the init option in tmpdir to define custom setup functions that can return extra data accessible via tmp.extra, and use the dispose option for custom cleanup logic.
Use testEffect(...) from test/lib/effect.ts for tests that exercise Effect services or Effect-based workflows.
Use it.effect(...) when the test should run with TestClock and TestConsole. Use it.live(...) when the test depends on real time, filesystem mtimes, child processes, git, locks, or other live OS behavior.
Prefer Effect-aware helpers from fixture/fixture.ts over building manual runtimes in tests: use tmpdirScoped() for scoped temp directories, provideInstance(dir)(effect) for low-level binding without directory creation, provideTmpdirInstance(...) for single temp instance binding, or provideTmpdirServer(...) for tests that also need the test LLM server.
Define const it = testEffect(...) near the top of the test file and keep the test body inside Effect.gen(function* () { ... }). Yield services directly with yield* MyService.Service or yield* MyTool.
Avoid custom ManagedRuntime, attach(...), or ad hoc run(...) wrappers in Effect tests when testEffect(...) already provides the runtime.
When a test needs instance-local state, prefer provideTmpdirInstance(...) or provideInstance(...) over manual Instance.provide(...) inside Promise-style tests.

Files:

  • packages/opencode/test/github/codeql-workflow.test.ts
  • packages/opencode/test/config/e2e-artifacts-workflow.test.ts
🧠 Learnings (9)
📚 Learning: 2026-04-20T14:36:31.032Z
Learnt from: CR
Repo: Astro-Han/pawwork PR: 0
File: packages/opencode/test/AGENTS.md:0-0
Timestamp: 2026-04-20T14:36:31.032Z
Learning: Applies to packages/opencode/test/**/*.test.{ts,tsx} : When using the `tmpdir` function with git repository support, pass the `git: true` option to initialize a git repo with a root commit.

Applied to files:

  • packages/opencode/test/github/codeql-workflow.test.ts
  • packages/opencode/test/config/e2e-artifacts-workflow.test.ts
📚 Learning: 2026-04-20T14:36:31.032Z
Learnt from: CR
Repo: Astro-Han/pawwork PR: 0
File: packages/opencode/test/AGENTS.md:0-0
Timestamp: 2026-04-20T14:36:31.032Z
Learning: Applies to packages/opencode/test/**/*.test.{ts,tsx} : Use `testEffect(...)` from `test/lib/effect.ts` for tests that exercise Effect services or Effect-based workflows.

Applied to files:

  • packages/opencode/test/github/codeql-workflow.test.ts
  • packages/opencode/test/config/e2e-artifacts-workflow.test.ts
📚 Learning: 2026-04-22T08:49:47.800Z
Learnt from: Astro-Han
Repo: Astro-Han/pawwork PR: 126
File: packages/desktop-electron/src/main/index-sidecar-source.test.ts:3-11
Timestamp: 2026-04-22T08:49:47.800Z
Learning: In `packages/desktop-electron/src/main/index-sidecar-source.test.ts` (Astro-Han/pawwork), the test intentionally uses `expect(source).toContain` / `expect(source).not.toContain` string matching against the raw `index.ts` source text as a lightweight sidecar contract guard. The maintainer has explicitly chosen not to introduce an AST parser (e.g., `babel/parser` or acorn) for this purpose. Do not flag these string-based assertions as fragile or suggest converting them to AST-based matching.

Applied to files:

  • packages/opencode/test/github/codeql-workflow.test.ts
  • packages/opencode/test/config/e2e-artifacts-workflow.test.ts
📚 Learning: 2026-04-20T14:36:31.032Z
Learnt from: CR
Repo: Astro-Han/pawwork PR: 0
File: packages/opencode/test/AGENTS.md:0-0
Timestamp: 2026-04-20T14:36:31.032Z
Learning: Applies to packages/opencode/test/**/*.test.{ts,tsx} : Use the `config` option in `tmpdir` to write an `opencode.json` config file during test setup by passing a partial Config.Info object.

Applied to files:

  • packages/opencode/test/github/codeql-workflow.test.ts
  • packages/opencode/test/config/e2e-artifacts-workflow.test.ts
📚 Learning: 2026-04-23T08:51:00.819Z
Learnt from: Astro-Han
Repo: Astro-Han/pawwork PR: 186
File: packages/opencode/test/plugin/workspace-adaptor.test.ts:139-144
Timestamp: 2026-04-23T08:51:00.819Z
Learning: For pawwork tests under packages/opencode/test/**, auth.json teardown may intentionally combine `Filesystem.write` (from `packages/opencode/src/util/filesystem.ts`) with `node:fs/promises` `unlink` for cleanup. Do not flag this as inconsistent style; it is the established/intentional pattern because `Filesystem` does not provide a `remove`/`unlink` helper.

Applied to files:

  • packages/opencode/test/github/codeql-workflow.test.ts
  • packages/opencode/test/config/e2e-artifacts-workflow.test.ts
📚 Learning: 2026-04-20T14:36:04.113Z
Learnt from: CR
Repo: Astro-Han/pawwork PR: 0
File: packages/app/e2e/AGENTS.md:0-0
Timestamp: 2026-04-20T14:36:04.113Z
Learning: Applies to packages/app/e2e/**/*.spec.ts : Test one feature per test file

Applied to files:

  • packages/opencode/test/config/e2e-artifacts-workflow.test.ts
📚 Learning: 2026-04-20T14:36:04.113Z
Learnt from: CR
Repo: Astro-Han/pawwork PR: 0
File: packages/app/e2e/AGENTS.md:0-0
Timestamp: 2026-04-20T14:36:04.113Z
Learning: Applies to packages/app/e2e/**/*.spec.ts : Test files should be named with the pattern `feature-name.spec.ts`

Applied to files:

  • packages/opencode/test/config/e2e-artifacts-workflow.test.ts
📚 Learning: 2026-04-20T14:36:04.113Z
Learnt from: CR
Repo: Astro-Han/pawwork PR: 0
File: packages/app/e2e/AGENTS.md:0-0
Timestamp: 2026-04-20T14:36:04.113Z
Learning: Applies to packages/app/e2e/**/*.spec.ts : Import test utilities from `../fixtures` instead of `playwright/test`

Applied to files:

  • packages/opencode/test/config/e2e-artifacts-workflow.test.ts
📚 Learning: 2026-04-20T14:36:31.032Z
Learnt from: CR
Repo: Astro-Han/pawwork PR: 0
File: packages/opencode/test/AGENTS.md:0-0
Timestamp: 2026-04-20T14:36:31.032Z
Learning: Applies to packages/opencode/test/**/*.test.{ts,tsx} : Define `const it = testEffect(...)` near the top of the test file and keep the test body inside `Effect.gen(function* () { ... })`. Yield services directly with `yield* MyService.Service` or `yield* MyTool`.

Applied to files:

  • packages/opencode/test/config/e2e-artifacts-workflow.test.ts
🔇 Additional comments (5)
README_CN.md (1)

3-77: 中文 README 的定位和平台引导更新到位。

这版文案把“日常工作 Agent”的定位、任务示例和首启说明都讲清楚了,且与英文结构保持一致。

README.md (1)

3-77: README positioning rewrite is clear and execution-focused.

The “Ask PawWork to…” flow, comparison table, and cross-platform first-launch notes improve clarity without overloading technical detail.

packages/opencode/test/github/codeql-workflow.test.ts (1)

16-55: Workflow test assertions are well aligned with the new docs-only gating behavior.

Good coverage on step presence, if guards, env, and filter script intent.

.github/workflows/e2e-artifacts.yml (1)

41-166: E2E docs-only gating is implemented consistently across setup, execution, and artifact steps.

The conditions are applied comprehensively, and non-docs failure diagnostics remain preserved.

packages/opencode/test/config/e2e-artifacts-workflow.test.ts (1)

15-68: Test coverage for docs-only skip behavior is thorough and aligned with workflow logic.

The new assertions appropriately lock down filter semantics and conditional execution paths.

Comment thread .github/workflows/codeql.yml Outdated
Comment thread .github/workflows/codeql.yml Outdated
@Astro-Han Astro-Han force-pushed the codex/docs-readme-positioning branch from b745597 to 2c03238 Compare April 24, 2026 07:26
@Astro-Han Astro-Han merged commit ac94612 into dev Apr 24, 2026
17 checks passed
@Astro-Han Astro-Han deleted the codex/docs-readme-positioning branch April 24, 2026 07:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app Application behavior and product flows documentation Improvements or additions to documentation P3 Low priority

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Update README and product positioning copy

1 participant