dev@bfd:~/dev-diary$ git show 2026-01
commit 2026-01-15-main-focus-upwork-profile-portfolio-completion-small-tool-upgrades
Author: MJ
Date: Jan 15, 2026

2026-01-15 - MAIN-FOCUS: UPWORK PROFILE/PORTFOLIO COMPLETION small tool upgrades

Timeline

The initial implementation relied on spawning a PowerShell process to capture the screen. The overhead of spinning up the .NET runtime for every screenshot made “instant” capture impossible.

  • 10:05 Identified that image decoding and encoding were occurring on the main UI thread, causing the application to hang visibly during the crop/save phase.
  • 10:54 (Action) - 10:15 Integrated package:win32 and dart:ffi. Implemented BitBlt in NativeScreenshotService to copy screen pixels directly into a Dart Uint8List, bypassing disk I/O entirely.
  • 10:25 Modified CropOverlay to accept in-memory image data (Uint8List) instead of file paths, removing the need for intermediate temporary files.
  • 10:35 Wrapped the heavy image library operations (decode, crop, encode) in compute() functions to move them to a background Isolate.
  • 10:54 (Observation) - 10:40 Direct GDI capture is orders of magnitude faster than scripting. The “snap” is now effectively instant.
  • 10:45 The “UI Janky” feeling during saving is gone. Using Isolates for image processing allows the loading/success animations to play smoothly while the CPU crunches pixels in the background.
  • 10:54 (Open Thread) - 11:00 The current GDI implementation grabs the Virtual Screen bounds. Need to verify behavior on mixed-DPI multi-monitor setups to ensure coordinate mapping remains accurate.
  • 11:00 Consider adding a global low-level keyboard hook (Win32 API) to trigger captures even when the app doesn’t have focus.
  • 10:58 (Context) TheWriteView & SnapDual Feature Updates
  • 09:38 Users need a way to provide specific instructions (e.g., “Count characters”) without preset level constraints.
  • 10:40 User UX for snap_dual was missing a standard way to cancel region selection without closing the tool.
  • 10:58 (Action) - 10:05 Updated EditorProvider and constants.dart to support customPrompt and isOverride state.
  • 10:20 Updated work.ps1 to resolve he_write_view.exe vs writeview.exe mismatch.
  • 10:50 Refactored snap_dual CropOverlay to use modern KeyboardListener and handle multi-stage Escape logic.
  • 10:58 (Observation) - 11:00 Discovered that forcing “Return ONLY edited text” in override mode prevents character counting; modified logic to trust user prompt in override.
  • 11:10 Icon update successfully replaced default Windows icon in tool build folders.
  • 10:58 (Open Thread) - 11:30 Revisit: Should Override mode also ignore the JSON formatting instruction when ‘Explain changes’ is on? Current logic enforces JSON to prevent app-side parsing errors.
  • 19:42 (Context) enhancing UI accessibility and usability. act: refactored dashboard layout to a fully fluid CSS Grid system with mobile-first breakpoints. obs: the interface now adapts seamlessly from mobile viewports to ultra-wide displays without horizontal overflow or component clipping.
  • 19:46 (Context) ADDEG - Needed to remove rigid layout for constraints to support Electron window resizing and potential mobile/web access.
  • 19:46 (Action) Implemented CSS Grid with minmax columns. Defined breakpoints for <600px (mobile) and >768px (desktop). Adjusted component scaling for header and modal elements.
  • 19:46 (Observation) Layout remains stable and readable even at extreme aspect ratios. Significant improvement in readability on small screens due to vertical stacking.
  • 19:46 (Open Thread) Monitor performance of backdrop-blur on low-end hardware for mobile-resized windows.
  • 01:49 (Context) FULL UPWORK PROFILE/PORTFOLIO COMPLETION

Context

  • 08:54 # Dev Diary Entry - 2026-01-15 Add-To-Context Tool UPGRADES

UI/UX Improvements: Multi-Select Delete & Descriptive Scopes

Summary

Focused on improving user experience for both novice users (better descriptions) and power users (bulk management).

Changes

Feature (Manage Existing): Implemented multi-select deletion. Users can now select multiple items in the list and remove them in a single batch operation. UX (Add Item): Refined “Where it shows up” selection logic. Renamed internal scope IDs to natural language labels (e.g., “File” -> “File Context Menu (Right-click any file)”). Added a dynamic description label below the dropdown to explain exactly when the men appears. Added hover tooltips to the dropdown items for better discovery. UI (Manage Existing): Increased the “Scope” column width from 160 to 300 to accommodate the new descriptive labels.

Technical Details

Modified context menu manager scripts to handle SelectedItems collection in the Remove button click event. Updated Get-ContextScopes in context menu manager scripts to include a new description field. Verified via context menu manager scripts (All Pass).

  • 10:54 - 10:00 Optimizing Flutter Windows Screenshot Performance

The initial implementation relied on spawning a PowerShell process to capture the screen. The overhead of spinning up the .NET runtime for every screenshot made “instant” capture impossible.

  • 10:05 Identified that image decoding and encoding were occurring on the main UI thread, causing the application to hang visibly during the crop/save phase.
  • 10:58 TheWriteView & SnapDual Feature Updates
  • 09:38 Users need a way to provide specific instructions (e.g., “Count characters”) without preset level constraints.
  • 10:40 User UX for snap_dual was missing a standard way to cancel region selection without closing the tool.
  • 19:42 enhancing UI accessibility and usability. act: refactored dashboard layout to a fully fluid CSS Grid system with mobile-first breakpoints. obs: the interface now adapts seamlessly from mobile viewports to ultra-wide displays without horizontal overflow or component clipping.
  • 19:46 ADDEG - Needed to remove rigid layout for constraints to support Electron window resizing and potential mobile/web access.
  • 01:49 FULL UPWORK PROFILE/PORTFOLIO COMPLETION

Actions

  • 08:51 NEW GLOBAL SCREENSHOT/SNAPSHOT TOOL, deeper customisation than Windows Snipping Tool.

  • 00:10 Initial requirement was to upgrade snapshot tool for dual monitors, persistent active state, and capture indicators.

  • 00:10 Existing implementation used System.Windows.Forms.Screen::PrimaryScreen in PowerShell which limited capture to the main display.

  • 08:51 - 00:22 Replaced PrimaryScreen with SystemInformation.VirtualScreen in native_screenshot_service.dart to capture full desktop area across monitors.

  • 00:22 Added getVirtualScreenBounds to retrieve total width/height and top/left coordinates.

  • 00:23 Updated capture_service.dart to use virtual screen bounds for positioning the crop overlay window.

  • 00:23 Ensured window restores to correct state (Hotbar/Full) after capture.

  • 00:25 Added SnackBar feedback to HomeScreen even when in Hotbar mode.

  • 00:28 Ran flutter build windows to generate release executable.

  • 10:54 - 10:15 Integrated package:win32 and dart:ffi. Implemented BitBlt in NativeScreenshotService to copy screen pixels directly into a Dart Uint8List, bypassing disk I/O entirely.

  • 10:25 Modified CropOverlay to accept in-memory image data (Uint8List) instead of file paths, removing the need for intermediate temporary files.

  • 10:35 Wrapped the heavy image library operations (decode, crop, encode) in compute() functions to move them to a background Isolate.

  • 10:58 - 10:05 Updated EditorProvider and constants.dart to support customPrompt and isOverride state.

  • 10:20 Updated work.ps1 to resolve he_write_view.exe vs writeview.exe mismatch.

  • 10:50 Refactored snap_dual CropOverlay to use modern KeyboardListener and handle multi-stage Escape logic.

  • 19:46 Implemented CSS Grid with minmax columns. Defined breakpoints for <600px (mobile) and >768px (desktop). Adjusted component scaling for header and modal elements.

Observations

  • 08:51 - 00:20 PowerShell System.Windows.Forms is effective for accessing native screen information without extra plugins.
  • 00:30 Build artifacts confirmed at context menu manager scripts.
  • 10:54 - 10:40 Direct GDI capture is orders of magnitude faster than scripting. The “snap” is now effectively instant.
  • 10:45 The “UI Janky” feeling during saving is gone. Using Isolates for image processing allows the loading/success animations to play smoothly while the CPU crunches pixels in the background.
  • 10:58 - 11:00 Discovered that forcing “Return ONLY edited text” in override mode prevents character counting; modified logic to trust user prompt in override.
  • 11:10 Icon update successfully replaced default Windows icon in tool build folders.
  • 19:46 Layout remains stable and readable even at extreme aspect ratios. Significant improvement in readability on small screens due to vertical stacking.

Open Threads

  • 10:54 - 11:00 The current GDI implementation grabs the Virtual Screen bounds. Need to verify behavior on mixed-DPI multi-monitor setups to ensure coordinate mapping remains accurate.
  • 11:00 Consider adding a global low-level keyboard hook (Win32 API) to trigger captures even when the app doesn’t have focus.
  • 10:58 - 11:30 Revisit: Should Override mode also ignore the JSON formatting instruction when ‘Explain changes’ is on? Current logic enforces JSON to prevent app-side parsing errors.
  • 19:46 Monitor performance of backdrop-blur on low-end hardware for mobile-resized windows.

Boundary Reminder: Seeds. No maintenance. No roadmap.