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 .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ TOPIC_STREAM_BOOTSTRAP_EMBEDDING_MODEL=qwen3-embedding:0.6b
TOPIC_STREAM_COMPOSE_DB_PRIMARY_POSTGRES_DSN=postgres://topic_stream:topic_stream@postgres:5432/topic_stream?sslmode=disable
TOPIC_STREAM_COMPOSE_HTTP_ADDR=0.0.0.0:7331
TOPIC_STREAM_COMPOSE_QDRANT_URL=http://qdrant:6334
TOPIC_STREAM_CORS_ALLOWED_ORIGINS=app://obsidian.md
TOPIC_STREAM_DB_PRIMARY_KIND=postgres
TOPIC_STREAM_DB_PRIMARY_POSTGRES_DSN=
TOPIC_STREAM_EMBEDDING_BATCH_INPUT_BYTES=1048576
Expand Down
24 changes: 23 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,9 @@ jobs:
needs: changes
if: needs.changes.outputs.plugin == 'true'
runs-on: ubuntu-24.04
timeout-minutes: 10
timeout-minutes: 20
env:
PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/.artifacts/playwright
steps:
- uses: actions/checkout@v7
with:
Expand All @@ -230,9 +232,28 @@ jobs:
with:
node-version: '24'
cache: pnpm
- name: Cache Playwright browsers
uses: actions/cache@v6
with:
path: ${{ github.workspace }}/.artifacts/playwright
key: ${{ runner.os }}-playwright-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-playwright-
- run: pnpm install --frozen-lockfile
- run: pnpm --dir plugin exec playwright install --with-deps chromium
- run: pnpm --dir plugin check
- run: pnpm --dir plugin test:storybook
- run: pnpm --dir plugin build:storybook
- run: pnpm --dir plugin build
- name: Production Obsidian lifecycle and product flows (headless)
run: pnpm --dir plugin test:e2e:headless
- uses: actions/upload-artifact@v7
if: failure()
with:
name: plugin-host-diagnostics-${{ inputs.source_sha || github.sha }}
path: .artifacts/obsidian/logs/
retention-days: 7
if-no-files-found: ignore

contract:
name: Current contract and generated source
Expand All @@ -257,6 +278,7 @@ jobs:
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm contract:lint
- run: pnpm --dir plugin api:check
- name: Validate and regenerate owned outputs
run: |
mise run codegen
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/release-plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ jobs:
test -s release-assets/main.js
test -s release-assets/manifest.json
test -s release-assets/styles.css
cmp plugin/manifest.json release-assets/manifest.json

remote_tag=$(git ls-remote origin "refs/tags/$TAG")
if [ -n "$remote_tag" ]; then
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ coverage.out
*.tmp
__pycache__/
.artifacts/
.impeccable/review/

# Local product issues
.scratch/
270 changes: 270 additions & 0 deletions .impeccable/design.json

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,7 @@ Issues and specs are tracked as Markdown files under `.scratch/<feature>/`. See
### Domain docs

Domain documentation uses the single-context layout. See `docs/agents/domain.md`.

### Storybook

Product stories render production components and the same connected screen composition as the plugin. Mock external services and data at their ports. The primary Shell story includes every currently implemented screen and action; extend it with each feature. Keep harness-only probes hidden from the catalog. Multilingual demo content uses English and Spanish.
Loading
Loading