Find a file
Ivan Kolos 7d07627cc0
Landmark filter, first/last entry rows, and a landing that shows the action above (#598)
## Summary

- **Landmark filter.** A filter heads the Navigation tab's landmark
list, in the form of the Timeline's reference-point filter. It has three
remembered options: first and last entry, chapter borders (chapter
starts and "The Story Continues" together), and checkpoints (checkpoint
rows and the branch's origin row). The icon stays amber while any option
is off, including on hover; the Timeline's reference-point filter gets
the same hover treatment.
- **First entry / Last entry rows.** The list gains a row on the
earliest entry of the branch as read and one on its last. A single entry
gets only the first. Both stay on the current branch in every navigation
mode.
- **"The Story Continues" note.** That row carries an info icon
explaining that it points at the first entry after the last chapter:
shown after a short hover with a mouse, on tap on touch.
- **Landing position.** A jump lifts the view so the entry above the
landing shows with its card's top border: whole when within 30% of the
viewport, clipped at that height when taller, with half the gap between
cards as the margin above it so the card before stays out of view.

## Notes

- Settings are `nav_show_first_last`, `nav_show_chapters` and
`nav_show_checkpoints`, read at start-up next to `gallery_newest_first`.
No schema, export or sync changes.
- The "Orphaned" section is not filtered; it is where orphaned
checkpoints are cleared out.
- `docs/architecture/overview.md` describes the rows, the options and
the landing rule.

## Test plan

- [x] `npm run check`, `npm test` for `storyNavigation` (new cases for
the rows and for `contextLift`), `npm run lint`
- [x] In the app: untick each option and see the matching rows leave and
the filter turn amber, restart and see it remembered
- [x] In the app: jump to a narration from a landmark and see the player
action above it with its top border and a small margin, with the
previous narration out of view

🤖 Generated with [Claude Code](https://claude.com/claude-code)


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added first-entry and last-entry landmarks to story navigation, with
distinct icons and an informational popover for tail landmarks.
* Added filters for first/last entries, chapters, and checkpoints.
Filter selections are saved and restored between sessions.
  * Added clearer empty-state messaging when filters hide all landmarks.
* **Improvements**
* Adjusted entry landing to reveal surrounding story context and
continue following narration when landing on the last entry.
  * Kept the active timeline filter button amber on hover.
  * Resetting settings restores all landmark categories to visible.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 21:03:11 -04:00
.cargo Add Incognito Keyboard option for Android (#467) 2026-08-26 20:45:30 -04:00
.github Release the version bump from the current branch (#600) 2026-10-10 13:27:52 -04:00
docs Landmark filter, first/last entry rows, and a landing that shows the action above (#598) 2026-10-10 21:03:11 -04:00
scripts Release the version bump from the current branch (#600) 2026-10-10 13:27:52 -04:00
src Landmark filter, first/last entry rows, and a landing that shows the action above (#598) 2026-10-10 21:03:11 -04:00
src-tauri chore: bump version to 0.7.12 2026-10-09 18:39:28 -04: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 Fix CRLF Migrations (#162) 2026-02-22 15:46:59 -05:00
.gitignore Overhaul CI/CD: Node 24, shared release workflows, faster cached builds (#518) 2026-09-16 22:38:32 -04:00
.nvmrc Overhaul CI/CD: Node 24, shared release workflows, faster cached builds (#518) 2026-09-16 22:38:32 -04:00
.prettierrc fix: prettier, eslint, pipeline (#71) 2026-02-06 00:49:36 +01:00
CLAUDE.md Add a newest-first toggle to the story gallery (#589) 2026-10-08 21:32:06 -04:00
compileApk.sh Android build hygiene: minSdk 26, lint in CI, resource cleanup (#468) 2026-08-29 21:52:01 -04:00
components.json fix: prettier, eslint, pipeline (#71) 2026-02-06 00:49:36 +01:00
eslint.config.js Fix crash on characters with repeated traits (#585) 2026-10-07 18:15:47 -04:00
lefthook.yml Route dev/build/release scripts through aube when it installed node_modules (#552) 2026-09-28 14:34:27 -04: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.12 2026-10-09 18:39:28 -04:00
package.json chore: bump version to 0.7.12 2026-10-09 18:39:28 -04:00
README.md Add a newest-first toggle to the story gallery (#589) 2026-10-08 21:32:06 -04: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
tsconfig.json Initial commit 2025-12-30 16:08:22 -07:00
vite.config.js fix: prettier, eslint, pipeline (#71) 2026-02-06 00:49:36 +01:00
vitest.config.ts Validated release script, extracted version arithmetic, lint config fixes (#416) 2026-08-08 19:55:23 +02:00

Aventuras

Interactive fiction with an AI that remembers. Play a text adventure or write collaboratively, on desktop and Android, with any LLM provider you like — cloud or running on your own machine.

Aventuras keeps the story straight: chapters are summarized as you play, a lorebook feeds the right entries into the right scene, an agent tidies that lorebook behind you, and the world state — who is present, where you are, what you carry — is tracked turn by turn.

Highlights

  • Two modes — Adventure, with multiple-choice actions and world tracking; Creative Writing, freeform with AI suggestions. First/second/third person, past or present tense.
  • Any provider — OpenRouter, OpenAI, Anthropic, Google, xAI, Groq, DeepSeek, Mistral, Z.AI, NanoGPT, Chutes, Pollinations, NVIDIA NIM, plus local llama.cpp, LM Studio and Ollama. Streaming, extended thinking, and per-subsystem Agent Profiles so retrieval, classification and narration can each use a different model.
  • Memory that scales — automatic chapter summarization, and a retrieval step that goes and finds what the current scene needs from everything that came before.
  • Lorebook — characters, locations, items, factions, concepts and events, with aliases, secrets, keyword and relevance-based injection, SillyTavern import, and an autonomous agent that consolidates duplicates and fills gaps.
  • The Vault — a cross-story library of reusable characters, lorebooks and scenarios, with a tool-calling assistant that edits them and shows you a diff before anything lands.
  • Every prompt is editable — they are Liquid templates, all of them, in an in-app editor.
  • Images — inline <pic> illustrations, scene backgrounds and character portraits, across nine backends including local ComfyUI and A1111.
  • Writing tools — local grammar checking (Harper/WASM), style analysis for repetition, suggestions that match how you write.
  • Yours to keep — SQLite on your machine, full backup/restore, .avt story export, LAN sync between devices over QR pairing, and an optional translation layer over the whole app.
  • 26 themes, adjustable text size, dialogue highlighting.

Install

Pre-built binaries are on the Releases page:

Platform Download Minimum
Windows Aventuras_vX.Y.Z_x64-setup.exe Windows 10
macOS Aventuras_vX.Y.Z_x64.dmg / _aarch64.dmg macOS 13.3
Linux Aventuras_vX.Y.Z_amd64.deb / .AppImage, or _x86_64.rpm WebKitGTK 2.40 for the .deb / .rpm; the AppImage carries its own, needs glibc 2.35
Android Aventuras_vX.Y.Z.apk Android 8, with System WebView 111 or later
iOS Aventuras_vX.Y.Z_ios-arm64-unsigned.ipa (sideload; unsigned) iOS 16.4

The minimums come from each platform's web engine, OS and runtime requirements. They are derived from documentation and have not been tested on devices at those versions; see docs/development/platform-support.md.

No API keys in config files — providers are set up in the app, under Settings → API Settings.

Build from source

Requires the Node.js version in .nvmrc, the latest stable Rust, (for Android) the Android SDK, NDK r27d and JDK 21–24, and (for iOS) a Mac with Xcode.

git clone https://github.com/AventurasTeam/Aventuras.git
cd Aventuras
npm install
npx tauri dev
Script Does
npm run dev Vite dev server (frontend only)
npx tauri dev full app, with hot reload
npm run build production build
npm run check type checking (svelte-check)
npm test test suite (Vitest)
npm run lint ESLint — lint:fix to fix
npm run format Prettier
npm run release version bump, tag and push

Desktop builds are npx tauri build; Android and iOS are documented in docs/development/release.md. iOS produces an unsigned device .ipa (no Apple certificates or signing secrets — see docs/development/ios-build-target.md for the full account of how the target was added and how the unsigned CI pipeline works).

Tech stack

TypeScript (strict) · SvelteKit 2 · Svelte 5 runes · Tauri 2 (Rust) · Tailwind + shadcn-svelte · SQLite (tauri-plugin-sql / sqlx) · Vercel AI SDK · LiquidJS · CodeMirror 6 · Zod · Harper.js (WASM) · Vitest

Contributing

Start with docs/ — the architecture is documented per area, and CLAUDE.md has the conventions. CI runs lint, type-check, tests and a build on every PR against master, develop or dev.

Acknowledgments

Tauri · SvelteKit · OpenRouter · Harper · Lucide

License

AGPL-3.0