mirror of
https://github.com/open-webui/oikb.git
synced 2026-07-09 16:00:53 +00:00
Add SHAREPOINT_CERTIFICATE_PATH as a secure alternative to SHAREPOINT_CLIENT_SECRET for authenticating with SharePoint via Microsoft Graph API. - JWT assertion flow using cryptography + PyJWT - SHAREPOINT_CERTIFICATE_PASSWORD for encrypted PEM keys - Mutual exclusivity validation (secret vs cert) - New optional extra: pip install oikb[sharepoint-cert] Closes #3
9 KiB
9 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
[0.3.6] - 2026-05-28
Added
- SharePoint: certificate-based authentication via
SHAREPOINT_CERTIFICATE_PATHenv var — more secure alternative to client secret auth. Supports encrypted PEM keys withSHAREPOINT_CERTIFICATE_PASSWORD. Requirespip install oikb[sharepoint-cert].
[0.3.5] - 2025-05-21
Added
- Status dashboard at
GET /— monospace status page rendered client-side from/health. Shows source name, status dot, last sync time, duration, file counts, next sync. Polls every 10s. Zero dependencies.
[0.3.4] - 2025-05-21
Added
oikb validate --deep— verifies Open WebUI connectivity, API key validity, and that each KB ID exists. Catches config errors before deployment.
Fixed
docker-compose.yamlupdated from stalewatchmode to productiondaemonmode with healthcheck,LOG_FORMAT=json, andOIKB_API_KEYsupport.validatenow appliesdefaults:and env var interpolation to entries before checking (was only doing raw yaml).
[0.3.3] - 2025-05-21
Added
oikb init— interactive wizard that generates.oikb.yaml. Prompts for source, KB ID, name, and interval. Outputs next-step commands. Reduces onboarding from "read docs and write YAML" to "answer 4 questions."
[0.3.2] - 2025-05-21
Added
- Global
defaults:key in.oikb.yaml— setinterval,concurrency,filter,notify, or any other key once and have it apply to all entries. Per-entry values override defaults. Deep merges nested dicts (filter, notify).
[0.3.1] - 2025-05-21
Added
- Per-KB sync locking — prevents overlapping syncs to the same Knowledge Base. If a webhook fires while a scheduled sync is running, the duplicate is skipped with a log message.
- Dry-run via API —
POST /sync/{id}?dry_run=truepreviews changes without uploading, returns added/modified/deleted counts. - Environment variable interpolation in
.oikb.yaml—${VAR}and${VAR:-default}syntax in all string values. Enables GitOps workflows where secrets come from the runtime.
[0.3.0] - 2025-05-21
Added
- Webhook failure notifications —
notifykey in.oikb.yamlentries POSTs a JSON payload to any HTTP endpoint on sync error. Includes atextfield for native Slack incoming webhook compatibility. Supportson: error(default) oron: always.
[0.2.9] - 2025-05-21
Added
filter.max-size— skip files exceeding a size limit (e.g.50mb,1gb). Configurable per-entry in.oikb.yamlor via--max-file-sizeCLI flag. Oversized files are warned and excluded before diffing.
[0.2.8] - 2025-05-21
Added
- Structured JSON logging for the daemon —
oikb daemon --log-format jsonorLOG_FORMAT=jsonenv var. Outputs one JSON object per line withts,level,logger,msg, and optionalsource/kb_id/duration_msfields. Compatible with Datadog, Splunk, ELK, CloudWatch, and Loki.
[0.2.7] - 2025-05-21
Added
- Cron expression support for daemon scheduling — use
interval: "0 6 * * 1-5"alongside simple intervals (30m,1h). Auto-detected, no config flag needed. croniter>=2.0added as a core dependency.
[0.2.6] - 2025-05-21
Added
- Prometheus metrics endpoint (
GET /metrics) on the daemon — exportsoikb_sync_total,oikb_sync_duration_seconds,oikb_files_uploaded_total,oikb_files_deleted_total,oikb_sync_errors_total, andoikb_infobuild metadata. All counters labeled by source. prometheus-client>=0.20added as a core dependency.
[0.2.5] - 2025-05-21
Added
- Rich progress bars for sync operations — spinner during scan/diff, progress bar during uploads with file count and elapsed time.
rich>=13.0added as a core dependency.
[0.2.4] - 2025-05-21
Added
oikb validatecommand — validate.oikb.yamlwithout running syncs.--concurrencyflag foroikb sync— opt-in parallel uploads (also configurable per-entry in.oikb.yaml).- Upload retry with exponential backoff — transient 5xx errors retry up to 3 times.
Fixed
- Daemon now applies
filter.include/filter.excludefrom.oikb.yaml(previously silently ignored). - Connector HTTP clients are now properly closed after sync completes.
- GitHub connector caches default branch lookup — eliminates redundant API calls per file.
Changed
- Removed 30+ no-op optional dependencies from
pyproject.toml([github],[confluence], etc.) that just re-declared httpx (already a core dep). Only extras with real dependencies remain:s3,gcs,azure,dropbox,r2,gdrive,gmail,gsites,web,oracle.
[0.2.3] - 2025-05-21
Removed
- Breaking:
routeskey in.oikb.yaml. Use multiple entries withfilter.includeinstead — each entry is one source → one KB.
[0.2.2] - 2025-05-21
Added
namekey for.oikb.yamlentries — use friendly names to target syncs via CLI (--name wiki) or API (POST /sync/wiki).
Changed
- Daemon sync endpoint changed from
/sync/{source}to/sync/{identifier}— acceptsnameorkb-id(UUIDs).
[0.2.1] - 2025-05-20
Added
- API key authentication for daemon endpoints (
OIKB_API_KEYenv var, Docker secrets_FILEsupported). - Configurable fields, format, and query filters for Jira and ServiceNow connectors.
Changed
.oikb.yamltop-level key renamed fromsync:tosources:(backward compatible)./healthendpoints remain public;/historyand/syncrequire auth when key is set.
[0.2.0] - 2025-05-20
Added
oikb daemoncommand: long-lived scheduler with FastAPI server, /health and /history endpoints.oikb historycommand: view sync history from local SQLite database.- Webhook support: /webhooks/github, /webhooks/gitlab, /webhooks/slack, /webhooks/confluence for real-time sync triggers.
--jsonoutput flag forhistorycommand.- 13 new connectors: Document360, Slab, Outline, Google Sites, Egnyte, Oracle Cloud Storage, ProductBoard, XenForo, Zulip, Gong, Fireflies, DokuWiki, ServiceNow. Total: 44 connectors.
- Selective sync filters:
filter.include/filter.excludeglob patterns to narrow sync scope. - Daemon doubles as an OpenAPI tool server for Open WebUI (Settings → Connections → Tool Server).
Changed
- FastAPI and uvicorn are now core dependencies.
[0.1.3] - 2025-05-20
Changed
- Renamed
.oikb.yamlconfig key fromkbtokb-idto align with the CLI flag.
[0.1.2] - 2025-05-20
Changed
- Messaging connectors (Slack, Discord, Teams) now split messages by day for truly incremental sync. Past days are immutable so their checksums never change.
[0.1.1] - 2025-05-20
Added
- 28 new connectors bringing the total to 31, covering code repos, cloud storage, wikis, ticketing, messaging, CRM, and web:
- Code Repos: GitLab (
gitlab:owner/repo), Bitbucket (bitbucket:owner/repo) - Cloud Storage: Google Cloud Storage (
gs://), Azure Blob (az://), Dropbox (dropbox:), Cloudflare R2 (r2://) - Wikis & Knowledge Bases: Confluence (
confluence:), Notion (notion:), BookStack (bookstack:), Discourse (discourse:), GitBook (gitbook:), Guru (guru:) - Ticketing & Tasks: Jira (
jira:), Linear (linear:), Zendesk (zendesk:), Freshdesk (freshdesk:), Asana (asana:), ClickUp (clickup:), Airtable (airtable:) - Messaging: Slack (
slack:), Discord (discord:), Microsoft Teams (teams:), Gmail (gmail:) - Sales & CRM: Salesforce (
salesforce:), HubSpot (hubspot:) - Other: Google Drive (
gdrive:), SharePoint (sharepoint:), Web Crawler (web:)
- Code Repos: GitLab (
- Context manager support for
OikbClient .gitignoreadded to the project
Changed
- Renamed
--kbto--kb-idacross all commands - Modernized README with 30+ connector showcase organized by category
- Added Open WebUI 0.9.6+ version requirement note
- Updated author to Tim Baek
- Moved
import jsonto top-level inclient.py - Removed unused imports from
sync.py,config.py - Fixed
Optional[str]type hints to usestr | Nonesyntax - Removed redundant
fnmatchcheck inignore.py - Empty source message now respects
--quietflag
[0.1.0] - 2025-05-20
Added
- Initial release of oikb, a CLI tool for syncing content to Open WebUI Knowledge Bases.
- Incremental sync (
oikb sync) with SHA-256 diffing. Supports local directories, GitHub repos, and S3 buckets. - Dry-run preview (
oikb diff). - Watch mode (
oikb watch) with debounced filesystem monitoring via watchdog. - List files (
oikb ls), status (oikb status), reset (oikb reset) commands. - Configuration (
oikb config) via config file, env vars, or CLI flags. - Declarative config (
.oikb.yaml) for multi-source sync. - Ignore patterns (
.oikbignore) with gitignore-style file exclusion. - GitHub connector (
github:owner/repo) via Trees API. No local clone needed. - S3 connector (
s3://bucket/prefix) via boto3 using ETags as checksums. - Docker image with multi-arch support (amd64 + arm64).
- GitHub Actions workflows for Docker builds (GHCR) and releases.