goingforbrooke / folsum Goto Github PK
View Code? Open in Web Editor NEWSummarize the contents of a directory by filetype.
License: MIT License
Summarize the contents of a directory by filetype.
License: MIT License
Contributors don't have a workflow for PRing this repo.
Adding PRs to the CI pipeline would make it easier to add release notes for each release. Release notes are currently placeholder text "add feature X" and "fix buy Y."
Document PR flow (branch off of dev
and PR merge (--no-ff) to main
) in README.md
's "Contributing" section.
In the WASM build, buttons for operations that interact with the local filesystem are removed.
Grey out these buttons in WASM builds.
A user requested that FolSum be made available for running on Windows systems.
Add Windows to the CI/CD pipeline.
Dependency updates are annoying to do by hand, much less remember that they need to be done.
Add a CI/CD step that checks for dependency updates and updates FolSum automatically. Upgrade attempts should fail if tests don't pass. As a bonus, they should also fail if there's output from cargo check
, which would indicate that a dependency's API changed or is about to change, and so needs developer attention.
There's an opportunity here to merge in security-critical patches sooner (and independently of scheduled upgrades), but that might be a bit too complex.
The loop on getting feedback from users is large and slow.
Create an in-app feedback system.
The repo would look more professional if it had some CI/CD badges to report on the status of different pipelines. It would also serve as a "developer dashboard" to identify build failures more quickly. Contributors might feel more compelled to contribute if they see that the repo has recent activity.
Add CI/CD badges to READM.md
.
Ideas:
WASM builds display the GUI nicely in-browser, but new users should be able to meaningfully interact with the application so they can get excited about how it works.
Add some test files to WASM deployments so browser users have something to summarize. Don't bother with uploading their own files-- that's outside the scope of this project.
CSV exports don't match what's displayed in the GUI. Instead of ordering by descending order (like the GUI), they're in the order that they were added. Users will expect the most populous file extensions to be at the top.
Create CSV exports with file extensions in descending order.
In CSV exports, the columns names for the extension names and the counts are reversed.
It's hard for maintainers to weigh the cost of adding dependencies, at least as they relate to binary size.
Measure the size of the built binary and the dependencies. This was inspired by this action, though it uses TypeScript, and should really be written in rust as a dev dependency.
Opening a file dialog freezes the GUI. This doesn't matter very much because investigators probably aren't looking at the GUI while they're picking files, but it looks unprofessional.
Asynchronously spawn file dialogs so they don't block the GUI.
eFrame has some new updates.
egui_README.md
: update sw.js
egui_README.md
for eframe's up-to-date oneThis is free software, but investigators don't have an avenue to show their gratitude by parting with green slips of paper.
Add a donation button to README.md
. Things to look into include Patreon, PayPal, GitHub subscriptions, and that cute "Buy Me a Coffee" button that I keep seeing.
When CI/CD pipelines fail, the first thing that I want to know is whether it was trying to increment the minor or patch/fix (SemVer) version.
Use ::notice::
to annotate the output of the following CI/CD steps in build_macos.yml
:
dev
branch - name: Generate "new release" message with hyperlink to release page
id: generate_release_message
run: echo "message=Created new release ${{ steps.get_bumped_semver.outputs.semver }} at ${{ steps.publish_release.outputs.html_url }}" >> $GITHUB_OUTPUT
- name: Create info message about new release
run: echo "::notice::${{ steps.generate_release_message.outputs.message }}"
The CI/CD pipeline's auto-commit message for version bumping says minor
when the patch
/fix
version version was incremented.
Ex.
499f182 Increment minor version from v2.0.0 to v2.0.1
Dynamically change the auto-commit message based on the type of version bump.
The CI/CD pipeline published releases even if CHANGELOG.md
hasn't been updated. This will make it harder to identify bugs down the road. It'll also make it harder to "sell" investigators on updating to the next version.
Fail to publish a release if CHANGELOG.md
hasn't been update. Use keepachangelog.com as inspiraton.
Many mutex locks are erroneously named unlocked
, when really they're locking the mutex, not unlocking it.
Rename mutex guard variables prefixed by unlocked
to locked
.
If no files have been summarized (and the GUI's "empty"), it's still possible to export a CSV of "nothing." Ideally, the "Export" button should be inactive in this case.
If nothing's been summarized, then "grey out" the "Export" button.
Debugging errors is difficult because there's little in the way of log output.
Add logging for the standard log levels. For bonus points, colorize by log level:
#333333
#009ce0
#fcdc00
#f44e3b
#ffffff
with #f44e3b
Since this is a user-focused GUI application, it should have a user-friendly "external site" for new users.
Contributors would appreciate auto-generated HTML documentation that shows information about FolSum's (internal) API and how things are laid out. This is also a prerequisite for adding a slick crates.io deployment target.
Add automatic documentation generation to CI/CD pipeline.
The repo's language is auto-detected as Javascript when it's actually a pure-Rust project.
Ignore docs/
, which seems to contain a lot of JS files in other branches.
Worker threads (for directory summarization and CSV export creation) are spawned from the GUI thread. The GUI thread should not be the parent thread of worker threads.
Spawn worker threads from (new) "main" thread via the GUI thread, which should be the first thread that the "main" thread spawns. The GUI should call back to a thread pool manager in the "main" thread when spawning worker threads.
README.md
looks a bit stark. It could use:
dev
and others increment minor/patch, not just minorThe WASM build crashes when you click "Summarize." This is probably because there's no failure case in which no directory to summarize has been defined.
Make a test case to ensure that WASM builds don't fail when they have nothing to summarize.
FolSum's leaving it's proof-of-concept stage, but internally its code isn't very resilient to unexpected failures. Due to the project's simplicity, these failures aren't likely to happen, but it's better to .expect
the unexpected ๐ซ .
Add some slick error raises and catches. For bonus points, do a bit of chaos engineering in the unit tests with failures cases that could happen.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.