Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
271 commits
Select commit Hold shift + click to select a range
5a01b03
spotter api nav fix
ShashiSubramanya Jul 8, 2026
9130a08
lb cache doc fixes
ShashiSubramanya Jul 8, 2026
e5bb978
lb cache doc fixes
ShashiSubramanya Jul 8, 2026
2c3c1fb
Merge pull request #484 from thoughtspot/overridev2
rani2655 Jul 9, 2026
bff528b
added note
rani2655 Jun 29, 2026
073b6b3
edits
rani2655 Jul 2, 2026
d8c5d1c
edits1
rani2655 Jul 2, 2026
011b659
styles changes
ruchI9897 Jul 9, 2026
8f500f2
styles changes
ruchI9897 Jul 9, 2026
ae64187
review edits
ShashiSubramanya Jul 10, 2026
5f79a93
edits
ShashiSubramanya Jul 10, 2026
bdf8ad4
docs(26.8.0.cl): Add August 2026 What's New entries — Spotter Analyst…
ShashiSubramanya Jul 10, 2026
7bf89c9
docs(sdk-changelog): Add Visual Embed SDK 1.51.0 changelog entries — …
ShashiSubramanya Jul 10, 2026
0b0d7cd
docs(spotter): Add Spotter Analysts EA section with SDK config, actio…
ShashiSubramanya Jul 10, 2026
e8c64e7
docs(full-app): Add Nav V1/V2 deprecation notice for 26.8.0.cl, updat…
ShashiSubramanya Jul 10, 2026
c98f1be
docs(security): Add custom-scheme allowlisting section for mobile/hyb…
ShashiSubramanya Jul 10, 2026
8a96082
docs(tse-cluster): Add deprecation notice for Ephemeral Read-Only mod…
ShashiSubramanya Jul 10, 2026
bc15528
docs(rest-api): add 26.8.0.cl changelog entries — TML portability, Co…
ShashiSubramanya Jul 10, 2026
4bca3d8
docs(tml): add 26.8.0.cl — Personalized Views portability (owned_by, …
ShashiSubramanya Jul 10, 2026
56b14db
docs(spotterviz): add SDK 1.51.0 loader customization props (loaderHe…
ShashiSubramanya Jul 10, 2026
b7498ce
docs(python-sdk): add new Python SDK page for REST API v2.0 (jul.26.m…
ShashiSubramanya Jul 10, 2026
42b5d16
docs(mcp): add gated placeholder for MCP Server Phase 2 inline visual…
ShashiSubramanya Jul 10, 2026
215e5e2
fix(whats-new): restore full content + retain 26.8.0.cl block — SCAL-…
ShashiSubramanya Jul 11, 2026
69d6cab
fix(api-changelog): restore full SDK changelog + prepend 1.51.x block…
ShashiSubramanya Jul 11, 2026
7566214
fix(rest-apiv2-changelog): restore full changelog + retain 26.8.0.cl …
ShashiSubramanya Jul 11, 2026
7cae286
fix: restore full content + add 26.8.0.cl/SDK 1.51.0 updates to api-c…
ShashiSubramanya Jul 11, 2026
b6e4b52
fix: restore full content + add 26.8.0.cl/SDK 1.51.0 updates to rest-…
ShashiSubramanya Jul 11, 2026
9607219
fix: restore full content + add 26.8.0.cl/SDK 1.51.0 updates to embed…
ShashiSubramanya Jul 11, 2026
5797b8d
fix: restore full content + add 26.8.0.cl/SDK 1.51.0 updates to full-…
ShashiSubramanya Jul 11, 2026
fb4b233
fix: restore full content + add 26.8.0.cl/SDK 1.51.0 updates to secur…
ShashiSubramanya Jul 11, 2026
f537cae
fix: restore full content + add 26.8.0.cl/SDK 1.51.0 updates to tml.a…
ShashiSubramanya Jul 11, 2026
41761aa
fix: restore full content + add 26.8.0.cl/SDK 1.51.0 updates to embed…
ShashiSubramanya Jul 11, 2026
b66aeef
fix: restore full content + add 26.8.0.cl/SDK 1.51.0 updates to api-c…
ShashiSubramanya Jul 11, 2026
e5cd40b
fix: restore full content + add 26.8.0.cl/SDK 1.51.0 updates to rest-…
ShashiSubramanya Jul 11, 2026
d646873
fix: restore full content + add 26.8.0.cl/SDK 1.51.0 updates to embed…
ShashiSubramanya Jul 11, 2026
5f0a957
fix: restore full content + add 26.8.0.cl/SDK 1.51.0 updates to full-…
ShashiSubramanya Jul 11, 2026
eb7a8f8
fix: restore full content + add 26.8.0.cl/SDK 1.51.0 updates to secur…
ShashiSubramanya Jul 11, 2026
4bac53c
fix: restore full content + add 26.8.0.cl/SDK 1.51.0 updates to tml.a…
ShashiSubramanya Jul 11, 2026
38c9dfe
fix: restore full content + add 26.8.0.cl/SDK 1.51.0 updates to embed…
ShashiSubramanya Jul 11, 2026
f2c56fa
docs(embed-spotter): add 26.8.0.cl / SDK 1.51.0 Spotter Analysts, onb…
ShashiSubramanya Jul 11, 2026
838d4d0
docs(26.8.0.cl): add 26.8.0.cl changes section
ShashiSubramanya Jul 11, 2026
1b95ac3
docs(26.8.0.cl): add 26.8.0.cl changes section
ShashiSubramanya Jul 11, 2026
72ac06f
docs(26.8.0.cl): add Python SDK TODO placeholder — gate on SCAL-21686…
ShashiSubramanya Jul 11, 2026
b773a78
docs(26.8.0.cl): restore full file + add Python SDK TODO placeholder …
ShashiSubramanya Jul 11, 2026
b8e21e9
docs(26.8.0.cl): restore full file + add Python SDK TODO placeholder …
ShashiSubramanya Jul 11, 2026
5681057
docs(26.8.0.cl): restore full file + add Python SDK TODO — gate on SC…
ShashiSubramanya Jul 11, 2026
f6f6014
docs(26.8.0.cl): add Input Tables API section and AI memory endpoints…
ShashiSubramanya Jul 11, 2026
a70e6fc
docs(26.8.0.cl): add Input Tables API and confirmed AI memory endpoin…
ShashiSubramanya Jul 11, 2026
c260736
docs(26.8.0.cl): add 26.8.0.cl change notes to embed-pinboard page
ShashiSubramanya Jul 11, 2026
3080afb
docs(jul.26.mt): add Python SDK entry to SDK libraries page
ShashiSubramanya Jul 11, 2026
73c549a
docs(26.8.0.cl): add Input Tables API section and AI memory endpoints…
ShashiSubramanya Jul 11, 2026
5c4ab69
docs(26.8.0.cl): add Input Tables API and confirmed AI memory endpoin…
ShashiSubramanya Jul 11, 2026
81bf891
docs(26.8.0.cl): add 26.8.0.cl change notes to embed-pinboard page
ShashiSubramanya Jul 11, 2026
65e631a
docs(jul.26.mt): add Python SDK entry to SDK libraries page
ShashiSubramanya Jul 11, 2026
0452a76
docs(26.8.0.cl): restore embed-pinboard.adoc and add 26.8.0.cl change…
ShashiSubramanya Jul 11, 2026
94d7ddf
docs(jul.26.mt): add Python SDK entry to SDK libraries page
ShashiSubramanya Jul 11, 2026
1db7873
docs(26.8.0.cl): add Input Tables API and confirmed AI memory endpoin…
ShashiSubramanya Jul 11, 2026
4f1c082
docs(26.8.0.cl): add Input Tables API section and AI memory endpoints…
ShashiSubramanya Jul 11, 2026
4962b88
docs(26.8.0.cl): add Input Tables API and confirmed AI memory endpoin…
ShashiSubramanya Jul 11, 2026
65f283f
docs(26.8.0.cl): add Input Tables API section and AI memory endpoints…
ShashiSubramanya Jul 11, 2026
75aee21
docs(26.8.0.cl): add 26.8.0.cl section with Input Tables API and AI M…
ShashiSubramanya Jul 11, 2026
ddab44a
docs(26.8.0.cl): add Input Tables API section and AI memory endpoints…
ShashiSubramanya Jul 11, 2026
b90b862
docs(26.8.0.cl): add Input Tables API section and AI memory endpoints…
ShashiSubramanya Jul 11, 2026
63dfaa5
review comments incorporation
ShashiSubramanya Jul 10, 2026
5dcce01
spotter memory migration and input tables
ShashiSubramanya Jul 11, 2026
05e4f77
review comments incorporation
ShashiSubramanya Jul 10, 2026
cc35101
review edits
ShashiSubramanya Jul 10, 2026
6a9b8bd
edits
ShashiSubramanya Jul 10, 2026
f50dc50
review comments incorporation
ShashiSubramanya Jul 10, 2026
b7674a9
feedback fixes
ruchI9897 Jul 14, 2026
af93fc7
fix
ruchI9897 Jul 14, 2026
5c2baf8
fix
ruchI9897 Jul 14, 2026
490cd95
fixed all issues
ruchI9897 Jul 14, 2026
7fda70c
icon fix
ruchI9897 Jul 14, 2026
ea7fc28
fix
ruchI9897 Jul 14, 2026
8c5c212
edits
ShashiSubramanya Jul 15, 2026
06ce824
cleanup
ruchI9897 Jul 15, 2026
c792c92
tranche1
rani2655 Jul 15, 2026
9d21449
tranche1-redone
rani2655 Jul 15, 2026
44f6404
tranche2
rani2655 Jul 15, 2026
864cc17
modules/ROOT/pages/rest-apiv2-changelog.adoc
rani2655 Jul 15, 2026
38c70e8
tml updates
rani2655 Jul 15, 2026
a9dcb34
tml updates-edits
rani2655 Jul 15, 2026
b375e50
tml updates-edits
rani2655 Jul 15, 2026
9990071
tml limitations
rani2655 Jul 15, 2026
25d01a0
docs(SCAL-323283): revise python-sdk.adoc with confirmed design doc c…
ShashiSubramanya Jul 16, 2026
162a836
docs(SCAL-323283): update rest-api-sdk-libraries with confirmed PyPI …
ShashiSubramanya Jul 16, 2026
446e95e
cleanup: remove dead code and fix SSR/credential issues
ruchI9897 Jul 16, 2026
2cffacc
feat: make FloatingAssistant panel horizontally resizable
ruchI9897 Jul 16, 2026
e4f429c
fix: prevent SSR build crash from useFloatingAssistant outside provider
ruchI9897 Jul 16, 2026
62fc56a
fix: set panel resize minimum width to 360px
ruchI9897 Jul 16, 2026
7b508aa
fixes
ruchI9897 Jul 16, 2026
7f8a748
fixes
ruchI9897 Jul 16, 2026
9c65d13
cleanup: remove dead code and fix SSR/credential issues
ruchI9897 Jul 16, 2026
1233123
fix: add missing arrow-up icon to inline SVG sprite
ruchI9897 Jul 16, 2026
a3fb633
fix: set stop button icon color to white
ruchI9897 Jul 16, 2026
3808af0
fix: multiple FloatingAssistant UI fixes
ruchI9897 Jul 16, 2026
3f16793
fix: thumb icon colors and gen-summary cursor
ruchI9897 Jul 16, 2026
f0b8d08
fix
ruchI9897 Jul 16, 2026
39834aa
fix
ruchI9897 Jul 16, 2026
785ec03
hydration fix
ruchI9897 Jul 17, 2026
634d569
fix: add wrapRootElement to gatsby-ssr.js to match gatsby-browser.js
ruchI9897 Jul 17, 2026
0887f57
fix: mount FloatingAssistant as standalone React root to fix hydration
ruchI9897 Jul 17, 2026
a1a7fb0
fix: use dynamic imports in gatsby-browser.js to prevent SSR crash
ruchI9897 Jul 17, 2026
0247373
chore: cleanup for PR review
ruchI9897 Jul 17, 2026
c750a17
cleanup
ruchI9897 Jul 17, 2026
4601248
npm token
ruchI9897 Jul 17, 2026
d041c43
css fix
ruchI9897 Jul 17, 2026
5c84544
llms-agent-score-fixes
ShashiSubramanya Jul 17, 2026
b2885fe
edits
ShashiSubramanya Jul 17, 2026
21d48c9
llms-txt and other edits
ShashiSubramanya Jul 17, 2026
b80c3d9
fixed
ruchI9897 Jul 17, 2026
b8afd36
SCAL-325035 Dark mode resets to light on client-side navigation when …
shivam-kumar-ts Jul 19, 2026
2d9f10f
llms-agent-score-fixes
ShashiSubramanya Jul 17, 2026
92a5fb0
edits
ShashiSubramanya Jul 17, 2026
23357c1
llms-txt and other edits
ShashiSubramanya Jul 17, 2026
d7bf76a
fixed feedback
ruchI9897 Jul 20, 2026
b809460
Potential fix for pull request finding 'CodeQL / Double escaping or u…
ruchI9897 Jul 20, 2026
89185d8
Merge branch 'main' into context
ruchI9897 Jul 20, 2026
6b3da88
changes
ruchI9897 Jul 20, 2026
f1ad0d6
ci fix
ruchI9897 Jul 20, 2026
37eced4
ci fix
ruchI9897 Jul 20, 2026
4e714fb
Merge pull request #459 from thoughtspot/context
ruchI9897 Jul 20, 2026
1fd81f3
Merge pull request #499 from thoughtspot/SCAL-325035
shivam-kumar-ts Jul 20, 2026
ec60e05
fix
ruchI9897 Jul 20, 2026
42003c2
SCAL-325035-2 added dark mode in emebed as highest priority
shivam-kumar-ts Jul 20, 2026
861f314
Merge pull request #500 from thoughtspot/SCAL-325035-2
shivam-kumar-ts Jul 20, 2026
73ed195
Merge pull request #501 from thoughtspot/ssr-fix
ruchI9897 Jul 20, 2026
09c8381
SCAL-325035-3 fix dark mode during routing in the embed
shivam-kumar-ts Jul 20, 2026
7cdf371
Merge pull request #502 from thoughtspot/SCAL-325035-3
shivam-kumar-ts Jul 20, 2026
56979cd
SCAL-325035-4 added themeMode check in the explicitChoice also
shivam-kumar-ts Jul 20, 2026
c4dec94
Merge pull request #503 from thoughtspot/SCAL-325035-4
shivam-kumar-ts Jul 20, 2026
2945583
SCAL-325035-4 added themeMode check in the explicitChoice also
shivam-kumar-ts Jul 20, 2026
1824626
feedback and edits
rani2655 Jul 20, 2026
cc8c5d2
Merge pull request #504 from thoughtspot/SCAL-325035-5
shivam-kumar-ts Jul 20, 2026
3c4b1f7
edits
rani2655 Jul 20, 2026
1f6f958
further edits
rani2655 Jul 20, 2026
9d33e18
graphql file removal
ShashiSubramanya Jul 20, 2026
0351b58
graphql ref removal
ShashiSubramanya Jul 20, 2026
378b9c8
typos
rani2655 Jul 21, 2026
e8c733d
docs(python-sdk): revise with confirmed README content from github.co…
ShashiSubramanya Jul 21, 2026
46813c9
edits
ShashiSubramanya Jul 22, 2026
c905b98
feedback loop changes
ruchI9897 Jul 22, 2026
6fdbe25
added env var
ruchI9897 Jul 22, 2026
18314e1
Merge pull request #505 from thoughtspot/url-update
ruchI9897 Jul 22, 2026
721d7da
py sdk updates
ShashiSubramanya Jul 22, 2026
20516dd
nav updates
ShashiSubramanya Jul 23, 2026
45612bf
formatting fix
ShashiSubramanya Jul 23, 2026
f4fc41a
docs(SCAL-320438): add custom-scheme allowlisting section with securi…
ShashiSubramanya Jul 23, 2026
e97a38a
docs(SCAL-320438): add custom-scheme allowlisting section with securi…
ShashiSubramanya Jul 23, 2026
834a506
SCAL-320438
ShashiSubramanya Jul 23, 2026
c73b1e9
edits
ShashiSubramanya Jul 23, 2026
d6ddfc3
docs(SCAL-323307): update wide logo recommended size to 250x50 (5:1 r…
ShashiSubramanya Jul 23, 2026
1795ba8
edits
ShashiSubramanya Jul 23, 2026
32f0a8c
docs(26.8.0.cl): add wide logo dimension update blurb (SCAL-323307)
ShashiSubramanya Jul 23, 2026
778a0ea
docs(26.8.0.cl): add wide logo dimension update blurb (SCAL-323307)
ShashiSubramanya Jul 23, 2026
23050ca
docs(26.8.0.cl): fix wide logo blurb indentation (SCAL-323307)
ShashiSubramanya Jul 23, 2026
1c7f85f
SCAL-323307 update
ShashiSubramanya Jul 23, 2026
1975af3
image updates
ShashiSubramanya Jul 23, 2026
61cc29a
edits
ShashiSubramanya Jul 23, 2026
7f1d19f
left nav scroll issue
ShashiSubramanya Jul 24, 2026
cc450a4
fix
ruchI9897 Jul 24, 2026
2efcd65
Merge branch 'main' into feedback-loop
ruchI9897 Jul 24, 2026
657b4c8
left nav scroll issue
ShashiSubramanya Jul 24, 2026
68d20a5
spottercode auth updates
ShashiSubramanya Jul 22, 2026
2842338
edits
ShashiSubramanya Jul 22, 2026
d6c1da1
edits
ShashiSubramanya Jul 23, 2026
5fae86e
review edits
ShashiSubramanya Jul 23, 2026
9c09ca7
Update whats-new.adoc
ShashiSubramanya Jul 23, 2026
4b9c164
edits
ShashiSubramanya Jul 24, 2026
c8a64c7
typo fix
ShashiSubramanya Jul 24, 2026
0510633
typo fix
ShashiSubramanya Jul 24, 2026
c7d8ae2
typo fix
ShashiSubramanya Jul 24, 2026
af5c13e
ST memory and other updates
ShashiSubramanya Jul 29, 2026
6ea6cfe
edits
ShashiSubramanya Jul 29, 2026
86e2d3c
Merge pull request #497 from thoughtspot/docs/26-8-0-cl-shashi-all-waves
ShashiSubramanya Jul 29, 2026
13741d0
edits
ShashiSubramanya Jul 29, 2026
c82e266
formatting fixes
ShashiSubramanya Jul 29, 2026
3e52060
link update
ShashiSubramanya Jul 29, 2026
a9b7a37
version updates
ShashiSubramanya Jul 29, 2026
da9e773
changed footer
ruchI9897 Jul 30, 2026
9cf696d
Merge pull request #506 from thoughtspot/feedback-loop
ruchI9897 Jul 30, 2026
5028ab7
Spotter udpates
ShashiSubramanya Jul 30, 2026
9ee7ec6
doc updates for SCAL-296476, SCAL-290930, SCAL-270437, SCAL-293693
ShashiSubramanya Jul 30, 2026
ba533f6
Edits
ShashiSubramanya Jul 30, 2026
da66490
formatting fix
ShashiSubramanya Jul 30, 2026
386dd95
doc updates for SCAL-296476, SCAL-290930, SCAL-270437, SCAL-293693
ShashiSubramanya Jul 30, 2026
f735899
removed ask docs button and fixed
ruchI9897 Jul 30, 2026
d7d257b
Merge pull request #512 from thoughtspot/feedback-loop
ruchI9897 Jul 30, 2026
9b77376
spotter updates
ShashiSubramanya Jul 30, 2026
c4c17d1
changelog fixes
ShashiSubramanya Jul 30, 2026
5809796
whats new and changelog edits
ShashiSubramanya Jul 30, 2026
8a539ff
changelog fixes
ShashiSubramanya Jul 30, 2026
b5c14ce
edits
ShashiSubramanya Jul 30, 2026
ede0a85
aeo fixes
ShashiSubramanya Jul 30, 2026
baaec51
AEO fixes
ShashiSubramanya Jul 31, 2026
8af2e00
merge error fix
ShashiSubramanya Jul 31, 2026
9818aa4
aeo fixes
ShashiSubramanya Jul 30, 2026
866f0a3
AEO fixes
ShashiSubramanya Jul 31, 2026
b3b3c2f
tml-import-fix
ShashiSubramanya Jul 31, 2026
56f735d
doc updates for SCAL-296476, SCAL-290930, SCAL-270437, SCAL-293693
ShashiSubramanya Jul 30, 2026
3fa4fa2
changelog fixes
ShashiSubramanya Jul 30, 2026
23850d2
tml-import-fix
ShashiSubramanya Jul 31, 2026
feddcaf
Merge pull request #511 from thoughtspot/SCAL-296437-updates
ShashiSubramanya Jul 31, 2026
5765b19
Merge branch '26.8.0.cl' into 26-8-0-doc-updates
ShashiSubramanya Jul 31, 2026
35d8ad1
reviewed the TO DOs
rani2655 Jul 31, 2026
88a9f54
pulled out input tables api
rani2655 Jul 31, 2026
faf78ec
removed beta label for collections
rani2655 Jul 31, 2026
78a7b2c
ui fixes
ruchI9897 Jul 31, 2026
629835c
Merge pull request #514 from thoughtspot/ui-fix
ruchI9897 Jul 31, 2026
68ef3cc
edits
ShashiSubramanya Jul 31, 2026
0bcc92a
c# SDK updates
ShashiSubramanya Jul 31, 2026
6670a83
review comment fixes
ShashiSubramanya Aug 1, 2026
427d4a6
timeline-update
ShashiSubramanya Jul 30, 2026
f6b0712
spottercode auth updates
ShashiSubramanya Jul 22, 2026
6e83a79
edits
ShashiSubramanya Jul 22, 2026
8efc566
edits
ShashiSubramanya Jul 23, 2026
b6d91b9
review edits
ShashiSubramanya Jul 23, 2026
0c7ba7c
Update whats-new.adoc
ShashiSubramanya Jul 23, 2026
fd9747c
edits
ShashiSubramanya Jul 24, 2026
f661cf9
timeline-update
ShashiSubramanya Jul 30, 2026
f5b5253
edits
ShashiSubramanya Aug 3, 2026
915e1d2
c# sdk
ShashiSubramanya Aug 3, 2026
551035c
python sdk
ShashiSubramanya Aug 3, 2026
f4b09b8
sdk updates
ShashiSubramanya Aug 3, 2026
8453a45
python sdk edits
ShashiSubramanya Aug 3, 2026
043ddd0
sdk updates
ShashiSubramanya Aug 3, 2026
0103cf7
Merge branch '26.8.0.cl' into 26-8-0-doc-updates
ShashiSubramanya Aug 3, 2026
86ea6c5
python ssdk updates
ShashiSubramanya Aug 3, 2026
c8776d8
SCAL-327656
ShashiSubramanya Aug 3, 2026
33d1251
edits
ShashiSubramanya Aug 3, 2026
b9f6df5
Merge branch '26.8.0.cl' into 26-8-0-doc-updates
ShashiSubramanya Aug 3, 2026
6ed232a
SCAL-327656
ShashiSubramanya Aug 3, 2026
a6ce6e8
edits
ShashiSubramanya Aug 3, 2026
ef52489
Merge pull request #509 from thoughtspot/26-8-0-doc-updates
ShashiSubramanya Aug 3, 2026
dd7b63e
version update
ShashiSubramanya Aug 3, 2026
e073a19
banner text update
ShashiSubramanya Aug 3, 2026
e0474be
publication checks
ShashiSubramanya Aug 4, 2026
6709345
spottecode panel updates
ShashiSubramanya Aug 4, 2026
420adcd
edits
ShashiSubramanya Aug 4, 2026
4224445
spottecode nav edits
ShashiSubramanya Aug 4, 2026
2e3b776
spottercode updates
ShashiSubramanya Aug 4, 2026
bcacf3b
edits
ShashiSubramanya Aug 4, 2026
7fe8b99
formating fixes
ShashiSubramanya Aug 4, 2026
36f7874
custom home page update
ShashiSubramanya Aug 4, 2026
1d194c1
final checks
ShashiSubramanya Aug 4, 2026
3ecf5d2
sync updates from 26.8.0.cl
ShashiSubramanya Aug 4, 2026
8b220a1
spotter image updates
ShashiSubramanya Aug 5, 2026
550060b
heading level change
ShashiSubramanya Aug 5, 2026
a68de94
edits
ShashiSubramanya Aug 5, 2026
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
3 changes: 2 additions & 1 deletion .env.sample
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
GATSBY_ALGOLIA_APP_ID=
GATSBY_ALGOLIA_SEARCH_KEY=
ALGOLIA_ADMIN_KEY=
BUILD_ENV=LOCAL
GATSBY_CLOUDFLARE_URL=
BUILD_ENV=LOCAL
6 changes: 4 additions & 2 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,13 +79,15 @@ jobs:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2

# Use NodeJS v12.18.3
# Use NodeJS v20
- uses: actions/setup-node@v2
with:
node-version: '14.15.4'
node-version: '20'

# Run npm install
- name: Run npm install
env:
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
run: npm install

- name: create env file
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,15 @@ jobs:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2

# Use NodeJS v14.19.0
# Use NodeJS v20
- uses: actions/setup-node@v2
with:
node-version: '14.15.4'
node-version: '20'

# Run npm install
- name: Run npm install
env:
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
run: npm install

# Runs tests
Expand Down
2 changes: 2 additions & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
registry = 'https://registry.npmjs.org/'
@thoughtspot:registry=https://packagecloud.io/modeanalytics/tse/npm/
//packagecloud.io/modeanalytics/tse/npm/:_authToken=${PACKAGECLOUD_TOKEN}
31 changes: 31 additions & 0 deletions gatsby-browser.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
exports.onClientEntry = () => {
// Dynamic imports so @thoughtspot/radiant-react (which reads `window` at
// module-load time) is never evaluated during Gatsby's SSR build.
Promise.all([
import('./src/contexts/FloatingAssistantContext'),
import('./src/components/FloatingAssistant'),
import('react'),
import('react-dom/client'),
]).then(([
{ FloatingAssistantProvider },
{ default: FloatingAssistant },
React,
ReactDOM,
]) => {
const container = document.createElement('div');
container.id = 'floating-assistant-root';
document.body.appendChild(container);

ReactDOM.createRoot(container).render(
React.createElement(
FloatingAssistantProvider,
null,
React.createElement(FloatingAssistant)
)
);
});
};

exports.onRouteUpdate = ({ location }) => {
window.dispatchEvent(new CustomEvent('gatsby-route-update', { detail: { location } }));
};
79 changes: 71 additions & 8 deletions gatsby-node.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,24 +78,69 @@ exports.onPostBuild = async ({ graphql, reporter }) => {
node {
document { title }
pageAttributes { pageid }
fields { markdownBody }
parent {
... on File {
sourceInstanceName
relativePath
}
}
}
}
}
}
`);

if (result.errors) {
reporter.warn(`llms.txt generation: GraphQL errors — ${JSON.stringify(result.errors)}`);
reporter.warn(`Build-time generation: GraphQL errors — ${JSON.stringify(result.errors)}`);
return;
}

const pageMap = {};
// pageData keyed by pageid: { title, docPath }
// docPath is the URL-path segment (e.g. '/getting-started', '/tutorials/intro')
// derived from getDocLinkFromEdge so tutorials with subdirectories resolve correctly.
const pageData = {};
let mdCount = 0;
// Pages whose markdown exceeds this limit are truncated with a continuation link.
// Keeps all pages within the agent-score page-size threshold while preserving crawlability.
const MAX_MD_CHARS = 95_000;

result.data.allAsciidoc.edges.forEach(({ node }) => {
const pageid = node.pageAttributes?.pageid;
const title = node.document?.title;
if (pageid && title) pageMap[pageid] = title;
const markdownBody = node.fields?.markdownBody;
const relativePath = node.parent?.relativePath || '';
// Auto-generated per-symbol SDK reference pages (scripts/Converter/index.ts) —
// represented in llms.txt by the single curated VisualEmbedSdk entry, not individually.
const isTypedocGenerated = relativePath.startsWith('generated/typedoc/');

if (!pageid || pageid.startsWith('nav-')) return;

const docPath = getDocLinkFromEdge({ node }); // e.g. '/getting-started' or '/tutorials/category/page'
if (title) pageData[pageid] = { title, docPath, isTypedocGenerated };

// Write static .md file — serves at /docs<docPath>.md for agent crawlers
if (markdownBody) {
let body = markdownBody;
if (body.length > MAX_MD_CHARS) {
// Trim at the last complete line within the limit
const cut = body.lastIndexOf('\n', MAX_MD_CHARS);
body = body.slice(0, cut > MAX_MD_CHARS * 0.8 ? cut : MAX_MD_CHARS);
body += `\n\n---\n\n> **Content truncated.** This page exceeds the inline size limit. View the complete documentation at [${SITE_URL}${docPath}](${SITE_URL}${docPath})\n`;
}
const header = `# ${title ?? pageid}\n\n> For the complete documentation index, see [llms.txt](${SITE_URL}/llms.txt)\n\nSource: ${SITE_URL}${docPath}\n\n`;
fsExtra.outputFileSync(
`${__dirname}/public${docPath}.md`,
header + body,
);
mdCount++;
}
});

reporter.info(`[md-gen] Wrote ${mdCount} .md files`);

// Generate llms.txt — curated sections first, then any remaining pages
const coveredIds = new Set();
const lines = [
'# ThoughtSpot Developer Documentation',
'',
Expand All @@ -104,21 +149,39 @@ exports.onPostBuild = async ({ graphql, reporter }) => {
];

for (const section of LLMS_SECTIONS) {
lines.push(`## ${section.label}`);
const sectionLines = [];
for (const pageId of section.pageIds) {
const title = pageMap[pageId];
if (title) lines.push(`- [${title}](${SITE_URL}/${pageId})`);
const data = pageData[pageId];
if (data) {
sectionLines.push(`- [${data.title}](${SITE_URL}${data.docPath}.md)`);
coveredIds.add(pageId);
}
}
if (sectionLines.length) {
lines.push(`## ${section.label}`);
lines.push(...sectionLines);
lines.push('');
}
}

// Add pages that exist as Asciidoc nodes but aren't in any LLMS_SECTIONS entry.
// Excludes typedoc-generated pages — those are covered by the curated VisualEmbedSdk entry.
const uncovered = Object.entries(pageData).filter(
([id, data]) => !coveredIds.has(id) && !data.isTypedocGenerated,
);
if (uncovered.length) {
lines.push('## Additional documentation');
uncovered.forEach(([, { title, docPath }]) => lines.push(`- [${title}](${SITE_URL}${docPath}.md)`));
lines.push('');
}

fsExtra.writeFileSync(
`${__dirname}/public/llms.txt`,
lines.join('\n'),
);
reporter.info(`llms.txt generated with ${Object.keys(pageMap).length} pages`);
reporter.info(`llms.txt: ${coveredIds.size} curated + ${uncovered.length} additional = ${coveredIds.size + uncovered.length} total pages`);
} catch (err) {
reporter.warn(`llms.txt generation failed: ${err.message}`);
reporter.warn(`Build-time generation failed: ${err.message}`);
}
};
exports.createPages = async function ({ actions, graphql }) {
Expand Down
41 changes: 41 additions & 0 deletions gatsby-ssr.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
const React = require('react');
const RADIANT_SPRITE = require('./src/components/FloatingAssistant/radiantSprite');
const { SITE_URL } = require('./src/configs/doc-configs');

exports.onRenderBody = ({ setHeadComponents, setPreBodyComponents }) => {
setHeadComponents([
React.createElement('link', {
key: 'llms-txt',
rel: 'llms-txt',
href: `${SITE_URL}/llms.txt`,
}),
]);

// Visually-hidden body element — picked up by agent crawlers that parse the DOM
// but ignore <head> link tags.
setPreBodyComponents([
React.createElement(
'div',
{
key: 'llms-txt-directive',
style: {
position: 'absolute',
width: '1px',
height: '1px',
overflow: 'hidden',
clip: 'rect(0,0,0,0)',
whiteSpace: 'nowrap',
},
},
React.createElement(
'a',
{ href: `${SITE_URL}/llms.txt` },
'LLMs.txt: Complete documentation index for AI agents',
),
),
React.createElement('div', {
key: 'radiant-sprite',
dangerouslySetInnerHTML: { __html: RADIANT_SPRITE },
}),
]);
};
26 changes: 26 additions & 0 deletions middleware.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { rewrite, next } from '@vercel/functions'

// Content-negotiation for AEO: agents (Claude Code, Cursor, OpenCode, etc.) send
// `Accept: text/markdown` and expect the markdown sibling generated at build time.
// Vercel's vercel.json `rewrites` can't do this because filesystem match takes
// precedence over rewrites for a path that already resolves to an existing static
// file, so this has to run in Middleware instead, which executes before that
// filesystem check.
export const config = {
matcher: '/:path*',
}

export default function middleware (request) {
const accept = request.headers.get('accept') || ''
if (!accept.includes('text/markdown')) return next()

const url = new URL(request.url)
const { pathname } = url
if (pathname.endsWith('.md')) return next()

const lastSegment = pathname.slice(pathname.lastIndexOf('/') + 1)
if (lastSegment.includes('.')) return next() // static asset (css/js/svg/png/...), not a doc page

url.pathname = pathname.endsWith('/') ? `${pathname}index.md` : `${pathname}.md`
return rewrite(url)
}
Loading
Loading