Repository navigation
1.1.3: authenticate the local WebDAV, surface Quark read errors, lifecycle and installer fixes - #2
Merged
Merged
Conversation
Playback and diagnostics - Write the Quark PC client user agent into the runtime config so the engine no longer requests download links as the web page, which Quark refuses for large files with code 23018. The config is now built in QuarkFSCore. - Follow both engine logs while they run and report download size limits (23018), expired logins and repeated read failures in the window, the menu bar and the activity log. Recognise expired logins in mount failures. - Log at NOTICE with 10 MB rotation and one backup instead of unbounded INFO. Local WebDAV - Require Basic authentication with a random per-install password stored in a user-only file and passed to the engine through its environment. Copied connection details include the credentials. Lifecycle - Record the WebDAV engine and stop it on the next launch if QuarkFS crashed or was force-quit; remove a leftover runtime config at startup. - Stop the bridge only once a quit can no longer be cancelled. - Reject an occupied port before stopping a working bridge, and roll back to the previous port when the restart fails. - Do not report deliberate bridge stops as unexpected exits, and do not turn a cancelled mount or completed unmount into a failure when the engine's termination is handled late. - Wait for a running operation before saving a login; otherwise explain why it was not saved and let the QR sheet offer a new code. Scripts and docs - Refuse release engines without the Quark backend or cmount. - Installer: accept a Universal 1.0.x app as the app being replaced, explain every verification failure, ignore interrupts during the swap and restore the previous app from filesystem state. - Link only current core objects in the behaviour and single-instance checks. - Document the macOS 15+ Open Anyway step and the new WebDAV credentials. Tests - Behaviour checks for config content and permissions, WebDAV authentication, 23018 reporting, failure-mode bridges, stop-before-clear, re-login, occupied ports and rollback, crash recovery, cancelled quits, logins during other work and unmount outcomes, using fake mount tools and a simulated cmount in EngineFixture.py. - Smoke checks for every cache profile, log options, credentials, log classification and tailing, and leftover-engine identification. - EngineIntegration.py checks config parsing, environment-based authentication and log options against the real engine. - New Tests/QuarkFSCoreTests/ScriptChecks.zsh, also run in CI, never executes the installer itself. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Remove the user_agent override so the runtime config is back to the remote type and obscured cookie only. Tests now assert that no user_agent key is written. Docs state that Quark refuses large files on this download interface (code 23018) and that such files cannot be read through QuarkFS. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
- Stop a leftover WebDAV engine before the credential and engine preflight, so logging out or a missing engine no longer leaves the crashed app's engine serving the drive with its old cookie. - Clear the intentional-stop marker when stopping the mount engine fails, so a later real crash is reported instead of read as a clean unmount. - Report an expired login even after 20 other engine issues were shown. - Mark the copied WebDAV connection text as concealed and transient pasteboard content so clipboard managers skip the password. - Add behaviour checks for the relaunch-while-logged-out, log cap and pasteboard cases, and update the changelog. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes from a multi-angle review of 1.1.2 (33 findings, 20 confirmed), plus a pre-release review of this branch.
Security
127.0.0.1:8686) had no authentication. It now requires the user namequarkfsand a per-Mac random password (stored 0600, passed to the engine through the environment, never in process arguments). Infuse users must enter them once after upgrading.Playback and errors
download file size limit), expired login, and repeated read failures. Large files that Quark refuses on this download interface still cannot be read; QuarkFS now says why instead of failing silently. The engine keeps its default identity.Lifecycle
Scripts and docs
cmount. The safe installer restores the previous app on interruption and explains every refusal. First-launch instructions cover macOS 15+.Verification
Core smoke tests, application behaviour checks (fixture engine, no account), single-instance checks, arm64 release build, script syntax and script checks, and the engine integration check against a local folder (authentication, listing, byte ranges, read-only) all pass. Each fix has a check that failed before it; 13 mutations of the fixes are each caught by a check.
Not verified: a real Quark account, real Infuse playback, and a real macOS 15 Gatekeeper prompt.
🤖 Generated with Claude Code