Skip to content

Commit dbf21cd

Browse files
chore(release): v0.2.0
1 parent a311b6d commit dbf21cd

56 files changed

Lines changed: 1590 additions & 336 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dockerignore

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,27 @@ node_modules
44
coverage
55
storybook-static
66
.git
7-
.env
8-
.env.local
7+
.env*
8+
!.env.example
9+
.envrc
10+
*.pem
11+
*.key
12+
*.p12
13+
*.crt
14+
*.cert
15+
.claude/
16+
.codex/
17+
deploy/.ssh/
18+
deploy/.terraform/
19+
deploy/*.tfstate*
20+
deploy/*.tfvars
21+
reports/
22+
test-results/
23+
playwright-report/
24+
graphify-out/
25+
.DS_Store
26+
.idea/
27+
.vscode/
928
*.log
1029
*.tsbuildinfo
1130
prisma/generated

.env.example

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ RANK_CHECK_SCHEDULER_MODE=legacy
244244
# OPS_NOTIFY_MODE=failures
245245
# Daily heartbeat cron and IANA timezone.
246246
# OPS_HEARTBEAT_CRON=0 8 * * *
247-
# OPS_HEARTBEAT_TZ=Europe/Warsaw
247+
# OPS_HEARTBEAT_TZ=Etc/UTC
248248
# Duplicate event suppression window in minutes.
249249
# OPS_THROTTLE_MINUTES=60
250250
# Base URL of your Temporal Web UI. When set, ops Slack messages link workflows to it.

.github/FUNDING.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Funding links for the public mirror can be configured by its maintainers.
1+
# Funding links can be configured by repository maintainers.
22

33
github:
44
patreon:

.gitignore

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ storybook-static/
2727
*.crt
2828
*.cert
2929

30-
# Public deployment manifests live in deploy/. Local state, credentials, and
31-
# provider caches belong under .agent-private/deploy/ and must never be staged.
30+
# Public deployment manifests live in deploy/. Local state and credentials stay
31+
# untracked.
3232
deploy/.ssh/
3333
deploy/.terraform/
3434
deploy/*.tfstate
@@ -38,13 +38,10 @@ deploy/*.tfvars
3838
# direnv local env (per-machine dev overrides, e.g. PORT)
3939
.envrc
4040

41-
# Agent configs are machine-local; canonical hook wiring lives in .agent-private/hooks/README.md
41+
# Agent configs are machine-local.
4242
.claude/
4343
.codex/
4444

45-
# Agent-local secrets (service-account keys etc.) - never commit
46-
.agent-private/.secrets/
47-
4845
# Test / coverage
4946
coverage/
5047
*.tsbuildinfo
@@ -58,8 +55,7 @@ prisma/generated/
5855
.DS_Store
5956
*.log
6057

61-
# Worktrees live under .worktrees/ and are ignored via .git/info/exclude
62-
# (not here), so the public mirror never sees that convention.
58+
# Nested worktrees are machine-local.
6359
.wt/
6460

6561
# Test / e2e artifacts (root-only; lib/reports is source)
@@ -73,12 +69,9 @@ examples/go/go.work
7369
examples/go/go.work.sum
7470
examples/python/.venv/
7571

76-
# Build-time baked server-only runtime env (never commit; regenerated by scripts/deploy/bake-runtime-env.mjs)
72+
# Build-time baked server-only runtime env
7773
lib/deployment/runtime-env.generated.ts
7874

79-
# Graphify knowledge graph - generated, machine-local (regenerate: graphify update .)
75+
# Generated local knowledge graph
8076
graphify-out/
8177
.graphifyignore
82-
83-
# Deploy-tests runner state (scratch run records; machine-local)
84-
.agent-private/scripts/deploy-tests/state/

.gitleaks.toml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,20 @@ useDefault = true
55

66
[[allowlists]]
77
description = "Location identifiers and masked display values are not credentials"
8+
condition = "AND"
89
regexTarget = "match"
10+
paths = [
11+
'''^app/.+\.test\.[jt]sx?$''',
12+
'''^components/.+\.(test|stories)\.[jt]sx?$''',
13+
'''^components/.+fixtures[^/]*\.[jt]sx?$''',
14+
'''^docs/api/''',
15+
'''^docs/openapi\.snapshot\.json$''',
16+
'''^lib/.+\.test\.[jt]sx?$''',
17+
'''^lib/mcp/canonical-contract\.json$''',
18+
'''^scripts/smoke/''',
19+
]
920
regexes = [
1021
'''(?i)(canonical_?key|location_?key|masked_?key)["']?\s*[:=]''',
1122
'''rawKey\s*=\s*"bsb_key_test_[a-z0-9_]+"''',
1223
'''rawPersonalToken\s*=\s*"bsb_pat_live_[a-z0-9_]+"''',
13-
'''LinkedinLogo,\s+ListChecksIcon''',
1424
]

CHANGELOG.md

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,36 @@
22

33
## Unreleased
44

5-
- Initial release.
5+
## [0.2.0] - 2026-07-30
6+
7+
- **Breaking:** Internal services (PostgreSQL, Valkey, Temporal Server) are no longer published on the
8+
host, and the Temporal UI now binds to `127.0.0.1`. For host access use the shipped
9+
`docker-compose.debug.yml`; for other bindings see the self-hosting guide.
10+
11+
Example: `docker compose -f docker-compose.yml -f docker-compose.debug.yml up --build`.
12+
13+
- Fixed fresh installs, which created a database schema that diverged from the data model.
14+
- Fixed restart policies so the app, PostgreSQL, Valkey, and Temporal services restart unless stopped;
15+
previously only the optional worker did.
16+
- Fixed key rotation for provider credentials: `BISIBILITY_SECRETS_KEYS_RETIRED` now reaches the app
17+
on Compose installs, so retired keys can still decrypt existing secrets, and the rotation scripts
18+
run on the pinned Node runtime instead of resolving `tsx` from the network.
19+
- Narrowed the Docker build context so local environment files, keys, certificates, deployment state,
20+
and private material cannot enter checkout-built images.
21+
- Corrected the upgrade-path documentation: backup and restore examples now run inside the PostgreSQL
22+
container, and the rollback instructions warn that returning to 0.1.0 republishes the database and
23+
cache ports.
24+
- Corrected inaccurate claims about the contribution policy, CLI and Managed Cloud status, Search
25+
Console versus GA4 data, and roadmap vocabulary.
26+
27+
### Known limitations
28+
29+
`migrations: "ready"` covers blocking data migrations and public IDs, not Prisma
30+
schema. Use `npx prisma migrate status`. This is unchanged from 0.1.0; the fix
31+
is scheduled.
32+
33+
## [0.1.0] - 2026-07-30
34+
35+
- Added self-hosted keyword rank tracking with Docker, PostgreSQL, Redis or Valkey, optional Temporal scheduling, and BYO DataForSEO or SerpAPI accounts.
36+
- Added keyword and backlink research, position history, alerts, Search Console query metrics, GA4 landing-page metrics, and CSV export.
37+
- Added REST API v1 with OpenAPI, an authenticated MCP endpoint, signed outbound webhooks, scoped API keys, team roles, and audit logging.

CONTRIBUTING.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,7 @@ This repository does not accept pull requests; see
77

88
## Ways to Contribute
99

10-
bisibility is developed by a small core team that ships with heavy AI-agent
11-
assistance, and the product itself is built agent-ready (MCP server, agent
12-
skills, machine-readable docs). In this setup, a precise problem statement or
13-
an implementation-ready spec regularly turns into shipped code faster than a
14-
patch would.
10+
bisibility is developed with substantial AI-agent assistance.
1511

1612
In rough order of leverage:
1713

@@ -155,7 +151,7 @@ npm run test
155151

156152
It chains `npm run typecheck`, `npm run lint`, and `npm run test:unit`.
157153

158-
Run `npm run verify:build` before larger pull requests, dependency changes,
154+
Run `npm run verify:build` before larger changes, dependency changes,
159155
build configuration changes, or changes that affect Storybook or production
160156
bundling. It checks the Node version, linting, typechecking, unit tests, the Next
161157
build, and the Storybook build.

Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ WORKDIR /workspace
55
COPY package.json package-lock.json ./
66
COPY scripts/deploy/bake-runtime-env.mjs ./scripts/deploy/bake-runtime-env.mjs
77
COPY scripts/generate/generate-client-if-schema.mjs ./scripts/generate/generate-client-if-schema.mjs
8+
COPY scripts/generate/root-postinstall.mjs ./scripts/generate/root-postinstall.mjs
89
# Pin npm to the version that generated package-lock.json so `npm ci` resolves the
910
# identical dependency tree (the base image's bundled npm can differ and reject the lockfile).
1011
RUN npm install -g npm@10.9.3 && npm ci

Dockerfile.worker

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ COPY package.json package-lock.json ./
1414
COPY scripts/deploy/bake-runtime-env.mjs ./scripts/deploy/bake-runtime-env.mjs
1515
COPY scripts/deploy/download-rds-ca.mjs ./scripts/deploy/download-rds-ca.mjs
1616
COPY scripts/generate/generate-client-if-schema.mjs ./scripts/generate/generate-client-if-schema.mjs
17+
COPY scripts/generate/root-postinstall.mjs ./scripts/generate/root-postinstall.mjs
1718
RUN npm install -g npm@10.9.3 \
1819
&& npm ci \
1920
&& apt-get update \

README.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,25 +104,25 @@ a stable 1.0 contract.
104104
| REST API and OpenAPI | Available |
105105
| MCP endpoint | Available |
106106
| TypeScript, Python, and Go SDKs | Available |
107-
| CLI | Available |
107+
| CLI | Developer preview |
108108
| Self-hosting with Docker | Available |
109-
| Managed Cloud (open beta) | Available |
109+
| Managed Cloud | Open beta |
110110
| Domain overview | Planned |
111111

112112
### Included workflows
113113

114114
- Keyword research with related queries, suggestions, ideas, search volume, 12-month
115115
trends, CPC, competition, difficulty, and intent data
116116
- Backlink research with referring domains and pages, 12-month new and lost link
117-
history, domain authority, spam scores, and link attributes
117+
history, authority and spam metrics, and link attributes
118118
- Rank tracking with position history, trend charts, and intended URL monitoring
119119
- Competitor benchmarking with Share of Voice
120120
- Manual, daily, weekly, monthly, and custom cron schedules
121121
- Rank alerts in-app and by email, plus weekly email digests for projects with
122122
recent rank-check activity
123123
- Keyword tags and saved views
124-
- Opt-in Search Console and GA4 connections, with queries, clicks, and impressions
125-
per keyword
124+
- Opt-in Search Console connections, with queries, clicks, and impressions per keyword
125+
- Opt-in GA4 connections with landing-page sessions, engagement, and key events
126126
- Google index status on keyword details
127127
- REST API v1 with OpenAPI, an MCP endpoint, signed outbound webhooks, and CSV export
128128
- Owner, Admin, Editor, and Viewer team roles, with an audit log
@@ -244,7 +244,8 @@ remains available without an application subscription.
244244

245245
## Contributing
246246

247-
Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) and
247+
Public issues and feature specifications are welcome. This repository does not
248+
accept pull requests. See [CONTRIBUTING.md](CONTRIBUTING.md) and
248249
[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).
249250

250251
## Security

0 commit comments

Comments
 (0)