pendify 0.1.0__tar.gz → 0.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pendify-0.1.0/src/pendify.egg-info → pendify-0.1.2}/PKG-INFO +1 -1
- {pendify-0.1.0 → pendify-0.1.2}/pyproject.toml +1 -1
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify/page.py +14 -11
- {pendify-0.1.0 → pendify-0.1.2/src/pendify.egg-info}/PKG-INFO +1 -1
- {pendify-0.1.0 → pendify-0.1.2}/LICENSE +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/MANIFEST.in +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/README.md +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/setup.cfg +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify/__init__.py +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify/__main__.py +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify/alert.py +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify/autostart.py +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify/client.py +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify/codes.py +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify/config.py +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify/icon.py +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify/pairing.py +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify/pendify.ico +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify/plate_almena.py +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify/qr.py +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify/runfile.py +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify/watcher.py +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify/worker.py +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify.egg-info/SOURCES.txt +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify.egg-info/dependency_links.txt +0 -0
- {pendify-0.1.0 → pendify-0.1.2}/src/pendify.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pendify"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.2"
|
|
8
8
|
description = "Pairs this PC with a phone account by a QR on a loopback page and sends it two kinds of alerts."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -35,9 +35,9 @@ FENCE_HEADERS = (("Cache-Control", "no-store"), ("Referrer-Policy", "no-referrer
|
|
|
35
35
|
("Content-Security-Policy", POLICY), ("X-Content-Type-Options", "nosniff"))
|
|
36
36
|
# The program's name (owner 2026-10-01): the title and the h1 of the pairing page and of the stopped page.
|
|
37
37
|
NAME = "PendiFy"
|
|
38
|
-
# The
|
|
39
|
-
# no referrer. A link loads nothing, so the policy above is unchanged.
|
|
40
|
-
CREATOR = "
|
|
38
|
+
# The top bar's credit: the creator's handle and the repository, a link out that opens in a new tab with no opener
|
|
39
|
+
# and no referrer. A link loads nothing, so the policy above is unchanged.
|
|
40
|
+
CREATOR = "Niklerk"
|
|
41
41
|
REPOSITORY = "https://github.com/ElkinDev/PendiFy"
|
|
42
42
|
# The address the linked page's sponsored QR encodes.
|
|
43
43
|
SPONSOR_ADDRESS = "https://pendiapp.com"
|
|
@@ -272,7 +272,7 @@ _STYLE = (":root{color-scheme:light dark;" + _LIGHT + "}\n"
|
|
|
272
272
|
".key{display:grid;gap:2px;margin:0}\n"
|
|
273
273
|
".key-label{font-size:12px;line-height:16px;font-weight:500;color:var(--ink2)}\n"
|
|
274
274
|
# The header's actions as pendiapp.com's .nav-actions holds them: the language switch, then the theme button.
|
|
275
|
-
".bar{display:flex;justify-content:flex-end;align-items:center;gap:.45rem;margin:0 0 8px}\n"
|
|
275
|
+
".bar{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.45rem;margin:0 0 8px}\n"
|
|
276
276
|
# pendiapp.com's language switch (assets/styles.css, .langsw), its variables mapped to the page's own:
|
|
277
277
|
# --hairline to --hair, --muted to --ink2, --brand and --on-brand as they are. Each entry is a submit
|
|
278
278
|
# button, so the page's button look is set back to the site's link: no minimum height, no border, no fill,
|
|
@@ -439,9 +439,9 @@ _STYLE += ("@media (min-width:880px){.page{max-width:max(1040px,85vw)}\n"
|
|
|
439
439
|
# The program's name in the title row, and the sentence it took the place of under it.
|
|
440
440
|
".tagline{margin:0 0 16px;font-size:16px;line-height:24px;font-weight:500;color:var(--ink)}\n"
|
|
441
441
|
"@media (min-width:880px){.tagline{font-size:18px;line-height:28px}}\n"
|
|
442
|
-
# The creator and the repository
|
|
443
|
-
".foot{justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px 24px}\n"
|
|
442
|
+
# The creator and the repository first in the top bar, at the left end of the row of its two controls.
|
|
444
443
|
".credit{margin:0;font-size:14px;line-height:20px;color:var(--ink2)}\n"
|
|
444
|
+
".bar .credit{margin-right:auto}\n"
|
|
445
445
|
".credit b{font-weight:600;color:var(--ink)}\n"
|
|
446
446
|
".credit a{color:var(--brand);text-decoration:underline;text-decoration-thickness:1px;"
|
|
447
447
|
"text-underline-offset:3px;border-radius:4px}\n"
|
|
@@ -470,6 +470,8 @@ _STYLE += ("@media (min-width:880px){.page{max-width:max(1040px,85vw)}\n"
|
|
|
470
470
|
".arcade i:nth-of-type(3){bottom:6px;left:6px}.arcade i:nth-of-type(4){bottom:6px;right:6px}\n"
|
|
471
471
|
".qr2{display:block;width:264px;height:264px;outline:4px solid var(--px-line)}\n"
|
|
472
472
|
"@media (max-width:399px){.qr2{width:231px;height:231px}}\n"
|
|
473
|
+
# Under 360 px the code is 198 px, 6 px a module, so the frame stays inside a 320 px window's gutters.
|
|
474
|
+
"@media (max-width:359px){.qr2{width:198px;height:198px}}\n"
|
|
473
475
|
"@media (min-width:880px){.qr2{width:min(330px,calc(clamp(340px,34vw,522px) - 82px));"
|
|
474
476
|
"height:min(330px,calc(clamp(340px,34vw,522px) - 82px))}}\n"
|
|
475
477
|
".sponsor-cap{margin:0;font-size:14px;line-height:20px;color:var(--ink2)}\n"
|
|
@@ -847,7 +849,8 @@ class PairingPage:
|
|
|
847
849
|
# Beside a watcher the state line carries the pause it was rendered with, which the poll compares.
|
|
848
850
|
paused = "" if seen is None else f' data-paused="{str(_paused(seen)).lower()}"'
|
|
849
851
|
# What this is and what to do, with the QR card beside it on a wide window; the two other roads in one fold
|
|
850
|
-
# under it; the credit and quit at the foot. The title row reads
|
|
852
|
+
# under it; the credit opens the top bar, and the quit sits at the foot, only beside a quit. The title row reads
|
|
853
|
+
# the program's name, its sentence under it.
|
|
851
854
|
link = [f'<div class="title-row"><img alt="" width="32" height="32" src="{ICON_URI}"><h1>{NAME}</h1>'
|
|
852
855
|
f"</div>", f'<p class="tagline">{words["title"]}</p>', f'<p class="intro">{words["intro"]}</p>',
|
|
853
856
|
f'<p id="state" role="status" data-shown="{str(snapshot["showCode"]).lower()}'
|
|
@@ -907,12 +910,12 @@ class PairingPage:
|
|
|
907
910
|
_form("forget", token, f'<button type="submit">{words["forget"]}</button>')]
|
|
908
911
|
quit_button = f'<button type="submit">{words["quit"]}</button>'
|
|
909
912
|
quit_form = "" if self.on_quit is None else _form("quit", token, quit_button)
|
|
910
|
-
foot =
|
|
911
|
-
|
|
912
|
-
|
|
913
|
+
foot = "" if self.on_quit is None else f'<footer class="foot">{quit_form}</footer>'
|
|
914
|
+
credit = (f'<p class="credit">{words["credit"]} <b>{CREATOR}</b> · <a href="{REPOSITORY}" target="_blank" '
|
|
915
|
+
f'rel="noopener noreferrer">{REPOSITORY.removeprefix("https://")}</a></p>')
|
|
913
916
|
# The typed link and the forget in one fold, open when the typed values were refused so the note shows.
|
|
914
917
|
fold = " open" if snapshot["typedRefused"] else ""
|
|
915
|
-
bar = (f'<header class="bar">{_switch(words, token, lang)}<button id="theme-toggle" class="icon-btn" '
|
|
918
|
+
bar = (f'<header class="bar">{credit}{_switch(words, token, lang)}<button id="theme-toggle" class="icon-btn" '
|
|
916
919
|
f'type="button" aria-pressed="false" '
|
|
917
920
|
f'aria-label="{words["theme_toggle"]}">{_THEME_ICONS}</button></header>')
|
|
918
921
|
theme = self.state.theme()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|