Update Logs
Every commit message from the InHand repository, newest first — fetched live from GitHub.
2026-09-24
6d3cffdrelease: bump version to 2.1.01b7db76feat: add screen sharing functionality and settings management-
- Introduced a new CSS file for the share interface, following Apple Human Interface Guidelines.
-
- Implemented screen sharing capabilities in admin.script.js, allowing teachers to share their screens with students.
-
- Added a settings management script (settings.script.js) for configuring cloud settings and managing security.
-
- Created a symbols mapping file (sf-symbols.js) for SF Symbols used in the UI.
-
- Added a security.txt file for contact and policy information.
-
5690c22fix: guard password book save against missing preload bridge-
- save() now checks window.electronAPI.savePasswordBook before invoking,
- showing a toast instead of throwing when the page is opened outside the
- Electron app (plain browser, no preload injection).
-
- load() disables the editor and save button and shows an actionable hint
- (open inside the InHand app) when the bridge is unavailable.
-
29d2f12docs: add LAN Only Mode and Password Book pages-
- New /docs/lan-only and /docs/password-book markdown pages describing what
- each feature does, how teachers use it, what students see, and safety notes.
-
- Link both from the docs index.
-
- Homepage bento gains two cells (LAN Only Mode wide cell + Password Book)
- with Learn more links styled as .cell-link.
-
- Verified locally: homepage, /docs and both new pages render correctly.
-
34a83a3release: bump version to 2.0.5d210c7efeat: improve admin interface and enhance data security documentation1136ae1fix: update footer links and version display in index.html1761f34fix: update version numbers in privacy policy and terms of service to 1.2
2026-09-23
9a52fc3release: bump version to 2.0.4114125ffeat: render SF Symbols as system-font characters instead of PNG masks-
- Icons are now literal SF Symbols private-use characters (e.g. airplane
- U+100453) rendered by the macOS system font (-apple-system / SF Pro
- Display), so they stay vector-crisp at any size and inherit color from CSS
- (state classes still tint them: orange sending, green success, red fail).
-
- Removes the nativeImage IPC pipeline (SF_SYMBOL handler, preload bridge,
- sfSymbolDataUrl) and the CSS mask approach that CSP blocked and that
- rasterized blurry.
-
- Codepoints verified against the SF Symbols.app fallback font and rendered
- in Electron: checkmark.shield, desktopcomputer, airplane, lock, eye,
- xmark, chevron.left, inset.filled.rectangle.and.person.filled (client
- overlay pill).
-
- Verified live in the admin renderer via CDP: 5 icons (3 static + lan-only
- airplane + password-book lock) render with correct codepoints and sizes.
-
- Adds dev-only INHAND_CDP=<port> to expose the admin renderer for
- inspection and screenshots during development.
-
0f58741fix: SF Symbols invisible because CSP blocks inline style-
- style-src ‘self’ blocks element.style mask assignments (and <style>
- injection), which left the tintable icons fully transparent.
-
- Register each symbol’s mask image once via CSSOM insertRule on the external
- style.css sheet (allowed under CSP) and tag placeholders with a per-symbol
- mask class; color still comes from currentColor, so state classes keep
- recoloring icons.
-
- Verified with a minimal Electron repro: insertRule renders the mask with
- currentColor tinting; the inline-style path was confirmed blocked by CSP.
-
7f42a14fix: tintable hi-res SF Symbols with state feedback-
- Render SF Symbols as CSS masks (background-color: currentColor) instead of
- opaque PNGs, so icons inherit text color and state classes can recolor them:
- sending = orange, success = green flash, failed = red, sharing = white on
- red, lan-only tile keeps its red/gray states.
-
- Flash the action tile green when a command resolves, so the teacher sees
- the airplane finished its run.
-
- Fix blurry icons: createMenuSymbol only rasterizes a 15x13 template, so
- SF_SYMBOL (host) and sfSymbolDataUrl (client) now prefer
- createFromNamedImage(name, {256,256}) and fall back to a 256px
- supersampled resize. Verified for every icon name in use.
-
8ae5d3crefactor: drop Lucide entirely, use real macOS SF Symbols in admin UI-
- Remove vendor/lucide.min.js and its <script> include.
-
- Replace every data-lucide placeholder with data-sf; the renderer fetches
- native SF Symbol images from the main process via the SF_SYMBOL IPC.
-
- Remove all lucide.createIcons calls; replaceIconsWithSfSymbols now works
- directly on i[data-sf] placeholders with no Lucide dependency.
-
- Rename .lucide-icon CSS rules to .sf-icon.
-
- Harden SF_SYMBOL handler with a createFromNamedImage fallback.
-
- Password Book card icon: lock.book is empty under createMenuSymbol on this
- build, so use lock (verified via a probe).
-
- Delete the stale root admin.html (superseded by host/res/admin.html; no
- references anywhere).
-
6fe7d5efix: kill_capture also matches the Swift helper binary name (inhand-capture)a949882release: bump version to 2.0.4-beta.20360a82feat: rewrite capture helper in Swift and bridge frames via main process-
- Replace the Electron capture helper with a ~160KB Swift binary: ScreenCaptureKit
- BGRA capture, ImageIO JPEG encode, self-contained loopback-only WebSocket
- server on 127.0.0.1:7931/frames.
-
- Keep the interface contract intact: INHAND_CAPTURE_MOCK, capture-error.log,
- com.inhand.capture LSUIElement app under /Library/Application Support/InHand.
-
- Move frame consumption from the share renderer’s Chromium WebSocket to a
- main-process bridge (Node ws -> IPC), fixing the no-frames failure caused by
- the Chromium network stack on loopback.
-
- Fix RTCIceCandidate construction when sdpMid/sdpMLineIndex are both null on
- host and client.
-
- Rewrite scripts/package-capture.sh to compile Swift, assemble the app,
- ad-hoc sign, and produce the DMG (64KB vs 100MB+ Electron).
-
- Remove stale Electron capture sources.
-
d9edff1release: bump version to 2.0.4-beta.1b348a61fix: never show capture or share windows to the student-
- capture helper window is show:false (students must never see it)
-
- student-share window is a 1x1 hidden window; indicator is only the
- system overlay pill (‘Screen Being Viewed’) once WebRTC is connected
-
- request phase shows no text; nothing visible until stream is live
-
6461fe8release: bump version to 2.0.3-beta.25a77a0efix: student share only claims being-viewed after WebRTC connects-
- request phase shows ‘Teacher is requesting your screen’
-
- tag + ‘Screen Being Viewed’ overlay appear only on connectionState=connected
-
- 15s timeout with honest failure message; failed/disconnected clears overlay
-
- teacher-view (receiving) path untouched
-
52c4807fix: live progress bar (RS=CR so updates render during download) + redirect-aware size769d379feat: progress shows received/total bytes; replace all Chinese comments with English1a2bf69feat: installer logo adapts to terminal width (big/small/text)a253134feat: installer banner with logo/version and curl progress bar downloadse2c4421docs: full install/update/uninstall command matrix with beta channel and scopes in quick_download.md6df5004release: bump version to 2.0.3-beta.13344d4dfix: command whitelist packaging, capture fallback, password book in actions, beta channel-
- client: ship shared/commands.json via extraResources; single source of truth
-
- client: student share falls back to desktopCapturer when Capture helper is absent
-
- host: password book moved into Actions grid; full SF symbol coverage
-
- host: sync res/commands.json with shared (update method/script params)
-
- install.sh: add -c/–channel latest|beta (beta fetches newest pre-release tag)
-
- client: files whitelist shrinks app.asar 268MB -> 5.9MB (92.9MB DMG)
-
f8aa45cfeat: add global busy indicator and update token management logic
2026-09-22
9190724fix: update file structure in package.json to include additional resources2c8e5d6release: bump version to 2.0.2b2dc599Beta feat(capture): add InHand Capture application with screen recording capabilities-
- Create package.json for InHand Capture with necessary dependencies and scripts.
-
- Implement password book functionality for managing student machine passwords securely.
-
- Add HTML interface for the password book with editor and import options.
-
- Implement JavaScript for password book interactions, including loading and saving entries.
-
- Create packaging script for building the InHand Capture application as a disk image.
-
66d9ce5release: bump version to 2.0.11279c68feat: implement LAN-only firewall state management and action cards in admin interface49ea3e3feat(server): registration token TTL — 7-day default, ttlMs=0 = never expires-
- Default REGISTRATION_TTL_MS raised from 1 hour to 7 days so a school
- that is offline overnight/weekends keeps its registration.
-
- ttlMs=0 in /api/v1/admin/register now means the registration never
- expires (expiresAt=null); positive ttlMs is capped at one year.
-
- All expiry checks (register, discover, sweepExpired) are null-safe.
-
- Server test suite passes 46/46.
-
f2cb72drelease: bump version to 2.0.0c43fab5Update copyright information and add copyright overlay-
- Changed copyright text from “AlphaBrate” to “ChuTM” in multiple HTML files including admin.html, index.html, login.html, and markdown.mjs.
-
- Added a copyright overlay to admin.html with a low opacity for branding.
-
- Updated styles in style.css to support the new copyright overlay.
-
- Adjusted firewall daemon.mjs to ensure proper handling of loopback traffic and configuration updates.
-
d7f1c6dfeat: add health and privilege audit functionality with audit script and command support0197ca0feat: enhance changelog generation to include commit body in markdown outpute52285frelease: bump version to 1.3.464b5b1efeat: enhance firewall helper and settings UI-
- Updated firewall helper commands to use the correct path for unlocking and setting keys.
-
- Added a new settings page for managing cloud registration, teacher keys, and password changes.
-
- Implemented toast notifications for user feedback on actions in the admin panel and settings.
-
- Improved the installation script to prefer bundled firewall helper files and handle errors more gracefully.
-
- Enhanced the security gate for first-time setup and unlocking with better user prompts and error handling.
-
- Added functionality for key rotation and public key management in the settings UI.
-
2026-09-21
6439739release: bump version to 1.3.31905070feat: ensure pf anchor declaration in /etc/pf.conf for firewall helper786f16drelease: bump version to 1.3.20776143feat: implement client heartbeat registration and throttle history updates for active usersed4e646feat: implement live version tracking for footer badge and update version display7f8672dfix: adjust hero link styles for improved layout and visual consistencyce1bf42release: bump version to 1.3.1a4c4f76feat: add footer accordion functionality and update changelog generation script
2026-09-20
daf07c8feat: implement wallpaper enforcement pause and resume functionality for teacherse41a945feat: add scroll-reveal and scrollspy functionality for improved user experience-
- Implemented scroll-reveal effect in home.js to fade and rise sections as they enter the viewport.
-
- Added legal.js for an in-page section indicator (scrollspy) on /legal/:slug pages, enhancing navigation and reading progress tracking.
-
- Created login.html for user authentication with options for Google and passkey sign-in.
-
- Introduced markdown.mjs for a configurable Markdown router, allowing dynamic routing of Markdown files to public pages.
-
2026-09-19
d8d81f9refactor: remove Firebase hosting workflows and update GitHub links in HTML files
2026-09-18
eb75fcafeat: enhance socket error handling and add sudo requirement for installer5e1251dAdd InHand LAN-only firewall daemon and control utility-
- Introduced a new LaunchDaemon plist file for the InHand firewall helper.
-
- Implemented the main daemon logic in daemon.mjs, which manages firewall rules and handles requests via a Unix socket.
-
- Created a control script (inhand-fwctl) for manual operations such as locking/unlocking the firewall, setting the teacher’s public key, and uninstalling the helper.
-
- The daemon enforces LAN-only access and includes mechanisms for secure command verification using Ed25519 signatures.
-
- Added logging and state management to persist the firewall’s status across reboots.
-
2026-09-15
c9fbe78feat: add firebase configuration for hosting setup15a31b6feat: update version to 1.3.0 in package.json files for client and hostb25a286(Security Update Pending)- feat: implement screen sharing functionality for teacher and student clients
-
- Added screen sharing controls in the admin dashboard (admin.script.js, style.css).
-
- Implemented screen source selection and sharing logic for teachers.
-
- Created a new share window for students to view the teacher’s screen.
-
- Established WebRTC connections for real-time screen sharing.
-
- Added UI elements for viewing student screens and managing share states.
-
- Updated install script for macOS to include necessary permissions for screen recording.
-
- Introduced new renderer scripts for handling screen share logic in both teacher and student contexts.
-
- Enhanced README documentation to reflect new features and usage instructions.
2026-05-20
fc734cbfeat: enhance socket connection with logging, add server status endpoint, and update installation scripts
2026-05-19
47dbaacfeat: add firebase configuration for hosting setup2f6ca77feat: update deployment path in GitHub Actions workflow to include entire website directory5ddd0c6feat: remove old website files and add new structure with 404 page, configuration, and markdown support136e2e3docs: update README with installation instructions for clients and admins05f40b6feat: enhance admin panel with command execution logic, UI improvements, and styling updates6c19dadfeat: update version to 1.2.2 and enhance configuration handling in main.js and documentation
2026-05-17
da65bebfeat: update version to 1.2.1 in package.jsonf97b7f5feat: implement command execution and result handling in admin panel8cc753efix: correct command syntax for creating service directory in quick_download.md12c1872feat: update version to 1.2.0 and refactor website content-
- Bump version in package.json from 1.1.0 to 1.2.0.
-
- Refactor index.html to remove inline styles and integrate external CSS.
-
- Add dynamic content loading for installation instructions using Markdown.
-
- Implement JavaScript for parsing and rendering Markdown with custom blocks.
-
- Create new style.css for consistent styling across the website.
-
- Enhance quick_download.md with improved command formatting and instructions.
-
- Introduce copy functionality for command snippets in the rendered content.
-
2026-04-28
fc1ff33feat: Add command to load configuration and improve readability in index.htmlad98cb7Fix XML escaping in daemon registration command098cc56Change artifact upload path to ‘./website/public’- Update artifact upload path for GitHub Pages deployment.
92271b6Add instructions for service persistence setup3fe9092refactor: Update client and website for System Wallpaper Management Service-
- Renamed client package from “wallpaper-guard” to “com.system.wallpaper.service” and updated version to 1.1.0.
-
- Modified main entry point and build scripts in package.json.
-
- Updated dependencies and removed unused ones.
-
- Changed build configuration for macOS, including app ID and extended info for system services.
-
- Updated website HTML to reflect the new service name and installation instructions.
-
- Added new configuration files for client and website with server URL and wallpaper path settings.
- Co-authored-by: Copilot copilot@github.com
-
2026-04-27
ec94c35Add blank lines for improved code readability in main.jse1348c8Add terminal setup instructions to index.html for Mac users9a1af8aRefactor documentation and cleanup: remove outdated HTML and markdown files, add new index.html and quick_download.md for improved setup instructions497e45eEnhance admin interface and functionality: update socket event handling, improve UI styles, and add setup instructions
2026-04-18
2415d7dBump version to 1.0.3 in package.json and package-lock.json for both client and host993deacRefactor code structure for improved readability and maintainability2b999f4Add device_history.json to .gitignorefad0392Remove device history JSON file838ab97Add auto-launch functionality for the application on startup0efac62Refactor comments for clarity and consistency in main.js
2026-04-15
Fetched live from https://github.com/ChuTM/inhand