Skip to content

Commit a6197a8

Browse files
committed
Add CHANGELOG, AGENTS.md, LICENSE (AGPL-3.0), static site, release workflow, version 1.0.0
1 parent 3b891e9 commit a6197a8

29 files changed

Lines changed: 1672 additions & 4834 deletions

.github/workflows/build.yml

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: Release Extension
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
permissions:
9+
contents: write
10+
11+
jobs:
12+
build:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- uses: actions/checkout@v4
16+
17+
- uses: actions/setup-node@v4
18+
with:
19+
node-version: 22
20+
21+
- name: Clone mini-lit
22+
run: git clone --depth 1 https://github.com/badlogic/mini-lit.git ../mini-lit
23+
24+
- name: Clone pi-mono
25+
run: git clone --depth 1 https://github.com/badlogic/pi-mono.git ../pi-mono
26+
27+
- name: Install mini-lit
28+
run: cd ../mini-lit && npm install && npm run build
29+
30+
- name: Install pi-mono
31+
run: cd ../pi-mono && npm install && npm run build
32+
33+
- name: Install sitegeist
34+
run: npm install
35+
36+
- name: Build extension
37+
run: npm run build
38+
39+
- name: Create zip
40+
run: |
41+
cd dist-chrome
42+
find . -name "*.map" -type f -delete
43+
zip -r ../sitegeist.zip .
44+
45+
- name: Extract version
46+
id: version
47+
run: echo "version=$(node -p "require('./dist-chrome/manifest.json').version")" >> "$GITHUB_OUTPUT"
48+
49+
- name: Create release
50+
run: |
51+
gh release create ${{ github.ref_name }} sitegeist.zip \
52+
--title "Sitegeist ${{ steps.version.outputs.version }}" \
53+
--notes "Download \`sitegeist.zip\`, unzip, and load as unpacked extension in Chrome/Edge.
54+
55+
See [installation instructions](https://sitegeist.ai/install.html) for details." \
56+
--latest
57+
env:
58+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

AGENTS.md

Lines changed: 83 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,83 @@
1-
- Always run ./check.sh after you made changes
2-
- Never commit unless the user instructed you to
3-
- Never run npm run build or any of the variants. The user is running ./dev.sh in a separate process which continuously rebuilds
1+
# Development Rules
2+
3+
## First Message
4+
If the user did not give you a concrete task, read README.md first.
5+
6+
## Commands
7+
- After code changes: run `./check.sh`. Fix all errors and warnings before committing.
8+
- The user runs `./dev.sh` in a separate tmux session. Do not run `npm run dev` or `npm run build`.
9+
- NEVER commit unless the user asks.
10+
11+
## Code Quality
12+
- No `any` types unless absolutely necessary
13+
- Check node_modules for external API type definitions instead of guessing
14+
- NEVER use inline imports (no `await import(...)`, no `import("pkg").Type`)
15+
- Always ask before removing functionality or code that appears intentional
16+
17+
## Dependencies
18+
- `@mariozechner/mini-lit`, `@mariozechner/pi-ai`, `@mariozechner/pi-web-ui`, `@mariozechner/pi-agent-core` are linked via `file:` to sibling repos `../mini-lit` and `../pi-mono`
19+
- Changes to those packages require rebuilding them (the dev watcher handles this)
20+
- If you need to modify upstream code, edit it in `../pi-mono` or `../mini-lit` directly and rebuild
21+
22+
## Changelog
23+
Location: `CHANGELOG.md`
24+
25+
### Format
26+
Use these sections under `## [Unreleased]`:
27+
- `### Breaking Changes`
28+
- `### Added`
29+
- `### Changed`
30+
- `### Fixed`
31+
- `### Removed`
32+
33+
### Rules
34+
- New entries ALWAYS go under `## [Unreleased]`
35+
- Append to existing subsections, do not create duplicates
36+
- NEVER modify already-released version sections
37+
38+
## Releasing
39+
When the user asks to do a release:
40+
1. Ask: major, minor, or patch?
41+
2. Ensure `CHANGELOG.md` has entries under `## [Unreleased]`
42+
3. Run `./release.sh <major|minor|patch>`
43+
44+
The script bumps the version in `static/manifest.chrome.json`, finalizes the changelog, commits, tags, and pushes. GitHub Actions builds and publishes the release.
45+
46+
## Updating the Website
47+
When the user asks to update the website:
48+
```bash
49+
cd site && ./run.sh deploy
50+
```
51+
Requires SSH access to `slayer.marioslab.io`.
52+
53+
The site is static HTML (no backend). Source is in `site/src/frontend/`.
54+
55+
## Style
56+
- No emojis in commits, code, or comments
57+
- No fluff or cheerful filler text
58+
- Technical prose only, direct and concise
59+
60+
## Git Rules
61+
- NEVER use `git add -A` or `git add .`
62+
- ALWAYS use `git add <specific-file-paths>`
63+
- NEVER use `git reset --hard`, `git checkout .`, `git clean -fd`, `git stash`
64+
- NEVER use `git commit --no-verify`
65+
- Include `fixes #<number>` or `closes #<number>` in commit messages when applicable
66+
67+
## Project Structure
68+
```
69+
src/
70+
sidepanel.ts # Main entry point, agent setup, settings, rendering
71+
background.ts # Service worker (sidepanel toggle, session locks)
72+
oauth/ # Browser OAuth flows (Anthropic, OpenAI, GitHub, Gemini)
73+
dialogs/ # Settings tabs, API key dialogs, welcome setup
74+
tools/ # Agent tools (navigate, REPL, extract-image, skills, debugger)
75+
messages/ # Custom message types (navigation, welcome)
76+
storage/ # IndexedDB storage (sessions, skills, costs)
77+
prompts/ # System prompt and token counting
78+
components/ # UI components (Toast, TabPill, OrbAnimation)
79+
site/
80+
src/frontend/ # Static landing page and install instructions
81+
static/
82+
manifest.chrome.json # Extension manifest (version lives here)
83+
```

CHANGELOG.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Changelog
2+
3+
## [Unreleased]
4+
5+
## [1.0.0] - 2026-03-15
6+
7+
### Added
8+
9+
- Browser-based OAuth login for Anthropic (Claude Pro/Max), OpenAI Codex (ChatGPT Plus/Pro), GitHub Copilot, and Google Gemini CLI
10+
- Combined "API Keys & OAuth" settings tab with subscription login and API key entry
11+
- Welcome setup dialog on first launch when no providers are configured
12+
- Auto-select default model for the first provider with a key
13+
- Provider and auth type indicator in the header bar
14+
- Image extraction tool (`extract_image`) with selector and screenshot modes
15+
- Subsequence-based fuzzy search in the model selector
16+
- CORS proxy warning in OAuth sections (orange when enabled, red when disabled)
17+
- GitHub Actions workflow for tagged releases
18+
- `release.sh` script for version bumping and tagged releases
19+
20+
### Changed
21+
22+
- Default model changed to `claude-sonnet-4-6` with `medium` thinking level
23+
- CORS proxy enabled by default
24+
- Model selector only shows models from providers with configured keys
25+
- API key prompt dialog now shows both OAuth login and API key entry for supported providers
26+
- Tool execution set to sequential mode (parallel caused rendering issues in sidebar)
27+
- Site converted to static (removed backend, admin, waitlist signups)
28+
- Download links point to GitHub Releases
29+
- License changed from MIT to AGPL-3.0
30+
31+
### Fixed
32+
33+
- Settings dialog tabs not responding to clicks (upstream `pi-web-ui` built with `tsgo` broke Lit decorator reactivity)
34+
- CORS proxy toggle not updating (same root cause)
35+
- Proxy not applied to API requests (esbuild bundled duplicate `streamSimple` references, breaking identity check)
36+
- Model selector button not updating after picking a model (added `state_change` event to Agent)
37+
- Duplicate tool component rendering during streaming (cleared streaming container on `message_end`)
38+
- Screenshot tool capturing sidepanel instead of the webpage

0 commit comments

Comments
 (0)