Repository navigation
Releases: lamtehe7-hash/stella-sora-tool
Releases · lamtehe7-hash/stella-sora-tool
Release list
Stella Sora Tool v0.4.6
v0.4.6 (2026-07-10) — pre-release — Web-UI fallback when the desktop UI fails
Machines WITH .NET still crash "Failed to resolve Python.Runtime…"
- Additional cause (beyond a missing .NET): a path containing accented Vietnamese characters —
clr_loaderencodes thePython.Runtime.dllpath to UTF-8 for the .NET shim, and an accented path
gets misread → the DLL won't load; or the files being blocked by Windows (Mark-of-the-Web) after
downloading. Both are common for Vietnamese users, and the machine does have .NET 4.8. - Web-UI fallback: when the desktop UI fails to start, the app now asks "Open the web UI instead?" —
press Yes to run the web interface (pywebio, opens in the browser) which needs no .NET/clr, so
it runs on any machine and any path. Press No to quit. - New
app.exe --webflag: launch straight into the web UI (make a shortcut if the desktop UI always
fails on that machine). - Error message fixed: it now suggests extracting to a non-accented path (e.g.
C:\StellaSoraTool) +
Unblock-ing the zip + installing .NET — instead of only mentioning .NET like v0.4.5.
Stella Sora Tool v0.4.5
v0.4.5 (2026-07-10) — pre-release — Friendly error when the machine is missing .NET Framework
Fix: app.exe crash "Failed to resolve Python.Runtime…" on machines without .NET
- Cause: the desktop UI (pywebview → WebView2) needs .NET Framework 4.8 to load
pythonnet.
A downloader's machine that is missing/old .NET Framework (< 4.7.2) crashes on launch with a
confusing PyInstaller traceback. The exe is not broken — the target machine lacks a Windows
component. - The app now catches this and shows a Vietnamese dialog guiding the user to install
.NET Framework 4.8 + WebView2 Runtime (with links) instead of a traceback. Other startup
failures also get a short message pointing to thelog/folder. - Docs: README (VN/EN), user guides, and the bundled
README.txtnow state the .NET Framework 4.8- WebView2 requirement.
Stella Sora Tool v0.4.4
New task: WeeklyReward (task #15, enabled by default)
- After DailyReward, opens Missions ▸ Weekly Affairs tab, presses Claim All when it is lit,
then claims the weekly-points chest row. Verified live on both paths (real claim + nothing-to-claim).
Grant — infinite-loop fix
Grantwas the only task that never rescheduled itself after finishing. Normally harmless, but if
its schedule ever slipped into the past (e.g. after a one-off error penalty), the scheduler re-ran
it back-to-back forever — entering and leaving the Startup Grant screen every ~6 seconds until
the click-spam guard tripped (GameTooManyClickError, seen in the field on 2026-07-09). Grant now
schedules itself to the next server reset like every other task.- Scheduler hardening: after any task finishes with its
next_runstill in the past, the
scheduler logs a warning and pushes it +60 minutes — no future task can hot-loop this way again. - Verified live: full claim run (Company Goal Today + Weekly targets → tier-up → Milestone) ending
with a correct next-reset schedule; plus an offline regression test for the scheduler guard.
Mail — stuck at Home
- The new-mail red dot overlapped the mail icon's corner and broke template matching
(score 0.752 < 0.85), so the task never entered the mail screen. Template re-cropped to the
dot-free left 2/3 of the envelope (threshold 0.80). Verified: matches with and without the dot,
still rejects other screens; full Mail run OK.
PurchaseGift — stuck on the "Items Obtained!" popup
- The blind-dismiss tap point (200,400) landed inside the popup's white item band, which swallows
taps — the popup never closed. Moved to (350,575), below the band. (Claimed-already path and
navigation were verified live; the popup path re-verifies on the next daily gift.)
Docs
- New English and 日本語 user guides (
docs/user-guide.md,docs/user-guide-ja.md) with a
3-language switcher; JP guide notes the tool supports the EN client only.
Stella Sora Tool v0.4.3
v0.4.3 (2026-07-08) — pre-release — Stop button now interrupts the current task immediately
GUI / Scheduler
- [Stop] interrupts the running task right away (at the next screenshot/click — typically within
a couple of seconds) instead of waiting for the task to finish. Works for the scheduler loop and
the single-task "Run now" button; Ctrl+C in the CLI scheduler behaves the same way. - An interrupted task is not penalized: no error log, no retry delay — its schedule stays untouched,
so the next Start simply runs it again from the beginning. The game is left untouched too (the tool
just stops sending input; anything half-done in-game stays as is). - Internals: a global stop flag (
module/stop_signal.py) checked at every
Device.screenshot/click/click_xy/swipe, raising a dedicatedTaskInterruptedthat the scheduler
handles separately. A new session clears the flag on start. - Verified live (Mail task interrupted 0.94s after pressing Stop) + 4 new offline test cases
(tests/test_stop_interrupt.py); the ADB-retry test suite still passes.
Stella Sora Tool v0.4.2
v0.4.2 (2026-07-08) — pre-release — Ascension runs ~28% faster
Ascension — run speed
- Tuned 20 fixed post-click delays across the run loop (shop buys, card picks, note popups,
settle loops, continue screens). A full Diff-8 run drops from ~12 to ~8.6 minutes under the
capture harness — typical plain runs go from ~8-9 down to ~6 minutes. - Deliberately left untouched: event-choice pacing (double-click on options has real consequences),
the network-retry wait, and every OCR-stability retry. - Verified live on a 100-step run: clean finish, coin reconciliation clean (0 mismatches,
baseline had 1), no card-pick oscillation, no failed purchases, no click-spam guard trips. - Profiled with
dev_tools/profile_ascension.py(added in v0.4.1); the remaining time is mostly
genuine game animation (card flips, floor transitions).
Stella Sora Tool v0.4.1
v0.4.1 (2026-07-08) — pre-release — 12 audit fixes + Heartlink hardening
Full audit of the v0.4.0 batch (multi-agent review, every finding adversarially verified): 12 confirmed
issues — all fixed, the critical paths re-verified live in-game.
Ascension
- The "Return to Ascension?" paused-run dialog is now handled by the scheduled task itself
(_recover_paused_run: Give Up → confirm → save the leftover Record). Previously only the dev capture
tool handled it, so a paused run (left behind by a crash/timeout) stalled every scheduled attempt. - Capture-session analysis: self-healed ADB retry warnings are no longer mis-counted as crashes
("completed: NO" on healthy sessions); purchase-phase coin mismatches are now counted too
(previously enhance-phase only). - Capture tool no longer overwrites
config/stella.json— config overrides are truly RAM-only now.
Heartlink
- The Start Invitation dialog and the Date-Location screen are polled together: a slow dialog
could be misread as the daily cap, silently losing the whole day's invites. - Bottom tabs retry through the stacked post-date overlays (reaction → Gifts Received → Affinity UP)
that used to swallow taps — this was breaking the Mail sub-task right after an Invite. - Multi-target Mail search scrolls back to the top of the contact list for each target.
- Mail send loop verified live up to the real 10/10 daily cap (8 gifts in one go; at the cap the game
rejects silently and the Affinity-bar check stops the loop with the correct count).
GUI
- Saving Mail targets whose total exceeds the daily limit is blocked with a warning (was silently
truncated server-side). - The "send all to the top contact" checkbox now always reflects the real saved behaviour.
- Cancelling the report-export dialog no longer writes the report anyway.
Dev tools & tests
- New
dev_tools/profile_ascension.py— shows where a run's time goes (top time sinks + screenshot
cadence); groundwork for an upcoming run-speed optimisation. rebuild_digits.pyrejects malformed multi-digit CSV labels (substring-check bug).- ADB retry tests: scoped sleep patch + a new connect()-failure case (4 cases total).
Stella Sora Tool v0.4.0
v0.4.0 — Heartlink dating + Ascension reliability + capture analysis
New task: Heartlink (dating → Affinity)
Heartlink— raises character Affinity through the in-game "phone". Two sub-tasks toggled by
do_invite/do_mail:- Invite (≤5/day): pick a character → Invite → confirm the Start Invitation dialog →
Select Date Location → Skip the date → Send Gift (x2 Affinity) / Leave → back.
Already-dated characters (grey "Invited Today") are skipped; the daily cap ends the loop. - Mail / Delivery Service (10 gifts/day, global): send gifts to raise Affinity — pick a character
→ gift → Send Gift → repeat. The cap is detected when the Affinity bar stops changing. invite_count(5),send_gift(on),invite_targets(prioritise named favourites via portrait
match);mail_count(10),mail_targets(name+qty, else dump all to the top contact).
- Invite (≤5/day): pick a character → Invite → confirm the Start Invitation dialog →
- GUI: a Heartlink page with two cards (Invite + Mail).
- OFF by default (new task + spends gift items when
send_gift).
Ascension — reliability & analysis
- ADB retry/reconnect in
module/device/adb.py(backoff 2/5/10s, auto-reconnect) — fixes the single
hard failure that killed long capture sessions (ADB drop mid-run). - Shop-room deadlock fix — leave the shop via the correct "Nah, let's go up" option (never re-open
the shelf); survived 26 consecutive runs live. - Home→Ascension nav fix — re-cropped
GO_ENTER(the Home art changes per featured character). - "Return to Ascension?" dialog (
ASC_GIVE_UP) handled when a paused run exists. - Dissolve weak Records at the Save screen (off by default) — decide keep/discard by the rank
badge frame colour band (dissolve_record,dissolve_max_band), no OCR. - Capture-session analysis (user feature, no AI): pick a session → view metrics (buys/enhances/coins/
time) → export a report → clean up images to free disk. Enginemodule/ascension_analysis.py.
Dispatch
- "Dispatch Again" 2-step fix — the button opens a dialogue + bonus popup on the first press; press
up toCOMMISSION_MAX_AGAINtimes, dismissing between, then fall back to manual re-dispatch to 4/4.
Dev tools
dev_tools/ascension_capture.py(frame+log capture),analyze_capture.py(offline analysis),
rebuild_digits.py(merge missed OCR glyphs into templates).
Stella Sora Tool v0.3.0
v0.3.0 (2026-07-07) — pre-release — Event group + Event First Clear task
New task: Event First Clear
EventFirstClear— actually plays (Go → Deploy → Auto-Battle) the event Battle Stage stages
that still have gray stars (not first-cleared) to grab First Clear rewards (gems, materials).
Different fromEventDaily(Quick Battle sweep of already-mastered stages to spend Vigor).- 3 difficulty checkboxes Normal / Hard / Challenge (3rd tab) — each run, for every enabled
difficulty, it scans for gray-star stages and clears them in order. Locked difficulties are
skipped (detected via the selected-pill brightness). Clearing a stage usually unlocks the next →
auto re-scan. - Detection (live survey 2026-07-07, GUNFIRE chapter 2): gold stars = first-cleared (skip),
gray/silver = not yet (play), padlock = locked (skip) — classified by color on the "N-N"
ribbon. Auto-Battle is turned on only when detected OFF (via the blue ring around the button,
tapped once per battle) — it never accidentally turns off a running battle. - OFF by default (events are temporary + costs 30 Vigor/battle). Switching events needs re-cropping
EVENT_BANNERlike Event Daily. Tuning:max_stages(per-run cap),run_timeout(seconds/battle).
UI
- Collapsible "Event" group in the app sidebar (Alas-style) grouping Event Daily + Event
First Clear. Click the group header to collapse/expand (state remembered). - Added an Event First Clear settings page (3 difficulty checkboxes + tuning).
Stella Sora Tool v0.2.0
v0.2.0 (2026-07-05) — pre-release — Ascension optimization
Based on verified multi-source research (EN/JP/CN) of the Monolith/Ascension mechanics — see
docs/ascension-strategy.md.
Ascension
- Auto-select the highest already-cleared Difficulty (
ascension.difficulty, default0= auto).
Rewards (stubs/coins/Record score) rise monotonically with difficulty, so keeping the game-remembered
tier can leave rewards behind. Auto only moves UP to a tier whose Quick Battle is lit (cleared); never
down or to an uncleared tier. Set2..8to force a specific tier. - Smart Event / Choice Domain (
smart_event_choice, default ON): prefers the option granting a
free item (Potential/Note) over blindly tapping the bottom option — found via live-test: the old
logic took 🪙×30 instead of a Rare Potential. Detected via the coin icon on the reward tag (no coin =
free item). All-coin/gamble/Spend events still fall back to the safe bottom option (no regression). - Skip when Weekly Limit is capped (
skip_when_capped, default ON): reads the N/3000 meter on the
Monolith page; when full (3000/3000) a run yields 0 stubs, so it skips to save a ticket. Uncheck to
still run for Record power (POWER). - Last-room shop fix: the final Portia room only used 1 of 2 shelf-refresh charges (the 360-coin
enhance reserve blocked the 2nd). Addedenhance_reserve_last_room(=180) so both refresh charges get
used to surface SALE items (a 45–72 SALE potential is cheaper per level than a 180 enhance). - New objective switch
objective=power|score(POWER default = validated behavior; SCORE experimental). - GUI: added Difficulty, POWER/SCORE objective, last-room enhance reserve, and the skip-when-capped /
smart-event checkboxes to the Ascension settings page.
Docs
- README: added a note that the emulator resolution must be 720×1280 (the tool does not auto-scale;
changing the resolution makes it error out). Resizing/zooming the MuMu window is harmless.
Stella Sora Tool v0.1.1
v0.1.1 (2026-07-05) — pre-release
Fixed
- Cleanup crash (
matchTemplateassertion). OpenCV threw(-215) _img <= _templwhenever a
template was larger than its search area — this happened duringui_current_pageand aborted the
Cleanup task. Fix: widened theGRANT_CHECKsearch area to fit its template, and hardened
Button.matchto skip (with a one-time warning) instead of crashing when a template exceeds its
search region, so a single mis-cropped asset can no longer break page detection.