{"id":48881158,"url":"https://github.com/lemlnn/prism-core","last_synced_at":"2026-05-15T19:01:31.562Z","repository":{"id":350729350,"uuid":"1207968737","full_name":"lemlnn/prism-core","owner":"lemlnn","description":"PRISM: Path Reorganization \u0026 Intelligent Sorting Manager","archived":false,"fork":false,"pushed_at":"2026-05-14T00:26:26.000Z","size":226,"stargazers_count":10,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-05-14T02:28:44.356Z","etag":null,"topics":["automation","cli","files","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lemlnn.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":null,"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-04-11T16:36:39.000Z","updated_at":"2026-05-14T00:26:29.000Z","dependencies_parsed_at":"2026-04-25T07:00:24.812Z","dependency_job_id":null,"html_url":"https://github.com/lemlnn/prism-core","commit_stats":null,"previous_names":["lemlnn/prism-core"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/lemlnn/prism-core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lemlnn%2Fprism-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lemlnn%2Fprism-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lemlnn%2Fprism-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lemlnn%2Fprism-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lemlnn","download_url":"https://codeload.github.com/lemlnn/prism-core/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lemlnn%2Fprism-core/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33075218,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["automation","cli","files","python"],"created_at":"2026-04-16T03:02:37.678Z","updated_at":"2026-05-15T19:01:31.552Z","avatar_url":"https://github.com/lemlnn.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# prism-core\n\nA safe folder cleanup tool that sorts files, previews changes, and lets you undo mistakes.\n\n[Changelog](./CHANGELOG.md) - [User Guide](./docs/USER_GUIDE.md) - [Extension Guide](./docs/EXTENSIONS.md) - [Architecture Map](./docs/ARCHITECTURE_MAP.md) - [Discord Server](https://discord.gg/6G5PPS23fD)\n\nPRISM helps clean messy folders by sorting files into categories like Images, Documents, Videos, and Archives. It can preview changes before moving anything, save logs of what happened, undo previous organize runs, use persistent config profiles, and run experimental extensions for custom sorting behavior.\n\n\u003e `v1.3.0-devt4c` is a development build. The extension system, config editing commands, and per-extension settings are experimental and may change before the stable v1.3.x release.\n\n## Features\n\n- sorts top-level files into category folders\n- previews changes with dry-run mode\n- avoids overwriting duplicate filenames\n- saves JSON run logs\n- can undo previous organize runs\n- supports persistent config profiles\n- supports direct config editing with `config --set` and `config --unset`\n- includes debug output for inspection\n- supports experimental extension-based sorting\n- supports per-extension enable/disable controls\n- supports per-extension option storage\n\n## Install\n\n```bash\ngit clone https://github.com/lemlnn/prism-core.git\ncd prism-core\npython -m pip install .\n```\n\nAfter installation:\n\n```bash\nprism --version\n```\n\nFor editable local development:\n\n```bash\npython -m pip install -e .\n```\n\n## Quick Start\n\nCreate the default config profile:\n\n```bash\nprism config --create\n```\n\nPreview a cleanup:\n\n```bash\nprism organize --dry-run\n```\n\nOrganize the current folder:\n\n```bash\nprism organize\n```\n\nUndo the most recent organize run:\n\n```bash\nprism undo\n```\n\nUndo and remove empty category folders:\n\n```bash\nprism undo --delete-empty-folders\n```\n\nList saved organize logs:\n\n```bash\nprism list-logs\n```\n\nInspect the most recent organize log:\n\n```bash\nprism inspect\n```\n\nInspect a specific organize log:\n\n```bash\nprism inspect --log-file organize_log_YYYYMMDD_HHMMSS.json\n```\n\nRun with debug output:\n\n```bash\nprism --debug-mode organize\n```\n\n## Config Profiles\n\nProfiles are stored in:\n\n```text\n~/.prism_config/\n```\n\nThe default profile is:\n\n```text\ndefault.json\n```\n\nCreate a named profile:\n\n```bash\nprism -c photography config --create\n```\n\nUse a named profile:\n\n```bash\nprism -c photography organize --dry-run\n```\n\nShow a readable config summary:\n\n```bash\nprism -c photography config --status\n```\n\nShow raw JSON:\n\n```bash\nprism -c photography config --show\n```\n\nSave current runtime settings into a profile:\n\n```bash\nprism -c photography config --save --dry-run --exclude-str \"Draft\"\n```\n\n## Direct Config Editing\n\n`v1.3.0-devt4c` adds direct config editing commands.\n\nSet one or more config values:\n\n```bash\nprism config --set sort_hidden=true enable_extensions=true\n```\n\nSet values inside a named profile:\n\n```bash\nprism -c photography config --set dry_run=true exclude_str=Draft\n```\n\nUnset values and fall back to defaults:\n\n```bash\nprism config --unset sort_hidden exclude_str\n```\n\nCommon editable config keys include:\n\n- `debug_mode`\n- `dry_run`\n- `sort_hidden`\n- `delete_empty_folders`\n- `exclude_str`\n- `enable_extensions`\n- `extensions_dir_path`\n- `disabled_extensions`\n- `extension_options`\n\n## Experimental Extensions\n\nExtensions are disabled by default.\n\nEnable extensions for one run:\n\n```bash\nprism --enable-extensions organize --dry-run\n```\n\nCreate the default extensions directory:\n\n```bash\nprism extension --create\n```\n\nShow extension status:\n\n```bash\nprism extension --status\n```\n\nList discovered extensions and whether they are enabled or disabled:\n\n```bash\nprism --enable-extensions extension --list\n```\n\nUse a custom extension folder:\n\n```bash\nprism --enable-extensions --extensions-dir ./extensions organize --dry-run\n```\n\nInspect loaded extensions from a custom folder:\n\n```bash\nprism --enable-extensions --extensions-dir ./extensions extension --status\n```\n\nCurrent hooks:\n\n- `file_should_process`\n- `file_target_resolve`\n\nExtensions can suggest behavior, but PRISM core still owns file movement, path validation, duplicate-safe naming, logs, undo, and core safety checks.\n\n## Per-Extension Controls\n\n`v1.3.0-devt4c` adds per-extension enable/disable controls.\n\nDisable an extension in the current config profile:\n\n```bash\nprism extension --disable pdf-classifier-APs-v1.0\n```\n\nEnable it again:\n\n```bash\nprism extension --enable pdf-classifier-APs-v1.0\n```\n\nSet a per-extension option:\n\n```bash\nprism extension --set-option metadata-image-sorter-v1.2 prefer_filesystem_created=true\n```\n\nUnset a per-extension option:\n\n```bash\nprism extension --unset-option metadata-image-sorter-v1.2 prefer_filesystem_created\n```\n\nPer-extension options are stored in the selected config profile under `extension_options`. Extensions can read those values through `PRISM_EXTENSION_OPTIONS` or an optional `configure_extension(options)` function.\n\n## Development Build Notes\n\nThe current split package structure is organized under `src/prism_core/`:\n\n```text\nsrc/prism_core/\n  __init__.py\n  __main__.py\n  defaults.py\n  extensions.py\n  filesystem.py\n  logs.py\n  config_store.py\n  config_edit.py\n  commands.py\n  cli.py\n  main.py\n```\n\nThe main design boundary is still the same: extensions suggest behavior, while PRISM core owns safe execution.\n\n## Tested Platforms\n\n- Windows 10/11 (restricted, unrestricted)\n- Fedora KDE 42/43\n- EndeavorOS\n\n## Credits\n\nSpecial thanks to my early contributors and testers.\n\nDevelopment Team:\n\n- Lemuel ([@lemlnn](https://github.com/lemlnn)) - Lead Developer\n- Devin ([@DevinEats314](https://github.com/DevinEats314)) - Co-Developer \u0026 Outreach\n\nAlpha Testers:\n\n- Bella - beta macOS compatibility attempt\n- Gavin ([@dojozycknar10-player](https://github.com/dojozycknar10-player)) - Windows 11 restricted environment compatibility\n- Maxwell ([@b135-crypto](https://github.com/b135-crypto)) - planned Zorin OS and macOS compatibility\n\nEarly Contributors:\n\n- Enoch ([@Wavefire5201](https://github.com/Wavefire5201))\n- Gavin ([@dojozycknar10-player](https://github.com/dojozycknar10-player))\n- Devin ([@DevinEats314](https://github.com/DevinEats314))\n\n## License\n\nApache License 2.0. See the LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flemlnn%2Fprism-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flemlnn%2Fprism-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flemlnn%2Fprism-core/lists"}