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
8 changes: 4 additions & 4 deletions .agents/skills/development-workflow/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: development-workflow
description: ReactiveProperty repository development policy. Use whenever you implement a feature or bug fix, change library or test code under Source/ or Test/, make a design or architecture decision, or write documentation in this repo. Enforces strict Test-Driven Development (Red -> Green -> Refactor) with MSTest and `dotnet test ReactiveProperty.slnx`, requires recording design decisions as ADRs under dev-docs/adr/, and defines the documentation split: docs/ is user-facing (published via VuePress) while dev-docs/ holds implementer/contributor documentation. Triggers include "implement", "add feature", "fix bug", "TDD", "red green refactor", "design decision", "architecture", "ADR", "where do docs go", and "contributor docs".
description: ReactiveProperty repository development policy. Use whenever you implement a feature or bug fix, change library or test code under Source/ or Test/, make a design or architecture decision, or write documentation in this repo. Enforces strict Test-Driven Development (Red -> Green -> Refactor) with MSTest and `dotnet test ReactiveProperty.slnx`, requires recording design decisions as ADRs under dev-docs/adr/, and defines the documentation split: docs/ is user-facing (plain Markdown browsed on GitHub) while dev-docs/ holds implementer/contributor documentation. Triggers include "implement", "add feature", "fix bug", "TDD", "red green refactor", "design decision", "architecture", "ADR", "where do docs go", and "contributor docs".
---
# Development Workflow (ReactiveProperty)

Expand Down Expand Up @@ -84,9 +84,9 @@ Trivial, reversible choices (local refactors, naming) do **not** need an ADR.

## 3. Documentation split: `docs/` vs `dev-docs/`

- **`docs/` = user-facing** documentation, published as the VuePress site
(`npm run docs:build`). Write here for library *consumers*: getting-started, API usage,
samples. Available in English and Japanese (`*-ja`).
- **`docs/` = user-facing** documentation, plain Markdown browsed directly on GitHub (no site
generator). Write here for library *consumers*: getting-started, API usage,
samples. Available in English and Japanese (`*-ja`). Keep links relative (`.md`).
- **`dev-docs/` = implementer/contributor-facing** documentation, **not** published.
Write here for people working *on* ReactiveProperty: architecture notes, internal design,
contributor workflow, and ADRs (`dev-docs/adr/`).
Expand Down
33 changes: 0 additions & 33 deletions .github/workflows/deploy-document.yml

This file was deleted.

12 changes: 4 additions & 8 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Test/ Unit tests (MSTest)
ReactiveProperty.WPF.ManualTests/ Manual/interactive WPF test app
Samples/ Example apps (WPF, Blazor, MAUI-style, Prism, etc.)
Benchmark/ BenchmarkDotNet projects (separate solution)
docs/ VuePress documentation site (user-facing, published)
docs/ Plain-Markdown documentation (user-facing; browse on GitHub)
dev-docs/ Implementer/contributor docs + ADRs (not published)
skills/ Published agent skills for ReactiveProperty *users* (consumers)
.agents/skills/ Agent skills for working *on* this repo (contributors)
Expand Down Expand Up @@ -116,13 +116,9 @@ See the **`development-workflow`** skill (`.agents/skills/development-workflow/S
- Add tests under the matching `Test/*` project; mirror the namespace `ReactiveProperty.Tests`.

## Documentation
- **`docs/` = user-facing**, built with **VuePress** (English + Japanese `*-ja` variants):
```pwsh
cd docs
npm install
npm run docs:dev # local dev server
npm run docs:build # static build
```
- **`docs/` = user-facing**, plain Markdown (English + Japanese `*-ja` variants). There is no
site generator — just browse the folder on GitHub. Keep links relative (`.md`) so they work
both on GitHub and in local editors.
- **`dev-docs/` = implementer/contributor-facing** (not published): architecture notes,
contributor workflow, and ADRs in `dev-docs/adr/`. See `dev-docs/README.md`.

Expand Down
2 changes: 1 addition & 1 deletion dev-docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ This folder holds documentation for people working **on** ReactiveProperty

| Folder | Audience | Published? |
|--------|----------|------------|
| [`../docs/`](../docs) | Library **users** (consumers) | Yes — built and published with VuePress |
| [`../docs/`](../docs) | Library **users** (consumers) | Plain Markdown, browsable on GitHub |
| `dev-docs/` (this folder) | **Implementers / contributors** | No |

Put "how does a consumer use this feature?" content in `docs/`. Put "how/why is this
Expand Down
60 changes: 60 additions & 0 deletions dev-docs/adr/0005-remove-vuepress-plain-markdown-docs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# 0005. Remove VuePress; publish docs as plain Markdown on GitHub

- **Status:** Accepted
- **Date:** 2026-07-05
- **Deciders:** ReactiveProperty maintainers

## Context

The user-facing documentation under `docs/` was built with [VuePress](https://vuepress.vuejs.org/)
1.5 and published to GitHub Pages (the `gh-pages` branch) by the
`.github/workflows/deploy-document.yml` workflow. This added a Node.js/npm toolchain
(`docs/package.json`, `docs/package-lock.json`), VuePress-specific configuration
(`docs/docs/.vuepress/config.js`), deploy scripts (`docs/deploy.ps1`, `docs/deploy.sh`), and a
CI job whose only purpose was to build and push the static site.

The documentation content is already ordinary Markdown with relative `.md` links and relative
image paths, so it renders correctly when browsed directly on GitHub. The VuePress layer mainly
provided a navigation sidebar and theming — nice-to-have, but not essential for a project that is
in maintenance/active-support mode and whose author recommends the successor library
[R3](https://github.com/Cysharp/R3) for new apps. Maintaining the Node toolchain and a bespoke
publish pipeline is ongoing overhead disproportionate to that value.

## Decision

We will remove the VuePress dependency and treat `docs/` as plain Markdown that is read by
browsing the folder on GitHub.

Concretely:

1. Delete the VuePress configuration and Node tooling: `docs/docs/.vuepress/config.js`,
`docs/package.json`, `docs/package-lock.json`, `docs/deploy.ps1`, `docs/deploy.sh`, and the
VuePress-only `docs/.gitignore`.
2. Delete the `deploy-document.yml` GitHub Actions workflow that built and pushed the site.
3. Preserve navigation for GitHub readers by adding a top-level `docs/README.md` index and a
"Documentation contents" table of contents to `docs/docs/README.md` and
`docs/docs-ja/README.md` (mirroring the old sidebar).
4. Update contributor docs (`AGENTS.md`, `dev-docs/README.md`, and the `development-workflow`
skill) to describe `docs/` as plain Markdown rather than a published VuePress site.

Disabling GitHub Pages itself and deleting the `gh-pages` branch are repository settings that
cannot be changed from repository files; they are a manual follow-up for a maintainer.

### Alternatives considered

- **Keep VuePress** — rejected: ongoing Node/npm maintenance and a bespoke publish pipeline for
marginal benefit on a maintenance-mode project.
- **Migrate to another static-site generator (DocFX, MkDocs, Docusaurus, VitePress)** — rejected:
still introduces a toolchain and publish pipeline; the stated goal is to remove the site build
entirely and rely on GitHub's Markdown rendering.

## Consequences

- No Node.js/npm toolchain or site-build step is required to work on the docs; edits are just
Markdown.
- The hosted documentation site (GitHub Pages) will no longer be updated and should be disabled
by a maintainer; existing deep links to the old site will break. Links from the repo now point
at the Markdown files in `docs/`.
- Navigation is provided by README indexes rather than a generated sidebar; contributors must keep
those indexes in sync when adding or renaming pages.
- Documentation links must stay relative (`.md`) so they resolve both on GitHub and locally.
1 change: 1 addition & 0 deletions dev-docs/adr/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,4 @@ Trivial, easily reversible choices (local refactors, naming) do not need an ADR.
| [0002](./0002-reactivetimer-fixed-period-interval.md) | ReactiveTimer uses a fixed-period ITimer; Interval changes take effect on next Start | Accepted |
| [0003](./0003-reactiveproperty-r3-migration-bridge.md) | Ship a permanent minimal `ReactiveProperty.R3` migration bridge and a migration skill | Accepted |
| [0004](./0004-reactiveproperty-r3-wpf-event-to-reactive.md) | Provide R3-targeting EventToReactive trigger actions in a new ReactiveProperty.R3.WPF package | Accepted |
| [0005](./0005-remove-vuepress-plain-markdown-docs.md) | Remove VuePress; publish docs as plain Markdown on GitHub | Accepted |
2 changes: 0 additions & 2 deletions docs/.gitignore

This file was deleted.

10 changes: 10 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# ReactiveProperty documentation

These docs are plain Markdown — just browse them here on GitHub.

- **English:** [`docs/`](./docs/README.md)
- **日本語:** [`docs-ja/`](./docs-ja/README.md)

> For brand-new apps the author recommends the successor library
> [R3](https://github.com/Cysharp/R3). See the
> [Migrate to R3](./docs/advanced/r3-migration.md) guide.
10 changes: 0 additions & 10 deletions docs/deploy.ps1

This file was deleted.

14 changes: 0 additions & 14 deletions docs/deploy.sh

This file was deleted.

34 changes: 34 additions & 0 deletions docs/docs-ja/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,40 @@ class ViewModel

クールです!本当に宣言的で分かりやすいです。

## ドキュメント目次

### はじめに

- [Windows Presentation Foundation](getting-started/wpf.md)
- [Universal Windows Platform](getting-started/uwp.md)
- [Xamarin.Forms](getting-started/xf.md)
- [Avalonia](getting-started/avalonia.md)
- [Uno Platform](getting-started/uno-platform.md)
- [Blazor](getting-started/blazor.md)
- [コード スニペットの追加](getting-started/add-snippets.md)

### 機能

- [ReactiveProperty](features/ReactiveProperty.md)
- [ReactivePropertySlim](features/ReactivePropertySlim.md)
- [コマンド](features/Commanding.md)
- [コレクション](features/Collections.md)
- [プレーンなモデル層のオブジェクトと連携する](features/Work-together-with-plane-model-layer-objects.md)
- [IObservable を実装した便利なクラス](features/Notifiers.md)
- [拡張メソッド](features/Extension-methods.md)
- [View から ViewModel へのイベント転送](features/Event-transfer-to-ViewModel-from-View.md)

### 応用トピック

- [スレッド制御](advanced/thread.md)
- [await 演算子と連携する](advanced/awaitable.md)
- [R3 への移行](advanced/r3-migration.md)
- [他の MVVM フレームワークと連携する](advanced/work-with-other-mvvm-framwork.md)

### サンプル

- [サンプル](samples.md)

## 始めましょう!

ReactiveProperty は次のリンクから使い始めることができます。
Expand Down
52 changes: 0 additions & 52 deletions docs/docs/.vuepress/config.js

This file was deleted.

34 changes: 34 additions & 0 deletions docs/docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,40 @@ class ViewModel

Cool! It is really declarative and clear.

## Documentation contents

### Getting started

- [Windows Presentation Foundation](getting-started/wpf.md)
- [Universal Windows Platform](getting-started/uwp.md)
- [Xamarin.Forms](getting-started/xf.md)
- [Avalonia](getting-started/avalonia.md)
- [Uno Platform](getting-started/uno-platform.md)
- [Blazor](getting-started/blazor.md)
- [Add code snippets](getting-started/add-snippets.md)

### Features

- [ReactiveProperty](features/ReactiveProperty.md)
- [ReactivePropertySlim](features/ReactivePropertySlim.md)
- [Commanding](features/Commanding.md)
- [Collections](features/Collections.md)
- [Work together with plain model layer objects](features/Work-together-with-plane-model-layer-objects.md)
- [Useful classes which implement IObservable](features/Notifiers.md)
- [Extension methods](features/Extension-methods.md)
- [Transfer event to ViewModel from View](features/Event-transfer-to-ViewModel-from-View.md)

### Advanced topics

- [Thread control](advanced/thread.md)
- [Work with await operator](advanced/awaitable.md)
- [Migrate to R3](advanced/r3-migration.md)
- [Work with other MVVM Frameworks](advanced/work-with-other-mvvm-framwork.md)

### Samples

- [Samples](samples.md)

## Let's start!

You can start using ReactiveProperty from the following links.
Expand Down
Loading
Loading