Commit Graph

46 Commits

Author SHA1 Message Date
mixeme f653b1e484 Add task completion checklist to refactoring plan
Track the 30 tasks across 5 phases with checkboxes. Each checkbox can be
marked complete as tasks land and pass review.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-18 08:19:02 +03:00
mixeme 4c49104cce Add refactoring plan document
Document a phased plan to restructure GoSentry into focused packages
under src/ (domain, storage, runner, scheduler, platform, app, ui) with
an application-service layer that owns state, and link it from the README.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 08:16:03 +03:00
mixeme d24211cab2 Fix autostart status for paths with non-ASCII chars and spaces
readShortcut read the shortcut TargetPath via [Console]::Out.Write, which
uses the system OEM code page by default. On Russian Windows (CP866) this
encoded Cyrillic characters differently from UTF-8, so Go's string(output)
produced a garbled path that never matched os.Executable, causing
AutostartStatus to always report "shortcut points to another executable"
for any install directory that contained non-ASCII characters.

Fix: prepend [Console]::OutputEncoding = New-Object System.Text.UTF8Encoding($false)
to the readShortcut PowerShell script so the output is always UTF-8.

Also harden sameWindowsPath against NTFS 8.3 short names: when a directory
name contains spaces Windows assigns a short name (e.g. LOCALG~1 for
"Local Git"), and the OS may use that form when launching from a
Startup-folder shortcut. Add an os.SameFile fallback that compares paths
by volume serial number and file index, which is immune to 8.3 vs long
name differences as well as directory junction points.

Add normalizeWindowsPath helper that strips quotes and the \?\ extended-
length prefix before filepath.Clean so those variants compare equal to
the plain path.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 07:38:18 +03:00
mixeme 0c2c9f1f67 Add comprehensive test suite documentation
Created docs/TESTS.md documenting all 25 tests across 5 test files:
- store_test.go: YAML serialization tests
- scheduler_test.go: Schedule parsing and invocation output tests
- runner_test.go: Command execution, exit codes, and Windows process tests
- autostart_windows_test.go: Windows startup folder shortcut creation tests
- autostart_linux_test.go: Linux XDG Desktop Entry autostart tests

Includes test descriptions, platform requirements, and usage instructions.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-18 00:21:33 +03:00
mixeme 89704b0470 Recommend MinGW Mesa variant in VirtualBox/RDP workaround
Update the OpenGL workaround to suggest the mingw release of Mesa instead of
msvc, as it matches the MSYS2 GCC toolchain used to build GoSentry. Both
variants work at runtime, but mingw is the more consistent choice.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-18 00:17:20 +03:00
mixeme 975829ed70 Improve command execution modes 2026-06-18 00:13:12 +03:00
mixeme eb6a1907e6 Document tricky design decisions
Add explanatory comments around startup timing, single-instance focus handoff, config migration, and Windows/Linux autostart choices.

The new comments capture why these implementations were chosen, what alternatives were intentionally avoided, and which user-facing problems those tradeoffs solve.
2026-06-17 23:01:05 +03:00
mixeme 2f7bbe4fca Fix startup timing measurement
Bump the version to 0.3.1 and record startup timing after the main window is actually shown.

Keep autostart launches distinct in History by recording a separate tray-start message when the UI intentionally starts hidden.
2026-06-17 22:57:23 +03:00
mixeme 94033e794f Rename project to GoSentry
Rename the application, Go module path, command package, build artifacts, resource script, and embedded icon assets from PySentry/pysentry to GoSentry/gosentry.

Move portable settings to gosentry.yaml while reading legacy pysentry.yaml during the transition, then rewrite settings under the new name.

Update Windows and Linux autostart integration to use GoSentry names while cleaning up legacy PySentry registry, desktop-entry, and systemd artifacts.

Refresh README, architecture notes, roadmap, changelog, and release examples for version 0.3.0.
2026-06-17 07:29:58 +03:00
mixeme d828e34121 Specify release archive 2026-06-16 22:27:04 +03:00
mixeme 872cc82c5c Release version 0.2.5
Bump the application version to 0.2.5 and update documented artifact names.

Document the Windows VirtualBox/RDP OpenGL startup failure and the Mesa software OpenGL workaround.

Record the tray-icon double-click limitation in the roadmap for future Fyne or platform-specific tray work.
2026-06-16 22:08:20 +03:00
mixeme b1fe8bd675 Start autostart launches in tray
Add a shared --start-in-tray argument that lets autostart start the scheduler and tray integration without opening the main window.

Write the argument into Windows Startup shortcuts and Linux XDG Autostart desktop entries, and verify existing autostart entries include it.

Keep manual launches unchanged and let a manual second launch reveal an already-running instance while duplicate autostart launches stay hidden.
2026-06-16 21:52:00 +03:00
mixeme 44f24ab3d8 Use Startup shortcut for Windows autostart
Replace the HKCU Run autostart entry with a per-user Startup folder shortcut. A .lnk stores TargetPath separately, which avoids fragile quoting when the executable path contains spaces.

Remove legacy PySentry and GoSentry Run entries when saving autostart settings, and report shortcut status from the actual shortcut target.

Add Windows tests that create and read a temporary shortcut with spaces in the path so the PowerShell/COM invocation remains covered.
2026-06-16 21:40:48 +03:00
mixeme 0bc9e91d1e Stabilize Jobs details panel width
Wrap dynamic job detail labels so long names, schedules, commands, and status values no longer change the right panel minimum width when the selected job changes.

Point embedded and Windows resource icons at the current asset filenames so tests and Windows builds continue to work after the asset cleanup.
2026-06-16 21:24:03 +03:00
mixeme 079961e735 Delete old icons 2026-06-16 20:32:11 +03:00
mixeme cc294ce718 Rename 2026-06-16 20:31:09 +03:00
mixeme 5f85af27e9 Rename 2026-06-16 20:30:58 +03:00
mixeme d4b1238c5f Delete old icons 2026-06-16 20:30:47 +03:00
mixeme d06f130c5c Create pysentry-icon-16_mix.png 2026-06-16 08:41:58 +03:00
mixeme fd3e8baa0e Icons 2026-06-16 08:33:49 +03:00
mixeme d202f8a94c Replace archived YAML dependency
Switch direct YAML usage from gopkg.in/yaml.v3 to go.yaml.in/yaml/v4, the maintained YAML org fork of the archived go-yaml repository.

Update README dependency and mirroring links so the documented source repository matches the module used by the application.
2026-06-16 08:12:14 +03:00
mixeme c1bd8c952c Release version 0.2.4
Prevent repeated application launches by using a local single-instance control channel. A second process forwards a show command to the already running instance and exits.

Bump the application version to 0.2.4 and update README artifact examples plus docs/CHANGELOG.md.
2026-06-16 08:01:42 +03:00
mixeme e8e0060063 Align Settings sections into compact rows
Add a Settings-specific row layout with a narrower label column so Storage and About no longer waste half the width on captions.

Format the Application section with the same row layout and reserve a third column for the autostart status. The checkbox column is sized to fit the longest Application checkbox so the section reads like a table.
2026-06-16 07:57:32 +03:00
mixeme 7252d3683c Clean up Settings application block
Remove the duplicated application version row from the Settings Application block now that version details live in About.

Keep the autostart control inline and shorten its checkbox text to Start on login.
2026-06-16 07:45:17 +03:00
mixeme 088f6e77b0 Add versioned Docker builder tags and Settings about block
Tag Docker builder images with the current application version in both Linux Docker build scripts so different release environments do not overwrite each other with one floating builder tag.

Replace the Settings Scheduler note with an About block that shows the GoSentry version, Go runtime version, Fyne module version, and the project repository link.
2026-06-16 07:36:00 +03:00
mixeme 4a8feb351e Release version 0.2.3
Improve the History tab by keeping records in chronological order, rendering them as a compact table, and allowing the Time column to toggle ascending or descending order.

Use the native Fyne table header so users can resize columns, including Detail and Log, and show only the log file name instead of the full log path.

Bump the application version to 0.2.3 and update README artifact examples plus docs/CHANGELOG.md.
2026-06-15 21:16:57 +03:00
mixeme e016da5277 Make History chronological and compact
Append new History events at the end instead of prepending them so the tab reads from oldest to newest.

Replace the loose widget.List rendering with a table that exposes Time, Trigger, Job, State, Detail, and Log columns. This removes the large visual gaps between rows and makes the activity log easier to scan.

Use full timestamps for UI-generated events so startup, UI actions, manual runs, and scheduled runs share the same time format.
2026-06-15 21:07:06 +03:00
mixeme c644636e57 Release version 0.2.2
Add Linux desktop integration that installs a user-level .desktop file and icon under XDG data directories so taskbars can match the PySentry window to the application icon.

Pass the installed icon path into Linux autostart desktop entries when available, while keeping the Windows and fallback autostart APIs compatible.

Bump the application version to 0.2.2, update README artifact examples, and record the release notes in docs/CHANGELOG.md. Also adjust the Mermaid architecture diagram so Gitea can render it without invalid SVG line-break tags.
2026-06-15 20:57:16 +03:00
mixeme e2464aab0f Move project documentation into docs
Add ARCHITECTURE.md with a Mermaid component interaction diagram and short descriptions of the main runtime flows.

Move CHANGELOG.md and ROADMAP.md under docs/ so project documentation lives in one place, and update README links plus the project layout description.
2026-06-15 20:44:47 +03:00
mixeme 5ef32566db Show startup timing in History
Measure GUI startup from the beginning of Run until the main view has loaded its store and is ready to build the History model.

Insert the measurement as the first in-memory History event using the existing RunRecord display path: Application / Started / Startup completed in <duration>. This keeps startup diagnostics visible in the UI without creating a separate application log file.

No scheduler, storage, or command log behavior is changed.
2026-06-15 20:40:53 +03:00
mixeme 2932783143 Stabilize Jobs pane layout
Replace the resizable HSplit on the Jobs tab with a border layout that keeps the job list pane at a stable minimum width.

The left pane now uses a small custom layout that asks Fyne for the content minimum size and applies at least 480 logical pixels. This prevents the divider from moving when the selected job changes while still allowing the toolbar buttons, including Delete, to fit when their calculated minimum width is larger.

Only the Jobs tab layout is changed; settings, storage, scheduler behavior, and documentation are intentionally left untouched.
2026-06-15 20:36:53 +03:00
mixeme 91158bf5b8 Update ROADMAP.md 2026-06-15 09:09:19 +03:00
mixeme ab75226cdb Update README.md 2026-06-15 09:05:39 +03:00
mixeme 9214958fd0 Bump version to 0.2.1 2026-06-15 09:04:11 +03:00
mixeme ddabfd2da2 Bump version and add changelog 2026-06-15 08:23:24 +03:00
mixeme 91080a7a9d Move release builds into selectable script 2026-06-15 08:02:38 +03:00
mixeme 81b04d3dff Fix Linux arm64 builder dependencies 2026-06-15 07:56:18 +03:00
mixeme 5727e13f23 Add autostart status and release builds 2026-06-15 07:35:52 +03:00
mixeme 47e2ba7272 Document design choices and standardize Dockerfile 2026-06-15 00:05:12 +03:00
mixeme 59718e21b4 Embed app icon and polish Windows build 2026-06-14 23:53:08 +03:00
mixeme a9d1d9529e Reorganize source tree and build assets 2026-06-14 23:40:37 +03:00
mixeme 414be2dfe9 Stabilize packaging and scheduler storage 2026-06-14 23:23:14 +03:00
mixeme 4c11bb4f06 Add YAML scheduler core and run logs 2026-06-14 22:45:11 +03:00
mixeme 0a66d9da0e Improve scheduler GUI controls 2026-06-14 22:16:54 +03:00
mixeme 4dfb3e5e40 Add initial Fyne GUI prototype 2026-06-14 21:35:37 +03:00
mix eca5771a09 Initial commit 2026-03-08 19:50:47 +03:00