Andon
Is everything running normally, and if not, where?
Four signal colors provide the answer at a glance. Behind each one, notes, attachments, earlier versions and discarded approaches preserve the history of every decision. All data remains on your computer.
Free and open source · Windows and Linux · no account required
An immediate overview
Status colors roll up from tasks to projects, so the project list alone shows where attention is needed.
No information is lost
Called-off work remains visible in red, together with its rationale. Notes retain their earlier versions.
Context alongside the work
Each task holds its own notes, attachments and history, so the rationale for every decision stays at hand.
Your data under your control
Andon runs locally on your computer. No account, no server, no subscription.
You set the status of tasks. Andon consolidates the rest.
Every new task starts white. A project made up of white tasks has simply not started.
Green does not mean “done”: on a production line, a green light indicates that the station is operating, not that it has stopped.
The most important state day to day: a single orange task is enough to turn its parent task and its project orange.
Set aside with its rationale, to be revisited in a more suitable context. Red is a record, not a failure.
A year later, the rationale is still on record.
Approach A, an in-place upgrade, corrupted the test data. It turned orange during the analysis, then red with its rationale recorded. Approach B took over, and the project returned to green.
For the next migration, a search for “in-place upgrade” retrieves Approach A. You review why it was discontinued, check whether the vendor has fixed ticket 1182, and reach a decision in minutes.
A deleted task can no longer inform future decisions.
The complete example, in chapter 13- Why it stopped
- The upgrade tool corrupted 3% of rows in the test copy.
- Situation
- Tool version 4.2, no vendor support contract, two weeks before the deadline.
- Would work if
- The vendor fixes the defect (ticket 1182), or a support contract is signed.
Everything the guide covers
Break work down to the level of detail required. Each task’s color is derived from the tasks it contains.
The rationale behind an orange or red status: what is awaited, why work stopped, and what would allow it to resume.
Tables, images, code blocks, links between tasks, find and replace, and spell-checking.
Every note retains its earlier versions: compare any two and restore the one you need.
Attach files to a task, compare tasks side by side, and synchronize a folder of Markdown files.
Simple checklists, and boards whose cards follow a definition of done.
Find any project or note, including archived ones. Completed projects are archived, never deleted.
Create a dedicated project from selected tasks, which remain shared with the original project.
draw.io to formalize a task’s path, Yi Jing to assess a change before acting on it.
Local SQLite files, backups, a recovery procedure, and straightforward migration to a new computer.
Switch instantly, without restarting.
Checked from Preferences, with differential downloads and no reinstallation.
Andon v1.9.1
Self-contained application: no .NET runtime required. Detailed installation steps are in chapter 2 of the guide.
- v1.9.1 Fix Leave the archive with the Back arrow instead of a green button
- v1.9.1 Maintenance V1.9.0 changelog, draw.io plugin 1.1.2, Yi Jing plugin 2.0.2
- v1.9.0 Fix Make the emoji field a small box
- v1.9.0 Fix Call a task held by several projects « multi-projets », not « partagée »
- v1.9.0 Fix Say « projet dérivé » instead of « branche » in French
- v1.9.0 Fix Log failures in async handlers instead of closing the app
- v1.9.0 Refactor Name theme keys with constants instead of strings
- v1.9.0 Maintenance Tell vpk the Windows package is x64
- v1.9.0 Maintenance Tell vpk the Windows package is x64
- v1.8.9 Feature Create tasks, todo lists and Kanban boards from the popover
- View the full version history
Windows 10 or 11, 64-bit. No administrator rights required.
Installation on Windows
%AppData%\Andon
Any 64-bit distribution with a desktop environment. No root privileges required.
Installation on Linux
sudo apt install libgtk-3-0 libnss3 libatk1.0-0 libgbm1
sudo apt install libfuse2 # AppImage only
chmod +x Andon*.AppImage ./Andon*.AppImage
tar -xzf Andon*.tar.gz ./Andon.UI
~/.config/Andon
All published files ▸
Paths and changes
Installed and updated from Preferences › Plugins, within Andon. Chapter 14 describes their use.
Adds a Diagram tab to every task, backed by an embedded draw.io editor. Each task keeps its own diagram, saved automatically as you edit.
Consult the I Ching oracle from any task. Casts a hexagram using the traditional 3-coin method and saves the reading — glyph, name, and judgment — directly into the task’s notes.
Manual installation: create a subfolder in %AppData%\Andon\plugins, copy the .dll file into it, then restart Andon.
Release notes
- Leave the archive with the Back arrow instead of a green button
- V1.9.0 changelog, draw.io plugin 1.1.2, Yi Jing plugin 2.0.2
- Make the emoji field a small box
- Call a task held by several projects « multi-projets », not « partagée »
- Say « projet dérivé » instead of « branche » in French
- Log failures in async handlers instead of closing the app
- Name theme keys with constants instead of strings
- Tell vpk the Windows package is x64
- Tell vpk the Windows package is x64
Earlier versions ▸
- Create tasks, todo lists and Kanban boards from the popover
- Add the + New Task button and its popover
- Move the note's save status to the toolbar
- Show the diagram's page count on the Diagram tab
- Add Followed up and Properties to the task row menu
- Add a task Properties dialog with current and history tabs
- Show a signal on blocked and called-off tasks missing a reason
- Keep status history through archive, delete and search
- Record status changes and blocker episodes
- Add status history and episode tables
- Type column, content icons and plugin row indicators
- Add five light themes with borders, shadows and hollow To do dots
- Bring task names closer to their dots, center the signal
- Review fixes for the mockup alignment
- Close the gaps with the light theme mockups
- Theme the right-click menus, add the row's own actions
- Lay out the Properties dialog like the mockup
- Keep the signal button's tint, ring it while Properties is open
- Remove the bottom bar's creation controls
- Draw.io plugin 1.1.1
- Read each plugin's row icon once per rebuild
- Test: cover the untested classes and the reachable gaps
- Docs: add the user guide
- Make the Tasks tab and project open fast
- Show last modification date instead of deadline in column header
- Audit fixes for shared tasks, notes safety, last_update and load performance
- Language change note says it applies immediately
- Label compare date 'Last modified' and only bump last_update on real changes
- Remove deadlines
- Remove the unused ReorderTasksDialog
- Test(tasks): drop the removed deadline argument from two CreateTask calls
- Deleting a task only removes it from the project it is deleted from
- Branch by pointer, like a git branch
- Copy any tasks of the project into a branch
- Branch a project from a task or subtask
- Keep shared tasks safe across delete/archive, mark them everywhere
- Deleting a task keeps subtasks another project holds
- Hide archived branches from their origin task
- Show the Image in English when the app is in English
- No project owns a task; projects hold tasks (ProjectTasks)
- Draw.io plugin 1.0.2
- Upgrade the bundled draw.io to 32.0.2
- V1.8.5 changelog, Yi Jing plugin 2.0.1
- Add the moving lines, the transformed hexagram and Wilhelm's commentary
- Let a plugin tab show a count badge
- Redesign the oracle panel with an animated three-coin cast
- Write a log of each pack run
- Lock the open note during a sync and cancel the sync on exit
- Address fourth review pass
- Detach a failed plugin's event handlers
- Address third review pass
- Address second review pass
- Read settings under the lock when saving a note snapshot
- Address code audit findings
- Add name filter and date sorting to the task list header
- Upgrade Velopack and vpk CLI to 1.2.161
- Add drag-and-drop reorder within and across folders
- Add presentation-only folders and fix Ctrl/Shift multi-select
- Move "Link scroll" into the tab strip, drop the Compare header
- Upgrade all NuGet packages to latest (Avalonia 12.1.2, xunit 4)
- Change log
- Polish the Compare tab layout, header and selection look
- Compare selected tasks side by side in a closable Compare tab
- Fix pack.ps1 changelog encoding, theme the note editor for Nord/Solarized/Dracula
- Stop history-diff crash on real edits, keep it responsive NoteDiffView.ShowDiff ran the whole diff computation (Myers word-level diff + HTML reconstruction + CSS) synchronously on the UI thread. Two real problems, both hit while dogfooding this feature today:
- Stop erasing the crash-recovery flag on exit
- Adopt real NuGet CPM, fix Splash rebuild-every-time
- Test(quality): close out whole-codebase review — flakiness, dedup, perf, MSBuild
- Unbreak uninstall while the app is running
- Stop reloading whole task trees to read one status
- Run plugin install off the UI thread with real progress
- Live re-highlight, theme palettes, and a language picker for code blocks
- V1.7.1 changelog, consolidate pack-plugin.ps1 to repo root
- Support multi-file plugin assets, publish draw.io, fix Plugin Manager install state
- Rebuild the draw.io plugin against the current plugin architecture
- Code blocks get static highlighting, a copy button, and a CodeMirror 6 editing overlay
- Add Find & Replace to inline search bar
- Match CodeMirror overlay background/colors to the app theme
- Stop ArchiveProject from wiping task note history
- Gate main window reveal on splash process exit, pin SQLitePCLRaw to 3.0.5
- Stop empty snapshots, fix diff entity encoding, preserve panel/selection state
- Make Task.Children/Attachments non-nullable, GetTask virtual
- Close gaps across Core/Database/UI, fix stale RunVerification filters
- (ui): extract testable logic classes and expand test coverage
- (ui): restore last opened task when reopening project
- (ui): reduce coverage risk hotspots
- (history): remove style block content from snapshots
- (editor): extract bridge message parsing
- Resolve code review audit regressions
- (startup): reveal main window after splash closes
- (startup): restore last task before first render
- (startup): keep splash until workspace restore
- (database): checkpoint wal before backups
- (database): migrate legacy project task columns
- (editor): gate webview bridge by origin
- (history): sanitize snapshot preview html
- (database): create note history indexes by field name
- (editor): validate remote image fetches
- (startup): keep secondary instance out of recovery flow
- (markdown): disable raw html rendering
- (notes): route cross-project task links
- (plugins): dispatch events for task mutators
- (attachments): bound attachment imports
- (editor): remove wildcard file server cors
- (search): route archived results to archive view
- (history): purge deleted task snapshots
- (history): clean diff temp files
- (editor): clean large note temp files
- (md-sync): avoid toolbar folder scans
- (attachments): isolate temporary opened files
- (projects): update recency after task activity
- (plugins): guard note appends by active task
- (backups): key migration backups by package version
- (history): remove background LiteDB cleanup race
- (history): serialize snapshot sequence allocation
- (history): retry failed legacy note migrations
- (tasks): show live status in task picker
- (search): show live rollup status for task hits
- (archive): clean attachments before unarchive removal
- (archive): delete archived projects from archive db
- (plugins): store yi jing data outside install folder
- (app): guard shutdown before services are ready
- (plugins): validate registry dll paths
- (plugins): preserve task notes during metadata updates
- (deps): update NuGet packages and migrate tests to xunit v3
- Show inline Windows logo on the download page instead of the emoji
- Report real MD sync change counts and refresh the open editor
- Backup restore now clears stale WAL/SHM sidecars
- Search shows live project status, not stale computed_status
- Plugin events now fire for base-typed ProjectService calls
- Prevent task reparent cycles (stack-overflow crash)
- Note-history migration dropped uncompressed_size / previous_snapshot_id
- Prevent path traversal in EditorFileServer
- DeleteProject/DeleteTask clean up orphaned attachments
- Archive/unarchive copies task attachments too
- Archive/unarchive preserves task type-specific columns
- Search LIKE escaping now actually works (missing ESCAPE clause)
- MD-sync deadline stored as UTC, not local time
- Add test projects to the solution
- Update-migration safety net — reinstall fallback + staging mode
- Upgrade Velopack 0.0.1298 -> 1.1.1
- Run VelopackApp.Run() as the first statement of Main()
- TodoList storage now forward-compatible with older app versions
- TodoList task crashed app on startup
- Reduce cyclomatic complexity in large view files
- Status-rollup ordering fix, EditorFileServer leak, JSON dedup
- Debug builds use a separate data folder (Andon-Dev)
- Test: NoteRetentionPolicy + MdSyncService coverage
- Test: unit tests for StatusRollup, KanbanStageDeriver, DodStep JSON
- TodoList task type + click-to-open UX
- Note history panel — toolbar button, close UX, diff color fix
- Ignore and untrack andon_icons/
- Theme switch refreshes all code-behind controls; eliminate hardcoded colors
- Resolve all SonarQube findings across codebase
- Style: browser-tab style for task detail tab bar
- Style: light theme warm parchment palette + Kanban/tab polish
- MD sync saves history snapshot; oldest history entry not restorable
- MD repository sync per project
- Import Markdown file into notes via Ôåæ MD toolbar button
- Spell-check language control — global setting + per-note toolbar toggle
- Simplify spell-check to on/off only; fix empty button label bug
- Spell-check off by default; remove browser-default option
- Spell-check language not applying — set lang on <html> element
- WebView2 unavailable shows blank panel + skip NativeWebView creation
- Docs: update changelog
- Show fallback UI when editor page fails to load (e.g. sandbox)
- Changelog
- Restore last open project and task on startup
- Record nav state when tab is shown, not when clicked
- Record actual tab in nav register; remove focus ring on TitleBar
- Restore last tab in addition to last project and task on startup
- Startup restore runs twice because TryFinishStartup had no done-guard
- Defer startup restore until WebView is ready; keep saved position across nav-less sessions
- Restore last tab in addition to last project and task on startup
- WebView2 MoveFocus crash on background window activation
- Tidy startup restore — remove redundant locals, fix comment
- Changelog
- Clear crash-recovery flag before update-restart
- WebView2 MoveFocus crash on window reactivation
- Docs: add v1.4.8 changelog entry
- Free-range open source tagline in hero
- Replace site link with Codeberg open-source link in hero
- What's new banner at top of page
- Git-tag-based changelog with full history backfill
- Changelog generation in pack.ps1 + changelog section on site
- WebView2 unavailable shows blank panel + Kanban profile picker broken
- Add LiteDB to tech stack + red = Cancelled not Failed
- Open Codeberg link in new tab (target=_blank + rel=noopener)
- Hover feedback on What's new banner
- Add #Requires -Version 7 to pack.ps1
- Use System.Text.Json in pack.ps1 (requires PS 7+)
- Upload index.php in pack.ps1 + restore+update site page
- Run with pwsh (PowerShell 7) instead of the legacy powershell (5.1):
- Capitalisation typo fix
- Migrate NoteHistoryService from SQLite to LiteDB
- SQLite history migration + inline diff viewer in history panel
- Scrollbar tick map for diff changes
- Restore note CSS in diff page (headings, code, tables, blockquotes)
- Move history to inline side panel on Notes tab
- History panel shows current note by default, diff only on card click
- Andon-native DoD + task status UI with unified signal language
- Kanban UX polish — blocker in advance dialog, subtask todo list, code deduplication
- Notes tab for kanban tasks + card breadcrumb
- Pre-update DB backup + crash-recovery mode
- Tabbed settings dialog with Libraries tab + source link
- Library descriptions + hover-underline on links in settings
- Write diff.html to EditorFileServer folder before navigating
- Diff view blank — init WebView on AttachedToVisualTree, not on ShowDiff
- Oldest card disabled (not newest); simplify diff lookup; placeholder text
- Always use file-based diff path to avoid InvokeScript escaping issues
- Set EditorFileServer folder path in NoteDiffView
- Wait for first NavigationCompleted before navigating to diff URL
- Diff page layout — remove white-space:pre-wrap causing invisible text
- Boot navigate bypasses pending queue — WebView never started
- Notes tab disappears on task switch + separator cleanup
- Remove internal collapse button from NoteHistoryView
- Diff page shows full HTML note + text-only diff summary below
- Inject ins/del markers into HTML text nodes, preserving all tags
- Note search accuracy, duplicate snapshots, and search highlight persistence
- DoD state picker rules + backward drag blocker + advance dialog ordering
- Settings dialog title, library clipping, clickable library links
- Eliminate InvokeScript for diff — use NavigateTo with query params
- Compute diff in C#, serve pre-built HTML — no JS diffing
- History cards in right panel, diff replaces editor on card click
- Untrack and ignore tools/ folder
- Verbose error display in diff.html + C# debug log
- Step-by-step status in diff.html to isolate blank issue
- Use task name as default filename in Markdown export
- Kanban task type with DoD-driven board view
- Kanban phase 2-3 — DoD editor, subtask modal, board UX polish
- Lucide icons, starter kanban profiles, category picker, status rename
- Rename statuses to reflect Andon philosophy (en + fr)
- Drag-drop card advancement with DoD enforcement
- Kanban board ⋯ menu, redesigned profile manager, and full i18n
- Kanban hardening — snapshot pattern, validation, KPI fixes, card rename
- Blocker locks all checkboxes; blocker freezes card at current stage
- Drag-drop click/drag separation + partial advance + backward refresh
- Search clear + ⋮ button polish across project list and toolbar
- Keep DoD panel open across board reloads; restore snapshot + KPI i18n
- Prevent WebView2 MoveFocus crash on window reactivation
- Prevent WebView2 MoveFocus crash on window reactivation
- Avoid StrictMode crash reading undefined \$pfxPass variable
- Avoid StrictMode crash reading undefined \$pfxPass variable
- Ignore docs/ directory
- Remove duplicate Kanban section from Language.cs
- Load FTP/PFX credentials from env vars instead of hardcoding
- Load FTP/PFX credentials from env vars instead of hardcoding
- Feat: Kanban board polish + unified ANDON status rollup
- Task row UX improvements
- Clean publish dirs before pack to prevent Splash assembly contamination
- Handle missing app_settings table on fresh install + suppress WebView2 focus noise
- Prevent crash on Markdown export when WebView loses focus to save dialog
- Suppress WebView2 focus noise on Dispatcher to prevent MD export crash
- Prevent crash on Markdown export when WebView loses focus to save dialog
- Migrate: Avalonia 11.3.14 → 12.0.1 + WebView 11.4.0 → 12.0.0
- Av12 setup
- Merge: Avalonia 11.3.14 → 12.0.1 (Windows + Linux verified)
- Ure: cross-platform splash window with progress bar before CEF init
- Ure: Andon.Splash — separate process splash with stdin progress pipe
- Ure: wait for splash window before CEF init
- Ure: text highlight in note editor + fix note reload on same-task navigation
- Plugin version bump triggered on every pack run due to dirty description.json
- Splash not found on dotnet run — publish self-contained to splash\ subfolder
- Splash picks correct self-contained exe from splash\ subfolder
- Garbled ellipsis in splash labels — force UTF-8 on stdin pipe
- Suppress NU1903 vulnerability warning for Tmds.DBus.Protocol
- Resolve analyser warnings in TaskDetailView
- Build errors introduced by light refacto commit
- Convert [ObservableProperty] fields to partial properties (MVVMTK0042)
- Simplify null checks (IDE0031)
- Add RuntimeIdentifiers to Andon.Splash for linux publish
- Centralize package versions in Directory.Build.props
- Auto-copy Andon.Splash.exe to output dir on every local build
- Microsoft.Data.Sqlite 10.0.5 → 10.0.6 in Directory.Build.props
- R2R + trimming on Andon.Splash for faster cold-start
- Light refacto
- Migrate: replace CefGlue with Avalonia.Controls.WebView 11.4.0
- Ure: inline search bar in note editor (Ctrl+F)
- Task deletion not refreshing content panel; fix pack.ps1 .Count on single string
- Thread safety, transactions, N+1 queries, search nav, nav history
- Eliminate dead code, duplicates, and high-complexity methods
- Pack.ps1 change detection from SHA-256 to git commit hash
- Auto-create first task on new project; fix AddTreeTask top-level insert; warn before deleting last root task
- Improve task tree: inline drag-reorder, cross-parent reparent, collapse state
- CS1061 error and CS0618 Watermark deprecation warnings
- Avalonia back to 11.3.9 to restore color emoji
- Miller columns navigation: replace breadcrumb+dropdown with inline toolbar bar
- Yijing version and checum changes
- Ignore claude
- Maj packages + install roslyn
- .claude/ from version control
- Git ignore claude dir
- Downgrade Avalonia 12.0.0 → 11.3.13 to match CefGlue.Avalonia 120.6099.211
- Improve search: HTML-aware notes matching + keyword highlight in editor
- Crash on first launch: initialize settings DB before loading settings
- YiJing plugin: Image texts, card UI, save-to-notes fix, plugin update pipeline
- Yi jing extractions
- YiJing plugin checksum and version to 1.0.5
- Pre-bumping Andon.UI.csproj in pack.ps1
- Hardcoded Version from Andon.UI.csproj
- Pack.ps1 to respect <AssemblyName> for plugin DLL lookup
- Plugin update while DLL is loaded: stage to .new, apply on next startup
- Pack.ps1 to respect <AssemblyName> for plugin DLL lookup
- Built files
- OS modal dialogs with inline overlay system; normalize dialog spacing
- Simplify overlay system: extract PopOverlay helper, fix visibility restore, add guards
- YiJing plugin: SQLite history, EN/FR translations, correct hexagram rendering
- Ignore docs/yijin/ HTML source files
- Php
- Plugin pipeline: checksum-gated builds, encoding fixes, version display
- Improve update dialog, plugin dedup, and task search panel
- StrictMode .Count errors in pack.ps1 (again, lost in BOM re-saves)
- FTP pruning, add chmod on upload, use direct URLs for plugin registry
- Plugin registry 403: set User-Agent on HttpClient
- Plugin description.json version after successful FTP upload
- In-app plugin manager
- Full assembly version in plugin manager User-Agent
- StrictMode .Count errors and re-apply UTF-8 BOM on pack.ps1
- Project reference path after examples→plugins rename
- Pack.ps1 encoding: save with UTF-8 BOM
- Git ignore an csproj
- Plugin architecture + 易經 Yi Jing sample plugin
- Examples/ to plugins/
- Plugin packaging, FTP upload, and Plugins section on website
- Async void safety and dead code warnings
- HTML import, Markdown export, and tab badges to note editor
- Analyzer suggestions: init-only properties, visibility tightening
- Analyzer suggestions: primary constructors and collection expressions
- Redundant nullable suppressions and always-true null check
- Primary constructor parameters directly, drop backing fields
- ReSharper 'always false' on intentional async-init guards
- Spring cleaning
- Unified navigation history (back/forward/close), XButton mouse hook, tab constants, version in preferences
- Untrack version.txt (already in .gitignore)
- Andon icon, EN/FR language switcher to landing page
- Parallelize startup: show window immediately, init DB + Chromium concurrently
- Upload unversioned files (Setup.exe, AppImage, Portable.zip, JSON) on pack
- Tint toolbar with project ANDON color, fix task leak, auto add-task on empty project
- Code quality pass + fix task-detail search panel bugs
- Release page version display and upload JSON feed files
- FTP delete: use -X DELE URL instead of --quote
- Upload only current version files and prune old versions on FTP
- Task order numbers, status toolbar button, single-instance, and worst-status semantics
- Change project status to reflect last (highest display_order) non-white top-level task
- Last-ordered non-white child semantics to parent task status propagation
- Recompute project status after task reorder
- Image paste: serve editor via virtual http host, embed images as data URIs
- Avalonia warning and polish ReorderTasksDialog
- Archive back-navigation, live language switching, and startup crash
- Settings not persisting language and theme across restarts
- Initial commit: Andon MVP — Avalonia + WebView2 project management app
- .gitignore; untrack bin/, obj/, local settings
- Tracked build artifacts (bin/, obj/)
- Task links in notes, back navigation, shared WebView2 editor, and dark loading state
- Task list with dropdown selector, move detail panel below list
- File attachments, archive view, i18n completeness, and centralized theme
- App icon to all windows
- Andon icons
- UX improvements: task reorder, status fixes, and dialog polish
- Merge toolbar strips and add Preferences dialog
- Preferences dialog, French locale, light theme, and editor theming
- White text on green/blue buttons in light theme with lightened hover
- Delete confirmation dialog, breadcrumb nav, and toolbar polish
- Velopack installer, auto-updater, code signing, and release tooling
- .gitignore: exclude publish/, releases/, pfx certs, and make_cert.ps1
- WebView2 with CefGlue for cross-platform support, add Linux build and release pipeline
- DawnCache and GPUCache to .gitignore (CEF dev-time cache dirs)
- Design splash screen
- Overhaul toolbar, navigation, search, and archive UI