‹ Docs

Update Logs

Every commit message from the InHand repository, newest first — fetched live from GitHub.

2026-09-24

  • 6d3cffd release: bump version to 2.1.0
  • 1b7db76 feat: 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.
  • 5690c22 fix: 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.
  • 29d2f12 docs: 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.
  • 34a83a3 release: bump version to 2.0.5
  • d210c7e feat: improve admin interface and enhance data security documentation
  • 1136ae1 fix: update footer links and version display in index.html
  • 1761f34 fix: update version numbers in privacy policy and terms of service to 1.2

2026-09-23

  • 9a52fc3 release: bump version to 2.0.4
  • 114125f feat: 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.
  • 0f58741 fix: 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.
  • 7f42a14 fix: 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.
  • 8ae5d3c refactor: 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).
  • 6fe7d5e fix: kill_capture also matches the Swift helper binary name (inhand-capture)
  • a949882 release: bump version to 2.0.4-beta.2
  • 0360a82 feat: 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.
  • d9edff1 release: bump version to 2.0.4-beta.1
  • b348a61 fix: 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
  • 6461fe8 release: bump version to 2.0.3-beta.2
  • 5a77a0e fix: 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
  • 52c4807 fix: live progress bar (RS=CR so updates render during download) + redirect-aware size
  • 769d379 feat: progress shows received/total bytes; replace all Chinese comments with English
  • 1a2bf69 feat: installer logo adapts to terminal width (big/small/text)
  • a253134 feat: installer banner with logo/version and curl progress bar downloads
  • e2c4421 docs: full install/update/uninstall command matrix with beta channel and scopes in quick_download.md
  • 6df5004 release: bump version to 2.0.3-beta.1
  • 3344d4d fix: 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)
  • f8aa45c feat: add global busy indicator and update token management logic

2026-09-22

  • 9190724 fix: update file structure in package.json to include additional resources
  • 2c8e5d6 release: bump version to 2.0.2
  • b2dc599 Beta 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.
  • 66d9ce5 release: bump version to 2.0.1
  • 1279c68 feat: implement LAN-only firewall state management and action cards in admin interface
  • 49ea3e3 feat(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.
  • f2cb72d release: bump version to 2.0.0
  • c43fab5 Update 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.
  • d7f1c6d feat: add health and privilege audit functionality with audit script and command support
  • 0197ca0 feat: enhance changelog generation to include commit body in markdown output
  • e52285f release: bump version to 1.3.4
  • 64b5b1e feat: 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

  • 6439739 release: bump version to 1.3.3
  • 1905070 feat: ensure pf anchor declaration in /etc/pf.conf for firewall helper
  • 786f16d release: bump version to 1.3.2
  • 0776143 feat: implement client heartbeat registration and throttle history updates for active users
  • ed4e646 feat: implement live version tracking for footer badge and update version display
  • 7f8672d fix: adjust hero link styles for improved layout and visual consistency
  • ce1bf42 release: bump version to 1.3.1
  • a4c4f76 feat: add footer accordion functionality and update changelog generation script

2026-09-20

  • daf07c8 feat: implement wallpaper enforcement pause and resume functionality for teachers
  • e41a945 feat: 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

  • d8d81f9 refactor: remove Firebase hosting workflows and update GitHub links in HTML files

2026-09-18

  • eb75fca feat: enhance socket error handling and add sudo requirement for installer
  • 5e1251d Add 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

  • c9fbe78 feat: add firebase configuration for hosting setup
  • 15a31b6 feat: update version to 1.3.0 in package.json files for client and host
  • b25a286 (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

  • fc734cb feat: enhance socket connection with logging, add server status endpoint, and update installation scripts

2026-05-19

  • 47dbaac feat: add firebase configuration for hosting setup
  • 2f6ca77 feat: update deployment path in GitHub Actions workflow to include entire website directory
  • 5ddd0c6 feat: remove old website files and add new structure with 404 page, configuration, and markdown support
  • 136e2e3 docs: update README with installation instructions for clients and admins
  • 05f40b6 feat: enhance admin panel with command execution logic, UI improvements, and styling updates
  • 6c19dad feat: update version to 1.2.2 and enhance configuration handling in main.js and documentation

2026-05-17

  • da65beb feat: update version to 1.2.1 in package.json
  • f97b7f5 feat: implement command execution and result handling in admin panel
  • 8cc753e fix: correct command syntax for creating service directory in quick_download.md
  • 12c1872 feat: 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

  • fc1ff33 feat: Add command to load configuration and improve readability in index.html
  • ad98cb7 Fix XML escaping in daemon registration command
  • 098cc56 Change artifact upload path to ‘./website/public’
    • Update artifact upload path for GitHub Pages deployment.
  • 92271b6 Add instructions for service persistence setup
  • 3fe9092 refactor: 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

  • ec94c35 Add blank lines for improved code readability in main.js
  • e1348c8 Add terminal setup instructions to index.html for Mac users
  • 9a1af8a Refactor documentation and cleanup: remove outdated HTML and markdown files, add new index.html and quick_download.md for improved setup instructions
  • 497e45e Enhance admin interface and functionality: update socket event handling, improve UI styles, and add setup instructions

2026-04-18

  • 2415d7d Bump version to 1.0.3 in package.json and package-lock.json for both client and host
  • 993deac Refactor code structure for improved readability and maintainability
  • 2b999f4 Add device_history.json to .gitignore
  • fad0392 Remove device history JSON file
  • 838ab97 Add auto-launch functionality for the application on startup
  • 0efac62 Refactor comments for clarity and consistency in main.js

2026-04-15

Fetched live from https://github.com/ChuTM/inhand