LinuxDevTyper.Core 1.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package LinuxDevTyper.Core --version 1.0.0
                    
NuGet\Install-Package LinuxDevTyper.Core -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="LinuxDevTyper.Core" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="LinuxDevTyper.Core" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="LinuxDevTyper.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add LinuxDevTyper.Core --version 1.0.0
                    
#r "nuget: LinuxDevTyper.Core, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package LinuxDevTyper.Core@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=LinuxDevTyper.Core&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=LinuxDevTyper.Core&version=1.0.0
                    
Install as a Cake Tool

linux-dev-typer

A code-only typing practice app built with Avalonia UI — cross-platform for Linux, macOS, and Windows.

Version License Framework UI Tests

Also available as a native Windows app: dev-op-typer (WinUI 3, Microsoft Store)

NuGet Package

Package Description
LinuxDevTyper.Core Portable typing practice engine with Elo rating, adaptive difficulty, weakness heatmaps, fatigue detection, session planning, and micro-drills. Zero UI dependencies.

The core engine is a standalone library with no Avalonia or platform dependencies. Implement IStorage, IAudioService, and IAssetProvider for your platform and you have a complete typing trainer.

Features

Core Typing Engine

  • Per-character feedback: correct (teal), errors (red + underline), untyped (muted)
  • Live stats: WPM, accuracy, error count, XP
  • Elo-inspired per-language rating system
  • Level progression with XP and difficulty ramp
  • Completion cards with snippet explanations
  • Configurable: font size, whitespace rules, line-ending normalization

Adaptive Learning

  • Per-character mistake tracking with symbol classification (10 categories)
  • Cross-session weakness profiling with adaptive snippet selection
  • Trend tracking: rolling WPM and accuracy trends per language
  • Adaptive difficulty with comfort-zone detection and anti-yo-yo protection
  • Post-session insights: personal bests, milestones, trend signals
  • Fatigue detection with break suggestions
  • Hardcore mode: fix each mistake before advancing

Agency & Reflection

  • Practice intent picker: tag sessions as Warmup, Drill, Explore, or Challenge
  • Session notes and session browser with search/filter
  • Welcome-back detection with contextual greetings and automatic difficulty aging
  • Override system suggestions: dismiss yo-yo locks, insight types, and fatigue alerts
  • Monthly history compression for sessions beyond 200
  • Orientation cues: gentle pre-session suggestions based on content
  • Plateau detection with reassurance
  • Personalization controls: freeze learning, reset preferences

Content System

  • User snippet packs: drop JSON into ~/.config/linux-dev-typer/packs/
  • Practice profiles: named parameter sets that tune engine behavior
  • Import/export .ldtpack bundles for sharing content
  • Paste Code, Import File, Import Folder with auto-detected language
  • Content-addressed IDs (SHA-256 deduplication)
  • Unified canonical pipeline: all content enters as CodeItem with metrics-based difficulty (D1–D7)

Teaching & Community

  • Scaffolds: progressive learning context with optional deeper layers
  • Variants: alternative implementations shown as equal peers
  • Community notes: optional tips and perspectives in .ldtpack packs
  • Community difficulty: display-only signal for crowd-sourced difficulty
  • Anonymous by design — imported content is indistinguishable from local
  • All teaching and community features are optional and display-only

Structured Practice

  • 168 calibration snippets across 5 languages (D1–D7 coverage)
  • Session planner: Target (50%) / Review (30%) / Stretch (20%) mix
  • Rolling weakness detection with time-decayed window
  • Selection transparency: "Why this snippet" explains every pick
  • Per-character MistakeHeatmap with confusion pairs
  • Weakness trajectories: daily snapshots track improvement

Guided Practice (v1.0)

  • Guided Mode: opt-in toggle that allows weakness signals to influence selection
  • WeaknessBias: bounded category-level bias (+0 to +3, never changes difficulty band)
  • Micro-drills: 5-item focused practice sessions targeting top weakness
  • SignalPolicy: feature-flag architecture with master switch and per-feature sub-flags
  • Storage hygiene: heatmap capped at 200 chars, confusion pairs at 20, snapshots at 90
  • Default OFF — all prior behavior preserved unless explicitly opted in

Audio

  • 5 keyboard sound themes (8 variations each)
  • 4 ambient soundscape categories (15 tracks total)
  • Per-channel volume controls and mute

Accessibility

  • Keyboard-first UX with visible focus outlines
  • Reduced sensory mode (caps audio volumes)
  • High-contrast dark theme

Install & Run

Requirements: .NET SDK 8.x

git clone https://github.com/mcp-tool-shop-org/linux-dev-typer.git
cd linux-dev-typer
dotnet restore
dotnet build -c Release
dotnet run --project src/LinuxDevTyper.App/LinuxDevTyper.App.csproj

Run Tests

dotnet test

817 tests covering all core engine modules.

Project Layout

Path Purpose
src/LinuxDevTyper.Core Portable engine (typing, rating, trends, difficulty, profiles, community, pedagogy, calibration, planner, weakness, heatmap, guided mode)
src/LinuxDevTyper.Core.Tests xUnit tests (817 tests)
src/LinuxDevTyper.App Avalonia desktop shell (UI + platform services + import/export)
assets/snippets Built-in JSON snippet packs
assets/sounds WAV files (ambient + keyboard SFX)
lib/meta-content-system Shared content library
docs/ Architecture, schema docs, phase plans, extension guides

Persistence

State file: ~/.config/linux-dev-typer/state.json (schema v12)

To reset: rm -rf ~/.config/linux-dev-typer

Adding Your Own Code

There are three ways to practice your own code:

Option 1: Paste Code (easiest)

  1. Open the sidebar (click ⚙)
  2. Find the Paste Code section
  3. Paste any code snippet into the text box
  4. Click Add — the language is auto-detected
  5. Your code appears in the snippet rotation immediately

Option 2: Import a File or Folder

  1. Open the sidebar → find Import
  2. Click Import File to add a single source file, or Import Folder to scan an entire project
  3. The app auto-detects language from file extensions (.py, .rs, .js, .cs, .java, .sh)
  4. Imported code is deduplicated by content hash — the same code is never added twice

Option 3: Create a Snippet Pack (JSON)

For curated sets of practice snippets:

  1. Create a JSON file in your packs folder:

    ~/.config/linux-dev-typer/packs/
    
  2. Name it after the language (e.g. python.json):

    {
      "language": "python",
      "snippets": [
        {
          "id": "my_list_comp",
          "title": "List comprehension",
          "difficulty": 3,
          "topics": ["lists", "comprehension"],
          "code": "squares = [x**2 for x in range(10)]\n"
        },
        {
          "id": "my_dict_comp",
          "title": "Dictionary comprehension",
          "difficulty": 4,
          "topics": ["dicts", "comprehension"],
          "code": "counts = {word: len(word) for word in words}\n"
        }
      ]
    }
    
  3. Restart the app — your snippets merge with built-in ones and can be enabled/disabled from the sidebar

Tips:

  • id must be unique across all packs
  • difficulty ranges from 1 (easy) to 7 (hard)
  • code should end with \n
  • User packs can be toggled on/off without deleting the file

Sharing Content

Export your custom snippets as a portable .ldtpack bundle:

  1. Open the sidebar → click Export
  2. Share the .ldtpack file with others
  3. They import it via the sidebar → Import

Only user-authored content travels — never practice history or settings.

Privacy

linux-dev-typer is fully offline. No data is collected, transmitted, or shared.

License

MIT

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.3 94 2/28/2026
1.0.2 89 2/26/2026
1.0.0 98 2/12/2026