Releases: RandomCodeSpace/docsiq
v0.1.6
[0.1.6] — 2026-05-04
Lets docsiq run on a non-loopback host without an API key when the
operator explicitly opts in. Default behavior is unchanged — every
existing install boots identically.
Added
-
server.allow_unauthenticated(env:
DOCSIQ_SERVER_ALLOW_UNAUTHENTICATED=true). When set, docsiq starts
even with an emptyserver.api_keyon a non-loopback bind. Use this
on trusted private networks (homelabs, single-tenant LANs, air-gapped
clusters) where the boot gate is purely a ritual. Never enable on
the public internet — every indexed document and the LLM proxy
become reachable to anyone on the bind address.Boot-time warning when the override is active:
⚠️ auth disabled and server.allow_unauthenticated=true — anyone reachable on this network can read all data and use the LLM proxy; do NOT enable on the public internet host=0.0.0.0 port=8080(#98)
Changed
- The "refusing to start" boot errors now name the override env var so
anyone who hits the refusal sees both escape hatches (set a key OR
set the override) without grepping the docs. (#98)
Upgrade impact
Drop-in. Default value of the new key is false. Existing installs
behave identically to v0.1.5. The override is opt-in only.
Verify
All artifacts are signed with cosign keyless via Sigstore.
cosign verify-blob \
--certificate-identity-regexp 'https://github.com/RandomCodeSpace/docsiq/\.github/workflows/release\.yml.*' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--certificate docsiq-v0.1.6-linux-amd64.pem \
--signature docsiq-v0.1.6-linux-amd64.sig \
docsiq-v0.1.6-linux-amd64v0.1.5
[0.1.5] — 2026-05-04
Build-pipeline fix so go install github.com/RandomCodeSpace/docsiq@v0.1.5
produces a binary with the embedded React UI included. No application
source changes vs v0.1.4 — prebuilt signed release binaries are
behaviorally identical.
Fixed
go installnow ships a working UI. Previouslyui/dist/was
gitignored onmain(only a placeholderindex.htmlwas committed),
soproxy.golang.orgmirrored a tree without the hashed JS/CSS
bundles, and//go:embed ui/distbaked in only the placeholder. The
binary 404'd on every/assets/*request. The release workflow now
creates an ephemeral commit on a detached HEAD that force-adds the
freshly-builtui/dist/, and tags that commit asv0.1.5.main
itself is unchanged. (#97)
Changed
.github/workflows/release.yml—release:job now downloads the
ui-distartifact, force-addsui/dist/past.gitignore, commits
on a detached HEAD, tags the new commit, and pushes only the tag.
Upgrade impact
Drop-in. No code or config changes. If you were already using
prebuilt signed binaries from the release page, behavior is identical
to v0.1.4. If you were using go install, the embedded UI now
actually works — you no longer need to download a release asset just
to use docsiq serve.
Reminder: docsiq still needs the sqlite_fts5 build tag (and a C
toolchain) for go install, per the v0.1.4 notes:
GOFLAGS='-tags=sqlite_fts5' go install github.com/RandomCodeSpace/docsiq@v0.1.5Verify
All artifacts are signed with cosign keyless via Sigstore.
cosign verify-blob \
--certificate-identity-regexp 'https://github.com/RandomCodeSpace/docsiq/\.github/workflows/release\.yml.*' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--certificate docsiq-v0.1.5-linux-amd64.pem \
--signature docsiq-v0.1.5-linux-amd64.sig \
docsiq-v0.1.5-linux-amd64v0.1.4
[0.1.4] — 2026-05-04
Two install-path bug-fixes plus a docs note for the third — all surfaced
by a real user trying to install behind a corporate proxy.
Fixed
internal/config/config.gonow binds every defaulted key to its
DOCSIQ_<UPPER_KEY>env variant via a single
for _, key := range v.AllKeys() { _ = v.BindEnv(key) }after defaults
are set. Previously only ~9 keys were explicitly bound, which meant
DOCSIQ_LLM_PROVIDER,DOCSIQ_LLM_OLLAMA_CHAT_MODEL,
DOCSIQ_LLM_AZURE_*,DOCSIQ_LLM_OPENAI_*,DOCSIQ_DATA_DIR,
DOCSIQ_INDEXING_*, etc. were silently ignored when no config file was
present (Viper #761 —AutomaticEnv+Unmarshaldoesn't see env-only
keys without explicitBindEnv). The existing explicitBindEnvcalls
forserver.api_key,workq_workers, etc. are retained — they
document the secondaryDOCSIQ_API_KEYalias and harmlessly
double-bind. (#95)
Added
internal/config/config_test.go—TestLoad_EnvOverridesLLMregression
test that assertsDOCSIQ_LLM_OLLAMA_CHAT_MODEL,
DOCSIQ_LLM_OLLAMA_EMBED_MODEL,DOCSIQ_LLM_PROVIDER,
DOCSIQ_LLM_AZURE_API_KEY, andDOCSIQ_DATA_DIRall reach the
populated*Configstruct without a config file present. (#95)
Changed
docs/getting-started.md"Install" section now uses
GOFLAGS='-tags=sqlite_fts5' go install github.com/RandomCodeSpace/docsiq@latest
with an explicit explanation that the build tag is required because
docsiq uses SQLite's FTS5 extension viamattn/go-sqlite3— without
it the binary fails at runtime withunable to open store: no such module: fts5when opening any project DB. (#95)
Known limitations
go installdoes not produce a working web UI. docsiq's React UI
is embedded via//go:embed ui/dist, but theui/dist/build outputs
are intentionally gitignored — only a placeholderindex.htmlis
committed. The release pipeline runsnpm run buildbeforego build,
so the prebuilt release binaries on this page have the full UI
baked in. Ago installbuild, by contrast, embeds only the
placeholderindex.htmland hits 404 on every/assets/*request.
Fordocsiq serveuse cases, install via
gh release download v0.1.4 --repo RandomCodeSpace/docsiq --pattern 'docsiq-*-linux-amd64*'
(or your platform's equivalent asset). The CLI commands
(docsiq index,docsiq version,docsiq projects, etc.) work
correctly on ago installbuild; only the embedded UI is affected.
Tracked as a follow-up.
Upgrade impact
Drop-in for the test suite and config layer. Previously-ignored env
vars are now honoured — if you had DOCSIQ_LLM_* or
DOCSIQ_INDEXING_* set in a shell or CI environment, those values
will now reach docsiq where they were silently dropped before. Audit
your environment for unintended DOCSIQ_* settings before deploying.
Verify
All artifacts are signed with cosign keyless via Sigstore.
cosign verify-blob \
--certificate-identity-regexp 'https://github.com/RandomCodeSpace/docsiq/\.github/workflows/release\.yml.*' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--certificate docsiq-v0.1.4-linux-amd64.pem \
--signature docsiq-v0.1.4-linux-amd64.sig \
docsiq-v0.1.4-linux-amd64v0.1.3
[0.1.3] — 2026-05-04
Re-tag of v0.1.2's tree to refresh distribution channels. No source
changes — the binary content is identical to v0.1.2.
Why
A consumer reported go install github.com/RandomCodeSpace/docsiq@v0.1.2
failing in their local environment while v0.1.0 worked. The v0.1.2 tag,
GitHub release, proxy.golang.org cache, and sum.golang.org checksum
DB are all healthy and signed; the failure was downstream of those. This
release is published primarily to give the affected install a fresh tag
to retry against.
Reference
- Upstream commit:
afdacc5639d3(same as v0.1.2) - Functionality identical to v0.1.2 — see v0.1.2 notes
for the per-phase upload progress feedback that landed there.
Upgrade impact
Drop-in. No code changes; refresh of signed binaries and re-publication
through the release pipeline only.
Verify
All artifacts are signed with cosign keyless via Sigstore.
cosign verify-blob \
--certificate-identity-regexp 'https://github.com/RandomCodeSpace/docsiq/\.github/workflows/release\.yml.*' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--certificate docsiq-v0.1.3-linux-amd64.pem \
--signature docsiq-v0.1.3-linux-amd64.sig \
docsiq-v0.1.3-linux-amd64v0.1.2
[0.1.2] — 2026-05-03
UX patch: per-phase upload progress feedback. Indexing is no longer a
black box from the UI's perspective.
Added
pipeline.ProgressEventextended withFile,ChunksDone,
ChunksTotal. The pipeline now emits progress events at every phase
boundary inindexFile(chunked → embed → entities → relationships →
claims → structure → done) via a non-blocking send so a slow consumer
never stalls indexing. Existing CLI callers that pass anilprogress
channel keep working unchanged. (#94)GET /api/upload/progress?job_id=...now streams JSON-encoded
ProgressEventframes over SSE: each frame carries
{job_id, file, phase, chunks_done, chunks_total, message, done, error},
ending with a terminaldone:trueevent that includes the final error
string (if any). The legacy plaintext message format is preserved when
callers omit?job_idso older integrations keep working. (#94)- New
useUploadProgressReact hook backed byfetch+
ReadableStream, with a shared store viauseSyncExternalStoreso
any component can subscribe to a job's live state. (#94)
Changed
- Documents → Upload modal now renders a per-file row with the current
phase label, a chunk progress counter (embed 12/47 chunks), and an
inline error message for any phase that fails.aria-live=politeso
the progress is announced to screen readers. The previous modal showed
nothing past "uploading" until the indexing job completed. (#94)
Upgrade impact
Drop-in. The structured SSE format is opt-in via the new ?job_id=...
query parameter; clients that omit it still receive plaintext events.
No schema changes, no breaking API changes.
Verify
All artifacts are signed with cosign keyless via Sigstore.
cosign verify-blob \
--certificate-identity-regexp 'https://github.com/RandomCodeSpace/docsiq/\.github/workflows/release\.yml.*' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--certificate docsiq-v0.1.2-linux-amd64.pem \
--signature docsiq-v0.1.2-linux-amd64.sig \
docsiq-v0.1.2-linux-amd64v0.1.1
[0.1.1] — 2026-05-03
UI bug-fix release. The Documents view now actually renders document
bodies, the Graph view shows the entity graph from the indexing
pipeline (with a toggle back to the Notes graph), and the CLI no longer
panics when run with provider=none.
Added
GET /api/documents/{id}/chunks— returns the ordered chunks for a
document so clients can render the indexed body. Each chunk carries
id,chunk_index,content, andtoken_count. (#93)GET /api/graph?project=...— returns the full entity graph as
{nodes, edges}, shaped to match the UI's existing
RawGraphResponseso the sameGraphCanvascan render it. (#93)- README "Build from source": prerequisite paragraph that names the C
toolchain requirement and the misleadingundefined: sqlitevec.LoadInto
symptom that surfaces when CGO is silently disabled becausegcc
isn't onPATH. (#92)
Fixed
DocumentViewnow renders the body of indexed documents — markdown
routed throughmarkdown-it(already a dep), with a<pre>fallback
for other doc types. The previous view only renderedtitle + doc_type · v<n>, leaving every opened document looking blank. (#93)- The Graph route now loads both the entity graph (from the indexing
pipeline) and the notes graph (wikilinks between authored notes),
defaults to the entity graph when it has nodes, and exposes a small
toggle so users can switch. The previous route was hard-wired to
useNotesGraph, so any indexed corpus without hand-authored notes
always rendered the empty state. (#93) pipeline.indexFileno longer panics on(*Embedder).EmbedTexts
when running withDOCSIQ_LLM_PROVIDER=none/ graph-only flow. The
CLAUDE.md guarantee that the embedder is nil-safe in this mode is
now actually honoured: the embed phase is skipped, chunks are still
persisted, downstream extraction runs against raw text. (#93)
Upgrade impact
Drop-in. Two new GET endpoints, no schema changes, no breaking API
changes. Existing UI clients see two new behaviours:
- The Documents tab now renders chunk content for any document with
indexed chunks. If you opened an empty / un-indexed project, you'll
now see an explicit "no content available" empty state instead of a
bare title. - The Graph tab defaults to the entity graph for any project with
extracted entities; click the Notes graph toggle in the page
header to switch back to the previous behaviour.
Verify
All artifacts are signed with cosign keyless via Sigstore.
cosign verify-blob \
--certificate-identity-regexp 'https://github.com/RandomCodeSpace/docsiq/\.github/workflows/release\.yml.*' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--certificate docsiq-v0.1.1-linux-amd64.pem \
--signature docsiq-v0.1.1-linux-amd64.sig \
docsiq-v0.1.1-linux-amd64v0.1.0
[0.1.0] — 2026-05-03
Production-polish release: completes the seven-block roadmap (critical
ship-blockers → OSS polish), adds Playwright e2e + Scorecard hardening,
and ships a focused round of UI / search bug fixes.
Added
- Block 1 — critical ship-blockers: upload size cap, auth hardening,
boundedworkq, scoped search. (#60) - Block 2 — security & auth hardening: CSP, baseline security
headers, config validation, secret redaction in logs,req_idslog
field. (#68) - Block 3 — resource safety & correctness: SQLite hardening,
HTTP/LLM client timeouts, backpressure, context-propagation audit,
graceful shutdown. (#73) - Block 4 — observability & ops:
/version,/healthz, Prometheus
/metrics, structured access log,--log-formatflag. (#74) - Block 5 — UI polish: error boundary, loading/empty/error state
trio, accessibility pass,prefers-reduced-motion, theme-flash fix,
mobile viewport. (#71) - Block 6 — testing & CI hardening:
govulncheck,npm audit,
fuzz workflow, flake-gate, smoke tests, pipeline integration tests.
(#70) - Block 7 — OSS polish: README, CONTRIBUTING, SECURITY, quickstart,
screenshots, badges, annotated example config. (#69) - Playwright e2e smoke tests with UI-scoped CI. (#57)
- Visible auth-required affordance on 401. (#76)
- Scale tests gated behind
scalebuild tag, run nightly. (#75) - OpenSSF Scorecard hardening recipe (RAN-51). (#82)
Changed
- Per-version keep-a-changelog entries;
[Unreleased]is the working
surface (RAN-61). (#83) - TypeScript 6, Vite 8,
@vitejs/plugin-react6, vitest 4 — majors
adopted across the UI. (#35) react-router-dom6 → 7. (#31)tailwind-merge2 → 3. (#27)mcp-go0.45 → 0.49. (#24)cobra1.8.1 → 1.10.2. (#23)golang.org/x/net0.47 → 0.53. (#25)- UI bundle budget bumped 580 KiB → 640 KiB. (#56)
- Internal planning scaffolding removed from repo. (#77)
Fixed
apiFetchnow preserves the multipartContent-Typeboundary on
uploads (RAN-34). (#78)- MCP console 401s route through the shared auth banner (RAN-36). (#79)
- Local-search graph expansion is scoped to top-hit documents
(RAN-35). (#80) - vitest config pins
NODE_ENV=testso production env shells pass
(RAN-40). (#81) - CodeQL
go/command-injectionfinding inrunGitclosed. (#55) - Playwright
screenshots.spec.tsexcluded from the default run; runs
in the dedicated screenshots workflow only. (#72)
Upgrade impact
Drop-in replacement — no schema or API breaking changes. New
env- and flag-driven controls (CSP, --log-format, /metrics,
/healthz, /version) default to safe values; the auth-required UI
affordance is purely additive on 401. The local-search scoping change
can return slightly different results for queries where the previous
behaviour expanded into low-relevance documents — see #80 if you
depended on the previous expansion shape.
Verify
All artifacts are signed with cosign keyless via Sigstore.
cosign verify-blob \
--certificate-identity-regexp 'https://github.com/RandomCodeSpace/docsiq/\.github/workflows/release\.yml.*' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--certificate docsiq-v0.1.0-linux-amd64.pem \
--signature docsiq-v0.1.0-linux-amd64.sig \
docsiq-v0.1.0-linux-amd64v0.0.3
What's Changed
Other Changes
- ci(release): switch to goreleaser (scorecard Packaging → detected) by @aksOps in #43
- fix(security): filepath.IsLocal sanitisers for CodeQL path/command-injection by @aksOps in #44
- chore: add .bestpractices.json for OpenSSF badge automation by @aksOps in #45
- chore: governance/community files + finish BestPractices passing tier by @aksOps in #46
- ci: drop push:main trigger from ci and fuzz (saves ~2min/merge) by @aksOps in #47
- chore: add CHANGELOG.md + fill missing BestPractices criteria by @aksOps in #48
- ci: drop macOS from test matrix (fix TestScale_1000Notes flake) by @aksOps in #49
- ci(release): drop goreleaser (Pro-only prebuilt) — inline cosign + gh release by @aksOps in #50
Full Changelog: v0.0.2...v0.0.3
Verify
All artifacts are signed with cosign keyless via Sigstore.
cosign verify-blob \
--certificate-identity-regexp 'https://github.com/RandomCodeSpace/docsiq/\.github/workflows/release\.yml.*' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--certificate docsiq-v0.0.3-linux-amd64.pem \
--signature docsiq-v0.0.3-linux-amd64.sig \
docsiq-v0.0.3-linux-amd64v0.0.2
docsiq v0.0.2 — Scorecard cadence fix
Small CI-only follow-up to v0.0.1. No user-facing behaviour changes.
Changes
- Scorecard workflow cadence — the
scorecard.ymlworkflow now
runs on release completion and on a weekly schedule, instead of
firing on every push tomain. The policy being scored is
unchanged; this trims noise from re-scoring commits that don't
move any scorecard-visible state. (#42)
Upgrade impact
Safe drop-in upgrade from v0.0.1. No API, CLI, or on-disk schema
changes. Users can replace the binary in place.
Security
Signing, SHA256SUMS, and SLSA provenance — all unchanged and present
in this release.
v0.0.1
docsiq v0.0.1 — first stable release
First non-beta release of docsiq after an extended beta phase. This
release establishes the feature set and API surface that subsequent
0.0.x patches will maintain back-compat against.
What's in the box
- GraphRAG indexing pipeline — five-phase ingestion: chunk → extract
entities + relationships + claims → community-detect (Louvain) →
embed → persist. - Document loaders — PDF (langchaingo), DOCX, TXT, Markdown, and a
polite web crawler with robots.txt + allow-list + MIME checks. - Multi-provider LLM layer — Azure OpenAI, OpenAI, and Ollama behind
a singleinternal/llmabstraction (langchaingo underneath). - Query engine — hybrid local (vector + FTS5) and global
(community-summary) search. - Surfaces — CLI (
docsiq index|search|serve), REST API, MCP
server, and an embedded React SPA served bydocsiq serve. - Storage — single SQLite file with
sqlite_fts5+sqlite-vec
for vector search. No external DB to deploy.
Install
# Signed binary
gh release download v0.0.1 -p 'docsiq-v0.0.1-linux-amd64*'
# Or from source
go install github.com/RandomCodeSpace/docsiq@v0.0.1Upgrade impact
No previous stable release exists — this is v0.0.1. Users upgrading
from v0.0.0-beta.* should start with a fresh data directory; the
schema is the same as the final beta but the beta tags have been
retired.
Security
- All release binaries are signed with cosign keyless via Sigstore
and anchored to the Rekor transparency log. - A signed
SHA256SUMSis included. Verification instructions are
attached to this release. - SLSA build provenance (
.intoto.jsonl) accompanies the binaries.
Known limitations
- Darwin support is limited to
arm64;amd64binaries are not
built (cgo + sqlite-vec cross-compile complexity). - Pre-1.0: APIs and on-disk schema are not yet frozen.