<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dpibreak.git/src/main.rs, branch master</title>
<subtitle>System-wide DPI circumvention with minimal configuration
</subtitle>
<id>http://git.dilluti0n.com/dpibreak.git/atom?h=master</id>
<link rel='self' href='http://git.dilluti0n.com/dpibreak.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/'/>
<updated>2026-07-14T18:58:23Z</updated>
<entry>
<title>Change splash message format</title>
<updated>2026-07-14T18:58:23Z</updated>
<author>
<name>dilluti0n</name>
<email>hskim@dilluti0n.com</email>
</author>
<published>2026-07-14T18:58:23Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=8a8c9e06d602e2b0b137d6db799395268a7b3676'/>
<id>urn:sha1:8a8c9e06d602e2b0b137d6db799395268a7b3676</id>
<content type='text'>
</content>
</entry>
<entry>
<title>windows: do not use paexit when there is no error</title>
<updated>2026-07-14T05:47:33Z</updated>
<author>
<name>dilluti0n</name>
<email>hskim@dilluti0n.com</email>
</author>
<published>2026-07-14T05:47:33Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=49fd3f5a0550cca0572348f6b70b7394ba63ca5c'/>
<id>urn:sha1:49fd3f5a0550cca0572348f6b70b7394ba63ca5c</id>
<content type='text'>
loop on CTRL_CLOSE_EVENT handler causes pause occurs when the user
closes the console by clicking the 'X' button, which degrades user
experience.

This change terminates program immediately if no error occurs.
</content>
</entry>
<entry>
<title>Use paexit on shutdown</title>
<updated>2026-07-08T05:41:57Z</updated>
<author>
<name>dilluti0n</name>
<email>hskim@dilluti0n.com</email>
</author>
<published>2026-07-08T05:41:57Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=a6ac024adee337560988687a0c011cd0355fd957'/>
<id>urn:sha1:a6ac024adee337560988687a0c011cd0355fd957</id>
<content type='text'>
This makes windows users able to see the error message.
</content>
</entry>
<entry>
<title>log: add debug!/info!/warn!/error! macros and refactor to use it</title>
<updated>2026-03-01T15:25:37Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2026-03-01T15:22:51Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=4699bf9afd69d9f2323b1fc0f6abba7aaac23cc2'/>
<id>urn:sha1:4699bf9afd69d9f2323b1fc0f6abba7aaac23cc2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Move cleanup/trap_exit/RUNNING to platform modules</title>
<updated>2026-03-01T08:10:18Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2026-03-01T08:10:18Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=50f4d72cac8cec067e2d8b406f651c149d375595'/>
<id>urn:sha1:50f4d72cac8cec067e2d8b406f651c149d375595</id>
<content type='text'>
- Remove global RUNNING, trap_exit, EnsureCleanup, MESSAGE_AT_RUN from main.rs
- Move each into platform-specific modules (linux.rs, windows.rs)
- Move MESSAGE_AT_RUN to platform.rs
- Inline cleanup logic into run() instead of separate cleanup() fn
- Remove service_run_1() indirection in windows.rs
</content>
</entry>
<entry>
<title>nit: rename main_0 to _1</title>
<updated>2026-02-26T08:08:52Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2026-02-26T07:24:07Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=329729919d036814d3b076e6be7f4d7aa8436413'/>
<id>urn:sha1:329729919d036814d3b076e6be7f4d7aa8436413</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Print version info log after daemonize</title>
<updated>2026-02-16T08:02:24Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2026-02-16T08:02:24Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=f89e1d6462d2a44012a19019bc86ad9474f03bd8'/>
<id>urn:sha1:f89e1d6462d2a44012a19019bc86ad9474f03bd8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Log version information on startup</title>
<updated>2026-02-16T04:06:43Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2026-02-16T04:06:43Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=978c3658ede83ef9b5c0c38ee554f88c8de0bc48'/>
<id>urn:sha1:978c3658ede83ef9b5c0c38ee554f88c8de0bc48</id>
<content type='text'>
</content>
</entry>
<entry>
<title>opt: decouple set_opt() from logging</title>
<updated>2026-02-15T17:52:03Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2026-02-15T17:49:49Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=b68753e878c440f1a11aa89f1f359764f1609734'/>
<id>urn:sha1:b68753e878c440f1a11aa89f1f359764f1609734</id>
<content type='text'>
set_opt() was logging each option as it set them, which created a
tight coupling between option initialization and log output timing.
This was particularly problematic for daemon mode: daemonize must
happen after set_opt() (to know whether -D was passed) but before
logging (so output goes to the log file, not stdout).

Split into set_opt() -&gt; InitializedOpts and InitializedOpts::log(),
using a typestate pattern to enforce at compile time that log() cannot
be called before set_opt(). This lets each platform's bootstrap()
handle daemonization between the two steps:

    let initialized = opt.set_opt()?;
    platform::bootstrap()?;   // daemonize here if needed
    initialized.log();        // now safe to log

Also:
- Move daemonize_1() into platform::bootstrap() on both platforms
- Make daemonize_1() / service_main() private to their platform modules
- Fix the long-standing TODO about using log_println in daemonize()
</content>
</entry>
<entry>
<title>linux: repurpose bootstrap to do things before requiring cleanup</title>
<updated>2026-02-15T16:25:16Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2026-02-15T16:20:26Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/dpibreak.git/commit/?id=b07153539ca5b8674ba15dece87883bae1056900'/>
<id>urn:sha1:b07153539ca5b8674ba15dece87883bae1056900</id>
<content type='text'>
</content>
</entry>
</feed>
