summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--docs/_coverpage.md2
-rw-r--r--docs/_footer.md3
-rw-r--r--docs/github.css1024
-rw-r--r--docs/index.html10
-rw-r--r--docs/user/README.md5
-rw-r--r--docs/user/_sidebar.md1
-rw-r--r--docs/user/plugins.md107
8 files changed, 1149 insertions, 7 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..424ccb8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+__pycache__/
+lib/
+venv/
+plugins/
diff --git a/docs/_coverpage.md b/docs/_coverpage.md
index 78ec250..f75616b 100644
--- a/docs/_coverpage.md
+++ b/docs/_coverpage.md
@@ -12,6 +12,6 @@ Contributors
- Skipper
- Biry
-[Github](https://github.com/the-indian-dev/sakuya-ac)
+[Latest Release](https://github.com/the-indian-dev/sakuya-ac/releases/)
[API Documentation](/api/README.md)
[User Documentation](/user/README.md)
diff --git a/docs/_footer.md b/docs/_footer.md
new file mode 100644
index 0000000..f8394f9
--- /dev/null
+++ b/docs/_footer.md
@@ -0,0 +1,3 @@
+---
+
+Made with ❤️ by [Ritabrata Das](https://theindiandev.in)
diff --git a/docs/github.css b/docs/github.css
new file mode 100644
index 0000000..790d07c
--- /dev/null
+++ b/docs/github.css
@@ -0,0 +1,1024 @@
+* {
+ -webkit-font-smoothing: antialiased;
+ -webkit-overflow-scrolling: touch;
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
+ -webkit-text-size-adjust: none;
+ -webkit-touch-callout: none;
+ box-sizing: border-box;
+}
+body:not(.ready) {
+ overflow: hidden;
+}
+body:not(.ready) [data-cloak],
+body:not(.ready) .app-nav,
+body:not(.ready) > nav {
+ display: none;
+}
+div#app {
+ font-size: 30px;
+ font-weight: lighter;
+ margin: 40vh auto;
+ text-align: center;
+}
+div#app:empty::before {
+ content: 'Loading...';
+}
+img.emoji {
+ height: 1.2em;
+ vertical-align: middle;
+}
+span.emoji {
+ font-family: "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ font-size: 1.2em;
+ vertical-align: middle;
+}
+.progress {
+ background-color: #42b983;
+ background-color: var(--theme-color, #42b983);
+ height: 2px;
+ left: 0px;
+ position: fixed;
+ right: 0px;
+ top: 0px;
+ transition: width 0.2s, opacity 0.4s;
+ width: 0%;
+ z-index: 999999;
+}
+.search input {
+ font-family: inherit;
+ border-radius: 6px;
+ max-height: 35px;
+ border: 1px solid rgb(225, 225, 225) !important;
+ box-shadow: rgba(208, 215, 222, 0.2) 0px 1px 0px inset;
+}
+.sidebar .search input[type=search] {
+ min-width: 0;
+ padding: 1rem 2.5rem;
+ border: none;
+ background-color: rgba(0, 0, 0, 0);
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Cpath fill='%2357606a' d='M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z'/%3E%3C/svg%3E");
+ background-position: 14px center;
+ background-repeat: no-repeat;
+}
+.search input:focus,
+.search:has(.results-panel.show) input {
+ border: 2px solid var(--theme-color, #42b983) !important;
+ box-shadow: none !important;
+}
+.search .clear-button {
+ position: absolute;
+ right: .5rem;
+ border-radius: .25rem;
+ width: auto !important;
+ padding: .3rem .3rem .1rem;
+}
+.search .clear-button:hover {
+ background-color: rgba(208, 215, 222, 0.6);
+}
+.search .clear-button svg {
+ transform: scale(.75) !important;
+}
+.search .clear-button svg * {
+ fill: #585858;
+}
+.search a:hover {
+ color: #42b983;
+ color: var(--theme-color, #42b983);
+}
+.search .search-keyword {
+ color: #42b983;
+ color: var(--theme-color, #42b983);
+ font-style: normal;
+ font-weight: bold;
+}
+html,
+body {
+ height: 100%;
+}
+body {
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+ color: rgb(36, 41, 47);
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
+ font-size: 15px;
+ letter-spacing: 0;
+ margin: 0;
+ overflow-x: hidden;
+}
+img {
+ max-width: 100%;
+}
+a[disabled] {
+ cursor: not-allowed;
+ opacity: 0.6;
+}
+kbd {
+ border: solid 1px #ccc;
+ border-radius: 3px;
+ display: inline-block;
+ font-size: 12px !important;
+ line-height: 12px;
+ margin-bottom: 3px;
+ padding: 3px 5px;
+ vertical-align: middle;
+}
+li input[type='checkbox'] {
+ margin: 0 0.2em 0.25em 0;
+ vertical-align: middle;
+}
+.app-nav {
+ margin: 25px 60px 0 0;
+ position: absolute;
+ right: 0;
+ text-align: right;
+ z-index: 10;
+/* navbar dropdown */
+}
+.app-nav.no-badge {
+ margin-right: 25px;
+}
+.app-nav p {
+ margin: 0;
+}
+.app-nav > a {
+ margin: 0 1rem;
+ padding: 5px 0;
+}
+.app-nav ul,
+.app-nav li {
+ display: inline-block;
+ list-style: none;
+ margin: 0;
+}
+.app-nav a {
+ color: inherit;
+ font-size: 16px;
+ text-decoration: none;
+ transition: color 0.3s;
+}
+.app-nav a:hover {
+ color: #42b983;
+ color: var(--theme-color, #42b983);
+}
+.app-nav a.active {
+ border-bottom: 2px solid #42b983;
+ border-bottom: 2px solid var(--theme-color, #42b983);
+ color: #42b983;
+ color: var(--theme-color, #42b983);
+}
+.app-nav li {
+ display: inline-block;
+ margin: 0 1rem;
+ padding: 5px 0;
+ position: relative;
+ cursor: pointer;
+}
+.app-nav li ul {
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-bottom-color: #ccc;
+ border-radius: 4px;
+ box-sizing: border-box;
+ display: none;
+ max-height: calc(100vh - 61px);
+ overflow-y: auto;
+ padding: 10px 0;
+ position: absolute;
+ right: -15px;
+ text-align: left;
+ top: 100%;
+ white-space: nowrap;
+}
+.app-nav li ul li {
+ display: block;
+ font-size: 14px;
+ line-height: 1rem;
+ margin: 0;
+ margin: 8px 14px;
+ white-space: nowrap;
+}
+.app-nav li ul a {
+ display: block;
+ font-size: inherit;
+ margin: 0;
+ padding: 0;
+}
+.app-nav li ul a.active {
+ border-bottom: 0;
+}
+.app-nav li:hover ul {
+ display: block;
+}
+.github-corner {
+ border-bottom: 0;
+ position: fixed;
+ right: 0;
+ text-decoration: none;
+ top: 0;
+ z-index: 1;
+}
+.github-corner:hover .octo-arm {
+ animation: octocat-wave 560ms ease-in-out;
+}
+.github-corner svg {
+ color: #fff;
+ fill: #42b983;
+ fill: var(--theme-color, #42b983);
+ height: 80px;
+ width: 80px;
+}
+main {
+ display: block;
+ position: relative;
+ width: 100vw;
+ height: 100%;
+ z-index: 0;
+}
+main.hidden {
+ display: none;
+}
+.anchor {
+ text-decoration: none;
+ transition: all 0.3s;
+}
+.anchor span {
+ color: #34495e;
+}
+.anchor:hover {
+ text-decoration: underline;
+}
+.sidebar {
+ border-right: 1px solid rgba(0,0,0,0.07);
+ overflow-y: auto;
+ padding: 40px 0 0;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ transition: transform 250ms ease-out;
+ width: 270px;
+ z-index: 20;
+}
+.sidebar > h1 {
+ margin: 0 auto 1rem;
+ font-size: 1.5rem;
+ font-weight: 300;
+ text-align: center;
+}
+.sidebar > h1 a {
+ color: inherit;
+ text-decoration: none;
+}
+.sidebar > h1 .app-nav {
+ display: block;
+ position: static;
+}
+.sidebar:has(.search .results-panel.show) {
+ overflow: hidden;
+}
+.sidebar .search .results-panel {
+ position: fixed;
+ top: 3.25rem;
+ left: .5rem;
+ max-height: 70%;
+ background-color: #ffffff;
+ overflow-y: auto;
+ overflow-x: hidden;
+ width: 95%;
+ max-width: 26rem;
+ border-radius: 12px;
+ border: 1px solid rgb(216, 222, 228);
+ box-shadow: rgba(140, 149, 159, 0.2) 0px 8px 24px;
+ padding: .15rem .4rem;
+ scrollbar-width: thin;
+ scrollbar-color: #C7C7C7 transparent;
+ z-index: 99;
+}
+.search .matching-post > a {
+ color: #8e8e8e;
+ display: block;
+ padding: .5rem .5rem;
+ margin: .25rem 0;
+ border-radius: .35rem;
+ transition: .1s;
+}
+.search .matching-post > a > * {
+ margin: 0 0;
+ padding: .05rem 0;
+}
+.search .matching-post > a > h2 {
+ color: #000;
+ font-weight: 600;
+}
+.search .matching-post > a:hover {
+ background-color: rgba(208, 215, 222, 0.32);
+ color: var(--theme-color, #42b983);
+}
+.sidebar .sidebar-nav {
+ margin-left: 16px;
+ padding-bottom: 50px;
+}
+.sidebar li.collapse .app-sub-sidebar {
+ display: none;
+}
+.app-sub-sidebar li>a {
+ padding: 9px 0 9px 24px !important;
+}
+.sidebar ul {
+ margin: 0;
+ padding: 0;
+}
+.sidebar li > p:has(+ ul) {
+ margin: 1rem .5rem .5rem;
+ font-size: 12px;
+ font-weight: 600;
+ color: rgb(87, 96, 106);
+}
+.sidebar li:has(+ li) > p:not(:has(+ ul)) {
+ margin-top: 1rem;
+}
+.sidebar li > p {
+ margin: 0;
+}
+.sidebar ul,
+.sidebar ul li {
+ list-style: none;
+}
+.sidebar ul li a {
+ border-bottom: none;
+ display: block;
+}
+.sidebar ul li ul{
+ margin-left: 0;
+}
+.sidebar ul li .section-link {
+ font-size: 12px;
+ color: rgb(87, 96, 106);
+}
+.sidebar-nav>ul>li>ul> li:last-child::after {
+ content: " ";
+ display: block;
+ width: 100%;
+ height: 12px;
+ margin-left: -16px;
+ padding-right: 16px;
+ border-bottom: 1px solid #eee;
+}
+.sidebar::-webkit-scrollbar {
+ width: 4px;
+}
+.sidebar::-webkit-scrollbar-thumb {
+ background: transparent;
+ border-radius: 4px;
+}
+.sidebar:hover::-webkit-scrollbar-thumb {
+ background: rgba(136,136,136,0.4);
+}
+.sidebar:hover::-webkit-scrollbar-track {
+ background: rgba(136,136,136,0.1);
+}
+.sidebar-toggle {
+ cursor: pointer;
+ padding: 10px 10px 8px 10px;
+ border-radius: 6px;
+ background-color: #FAFBFC;
+ border: none;
+ left: 0;
+ bottom: 0;
+ z-index: 30;
+ margin: 8px;
+ box-shadow: rgba(27, 31, 35, 0.04) 0 1px 0, rgba(255, 255, 255, 0.25) 0 1px 0 inset;
+ border: 1px solid rgba(27, 31, 35, 0.15);
+ transition: 0.1s;
+}
+.sidebar-toggle:hover {
+ cursor: pointer;
+ background-color: #F3F4F6;
+}
+.sidebar-toggle span {
+ background-color: #000000;
+ display: block;
+ margin-bottom: 4px;
+ width: 16px;
+ height: 2px;
+}
+body.sticky .sidebar,
+body.sticky .sidebar-toggle {
+ position: fixed;
+}
+.content {
+ padding-top: 60px;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 220px;
+ transition: left 250ms ease;
+}
+.markdown-section {
+ margin: 0 auto;
+ max-width: 80%;
+ padding: 30px 15px 40px 15px;
+ position: relative;
+}
+.markdown-section > * {
+ box-sizing: border-box;
+ font-size: inherit;
+}
+.markdown-section > :first-child {
+ margin-top: 0 !important;
+}
+.markdown-section hr {
+ border: none;
+ border-bottom: 4px solid #D0D7DE;
+ margin: 2em 0;
+}
+.markdown-section iframe {
+ border: 1px solid #eee;
+/* fix horizontal overflow on iOS Safari */
+ width: 1px;
+ min-width: 100%;
+}
+.markdown-section table {
+ border-collapse: collapse;
+ border-spacing: 0;
+ display: block;
+ margin-bottom: 1rem;
+ overflow: auto;
+ width: 100%;
+}
+.markdown-section th {
+ border: 1px solid #ddd;
+ font-weight: bold;
+ padding: 6px 13px;
+}
+.markdown-section td {
+ border: 1px solid #ddd;
+ padding: 6px 13px;
+}
+.markdown-section tr {
+ border-top: 1px solid #ccc;
+}
+.markdown-section tr:nth-child(2n) {
+ background-color: #F6F8FA;
+}
+:root {
+ --callout-top: .75rem;
+ --callout-icon-size: 1rem;
+ --tip-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16' fill='%23BF8700'%3E%3Cpath d='M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z'%3E%3C/path%3E%3C/svg%3E");
+ --warn-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16' fill='%23218bff'%3E%3Cpath d='M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z'%3E%3C/path%3E%3C/svg%3E");
+ --tip-color: #BF8700;
+ --warn-color: #218bff;
+ --tip-label: "Warning";
+ --warn-label: "Tip";
+}
+.markdown-section p:is(.tip, .warn) {
+ position: relative;
+ color: #000000;
+ border-left: 3px solid transparent;
+ padding: .75rem 1rem;
+ margin: 2em 0;
+}
+.markdown-section p:is(.tip, .warn):before {
+ display: flex;
+ align-items: center;
+ height: 1rem;
+ padding: 0 0 1rem calc(var(--callout-icon-size) + .5rem);
+ font-weight: 600;
+ white-space: pre-wrap;
+}
+.markdown-section p:is(.tip, .warn)::after {
+ --size: var(--callout-icon-size);
+ display: inline-flex;
+ position: absolute;
+ left: 1rem;
+ top: var(--callout-top);
+ content: "";
+ width: var(--size);
+ height: var(--size);
+ mask-size: var(--size) var(--size);
+}
+.markdown-section p.tip code {
+ background-color: #efefef;
+}
+.markdown-section p.tip em {
+ color: #34495e;
+}
+.markdown-section p.tip {
+ border-color: var(--tip-color);
+}
+.markdown-section p.tip::before {
+ content: var(--tip-label);
+ color: var(--tip-color);
+}
+.markdown-section p.tip::after {
+ background-color: var(--tip-color);
+ mask-image: var(--tip-icon);
+}
+.markdown-section p.warn {
+ border-color: var(--warn-color);
+}
+.markdown-section p.warn::before {
+ content: var(--warn-label);
+ color: var(--warn-color);
+}
+.markdown-section p.warn::after {
+ background-color: var(--warn-color);
+ mask-image: var(--warn-icon);
+}
+.markdown-section ul.task-list > li {
+ list-style-type: none;
+}
+body.close .sidebar {
+ transform: translateX(-270px);
+}
+body.close .sidebar-toggle {
+ width: auto;
+}
+body.close .content {
+ left: 0;
+}
+@media print {
+ .github-corner,
+ .sidebar-toggle,
+ .sidebar,
+ .app-nav {
+ display: none;
+ }
+}
+@media screen and (max-width: 768px) {
+ .github-corner,
+ .sidebar-toggle,
+ .sidebar {
+ position: fixed;
+ }
+ .app-nav {
+ margin-top: 16px;
+ }
+ .app-nav li ul {
+ top: 30px;
+ }
+ main {
+ height: auto;
+ min-height: 100vh;
+ overflow-x: hidden;
+ }
+ .sidebar {
+ left: -270px;
+ transition: transform 250ms ease-out;
+ }
+ .content {
+ left: 0;
+ max-width: 100vw;
+ position: static;
+ padding-top: 20px;
+ transition: transform 250ms ease;
+ }
+ .app-nav,
+ .github-corner {
+ transition: transform 250ms ease-out;
+ }
+ .sidebar-toggle {
+ background-color: transparent;
+ width: auto;
+ padding: 10px 10px 8px;
+ }
+ body.close .sidebar {
+ transform: translateX(270px);
+ }
+ body.close .sidebar-toggle {
+ background-color: rgba(255, 255, 255, 0.89);
+ transition: 1s background-color;
+ width: 254px;
+ padding: 10px 10px 8px;
+ }
+ body.close .content {
+ transform: translateX(270px);
+ }
+ body.close .app-nav,
+ body.close .github-corner {
+ display: none;
+ }
+ .github-corner:hover .octo-arm {
+ animation: none;
+ }
+ .github-corner .octo-arm {
+ animation: octocat-wave 560ms ease-in-out;
+ }
+}
+@keyframes octocat-wave {
+ 0%, 100% {
+ transform: rotate(0);
+ }
+ 20%, 60% {
+ transform: rotate(-25deg);
+ }
+ 40%, 80% {
+ transform: rotate(10deg);
+ }
+}
+section.cover {
+ position: relative;
+ align-items: center;
+ background-position: center center;
+ background-repeat: no-repeat;
+ background-size: cover;
+ min-height: 100vh;
+ width: 100%;
+ display: none;
+}
+section.cover.show {
+ display: flex;
+}
+section.cover.has-mask .mask {
+ background-color: #fff;
+ opacity: 0.8;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ width: 100%;
+}
+section.cover .cover-main {
+ flex: 1;
+ margin: 0 16px;
+ text-align: center;
+ position: relative;
+}
+section.cover a {
+ color: inherit;
+ text-decoration: none;
+}
+section.cover a:hover {
+ text-decoration: none;
+}
+section.cover p {
+ line-height: 1.5rem;
+ margin: 1em 0;
+}
+section.cover h1 {
+ color: inherit;
+ font-size: 2.5rem;
+ font-weight: 400;
+ margin: 0.625rem 0 2.5rem;
+ position: relative;
+ text-align: center;
+}
+section.cover h1 a {
+ display: block;
+}
+section.cover h1 small {
+ bottom: -0.4375rem;
+ font-size: 1rem;
+ position: absolute;
+}
+section.cover blockquote {
+ font-size: 1.5rem;
+ text-align: center;
+}
+section.cover ul {
+ line-height: 1.8;
+ list-style-type: none;
+ margin: 1em auto;
+ max-width: 500px;
+ padding: 0;
+}
+section.cover .cover-main > p:last-child a {
+ padding: 14px 28px;
+ border-radius: 8px;
+ font-weight: 600;
+ box-sizing: border-box;
+ color: #42b983;
+ color: var(--theme-color, #42b983);
+ display: inline-block;
+ margin: .5rem .25rem;
+ transition: all 0.15s ease;
+}
+section.cover .cover-main > p:last-child a:first-child {
+ background-color: #42b983;
+ background-color: var(--theme-color, #42b983);
+ color: #fff;
+}
+section.cover .cover-main > p:last-child a:first-child:hover {
+ background-color: #42b983;
+ background-color: var(--theme-color, #42b983);
+ opacity: 0.7;
+}
+section.cover .cover-main > p:last-child a:hover {
+ background-color: #0000001b;
+}
+section.cover blockquote > p > a {
+ border-bottom: 2px solid #42b983;
+ border-bottom: 2px solid var(--theme-color, #42b983);
+ transition: color 0.3s;
+}
+section.cover blockquote > p > a:hover {
+ color: #42b983;
+ color: var(--theme-color, #42b983);
+}
+body {
+ background-color: #fff;
+}
+/* sidebar */
+.sidebar {
+ background-color: #fff;
+ color: #364149;
+}
+.sidebar ul li a {
+ color: #505d6b;
+ font-size: 14px;
+ padding: 8px 8px 8px;
+ margin-right: 8px;
+ border-radius: 6px;
+ font-weight: normal;
+ overflow: hidden;
+ text-decoration: none;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ transition: 0.1s;
+}
+.sidebar ul li.active > a,
+.sidebar-nav>ul>li>ul>li[class].collapse>a {
+ background-color: rgba(208, 215, 222, 0.24);
+}
+.sidebar ul li a:hover {
+ background-color: rgba(208,215,222,0.32);
+}
+.sidebar ul li.active > a::after,
+.sidebar-nav>ul>li>ul>li[class].collapse>a::after {
+ position: absolute;
+ left: 8px;
+ margin-top: -4px;
+ width: 4px;
+ height: 26px;
+ content: "";
+ background-color: var(--theme-color, #42b983);
+ border-radius: 2px;
+}
+.app-sub-sidebar li>a::after {
+ height: 24px !important;
+}
+.sidebar-nav>ul>li>ul>li[class]>a {
+ font-weight: 600;
+}
+.sidebar-nav>ul>li>ul>li[class]>a::before {
+ content: "";
+ background: currentColor;
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' class='StyledOcticon-sc-1lhyyr-0 iHjBQD' width='16' height='16' fill='currentColor' style='display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible'%3E%3Cpath d='M12.78 6.22a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L3.22 7.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L8 9.94l3.72-3.72a.75.75 0 0 1 1.06 0z'/%3E%3C/svg%3E");
+ width: 16px;
+ height: 16px;
+ float: right;
+ margin-top: 1.5px;
+ rotate: 180deg;
+ background-repeat: no-repeat;
+}
+.sidebar-nav>ul>li>ul>li[class].collapse>a::before {
+ rotate: 0deg;
+}
+
+/* markdown content found on pages */
+.markdown-section :is(h1, h2, h3, h4),
+.markdown-section strong {
+ color: #2c3e50;
+ font-weight: 600;
+}
+.markdown-section :is(h1, h2, h3, h4, h5, h6) a {
+ text-decoration: none !important;
+}
+.markdown-section a>span:hover:before {
+ margin: 0 8px 0 -24px;
+ width: 16px;
+ height: 16px;
+ content: ' ';
+ display: inline-block;
+ background-color: currentColor;
+ mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>");
+}
+.markdown-section a {
+ color: #42b983;
+ color: var(--theme-color, #42b983);
+ text-underline-offset: 25%;
+}
+.markdown-section h1:first-child {
+ font-size: 3rem;
+}
+.markdown-section h1 {
+ font-size: 2rem;
+ margin: 0 0 1rem;
+}
+.markdown-section h2 {
+ font-size: 1.75rem;
+ margin: 45px 0 0.8rem;
+}
+.markdown-section h3 {
+ font-size: 1.5rem;
+ margin: 40px 0 0.6rem;
+}
+.markdown-section h4 {
+ font-size: 1.25rem;
+}
+.markdown-section h5 {
+ font-size: 1rem;
+}
+.markdown-section h6 {
+ color: #777;
+ font-size: 1rem;
+}
+.markdown-section figure,
+.markdown-section p {
+ margin: 1.2em 0;
+}
+.markdown-section p,
+.markdown-section ul,
+.markdown-section ol {
+ line-height: 1.6rem;
+ word-spacing: 0.05rem;
+}
+.markdown-section ul,
+.markdown-section ol {
+ padding-left: 1.5rem;
+}
+.markdown-section blockquote {
+ border-left: 4px solid #D0D7DE;
+ color: #656d76;
+ margin: 2em 0;
+ padding-left: 20px;
+}
+.markdown-section blockquote p {
+ font-weight: 600;
+ margin-left: 0;
+}
+.markdown-section iframe {
+ margin: 1em 0;
+}
+.markdown-section em {
+ color: #7f8c8d;
+}
+.markdown-section code,
+.markdown-section pre,
+.markdown-section output::after {
+ font-family: monospace;
+}
+.markdown-section code,
+.markdown-section pre {
+ background-color: #f6f8fa;
+ border-radius: 6px;
+}
+.markdown-section pre,
+.markdown-section output {
+ margin: 1.2em 0;
+ position: relative;
+}
+.markdown-section pre > code,
+.markdown-section output {
+ border-radius: 2px;
+ display: block;
+}
+.markdown-section pre > code,
+.markdown-section output::after {
+ -moz-osx-font-smoothing: initial;
+ -webkit-font-smoothing: initial;
+}
+.markdown-section code {
+ border-radius: 6px;
+ margin: 0 2px;
+ padding: .2em .4em;
+ white-space: pre-wrap;
+}
+.markdown-section > :not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) code {
+ font-size: 0.8rem;
+}
+.markdown-section pre {
+ padding: 0 16px;
+ line-height: 1.5rem;
+ overflow: auto;
+ word-wrap: normal;
+}
+.markdown-section pre > code {
+ color: #000000;
+ font-size: 0.8rem;
+ padding: 16px 0;
+ line-height: inherit;
+ margin: 0 2px;
+ max-width: inherit;
+ overflow: inherit;
+ white-space: inherit;
+}
+.markdown-section output {
+ padding: 1.7rem 1.4rem;
+ border: 1px dotted #ccc;
+}
+.markdown-section output > :first-child {
+ margin-top: 0;
+}
+.markdown-section output > :last-child {
+ margin-bottom: 0;
+}
+.markdown-section code::after,
+.markdown-section code::before,
+.markdown-section output::after,
+.markdown-section output::before {
+ letter-spacing: 0.05rem;
+}
+.markdown-section pre::after,
+.markdown-section output::after {
+ color: #ccc;
+ font-size: 0.6rem;
+ font-weight: 600;
+ height: 15px;
+ line-height: 15px;
+ padding: 5px 10px 0;
+ position: absolute;
+ right: 0;
+ text-align: right;
+ top: 0;
+}
+.markdown-section pre::after,
+.markdown-section output::after {
+ content: attr(data-lang);
+}
+/* code highlight */
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+ color: #8e908c;
+}
+.token.namespace {
+ opacity: 0.7;
+}
+.token.boolean,
+.token.number {
+ color: #c76b29;
+}
+.token.punctuation {
+ color: #525252;
+}
+.token.property {
+ color: #c08b30;
+}
+.token.tag {
+ color: #2973b7;
+}
+.token.string {
+ color: #42b983;
+ color: var(--theme-color, #42b983);
+}
+.token.selector {
+ color: #6679cc;
+}
+.token.attr-name {
+ color: #2973b7;
+}
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+ color: #22a2c9;
+}
+.token.attr-value,
+.token.control,
+.token.directive,
+.token.unit {
+ color: #42b983;
+ color: var(--theme-color, #42b983);
+}
+.token.keyword,
+.token.function {
+ color: #e96900;
+}
+.token.statement,
+.token.regex,
+.token.atrule {
+ color: #22a2c9;
+}
+.token.placeholder,
+.token.variable {
+ color: #3d8fd1;
+}
+.token.deleted {
+ text-decoration: line-through;
+}
+.token.inserted {
+ border-bottom: 1px dotted #202746;
+ text-decoration: none;
+}
+.token.italic {
+ font-style: italic;
+}
+.token.important,
+.token.bold {
+ font-weight: bold;
+}
+.token.important {
+ color: #c94922;
+}
+.token.entity {
+ cursor: help;
+}
+code .token {
+ -moz-osx-font-smoothing: initial;
+ -webkit-font-smoothing: initial;
+ min-height: 1.5rem;
+ position: relative;
+ left: auto;
+} \ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
index f653dd2..0a4f5af 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -6,10 +6,12 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta
name="description"
- content="API Documentations for developing plugins for Sakuya AC"
+ content="Documentation for Sakuya AC, The Perfect and Elegant YSFlight Proxy Server.
+ Fully free and open source licensed under the GPLv3 License. Stupid fast and has plugin support!"
/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" />
- <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css" />
+ <!-- <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css" /> -->
+ <link rel="stylesheet" href="github.css" />
</head>
<body>
<div id="app"></div>
@@ -21,6 +23,8 @@
loadSidebar: true,
onlyCover: true,
coverpage: true,
+ themeColor: "#3F51B5",
+ loadFooter: true,
plugins: [
function (hook) {
hook.doneEach(function () {
@@ -38,5 +42,7 @@
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-python.min.js"></script>
<!-- Collapsable side bar -->
<script src="//cdn.jsdelivr.net/npm/docsify-sidebar-collapse/dist/docsify-sidebar-collapse.min.js"></script>
+ <!-- Footer -->
+ <script src=" https://cdn.jsdelivr.net/npm/@alertbox/[email protected]/dist/docsify-footer.min.js "></script>
</body>
</html>
diff --git a/docs/user/README.md b/docs/user/README.md
index 8626ae1..93c8b04 100644
--- a/docs/user/README.md
+++ b/docs/user/README.md
@@ -10,10 +10,7 @@ This guide will help you to install Sakuya AC on your server
## Quick Start Guide
-1. Clone the git repository
-```bash
-git clone [email protected]:the-indian-dev/sakuya-ac
-```
+1. Download the latest version of Sakuya AC from [here](https://github.com/the-indian-dev/sakuya-ac/releases/)
2. You will need Python 3.9 or above to run Sakuya AC
Please make sure you have correct version of Python
diff --git a/docs/user/_sidebar.md b/docs/user/_sidebar.md
index fe12b7f..4d5cca9 100644
--- a/docs/user/_sidebar.md
+++ b/docs/user/_sidebar.md
@@ -1,3 +1,4 @@
* [Getting Started](/user/README.md)
* [Advanced Configuration](/user/advanced.md)
* [Setting up Discord Chat Sync](/user/discord.md)
+* [Plugin Configuration](/user/plugins.md)
diff --git a/docs/user/plugins.md b/docs/user/plugins.md
new file mode 100644
index 0000000..964f05c
--- /dev/null
+++ b/docs/user/plugins.md
@@ -0,0 +1,107 @@
+# Installing Plugins
+!> Plugins can be harmful to your computer, please install from trusted sources.
+ We are NOT responsible for installing plugins from untrusted sources.
+
+1. Download plugins from a trusted source
+2.
+- If the plugin is a ``.py`` file then put it in the ``plugins`` directory
+- If the plugin is a ``.zip`` file then extract it and put it in the ``plugins`` directory
+3. Set the ``ENABLED`` variable in the plugin file to ``True``
+
+# Configuring Plugins
+
+Plugins installed are located in the ``plugins`` directory in root.
+
+- For single file plugins
+
+ Single file plugins are those which only have a single ``.py`` file and are
+ located under the ``plugins`` directory directly.
+
+ 1. Open the ``.py`` file of the plugin
+ 2. You will see configurable variables on the top of the file which will be written in
+ capital letters
+ > eg.
+ > ```python
+ > ENABLED = True # Enable the Plugin, setting to false will not load the plugin into Sakuya AC
+ > OTHER_VAR = 10 # Some other variable, can be changed accordingly
+ >
+ > another_var = 120 # Since this is in small letter,
+ > # not recommended to change, these are inner workings of the plugin
+ > ```
+ 3. Save the edited file and run the proxy
+
+- For multi file plugins
+
+ 1. Open the sub directory, the folor inside ``Plugins`` folder where the plugin is located
+ 2. You will see the main ``Plugin.py`` file along with other file. Edit this file to configure the plugin.
+ 3. Follow the same instructions as above to configure the plugin.
+
+# Standard Plugin Configuration
+
+## Over G Damage
+
+This plugin allows you to set the damage that a player will take when they go over the G limit.
+The G limit is congigurable in the main ``config.py`` file.
+
+Configurable Variables:
+- ``INTERVAL`` : The interval in which the plugin checks for G Limit, measured in seconds. Default is ``0.2`` seconds.
+
+## Radar
+
+This plugin allows radar functionality in the game. It will not allow
+enemy aircrafts of different IFFs to be seen on each other's radar while not in range
+
+- Configurable Variables:
+ - ``RADIUS`` : The range of the radar in meters. Default is ``5000`` meters.
+ 1. ``5000`` meters is quite small, it is only for testing reasons. Can be fun
+ for hide and seek games.
+ 2. For relastic combat, set it to ``50000`` meters.
+ 3. For fast paced games, I recommend setting it to ``20000`` meters.
+
+## Refuel
+
+This plugin adds Mid air refueling functionality to the game.
+
+- Configurable Variables:
+ - ``FUEL_RATE`` : The rate at which the aircraft refuels in liters per second. Default is ``50`` kgs per second.
+ This might be bit fast compared to real world. For realistic gameplay, set it to ``10`` kgs per second.
+
+ - ``REFUEL_RADIUS`` : The radius in which the aircraft can refuel. Default is ``500`` meters.
+ YSFlight is prone to distance lag, please set it 100-200 m more than what you want to account for distance lag.
+
+## Custom Aircraft List
+
+This plugin allows you send custom aircraft lst to the all the Player. It is more
+of a example plugin and doesnt have any real use case.
+
+- ``custom_list.json`` file contains the list of aircraft's to be sent to the client via the plugin
+
+## Smoke on Damage
+
+This plugins allows Engine breakdown mechanics(The plane cant turn on afterburner when it haslow health) and
+plane release smoke when it is damaged. The minimum life at which this happens can be configured
+via the main ``config.py`` file.
+
+## Aircraft Replacer
+
+Example Plugin for developers to understand, replaces any aircraft that player flies with a
+EUROFIGHTER Typhoon.
+
+## All Caps
+
+Example Plugin, converts all the chat messages to uppercase.
+
+## Chat Weather Setter
+
+This plugin allows the clients to set the weather for themselves client side via chat commands.
+It allows for people to take cool screenshots. No configurable variable.
+
+## Command Test
+
+Template plugin for developers
+
+## Discolight
+
+!> Ellipsy Warning! This plugin is not recommended for use in public servers as it can cause seizures.
+
+Changes the sky and fog color rapidly to simulate "disco" lights.