{"id":50812411,"url":"https://github.com/viggomeesters/obsidian-script-viewer","last_synced_at":"2026-06-13T06:06:09.054Z","repository":{"id":363340759,"uuid":"1262619116","full_name":"viggomeesters/obsidian-script-viewer","owner":"viggomeesters","description":"Read-only script source, outline, and safety-hint viewer for Obsidian.","archived":false,"fork":false,"pushed_at":"2026-06-08T12:42:48.000Z","size":54,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-08T14:23:27.381Z","etag":null,"topics":["autohotkey","developer-tools","obsidian","obsidian-plugin","powershell","read-only","scripts","shell"],"latest_commit_sha":null,"homepage":"https://github.com/viggomeesters/obsidian-script-viewer#readme","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/viggomeesters.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-08T06:50:48.000Z","updated_at":"2026-06-08T12:42:49.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/viggomeesters/obsidian-script-viewer","commit_stats":null,"previous_names":["viggomeesters/obsidian-script-viewer"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/viggomeesters/obsidian-script-viewer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viggomeesters%2Fobsidian-script-viewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viggomeesters%2Fobsidian-script-viewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viggomeesters%2Fobsidian-script-viewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viggomeesters%2Fobsidian-script-viewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/viggomeesters","download_url":"https://codeload.github.com/viggomeesters/obsidian-script-viewer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viggomeesters%2Fobsidian-script-viewer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34273824,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"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":["autohotkey","developer-tools","obsidian","obsidian-plugin","powershell","read-only","scripts","shell"],"created_at":"2026-06-13T06:06:08.314Z","updated_at":"2026-06-13T06:06:09.044Z","avatar_url":"https://github.com/viggomeesters.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/hero.svg\" alt=\"Script Viewer\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/viggomeesters/obsidian-script-viewer/releases/latest\"\u003e\u003cimg alt=\"Latest release\" src=\"https://img.shields.io/github/v/release/viggomeesters/obsidian-script-viewer?style=flat-square\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg alt=\"MIT license\" src=\"https://img.shields.io/badge/license-MIT-green?style=flat-square\"\u003e\u003c/a\u003e\n  \u003cimg alt=\"Minimum app version 1.5.0+\" src=\"https://img.shields.io/badge/minimum-1.5.0%2B-2563eb?style=flat-square\"\u003e\n  \u003cimg alt=\"Never execute\" src=\"https://img.shields.io/badge/mode-never--execute-b91c1c?style=flat-square\"\u003e\n\u003c/p\u003e\n\n# Script Viewer\n\nScript Viewer is a read-only Obsidian plugin for inspecting script files and safe dotfiles without turning them into runnable actions. It opens `.sh`, `.bash`, `.zsh`, `.bat`, `.cmd`, `.ps1`, `.ahk`, `.command`, `.bats`, `.env*`, `.gitignore`, `.dockerignore`, `.gitattributes`, `.gitmodules`, `.npmrc`, `.nvmrc`, and `.yarnrc` files with line-numbered source, lightweight syntax hints, outline extraction, search, filtering, and safety-focused summaries.\n\n![Script Viewer preview](assets/screenshot.svg)\n\n## Features\n\n- Opens the supported script extensions and known dotfiles listed above.\n- Routes `.env*`, `.gitignore`, and other supported dotfiles by file name so they do not fall through to external viewers.\n- Shows stable line numbers with a soft-wrap toggle.\n- Detects shebangs and likely interpreters.\n- Builds a lightweight outline for shell functions, labels, trap/alias/export/set statements, PowerShell functions, AutoHotkey hotkeys, dotenv keys, and ignore/config patterns.\n- Highlights comments, strings, variables, command substitutions, paths, URLs, flags, keywords, and risky command patterns.\n- Searches source lines and filters outline items.\n- Keeps source visible even when syntax is unfamiliar.\n- Applies a 10,000 line render cap to keep large scripts responsive.\n- Stays read-only by design: it never executes scripts, starts terminals, mutates files, reads the clipboard, or makes network requests.\n\n## Positioning\n\nExisting community options cover broader code workflows:\n\n- Code View provides broad read-only syntax highlighting for many languages.\n- Code Files is editor-first and Monaco-based.\n- Code Space is a broader code workspace.\n\nScript Viewer is intentionally narrower. It focuses on risky automation artifacts and makes interpreter, environment-variable, executable-looking command, and safety hints visible without providing editing or execution affordances.\n\n## Why never-execute?\n\nScript files can delete data, alter system settings, call remote endpoints, or launch other programs. This plugin is for inspection only. It does not execute code, start subprocesses, open terminals, change permissions, lint, format, save, or call external applications.\n\n## Parser strategy\n\nScript Viewer uses local heuristics instead of full language parsers. It detects common shell, batch, PowerShell, AutoHotkey, dotenv, ignore-file, and small config-file structures while avoiding hard failures. If a line is unknown, it remains visible as source.\n\n## Development\n\n```bash\nnpm install\nnpm run build\nnpx tsc --noEmit\nnpm test\n```\n\n## Release files\n\nThe runtime files are:\n\n- `main.js`\n- `manifest.json`\n- `styles.css`\n\n## Manual installation\n\n1. Download `main.js`, `manifest.json`, and `styles.css` from the latest release.\n2. Create this folder in your vault: `.obsidian/plugins/script-viewer/`.\n3. Put the downloaded files in that folder.\n4. Reload Obsidian.\n5. Enable **Script Viewer** in **Settings -\u003e Community plugins**.\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviggomeesters%2Fobsidian-script-viewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fviggomeesters%2Fobsidian-script-viewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviggomeesters%2Fobsidian-script-viewer/lists"}