Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
454b978
Improve Inky UI, web export, and scene clearing
glassflare Oct 18, 2026
d136f1c
Remove Linux download and troubleshooting section
glassflare Oct 18, 2026
58055aa
Update Inky source to revision 67
glassflare Nov 2, 2026
9ee8332
Refresh project README in Portuguese
glassflare Nov 2, 2026
671f470
Write project README in English
glassflare Nov 2, 2026
4b4cbe2
Rewrite README to document current Inky fork features
glassflare Nov 3, 2026
60c896a
Update README.md
glassflare Nov 3, 2026
91dfb9b
Refresh README screenshots and feature notes
glassflare Nov 3, 2026
15b91ec
Update README.md
glassflare Nov 3, 2026
d85901b
Delete examples directory
glassflare Nov 3, 2026
81c794e
Update image in README.md
glassflare Nov 3, 2026
cc9902e
Update README.md
glassflare Nov 3, 2026
29bf142
Update README screenshots
glassflare Nov 3, 2026
61529a9
Add floating bold/italic formatting toolbar
glassflare Nov 3, 2026
f003049
Remove obsolete test stories and screenshots
glassflare Nov 3, 2026
d21698f
Update README.md
glassflare Nov 3, 2026
d64472c
Delete historia-expandida.ink
glassflare Nov 3, 2026
7f4c7a7
Update title formatting in README.md
glassflare Nov 3, 2026
85705e7
Delete docs/screenshots/welcome.png
glassflare Nov 3, 2026
aec42b7
Add files via upload
glassflare Nov 3, 2026
ec74f65
Delete docs/screenshots/title-screen.png
glassflare Nov 3, 2026
cd6fcb1
Add files via upload
glassflare Nov 3, 2026
e22cd8c
docs: refresh README for r109 with authentic Before Dawn screenshots
glassflare Nov 8, 2026
a707d4e
Release Inky 0.15.2-109 with validated fixes
Copilot Nov 8, 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: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,7 @@ app/renderer/documentation/
*.AppImage
AppImage
.DS_Store
/package-lock.json
PROJECT_STATE.md
SOURCE_MATCHING.md
SOURCE_MATCHING.txt
35 changes: 35 additions & 0 deletions BUILD_DEB.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#!/usr/bin/env sh
set -eu
ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
APP_DIR=${INKY_LINUX_APP_DIR:-"$ROOT_DIR/Inky-linux-x64"}
REVISION=${INKY_DEB_REVISION:-77}
case "$REVISION" in ''|*[!0-9]*) echo 'Invalid Debian revision' >&2; exit 1;; esac
VERSION=$(node -p 'require(process.argv[1]).version' "$ROOT_DIR/app/package.json")-$REVISION
OUTPUT_DIR="$ROOT_DIR/ReleaseUpload"
OUTPUT_FILE="$OUTPUT_DIR/inky_${VERSION}_amd64.deb"
command -v dpkg-deb >/dev/null
command -v python3 >/dev/null
test -f "$APP_DIR/resources/app/package.json"
test ! -e "$APP_DIR/resources/app.asar"
STAGE=$(mktemp -d "${TMPDIR:-/tmp}/inky-deb.XXXXXX")
trap 'rm -rf "$STAGE"' EXIT HUP INT TERM
mkdir -p "$STAGE/opt/inky" "$STAGE/usr/bin" "$STAGE/usr/share/applications" "$STAGE/usr/share/icons/hicolor/256x256/apps" "$STAGE/DEBIAN" "$OUTPUT_DIR"
cp -a "$APP_DIR/." "$STAGE/opt/inky/"
install -m 644 "$ROOT_DIR/resources/com.inkle.inky.desktop" "$STAGE/usr/share/applications/inky.desktop"
install -m 644 "$ROOT_DIR/app/renderer/about/icon-round.png" "$STAGE/usr/share/icons/hicolor/256x256/apps/inky.png"
ln -s /opt/inky/Inky "$STAGE/usr/bin/inky"
# Include ALL parent directories, especially /opt: root-only staging permissions
# must never be propagated to a user's installation.
find "$STAGE" -type d -exec chmod 755 {} +
find "$STAGE" -type f -exec chmod a+r {} +
chmod 755 "$STAGE/opt/inky/Inky"
chmod 755 "$STAGE/opt/inky/resources/app/main-process/ink/inklecate_linux"
chmod 755 "$STAGE/opt/inky/resources/app/main-process/ink/inkjs-compatible/inklecate_linux"
chmod 4755 "$STAGE/opt/inky/chrome-sandbox"
python3 "$ROOT_DIR/build/application_manifest.py" "$STAGE/opt/inky/resources"
SIZE=$(du -sk "$STAGE" | cut -f1)
sed -e "s/@VERSION@/$VERSION/" -e "s/@SIZE@/$SIZE/" "$ROOT_DIR/build/debian-control.in" > "$STAGE/DEBIAN/control"
chmod 644 "$STAGE/DEBIAN/control"
dpkg-deb --build --root-owner-group "$STAGE" "$OUTPUT_FILE"
python3 "$ROOT_DIR/build/verify_deb.py" "$OUTPUT_FILE"
printf 'Created %s\n' "$OUTPUT_FILE"
9 changes: 6 additions & 3 deletions BUILD_FOR_LINUX.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,14 @@ zip -r ReleaseUpload/Inky_linux.zip Inky-linux-x64
mkdir -p AppImage/opt/inky
mkdir -p AppImage/usr/share/pixmaps

cp resources/AppRun AppImage/
install -m 755 resources/AppRun AppImage/AppRun
cp resources/com.inkle.inky.desktop AppImage/
cp resources/Icon1024.png AppImage/inky.png
cp resources/Icon1024.png AppImage/usr/share/pixmaps/inky.png
cp app/renderer/about/icon-round.png AppImage/inky.png
cp app/renderer/about/icon-round.png AppImage/usr/share/pixmaps/inky.png
cp -r Inky-linux-x64/* AppImage/opt/inky/

#Build AppImage File ready for upload
ARCH=x86_64 ./build/appimagetool-x86_64.AppImage -n AppImage ReleaseUpload/Inky.AppImage

#Build Debian package with a system-wide application launcher
./BUILD_DEB.sh
9 changes: 9 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
MIT License
Copyright (c) 2016 inkle Ltd.
Copyright (c) 2026 Kernel Trace (核追跡) (fork changes)

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
240 changes: 130 additions & 110 deletions README.md

Large diffs are not rendered by default.

66 changes: 0 additions & 66 deletions TODO.md

This file was deleted.

4 changes: 3 additions & 1 deletion app/build-package.js
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,9 @@ async function buildPackageForPlatform(targetPlatform) {
prune: true,
asar: {
unpackDir: 'main-process/ink'
}
},
// Bundled example projects are kept in source; the interactive showcase ships in app/resources.
extraResource: []
};

if( targetPlatform == "mac" ) {
Expand Down
Binary file added app/export-for-web-template/favicon.ico
Binary file not shown.
61 changes: 47 additions & 14 deletions app/export-for-web-template/index.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!doctype html>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
Expand All @@ -7,32 +7,65 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<link rel="icon" href="##FAVICON-FILENAME##" type="##FAVICON-TYPE##">
<link rel="stylesheet" href="style.css">
<script>try{if(localStorage.getItem("inky-look:"+location.pathname)==="alternate")document.documentElement.setAttribute("data-look","alternate")}catch(e){}</script>

</head>

<body>
<body data-story-format="vertical" data-presentation="##PRESENTATION##" data-ending-show="##ENDING-SHOW##" data-ending-text="##ENDING-TEXT##" data-play-again-show="##PLAY-AGAIN-SHOW##" data-play-again-text="##PLAY-AGAIN-TEXT##" data-audio="##AUDIO##" data-volume="##VOLUME##" data-master-volume="##MASTER-VOLUME##" data-music-volume="##MUSIC-VOLUME##" data-sfx-volume="##SFX-VOLUME##" data-theme-toggle="##THEME-TOGGLE##" data-theme-initial="##THEME-INITIAL##" data-theme-alternate="##THEME-ALTERNATE##">

<div class="outerContainer">
<h3 class="written-in-ink"><a href="https://www.inklestudios.com/ink">WRITTEN IN INK</a></h3>
<div id="story" class="container title-screen-active">

<div id="controls" class="buttons">
<a id="rewind" title="Restart story from beginning">restart</a>
<a id="save" title="Save progress">save</a>
<a id="reload" title="Reload from save point">load</a>
<a id="theme-switch" title="Switch theme">theme</a>
</div>
<header id="controls" class="story-hud">
<div class="story-actions">
<div class="toolbar-popover-anchor">
<button type="button" id="menu-toggle" class="toolbar-icon-button" aria-label="Story menu" aria-expanded="false" aria-controls="story-menu" title="Story menu">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 7h16M4 12h16M4 17h16"/></svg>
</button>
<div id="story-menu" class="toolbar-popover" hidden>
<button type="button" id="rewind" title="Restart story" aria-label="Restart story">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4.5 11a7.5 7.5 0 1 1 .8 4.7M4.5 5.5V11H10"/></svg>
<span>Restart story</span>
</button>
<button type="button" id="save" title="Save progress" aria-label="Save progress">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 3.75h12a1 1 0 0 1 1 1v15.5l-7-4.25-7 4.25V4.75a1 1 0 0 1 1-1Z"/></svg>
<span>Save progress</span>
</button>
<button type="button" id="theme-toggle" title="Change theme" aria-label="Change theme" hidden>
<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="8"/><path d="M12 4a8 8 0 0 1 0 16Z" fill="currentColor"/></svg>
<span>Dark theme</span>
</button>
<div id="audio-settings-anchor" hidden>
<span id="audio-control" class="audio-control" hidden>
<button type="button" id="audio-toggle" title="Sound on/off" aria-label="Sound on/off">
<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2.5 6h2.2L8 3.2v9.6L4.7 10H2.5z" fill="currentColor"/><path class="wave" d="M10.3 5.7a3.3 3.3 0 0 1 0 4.6"/><path class="wave" d="M12 4a5.6 5.6 0 0 1 0 8"/><path class="slash" d="M10.5 6l4 4M14.5 6l-4 4"/></svg>
</button>
<input type="range" id="audio-volume" min="0" max="100" step="1" value="50" aria-label="Volume">
</span>
</div>
</div>
</div>
</div>
</header>

<div id="story" class="container">
<div class="header">
<h1>##STORY TITLE##</h1>
<h2 class="byline"></h2>
</div>
##TITLE-SCREEN##
<div id="story-visual" class="story-visual" hidden></div>
<div id="story-passage" class="story-passage" hidden></div>
<div id="story-pager" class="story-pager" hidden></div>
<div id="story-choices" class="story-choices" hidden></div>
<div class="scroll-cue" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M6 9.5 12 15l6-5.5"/></svg></div>
</div>
</div>

<script src="ink.js"></script>
<script src="##JAVASCRIPT FILENAME##"></script>
<script src="richtext.js"></script>
<script src="pager.js"></script>
<script src="choice-text.js"></script>
<script src="screen-mode.js"></script>
<script src="ending-marker.js"></script>
<script src="main.js"></script>
</body>
</html>
Loading