Repository navigation
Releases: Lexora-Labs/lexora-ai
Release list
v0.2.4
v0.2.4 — Desktop window icon and Vietnamese docs
Bug Fixes
- Desktop window/taskbar icon stays the default Flet icon (LAI-B-004 follow-up). Flet 0.21.x's bundled Flutter client did not wire
windowIconinto the Page control, sopage.window.iconand every Python-side workaround were silently ignored at runtime. Bumpedfletto 0.23.2 inrequirements.txtsopage.window.iconreaches the native window, and the bundledlexora-ai-icon.iconow replaces the default Flet icon in the Windows title bar, taskbar, and Alt+Tab thumbnail in dev (python run_ui.py --no-browser) without needing aflet packbuild. - Branding code duplication. Centralised the desktop chrome wiring in new
src/lexora/ui/desktop_branding.py::apply_desktop_branding.run_ui.pyandsrc/lexora/ui/main.pynow call the shared helper, eliminating two divergent copies of the icon-resolution logic.
Documentation
- Vietnamese README (
README.vi.md). New top-level Vietnamese guide for Windows installation (ZIP and MSI from GitHub Releases, SmartScreen guidance, post-install steps, source build) with a Settings screenshot in Vietnamese. - Vietnamese provider/API key guide (
docs/cau-hinh-api-key.vi.md). Translated, step-by-step Vietnamese version ofdocs/provider-api-key-guide.mdcovering OpenAI, Azure OpenAI, Azure AI Foundry, Gemini, Anthropic, and Qwen, plus a combined.envtemplate and quick CLI validation snippets. - Cross-links. Added pointers from the English
README.mdanddocs/provider-api-key-guide.mdto the Vietnamese counterparts.
Internal
- Spec/docs comment cleanup. Reworded the onefile vs onedir rationale in
packaging/windows/lexora_ai.specanddocs/windows-build-and-packaging.mdto attribute the failure mode to PyInstaller onefile + Python 3.12 on Windows rather than to a specific Flet minor version.
Downloads
LexoraAI-windows-amd64.zip— portable Windows ZIP, runLexoraAI.exeafter extracting.LexoraAI-windows-amd64.msi— per-machine WiX installer for Windows.LexoraAI-macos-arm64.zip— macOS Apple Silicon.appbundle.
Verification
- The desktop title bar / Windows taskbar should now show the Lexora "L" icon instead of the default Flet "F".
- See README.vi.md and docs/cau-hinh-api-key.vi.md for the new Vietnamese guides.
Full changelog entry: CHANGELOG.md.
Full Changelog: v0.2.3...v0.2.4
v0.2.3
Lexora AI v0.2.3
Patch release focused on the Windows MSI shortcut regression introduced during ICE cleanup, plus README documentation for the Translation Context parameters (Tone / Domain / Instruction) shipped in v0.2.2.
No translation pipeline behavior changes. Safe upgrade from
v0.2.2.
Highlights
- Windows MSI shortcuts land in the correct All Users locations again — fixes a regression where the Start Menu folder could be created at
D:\Lexora Labs\Lexora AI\(or whichever drive the MSI was launched from) instead of%ProgramData%\Microsoft\Windows\Start Menu\Programs\Lexora AI\. - README now documents the v0.2.2 Context surface for both UI and CLI (Tone, Domain, Custom instruction), including allowed values, the ~8 KB instruction cap, and the run-report fields.
- WiX build pipeline is more reliable: a new
wix-patch-harvested.ps1step gives the launcher a stableFileid so non-advertised shortcuts can target it via[#LexoraAILauncherExe], andlight.exe -svalis the documented trade-off for ICE38/43/57 vs. shortcut visibility on per-machine installs.
Bug Fixes
MSI: shortcut placement regression guard (LAI-B-013)
During the ICE38/ICE43/ICE57 cleanup, packaging/windows/Product.wxs was temporarily switched to CommonProgramsFolder / CommonDesktopFolder. With InstallScope="perMachine" and the MSI launched from a non-system drive (e.g. D:\), Windows Installer resolved those ids to the install-media drive root, so shortcuts were created at:
D:\Lexora Labs\Lexora AI\Lexora AI.lnk
instead of the expected All Users Start Menu folder.
Fix: restored ProgramMenuFolder / DesktopFolder (auto-redirected to the All Users / Common locations because ALLUSERS=1 is implicit under InstallScope="perMachine") and added an explicit regression-guard comment so the next ICE cleanup does not regress this again. Documented in docs/windows-build-and-packaging.md §7.2.
MSI: link/compile errors during this patch cycle
Reauthored shortcut components to compile cleanly with WiX 3 after several attempts that hit:
LGHT0094— unresolvedDirectory:CommonProgramsFolder/Directory:CommonDesktopFolder(standard folder ids must be declared underTARGETDIR).CNDL0035—Shortcut/@Targetcannot coexist withAdvertise="yes".CNDL0004—Shortcutdoes not acceptKeyPath.LGHT0204— ICE38 / ICE43 / ICE57 on HKLM KeyPath underCommon*shortcut folders.
Final, working authoring on main:
Advertise="no"shortcut withTarget="[#LexoraAILauncherExe]".- New
packaging/windows/wix-patch-harvested.ps1runs afterheat.exeand renames the harvestedLexoraAI.exeFilerow to the stable idLexoraAILauncherExeso the[#…]reference resolves. - HKLM
RegistryValueKeyPath on each shortcut component (HKCU was tried but caused per-machine shortcuts to silently disappear). light.exe -svalskips ICE — an intentional, documented trade-off, since the pure-ICE-clean alternatives broke real installs.
Documentation
README
- New Context section under "Translate tab — per-job configuration" describing the Tone, Domain, and Custom instruction controls, their allowed values, the ~8,000-character instruction cap, the EN/VI label policy, the Legal/Medical disclaimer, and the run-report fields (
tone,domain,instruction_length,instruction_hash). - New CLI Context flags section in Usage (quick reference) with example commands for
--tone,--domain,--instruction, and--instruction-file, including allowed enum values. - Roadmap updated:
- The old "Translation context, instructions, and glossary" bullet is replaced by saved presets / per-project defaults (LAI-T-060, deferred post-v1) and a working glossary path item (only the glossary part is still pending).
- Usage / UI bullet now mentions the Context card and notes that re-runs inherit Tone/Domain/Instruction.
Internal docs
docs/windows-build-and-packaging.md§7.2 expanded with the regression note, the-svalrationale, and the manuallightcommand updated to include the patch script.docs/todo-list.mdrow for LAI-B-013 records the 2026-05-05 regression and re-fix.
CI / Build pipeline
.github/workflows/desktop-release.yml— runswix-patch-harvested.ps1afterheat.exe; callslight.exe -sval.packaging/windows/build-local.ps1— same patch step;lightruns with-svallocally too, so the local build mirrors CI.packaging/windows/wix-patch-harvested.ps1— new, idempotent post-heatpatch.packaging/windows/Product.wxs— final shortcut authoring described above.
No changes to:
- macOS
flet packstep. - Translation engine, CLI surface, UI runtime behavior.
- Cache fingerprinting.
Commits in this release
cff3bdefix(packaging): restore ProgramMenuFolder shortcut placement; ICE skip with -svalee0753adocs(readme): translation context params (Tone, Domain, Instruction) for UI and CLI5ebf559chore(release): v0.2.3 changelog (WiX shortcut regression fix + README context docs)
Upgrade notes
If you previously installed a build that wrote shortcuts to D:\Lexora Labs\Lexora AI\ (or any non-system drive):
-
Uninstall the previous MSI:
msiexec /x LexoraAI-windows-amd64.msi /l*v uninstall.log
-
Manually delete any leftover
Lexora Labs\Lexora AI\folder on the wrong drive (Windows Installer does not own that location). -
Install
v0.2.3and confirm the shortcut appears at:%ProgramData%\Microsoft\Windows\Start Menu\Programs\Lexora AI\Lexora AI.lnkIf the optional Desktop shortcut feature is enabled, also at
%PUBLIC%\Desktop\Lexora AI.lnk.
If v0.2.2 worked correctly for you, this is an in-place upgrade (MajorUpgrade) — install over the previous version.
Assets
| Asset | Description |
|---|---|
LexoraAI-windows-amd64.msi |
Per-machine WiX installer (Program Files; All Users shortcuts). |
LexoraAI-windows-amd64.zip |
Portable Windows build — extract and run LexoraAI.exe. |
LexoraAI-macos-arm64.zip |
Apple Silicon macOS app (drag into /Applications). |
See CHANGELOG.md for the full version history.
v0.2.2
Bug Fixes
- MSI shortcuts (LAI-B-013): Windows installer now creates Start Menu and optional Desktop shortcuts under the correct all-users locations (
ProgramMenuFolder/DesktopFolder) regardless of which drive the MSI is run from. Previously,CommonProgramsFolderresolved to the install media drive (e.g.D:\) instead of%ProgramData%, so shortcuts were silently dropped. - MSI writable output paths (LAI-B-012): Default translate output now writes to
user_data_dir()/library(e.g.%LOCALAPPDATA%\Lexora Labs\Lexora AI\library) instead of a path relative to the Program Files install directory. Relative path overrides supplied via the UI are also remapped to the writable location; a safe fallback is used when the target directory cannot be created. - UI cache path normalization (LAI-B-014): Settings UI coerces legacy relative cache paths (e.g.
.lexora/translation_cache.jsonl) to the user-writable default underuser_data_dir(), preventingWinError 5access-denied errors after MSI installation. - EPUB CSS preservation (LAI-B-003): Translated EPUB chapters now retain the original
<head>content (stylesheet links, meta tags, charset declarations) merged with the translated<body>and localized<title>, so output formatting and styling match the source book.
Features and Improvements
- Structured EPUB batch on by default:
--structured-epub-batchis now the default translation mode for EPUB files. Opt out with--no-structured-epub-batch. TheTranslator.translate_fileAPI defaults are aligned with the CLI. - Startup loading overlay: Desktop app shows a localized splash screen while the jobs database and screens initialize, preventing a blank-window appearance on first launch or relaunch.
- Async session handler:
mainandattach_lexora_shellare now fullyasyncwithawaitbootstrap instead ofpage.run_task, eliminating cross-thread races that could leave the splash stuck. - SQLite connection timeout:
jobs.sqlite3opens withtimeout=30.0to reduce contention when a second app instance briefly holds the database lock.
CI
- Windows:
MSI_PRODUCT_VERSIONis now derived from the GitHub release tag (WiX four-partn.n.n.nformat). - macOS:
--product-versionis passed toflet packfrom the tag-derived semver. - Manual release trigger: The desktop release workflow now accepts a
workflow_dispatchwith aversioninput (e.g.v0.2.2) that creates and pushes the release tag, then builds and publishes the GitHub release automatically.
Tests
tests/test_translate_output_paths.py— output path resolution under MSI-style environments.tests/test_ui_cache_path_normalization.py— legacy cache path coercion in the Settings UI.
v0.2.1.1
What's changed
- Windows packaging/installer hardening: PyInstaller onedir build + WiX MSI flow + committed packaging spec + local packaging script/doc.
- Settings UX fixes: long endpoint values remain visible/editable, KEY fields reveal correctly, and provider delete now requires confirmation.
- Runtime path safety: app data (jobs/secrets/cache) now resolves to user-writable directories instead of install directories.
- EPUB output preservation: original XHTML
<head>(including CSS links) is restored after translation, with whitespace fixes around inline tags (<a>,<em>,<code>).
Validation
- Desktop release workflow for
v0.2.1.1completed with successful Windows and macOS packaging jobs.
Follow-up
- CLI wrapper simplification remains planned (
LAI-T-052).
v0.1.1
What's Changed
- Init the project Add Lexora AI - AI-powered eBook translation tool by @binhthanhng in #2
- Feature UI v1 by @binhthanhng in #6
- Add centralized theme system with dark/light/system support; remove duplicated Colors classes by @Copilot in #7
- Use branding ico for app icons by @binhthanhng in #8
- feat(cache): add cache scope, clear-cache option, and compatibility filtering by @binhthanhng in #10
- feat(logging): finalize tasks 13-15 with tokenized file naming, sink routing, and test coverage by @binhthanhng in #11
- fix(epub): sanitize output rendering, add provider key guide, and block EPUB tracking by @binhthanhng in #12
- fix(bug-01): finalize EPUB sanitization and remove deprecation warning sources by @binhthanhng in #14
- feat(logging): close review gaps for UI and structured events by @binhthanhng in #15
- docs(planning): split todo list into active and done sections by @binhthanhng in #16
- feat(track-a): harden canonical CLI runtime and run contract by @binhthanhng in #18
- EPUB structured JSON batch translation (OpenAI, Azure Foundry, Gemini) by @binhthanhng in #21
- feat(ui): continue translate UX and shell refinements by @binhthanhng in #22
- feat(ui): finalize jobs lifecycle UX and onboarding docs by @binhthanhng in #23
- feat(ui): finalize language switch polish and translation wording by @binhthanhng in #24
- feat(ui-db): persist jobs lifecycle to local SQLite (LAI-T-046) by @binhthanhng in #25
- fix(ui): resolve Azure Foundry deployment model mismatch in Flet by @binhthanhng in #26
- feat(ui): finalize provider settings UX and close approved tasks by @binhthanhng in #27
- Feat/UI default library output naming by @binhthanhng in #28
New Contributors
- @Copilot made their first contribution in #7
Full Changelog: https://github.com/Lexora-Labs/lexora-ai/commits/v0.1.1