Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
3c06f70
* Added Aviate database migration guide.
vnandwana Feb 9, 2026
14c4fde
Documented scenarios like Aviate plugin upgrade, fix failed migration…
vnandwana Feb 11, 2026
8342291
CSS tweaks
pierre Feb 12, 2026
75d018a
Iteration
pierre Feb 12, 2026
11daf50
Iteration
pierre Feb 13, 2026
e500e8d
Iteration
pierre Feb 13, 2026
31aa8a7
Iteration
pierre Feb 13, 2026
73f0a08
Update Aviate catalog versioning behavior documentation
sbrossie Feb 14, 2026
50862bc
Iteration
pierre Feb 14, 2026
134c885
Add preview guides
pierre Feb 14, 2026
d9e421e
Add authentication guide
pierre Feb 14, 2026
24630f8
Improve coupons documentation
pierre Feb 14, 2026
dce6e0f
Improve wallet documentation
pierre Feb 14, 2026
89dc554
Improve metering documentation
pierre Feb 14, 2026
77e134b
Improve health documentation
pierre Feb 14, 2026
555e975
Add comprehensive guies
pierre Feb 14, 2026
1ceb555
Update changelog
pierre Feb 14, 2026
f4ba4b2
Fix build
pierre Feb 14, 2026
d976852
Changelog for 2.10 release
reshmabidikar Feb 16, 2026
f3d2d34
Merge pull request #651 from reshmabidikar/update-changelog
reshmabidikar Feb 20, 2026
4793071
Replaced extracting JAR content with the migration links.
vnandwana Feb 20, 2026
43c27cb
Add Overview section to what_is_aviate.adoc with architecture diagram
sbrossie Feb 24, 2026
b27b849
Merge pull request #654 from killbill/aviate-overview
sbrossie Feb 24, 2026
c848aba
Updated copy command to use recursive flag (cp -rf) to include nested…
killbillio Feb 24, 2026
5e51477
Merge pull request #655 from vnandwana/v3
sbrossie Feb 24, 2026
5a1450a
Merge pull request #648 from vnandwana/flyway-troubleshoot-guide
sbrossie Feb 24, 2026
8684d6f
minor corrections related to bus/notification configurations and avia…
reshmabidikar Feb 26, 2026
eb4f231
Merge branch 'killbill:v3' into minor-corrections
reshmabidikar Feb 26, 2026
0ef2c41
Merge pull request #657 from reshmabidikar/minor-corrections
sbrossie Feb 27, 2026
e47a1e8
Merge pull request #650 from killbill/update-aviate-catalog-versionin…
sbrossie Mar 9, 2026
c282935
Merge branch '000-improve-UI' of github.com:killbill/killbill-docs in…
sbrossie Mar 9, 2026
0729c4f
Fix issue in c2829359dd560fe8bcf
sbrossie Mar 9, 2026
3622fe0
Fix wrong syntax for incorrect links - i.e. link:***
sbrossie Mar 9, 2026
de46f7b
Fix Qodana alerts
sbrossie Mar 9, 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
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,6 @@ latest
package.json
package-lock.json
page.sh
vendor
vendor
assessment.md
tickets.md
437 changes: 226 additions & 211 deletions html5/_main_toc.html.slim

Large diffs are not rendered by default.

11 changes: 10 additions & 1 deletion html5/document.html.slim
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
title=((doctitle sanitize: true) || (attr 'untitled-label'))
style
= Asciidoctor::Stylesheets.instance.pygments_stylesheet_data(attr 'monokai')
Expand Down Expand Up @@ -82,7 +83,7 @@
</svg>
<span class="prev-text">Previous</span>
</span>
<span id="prev-navigator" class="bottom-nav-text">Prev</span>
<span id="prev-navigator" class="bottom-nav-text">Prev</span>
</a>

<a href="#" id="next-nav-link" class="bottom-nav-link card next">
Expand Down Expand Up @@ -136,6 +137,14 @@
$(this).parent().parent().prev().addClass('bd-link-active-wrap');
}
});

// Scroll sidebar so the active item is visible
var activeItem = document.querySelector('.list-item-active');
if (activeItem) {
setTimeout(function() {
activeItem.scrollIntoView({ block: 'center', behavior: 'instant' });
}, 250);
}
});
</script>
</body>
Expand Down
175 changes: 167 additions & 8 deletions javascripts/kb.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,19 @@ setTimeout(function () {
})

function copyToClipboard(text) {
let sampleTextarea = document.createElement("textarea");
document.body.appendChild(sampleTextarea);
sampleTextarea.value = text;
sampleTextarea.select();
document.execCommand("copy");
document.body.removeChild(sampleTextarea);
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(text).catch(function () {});
} else {
// Fallback for older browsers/non-HTTPS contexts
let textarea = document.createElement('textarea');
textarea.value = text;
textarea.style.position = 'fixed';
textarea.style.opacity = '0';
document.body.appendChild(textarea);
textarea.select();
try { document.execCommand('copy'); } catch (e) {}
document.body.removeChild(textarea);
}
}

$('.content-wrapper h2 a, .content-wrapper h3 a, .content-wrapper h4 a').on('click', function () {
Expand All @@ -36,7 +43,16 @@ setTimeout(function () {

$('.content-wrapper .note td.icon').append(`<svg class="info-icon" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M9.99984 13.3334V10.0001M9.99984 6.66675H10.0082M18.3332 10.0001C18.3332 14.6025 14.6022 18.3334 9.99984 18.3334C5.39746 18.3334 1.6665 14.6025 1.6665 10.0001C1.6665 5.39771 5.39746 1.66675 9.99984 1.66675C14.6022 1.66675 18.3332 5.39771 18.3332 10.0001Z" stroke="#2970FF" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"/></svg>`);

$('.content pre').parent('.content').prepend('<div class="copy-icon"><p></p><div class="copy-icon-container"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5.0835 1.5H11.0002C12.867 1.5 13.8004 1.5 14.5135 1.86331C15.1407 2.18289 15.6506 2.69282 15.9702 3.32003C16.3335 4.03307 16.3335 4.96649 16.3335 6.83333V12.75M4.00016 16.5H10.7502C11.6836 16.5 12.1503 16.5 12.5068 16.3183C12.8204 16.1586 13.0754 15.9036 13.2352 15.59C13.4168 15.2335 13.4168 14.7668 13.4168 13.8333V7.08333C13.4168 6.14991 13.4168 5.6832 13.2352 5.32668C13.0754 5.01308 12.8204 4.75811 12.5068 4.59832C12.1503 4.41667 11.6836 4.41667 10.7502 4.41667H4.00016C3.06674 4.41667 2.60003 4.41667 2.24351 4.59832C1.92991 4.75811 1.67494 5.01308 1.51515 5.32668C1.3335 5.6832 1.3335 6.14991 1.3335 7.08333V13.8333C1.3335 14.7668 1.3335 15.2335 1.51515 15.59C1.67494 15.9036 1.92991 16.1586 2.24351 16.3183C2.60003 16.5 3.06674 16.5 4.00016 16.5Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></div></div>');
$('.content pre').each(function () {
let codeEl = $(this).find('code');
let lang = codeEl.attr('data-lang')
|| (codeEl.attr('class') || '').match(/language-(\w+)/)?.[1]
|| '';
let label = lang ? lang.toUpperCase() : '';
$(this).parent('.content').prepend(
'<div class="copy-icon"><p>' + label + '</p><div class="copy-icon-container"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5.0835 1.5H11.0002C12.867 1.5 13.8004 1.5 14.5135 1.86331C15.1407 2.18289 15.6506 2.69282 15.9702 3.32003C16.3335 4.03307 16.3335 4.96649 16.3335 6.83333V12.75M4.00016 16.5H10.7502C11.6836 16.5 12.1503 16.5 12.5068 16.3183C12.8204 16.1586 13.0754 15.9036 13.2352 15.59C13.4168 15.2335 13.4168 14.7668 13.4168 13.8333V7.08333C13.4168 6.14991 13.4168 5.6832 13.2352 5.32668C13.0754 5.01308 12.8204 4.75811 12.5068 4.59832C12.1503 4.41667 11.6836 4.41667 10.7502 4.41667H4.00016C3.06674 4.41667 2.60003 4.41667 2.24351 4.59832C1.92991 4.75811 1.67494 5.01308 1.51515 5.32668C1.3335 5.6832 1.3335 6.14991 1.3335 7.08333V13.8333C1.3335 14.7668 1.3335 15.2335 1.51515 15.59C1.67494 15.9036 1.92991 16.1586 2.24351 16.3183C2.60003 16.5 3.06674 16.5 4.00016 16.5Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></div></div>'
);
});

$('.copy-icon svg').on('click', function () {
let that = this;
Expand Down Expand Up @@ -152,4 +168,147 @@ if (nextNav?.link) {
}
} else {
$('#next-nav-link').css('display', 'none');
}
}

// Hide prev/next navigation on landing page
if (document.querySelector('.landing-page')) {
$('.bottom-nav-links').hide();
}

// ========================================
// Insider Preview access gate
// ========================================

(function insiderPreviewGate() {
const INSIDER_PAGES = [
'aviate-approvals',
'aviate-contracts',
'aviate-error-handling',
'aviate-intents',
'aviate-product-catalog',
'aviate-quotes-orders',
'aviate-rbac',
'aviate-revenue-recognition',
'aviate-usage-rating'
];

const ACCESS_KEY = 'insider-access';
const ACCESS_CODE = 'aviate2026';

function isInsiderPage() {
const path = window.location.pathname.toLowerCase();
return INSIDER_PAGES.some(p => path.includes(p));
}

function isAccessGranted() {
return localStorage.getItem(ACCESS_KEY) === 'granted';
}

function grantAccess() {
localStorage.setItem(ACCESS_KEY, 'granted');
}

function markLinksLocked() {
// Add a small lock icon after each insider link label
$('.insider-link').each(function() {
$(this).addClass('insider-locked');
});
}

function markLinksUnlocked() {
$('.insider-link').removeClass('insider-locked');
}

function showGateModal(onSuccess) {
const overlay = $(`
<div class="insider-gate-overlay">
<div class="insider-gate-modal">
<div class="insider-gate-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="3" y="11" width="18" height="11" rx="2" ry="2"/>
<path d="M7 11V7a5 5 0 0 1 10 0v4"/>
</svg>
</div>
<div class="insider-gate-title">Insider Preview</div>
<div class="insider-gate-subtitle">This content is available exclusively to select partners and customers. Enter your access code if you have been granted access.</div>
<div class="insider-gate-input-group">
<input type="password" class="insider-gate-input" placeholder="Enter access code" autocomplete="off" autofocus>
<button class="insider-gate-btn">Unlock</button>
</div>
<div class="insider-gate-error"></div>
<div class="insider-gate-back"><a href="/latest/what_is_aviate.html">&larr; Back to Aviate docs</a></div>
</div>
</div>
`);

$('body').append(overlay);

const input = overlay.find('.insider-gate-input');
const errorEl = overlay.find('.insider-gate-error');

function attemptUnlock() {
const code = input.val().trim();
if (code === ACCESS_CODE) {
grantAccess();
overlay.fadeOut(200, function() {
overlay.remove();
markLinksUnlocked();
if (onSuccess) onSuccess();
});
} else {
errorEl.text('Invalid access code. Please try again.');
input.addClass('error');
setTimeout(() => input.removeClass('error'), 500);
}
}

overlay.find('.insider-gate-btn').on('click', attemptUnlock);
input.on('keydown', function(e) {
if (e.key === 'Enter') attemptUnlock();
});

// Close on overlay background click
overlay.on('click', function(e) {
if ($(e.target).hasClass('insider-gate-overlay')) {
overlay.fadeOut(200, function() { overlay.remove(); });
// If we're on an insider page, go back
if (isInsiderPage()) {
window.location.href = '/latest/what_is_aviate.html';
}
}
});

setTimeout(() => input.focus(), 350);
}

// --- Sidebar: links are always visible ---

if (isAccessGranted()) {
// Unlocked — links work normally
markLinksUnlocked();
} else {
// Locked — show links but intercept clicks
markLinksLocked();

$('.insider-link').on('click', function(e) {
if (!isAccessGranted()) {
e.preventDefault();
const targetHref = $(this).attr('href');
showGateModal(function() {
// On successful unlock, navigate to the clicked page
window.location.href = targetHref;
});
}
});

// If user landed directly on an insider page, show the gate over the content
if (isInsiderPage()) {
$('.content-wrapper #content').css('visibility', 'hidden');
$('.bottom-nav-links').css('visibility', 'hidden');
showGateModal(function() {
$('.content-wrapper #content').css('visibility', 'visible');
$('.bottom-nav-links').css('visibility', 'visible');
});
}
}
})();
2 changes: 1 addition & 1 deletion make.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ cp -rf stylesheets/* $SELFCONTAINED_BUILD_DIR/stylesheets
cp -rf javascripts/* $SELFCONTAINED_BUILD_DIR/javascripts

# -maxdepth 2 to avoid building the included files (userguide/*/includes)
for doc in `find $USERGUIDE_INPUT_DIR -type f -name '*.adoc' -maxdepth 2`; do
for doc in `find $USERGUIDE_INPUT_DIR -maxdepth 2 -type f -name '*.adoc'`; do
echo "Building $doc"
$SELFCONTAINED_BUILD $doc
done
Loading
Loading