{"id":30548524,"url":"https://github.com/jooapa/jread","last_synced_at":"2026-05-18T03:34:31.260Z","repository":{"id":311816145,"uuid":"1043354097","full_name":"jooapa/JRead","owner":"jooapa","description":"The ultimate cross-platform C# console input library.","archived":false,"fork":false,"pushed_at":"2025-11-06T00:37:23.000Z","size":121,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-06T02:33:27.735Z","etag":null,"topics":["cli","console","cross-platform","csharp","dotnet","input","input-output","library","output"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"zlib","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jooapa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-23T17:15:15.000Z","updated_at":"2025-11-06T00:37:26.000Z","dependencies_parsed_at":"2025-08-27T03:16:57.305Z","dependency_job_id":"f9a82ab5-4f3d-4be6-a2df-3cf2c8ba50ce","html_url":"https://github.com/jooapa/JRead","commit_stats":null,"previous_names":["jooapa/jread"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jooapa/JRead","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jooapa%2FJRead","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jooapa%2FJRead/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jooapa%2FJRead/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jooapa%2FJRead/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jooapa","download_url":"https://codeload.github.com/jooapa/JRead/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jooapa%2FJRead/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33163763,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T22:39:12.733Z","status":"online","status_checked_at":"2026-05-18T02:00:06.436Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","console","cross-platform","csharp","dotnet","input","input-output","library","output"],"created_at":"2025-08-28T03:08:58.762Z","updated_at":"2026-05-18T03:34:31.254Z","avatar_url":"https://github.com/jooapa.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JRead\n\n**JRead** is the ultimate cross-platform C# console input library for .NET 8+\n\n---\n\n### Simple Example\n```csharp\nusing JRead;\n\n// Basic input\nstring name = JRead.Read(\"Enter your name: \");\nConsole.WriteLine($\"Hello, {name}!\");\n\n// Input with prefilled text\nstring edited = JRead.Read(\"Edit this: \", \"DefaultValue\");\nConsole.WriteLine($\"Final value: {edited}\");\n```\n\n### Advanced Example\n```csharp\nusing JRead;\n\nvar options = new JReadOptions\n{\n    EnableMaskedInput = true,           // Hide password input\n    MaskedInputChar = '*',              // Use * for masking\n    EnableAutoComplete = true,          // Enable tab completion\n    AutoCompleteItems = new List\u003cstring\u003e { \"admin\", \"user\", \"guest\" },\n    AutoCompleteMinLength = 2,          // Show suggestions after 2 chars\n    AddReturnedValueToHistory = false,  // Don't save passwords to history\n    EscapingReturnsTheOriginalInput = false // ESC returns null\n};\n\nstring? password = JRead.ReadNull(\"Password: \", options: options);\nif (password == null)\n{\n    Console.WriteLine(\"Login cancelled!\");\n    return;\n}\n```\n\n## JReadOptions Reference\n\n**`CustomHistory`** (`JReadHistory?`, default: `null`)  \nCustom history instance instead of global history\n\n**`EnableDebug`** (`bool`, default: `false`)  \nPrint debug information for key presses\n\n**`AddReturnedValueToHistory`** (`bool`, default: `true`)  \nAdd the returned value to command history\n\n**`EscapingReturnsTheOriginalInput`** (`bool`, default: `true`)  \nIf true, ESC returns original input; if false, returns null\n\n**`AutoCompleteItems`** (`List\u003cstring\u003e`, default: `[]`)  \nList of autocomplete suggestions\n\n**`EnableAutoComplete`** (`bool`, default: `true`)  \nEnable tab-completion functionality\n\n**`AutoCompleteMinLength`** (`int`, default: `1`)  \nMinimum characters before showing suggestions\n\n**`AutoCompleteCaseSensitive`** (`bool`, default: `false`)  \nCase-sensitive autocomplete matching\n\n**`EnableMaskedInput`** (`bool`, default: `false`)  \nMask input characters (for passwords)\n\n**`MaskedInputChar`** (`char`, default: `'*'`)  \nCharacter used for masking input\n\n**`NewLineOnExit`** (`bool`, default: `true`)  \nAdd newline when input completes\n\n**`MaxDisplayLength`** (`int?`, default: `null`)  \nMaximum characters to display (windowed view)\n\n**`SubtractFromAvailableSpace`** (`bool`, default: `false`)  \nSubtract MaxDisplayLength from console width\n\n## Technical Definitions\n\n```csharp\nstring Read(string startText = \"\", string? preText = null, JReadOptions? options = null);\nstring? ReadNull(string startText = \"\", string? preText = null, JReadOptions? options = null);\n\nstring Read(string? startText = null, JReadOptions? options = null);\nstring? ReadNull(string? startText = null, JReadOptions? options = null);\n\nstring Read(string? startText = null);\nstring? ReadNull(string? startText = null);\n```\n\n## Keyboard Shortcuts\n\n| Shortcut | Action |\n|----------|--------|\n| `Arrow Keys` | Move cursor left/right |\n| `Ctrl + Left/Right` | Move by word |\n| `Home/End` | Move to start/end of line |\n| `Backspace/Delete` | Delete characters |\n| `Ctrl + W` | Delete word to the left |\n| `Ctrl + U/Z` | Undo last action |\n| `Ctrl + Y` | Redo last undone action |\n| `Up/Down Arrows` | Navigate command history |\n| `Tab` | Autocomplete (if enabled) |\n| `Enter` | Submit input |\n| `Escape` | Cancel or return original (based on options) |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjooapa%2Fjread","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjooapa%2Fjread","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjooapa%2Fjread/lists"}