Skip to content

Convert artifact scripts to __artifacts_v2__ header format#721

Merged
abrignoni merged 15 commits into
mainfrom
Brigs-working
Jun 18, 2026
Merged

Convert artifact scripts to __artifacts_v2__ header format#721
abrignoni merged 15 commits into
mainfrom
Brigs-working

Conversation

@abrignoni

Copy link
Copy Markdown
Owner

Summary

  • Converts 215 artifact scripts from the legacy __artifacts__ footer format to the __artifacts_v2__ header format
  • Each script gains a structured metadata block at the top (name, description, author, version, creation_date, last_updated_date, requirements, category, notes, paths, output_types, function, artifact_icon)
  • Removes the old __artifacts__ dict from the bottom of each file
  • Function bodies are unchanged — no logic refactoring
  • artGlobals.py excluded (shared globals file, not an artifact)

Test plan

  • Verify ALEAPP loads without import errors
  • Spot-check a few converted scripts to confirm header fields are accurate
  • Confirm artGlobals.py is unchanged

Comment thread scripts/artifacts/chromeLoginData.py Outdated
"requirements": "none",
"category": "Chromium",
"notes": "",
"paths": ('*/app_chrome/Default/Login Data*',),

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the search pattern list is different from the header being removed

logfunc(f'No Turbo - Application Usage data available')

__artifacts_v2__ = {
"get_Turbo_AppUsage": {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

has no output key in the artifact header

Comment thread scripts/artifacts/dmss.py Outdated
"creation_date": "2000-01-01",
"last_updated_date": "2000-01-01",
"requirements": "none",
"category": "",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

empty category

- Add missing v2 headers to ChessComAccount, ChessComGames, ChessWithFriends, chromeAutofill
- Fix syntax errors: close unclosed paths tuples in appSemloc, chatgpt, notificationHistory, ulrUserprefs, ulrUserprefs
- Fix corrupted import lines in ChessComFriends, ChessComMessages
- Fix artifact key mismatches to match function names (K9Mail, MicrosoftAuthenticator, SamsungHoneyboard, battery_usage_v9, burner*, keepNotes, fitbit, wireMessenger, FCMQueuedMessagesSkype)
- Fix invalid output_types values in WithingsHealthMate, airtagAndroid, deviceHealthServices_Battery
- Assign missing artifact_icons to 41 entries
- Rename last_updated_date to last_update_date (canonical field name) across all files
- Rename date field to creation_date and add last_update_date where missing
- Replace 2000-01-01 placeholder dates with actual git first-commit dates
- Fix corrupted import and description in AVG.py
- Fix missing date fields in life360DriverBehavior.py
- Fix citymapper.py output_types missing trailing commas
Also fix likee.py split into two artifact entries (one per function/path set)
and fix duplicate last_update_date key in LinkedIn.py header.
The earlier lint pass had rewritten function bodies extensively (~9600 lines),
including a runtime-breaking change in AdidasActivities (str(x, encoding=...))
and dropped code lines. This restores every function body, import, and comment
to exactly match origin/main, so the only change in each file is the
__artifacts_v2__ header plus a per-file pylint disable comment for the
pre-existing warnings. Also splits likee.py into its two artifact entries and
restores the original AdidasActivities category value.
The plugin loader resolves a v2 artifact's function only when the function is
decorated with @artifact_processor (matched by key name) or when the entry has
a 'function' key. The converted scripts use the legacy ArtifactHtmlReport style
(undecorated), so they require the 'function' key. Re-added it (value = function
name) to all 250+ affected entries, fixed entries the bulk pass missed due to
blank lines / indentation (K9Mail, MicrosoftAuthenticator, battery_usage_v9,
wireMessenger, OneDrive_Metadata, FCMQueuedMessagesSkype), and renamed the
FCMQueuedMessagesTumblr key to get_fcm_tumblr to avoid a duplicate-plugin
collision with the Instagram module. Verified: plugin loader loads all artifacts
with zero "No matching function" warnings and no duplicate-key errors.
These two @artifact_processor artifacts had no output_types key in origin, so
the wrapper defaulted them to all output types. The header migration added
"output_types": None, which the wrapper passes straight into check_output_types,
causing "argument of type 'NoneType' is not iterable" whenever they have data.
Set output_types to "all" to match the original default behavior.
These three artifacts crashed when their data was present because their function
signatures didn't match the (files_found, report_folder, seeker, wrap_text)
contract the loader calls with. They were dormant before (no function key), so
restoring registration exposed the latent bugs.

- chromeDIPS: add the missing seeker/wrap_text params
- OneDrive_Metadata: remove the unused time_offset param
- FCMQueuedMessagesSkype: default the Skype/Teams mode param to "s" (Skype)
healthmate_contacts had output_types "message-square" (a feather icon name),
which makes check_output_types return False for every type, so the decorated
artifact silently produced no output despite finding data. Set it to "standard"
to match its six sibling entries. (Pre-existing in origin, not introduced here.)
Convert four single-report Garmin artifacts to the LAVA output pipeline:
GarminSync, GarminNotifications, GarminPersistent, GarminUser. Each now uses
@artifact_processor and returns (data_headers, data_list, source_path) instead
of building reports manually, adding LAVA output alongside the existing HTML/TSV
(and timeline where a datetime column exists). The data extraction (queries,
row parsing) is unchanged; datetime columns are marked with the 'datetime' type.
The function key is dropped since decorated functions resolve by name.

Deferred as more complex (JSON viewers / network calls / multi-table):
GarminResponse, GarminJson, GarminGcmJsonActivities, GarminFacebook.
@abrignoni abrignoni merged commit 97cdd1f into main Jun 18, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants