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
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,3 +100,4 @@ Assume environment is set up.
- Pressidian enrolls previously unmanaged private Knowledge rows when they have any administrator-selected Knowledge Type (default `note` or `todo`), skips Gutenberg block-shaped content, and keeps already-enrolled rows synced if their types later change. It uses the existing immutable WordPress slug as record identity, calls the Markdown representation kind `markdown`, hides derived `artifact`/`note`/`obsidian` terms from Obsidian tags, exposes `todo` and other semantic terms as tags, preserves TODO operational meta, and treats WordPress trash as a sync tombstone rather than a hard delete.
- The default Knowledge-only wp-env intentionally omits the standalone Abilities API plugin. PHPUnit bootstrap must treat that fixture as optional and stay silent when it is absent; writing the expected absence to STDERR breaks tests marked `@runInSeparateProcess` before they can skip.
- `pull_request_target` evaluates the workflow definition from the base branch but may execute local composite actions from the checked-out PR merge ref. During CI migrations, keep changed composite actions backward-compatible with the base workflow's inputs until the workflow change has merged; the split build action therefore falls back to the legacy monolith preview ZIP when no package slug is supplied.
- The public landing page is the static GitHub Pages site in `docs/` (custom domain `personalos.net`). Keep it focused on the six standalone Knowledge-backed packages, distinguish four app destinations from two background sync integrations, and verify release assets before advertising downloads; the merged Stuff package initially exists only in source. Use synthetic demo records for public app screenshots and attach a full-page design capture to landing-page PRs.
71 changes: 67 additions & 4 deletions docs/INSTALL.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,71 @@
# Get PersonalOS
# Install PersonalOS plugins

## I have a WordPress site
PersonalOS is a set of six independent plugins built on WordPress Knowledge. Install only the modules you want; no PersonalOS base plugin or sibling plugin is required.

## Getting a WordPress site
## Requirements

## Get a WordPress on your laptop
- WordPress 7.0 or later **with a Knowledge runtime** that registers `wp_knowledge`, hierarchical `wp_knowledge_type`, and the core `/wp/v2/knowledge` REST collection. The WordPress version number alone does not guarantee that Knowledge is available. Check your runtime before installing.
- PHP 7.4 or later for Notes, TODO, Stuff, and AI Chat; PHP 7.2.24 or later for the Readwise and Evernote integrations.
- Pretty permalinks for the private app routes. In WordPress, open **Settings → Permalinks** and choose a structure such as **Post name**.
- A WordPress account with permission to edit posts to use the apps.

AI Chat additionally needs WordPress AI Client and a configured provider through Connectors to generate replies. Readwise and Evernote imports need your credentials for those services. Core Knowledge access does not require an AI provider.

## Choose your plugins

Download individual ZIPs from [GitHub Releases](https://github.com/artpi/PersonalOS/releases). In WordPress, use **Plugins → Add New Plugin → Upload Plugin**, upload a ZIP, and activate it.

| Plugin | Where to open it | What it adds |
| --- | --- | --- |
| Personal Notes | `/notes/` | Note library, Knowledge Type organization, and editor integration |
| Personal TODO | `/todo/` | Tasks, scheduling, recurrence, dependencies, history, and ICS feeds |
| Personal Stuff | `/stuff/` | Inventory with photos, places, tags, search, and print/PDF |
| Personal AI Chat | `/ai-chat/` | Conversations saved in Knowledge, generation through AI Client |
| Personal Readwise Sync | Settings → Personal Readwise Sync | Import Readwise highlights and articles |
| Personal Evernote Sync | Settings → Personal Evernote Sync | One-way import from selected Evernote notebooks |

As of September 6, 2026, release `0.3.0` contains five plugin ZIPs. Personal Stuff is merged into `main` and can be built from source; it is awaiting its first release ZIP. Check the release asset list before downloading.

Open Readwise or Evernote settings to add your per-user token and configure the import scope. The integrations run in the background; apps such as Personal Notes can read their imported Knowledge records.

## Try the local development site

The repository's `wp-env` configuration mounts all six packages. It uses pinned Gutenberg 23.7.0 and enables its Knowledge experiment as a **development fixture**. That fixture is not a bundled release dependency or a promise of production support for the experiment.

With Node.js, Composer, and Docker available:

```bash
git clone https://github.com/artpi/PersonalOS.git
cd PersonalOS
npm ci
composer install
npm run build
npm run wp-env -- start
```

Open [localhost:8901](http://localhost:8901), sign in using wp-env's default development credentials (`admin` / `password`), and configure pretty permalinks. Then open `/notes/`, `/todo/`, `/stuff/`, or `/ai-chat/`. Use these default credentials only for local development.

If your WordPress environment does not provide Knowledge, the apps need a compatible runtime before they can work. The repository fixture is a way to evaluate the plugins locally.

## Build installable ZIPs

From the repository root, after installing dependencies and building assets:

```bash
# Build all six standalone plugins.
npm run package:plugins
npm run verify:split-packages

# Or build just Personal Stuff.
npm run package:plugin -- --package=personal-stuff
```

The packaging command reports the output paths. Install the generated ZIP, rather than copying a package source directory: release ZIPs contain their own shared helpers and required bundled runtimes.

## Your data and connections

The apps store their durable records in WordPress Knowledge. User-created records are private by default and use WordPress permissions. Deactivation or uninstall leaves records in place. This does not guarantee that every Knowledge consumer displays every type of record: each app chooses its own relevant types.

Stuff photos are WordPress Media attachments. Their URLs remain publicly accessible to someone who knows the URL, even when the inventory record is private. Knowledge Type terms retain the visibility provided by your Knowledge runtime.

Readwise and Evernote contact the services you configure. AI generation sends prompts to your configured provider. See each [package readme](https://github.com/artpi/PersonalOS/tree/main/packages) for the exact privacy and retention behavior.
Binary file added docs/assets/knowledge-notes.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/knowledge-stuff.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/knowledge-todo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/assets/mark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
30 changes: 30 additions & 0 deletions docs/design/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Knowledge landing page design

The public site is served directly from `docs/` by GitHub Pages at `personalos.net`. It has local CSS, a small script for screenshot tabs, and no runtime CDN, font service, or build dependency.

Preview it from the repository root:

```bash
python3 -m http.server 4173 --bind 127.0.0.1 --directory docs
```

Open `http://127.0.0.1:4173`.

## Design captures

- [Full-height desktop, 1440px wide](knowledge-landing-desktop.png)
- [Full-height mobile, 390px wide](knowledge-landing-mobile.png)

The three app screenshots under `docs/assets/knowledge-*.png` are unmodified browser captures of the running local wp-env site at 1440×900. The site had all six split plugins active, with its pinned Gutenberg Knowledge fixture. An isolated author account named Demo owns eight synthetic notes, seven synthetic tasks, and four synthetic inventory items. The Stuff screenshot is filtered to the synthetic Field kit tag. No personal notes, photos, or credentials are included. The hero map and record panel are explanatory illustrations, not app screenshots.

## Verification — September 6, 2026

- CSS and JavaScript pass the repository's WordPress linters; `node --check docs/site.js` and `git diff --check` pass.
- Chromium browser checks at 320, 375, 390, 768, 820, 1024, and 1440px: no horizontal overflow, page errors, or failed local asset responses.
- All three screenshot tabs work with clicks and keyboard navigation, including arrow keys, Home, and End. Selected state, focus, panel visibility, URL decoration, and captions update together.
- Axe's WCAG 2 A/AA and WCAG 2.1 AA checks report zero violations at the checked 1440px desktop viewport. This is an automated scan, not a comprehensive accessibility certification.
- All internal anchors and linked repository paths resolve. The default screenshot and all six modules remain available without JavaScript.
- Desktop and mobile captures were visually reviewed. Screenshots were decoded before full-page capture; the default tab is Notes. Reduced-motion preference is respected.
- The latest published release was inspected: `0.3.0` has the five pre-Stuff ZIPs. The landing page links to the releases list and identifies Stuff as source-available while its first ZIP is pending.

This change is static site content, styles, screenshots, and installation documentation. Plugin code and wp-env configuration are unchanged; backend suites were not rerun for this page redesign.
Binary file added docs/design/knowledge-landing-desktop.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/design/knowledge-landing-mobile.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading