Find a file
munimunigamer c4c6c9a1a5 Fix VariableCard $effect.pre resetting all cards on any change
The $effect.pre tracked the entire variable prop, causing all
VariableCards to collapse and reset their edit state whenever any
variable in the list changed. Now tracks variable.id so only the
card whose identity changed gets reset.
2026-02-17 20:23:46 -06:00
.github/workflows Merge branch 'dev' into feat/separate-image-profiles 2026-02-17 18:59:46 -06:00
scripts Fix upstream repo in release.js 2026-02-17 20:28:43 -05:00
src Fix VariableCard $effect.pre resetting all cards on any change 2026-02-17 20:23:46 -06:00
src-tauri Fix duplicate migration 025 filename prefix 2026-02-17 20:23:37 -06:00
static switched font for logo 2026-01-19 14:48:22 -06:00
third-party-licenses Added harper 2026-01-02 05:08:39 -07:00
.gitattributes Db rework (#140) (#141) 2026-02-13 17:37:27 +05:30
.gitignore chore: untrack .planning directory and add to .gitignore 2026-02-17 00:11:35 -06:00
.prettierrc fix: prettier, eslint, pipeline (#71) 2026-02-06 00:49:36 +01:00
AGENTS.md chore: format md files 2026-02-11 11:31:34 +01:00
components.json fix: prettier, eslint, pipeline (#71) 2026-02-06 00:49:36 +01:00
eslint.config.js fix: prettier, eslint, pipeline (#71) 2026-02-06 00:49:36 +01:00
lefthook.yml fix: prettier, eslint, pipeline (#71) 2026-02-06 00:49:36 +01:00
LICENSE.md Db rework (#140) (#141) 2026-02-13 17:37:27 +05:30
logo.png switched font for logo 2026-01-19 14:48:22 -06:00
package-lock.json chore: bump version to 0.7.0-pre.2 2026-02-17 20:31:02 -05:00
package.json chore: bump version to 0.7.0-pre.2 2026-02-17 20:31:02 -05:00
README.md chore: format md files 2026-02-11 11:31:34 +01:00
sun4.jpg Use custom icon for android 2026-01-03 07:08:45 -07:00
sun17.jpg Use custom icon for android 2026-01-03 07:08:45 -07:00
sun2022.png Use custom icon for android 2026-01-03 07:08:45 -07:00
svelte.config.js fix: prettier, eslint, pipeline (#71) 2026-02-06 00:49:36 +01:00
tailwind.config.ts fix: prettier, eslint, pipeline (#71) 2026-02-06 00:49:36 +01:00
tsconfig.json Initial commit 2025-12-30 16:08:22 -07:00
vite.config.js fix: updates to change opt imize Deps 2026-02-13 21:38:52 -06:00

Aventuras

AI-powered interactive fiction and creative writing application built with Tauri, SvelteKit, and TypeScript.

Features

Story Modes

  • Adventure Mode - Interactive fiction with multiple-choice actions and world tracking
  • Creative Writing Mode - Freeform collaborative writing with AI-generated suggestions
  • POV Options - First, second, or third person perspective
  • Tense Control - Past or present tense narrative style

AI Integration

  • OpenRouter API integration for 70+ LLM providers and models
  • Streaming responses with real-time text generation
  • Configurable models, temperature, and token limits
  • Extended thinking/reasoning support with configurable effort levels
  • Custom API endpoints for OpenAI-compatible providers
  • API profiles for saving multiple configurations

Memory System

  • Automatic chapter summarization to manage context windows
  • Configurable token thresholds and chapter buffers
  • Manual chapter creation and resummarization
  • AI-powered memory retrieval for relevant past events
  • Chapter metadata tracking (keywords, characters, locations, plot threads)
  • In-story time tracking per chapter

Lorebook

  • Unified entry system for characters, locations, items, factions, concepts, and events
  • Dynamic state tracking (relationships, inventory, discoveries)
  • Keyword-based and relevance-based context injection
  • Hidden information and secrets system
  • Aliases for flexible entry referencing
  • Import/export support (JSON, YAML, SillyTavern format)
  • SillyTavern character card import (V1/V2 JSON and PNG)
  • AI-assisted autonomous lore management agent

Writing Tools

  • Local grammar checking powered by Harper.js (WebAssembly)
  • AI-powered style analysis for repetitive words and phrases
  • Action suggestions that match player writing style
  • Persistent action suggestions between sessions

World Tracking

  • Character relationships and dispositions with portrait support
  • Location visits and changes with automatic discovery
  • Inventory management with equipment tracking
  • Quest/story beat progression (milestones, revelations, plot points)
  • In-story time tracking (years, days, hours, minutes)
  • Collapsible UI cards for all world elements

Templates

  • Built-in genre templates (fantasy, sci-fi, mystery, horror, slice of life)
  • Custom template creation with system prompts
  • Initial state configuration (protagonist, locations, items)
  • Opening scene text support

Image Generation

  • Embedded image generation in story entries
  • AI-powered imageable scene detection
  • NanoGPT provider integration
  • Character portrait support for visual consistency
  • Configurable image size (512x512 or 1024x1024)

Save and Restore

  • Named checkpoints with full state snapshots
  • Retry system for undoing actions and generating alternatives
  • Character and time state preservation on retry

Network Sync

  • Local network sync between devices
  • QR code connection for easy pairing
  • Push/pull stories between devices
  • Server mode for sharing stories

UI Customization

  • Multiple themes (dark, light, light solarized, retro console)
  • Custom font selection (system or Google fonts)
  • Adjustable text size (small, medium, large)
  • Word count display toggle

Cross-Platform

  • Desktop (Windows, macOS, Linux)
  • Android (APK)
  • iOS (planned)

Tech Stack

  • Frontend: SvelteKit 5, TypeScript, Tailwind CSS
  • Backend: Tauri 2 (Rust)
  • Database: SQLite (via tauri-plugin-sql)
  • AI: OpenRouter API
  • Grammar: Harper.js (WASM)
  • Icons: Lucide

Installation

Download Pre-built Binaries

Pre-compiled binaries are available on the Releases page:

Platform Download
Windows aventuras_x.x.x_x64-setup.exe
macOS aventuras_x.x.x_x64.dmg
Linux aventuras_x.x.x_amd64.deb / .AppImage
Android aventuras_x.x.x.apk

Simply download the appropriate file for your platform and install.

Building from Source

Click to expand build instructions

Prerequisites

  • Node.js 18+
  • Rust (latest stable)
  • For Android: Android SDK, NDK, Java 17+

Setup

# Clone the repository
git clone https://github.com/unkarelian/Aventuras.git
cd aventuras

# Install dependencies
npm install

# Run in development mode
npm run dev

# Or run with Tauri (desktop app)
npm run tauri dev

Building Desktop

npm run tauri build

Building Android

# Initialize Android target (first time only)
npm run tauri android init

# Build APK
npm run tauri android build -- --apk true

The unsigned APK will be at:

src-tauri/gen/android/app/build/outputs/apk/universal/release/app-universal-release-unsigned.apk

Signing APK

# Create keystore (first time only)
keytool -genkey -v -keystore release.keystore -alias myalias -keyalg RSA -keysize 2048 -validity 10000

# Align APK
zipalign -v 4 app-universal-release-unsigned.apk app-aligned.apk

# Sign APK
apksigner sign --ks release.keystore --ks-key-alias myalias --out app-release.apk app-aligned.apk

Project Structure

aventuras/
├── src/
│   ├── lib/
│   │   ├── components/     # Svelte components
│   │   │   ├── layout/     # AppShell, Header, Sidebar
│   │   │   ├── story/      # StoryView, ActionInput, etc.
│   │   │   ├── lorebook/   # Lorebook management UI
│   │   │   ├── memory/     # Chapter/memory management
│   │   │   └── world/      # Character, Location, Inventory panels
│   │   ├── services/       # Business logic
│   │   │   ├── ai/         # AI services (OpenRouter, context, memory)
│   │   │   ├── database.ts # SQLite operations
│   │   │   └── grammar.ts  # Harper grammar checking
│   │   ├── stores/         # Svelte stores (state management)
│   │   └── types/          # TypeScript interfaces
│   └── routes/             # SvelteKit routes
├── src-tauri/              # Rust backend
│   ├── src/
│   └── Cargo.toml
├── static/                 # Static assets
└── package.json

Configuration

API Key Setup

  1. Get an API key from OpenRouter
  2. Open Aventuras settings
  3. Enter your API key in the API Settings section

Memory Configuration

Per-story memory settings:

  • Token Threshold: Context size before auto-summarization (default: 24,000)
  • Chapter Buffer: Recent messages protected from chapter boundaries (default: 10)
  • Auto-Summarize: Enable/disable automatic chapter creation

Development

# Type checking
npm run check

# Watch mode type checking
npm run check:watch

# Build frontend only
npm run build

# Preview built frontend
npm run preview

Acknowledgments