christianandClaude Opus 5.5 e7e527197f Add the Browser tab: a live web page with no browser chrome
A new tab (globe, after Maps) shows one web page full-bleed in the content area —
no address bar, bookmarks or scrollbars — built for It Is Written but usable with
any page. It loads at startup and keeps running in the background.

Stage (browser-tab.js, browser-guest-preload.cjs):
- An Electron <webview> per Browser tab, in its own sandboxed process and persistent
  session. The pages live in one persistent layer inside .tab-content: every tab
  switch rebuilds .tab-content and moving a webview reloads it, so app.js now clears
  around that layer (clearTabContentKeepingBrowser).
- Tapping a text field brings up the Prayer tab's keyboard (createPrayerKeyboard with
  a sink) and types into the page with trusted input; Enter submits; the keyboard puts
  itself away when the page moves focus on (e.g. after a search). The OS touch
  keyboard is suppressed with inputmode="none" while a field is focused.
- Tapping a scripture reference opens it in a new Bible tab, in the translation
  printed beside it when that one is switched on. References are found with the app's
  own scanner: scripture-scan.js gains scanAll() (every match with its offsets),
  translationAfter() and isTranslation(); scanText/parseSlide are unchanged.
- Input inside a webview never reaches the app, so the page reports activity (idle
  splash) and five-finger touches (blank the screen) itself.
- main.cjs: webviewTag on; every webview is forced sandboxed, context-isolated, no Node,
  http(s) only, with the guest preload. No new windows (opened in place), no permission
  prompts, no downloads, no pinch-zoom, no alert/confirm/prompt boxes, and "Leave
  site?" can never block Reload or Start page. The session reports plain Chrome.
- server.js CSP: frame-src allows http(s) (a webview is a frame to CSP); style-src and
  font-src allow https (the follower's srcdoc copy inherits this policy).

Everywhere a tab kind is listed:
- app.js: create at startup and on Reset, icon, visibility defaults, + menu, fixed
  mode, no ink layer, tool handling, OSC kind + information line (the page's search
  term), phone remote scroll / tap / page buttons, OSC show / reload / home actions,
  live setting changes, translation for tapped references.
- quick-dock, tool-wheel, presentation-tools: no drawing tools on the tab.
- Phone remote: tab label, one finger scrolls the page (taps still tap), hint text;
  mirror-stream.js reports the page's scroll for the phone's local preview.
- Follower screen: the stage publishes a script-free copy of the page's DOM (only while
  a follower is linked), its scroll and form fields; the follower shows it in
  sandboxed, double-buffered frames; the relay keeps the page for late joiners.
- OSC: /bibleapp/browser, /bibleapp/browser/reload, /bibleapp/browser/home;
  tab_kind/browser feedback. Admin and phone allow-lists updated.
- Settings: Tab Visibility, a Browser Tab section (start page, page size, scripture
  taps, return to start page), Service Profiles carry its settings, OSC references.
- Admin console: show the tab, reload / start page, start page and page size.
- BROWSER_TAB.md documents it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 20:25:15 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00
2026-09-24 13:05:20 -04:00

//install this https://nodejs.org/en //then //start server

Bible App

A minimalist Bible reading app with annotation features and Google Drive integration.

🎯 Features

  • 📖 Multiple Bible translations (KJV, NIV, ESV, NKJV)
  • ✏️ Drawing and highlighting annotations
  • 📱 Touch-friendly interface optimized for touchscreen TVs
  • ☁️ Google Drive media integration
  • 📑 Multi-tab support
  • 🔄 Undo/Redo functionality
  • 💾 Local annotation persistence

🚀 Live Demo

Visit: https://[your-username].github.io/bible-app

🛠️ Local Development

  1. Clone this repository
  2. Install Node.js from https://nodejs.org/en
  3. Run: node server.js
  4. Open: http://localhost:8080

☁️ Google Drive Setup

To enable Google Drive integration:

  1. Create a Google Cloud Console project
  2. Enable Google Drive API
  3. Create OAuth 2.0 credentials
  4. Add your GitHub Pages domain to authorized JavaScript origins
  5. Update the API key and Client ID in app.js

📖 Usage

  • Create new tabs with the "+" button
  • Switch between Bible and Media modes
  • Use the toolbar to draw, highlight, and annotate
  • Connect Google Drive folders for media content
  • All annotations are saved locally in your browser

🎨 Tools

  • Select Tool: Navigate and select text
  • Pen Tool: Draw with customizable colors and sizes
  • Highlighter: Highlight text with transparency
  • Eraser: Remove annotations
  • Undo/Redo: Full history management
  • Clear: Remove all annotations

🖥️ TV Setup

  1. Open your TV's web browser
  2. Navigate to the live demo URL
  3. The app will load automatically
  4. Use touch gestures to interact

🤝 Contributing

Feel free to open issues and submit pull requests!

📄 License

MIT License

Bible App - Deployment Package

📦 What's Included

This folder contains all the essential files needed to deploy your Bible app:

  • index.html - Main Bible application
  • styles.css - Styling and responsive design
  • app.js - Application logic and functionality
  • bible-data.js - Bible text data (KJV, NIV, ESV, NKJV)
  • package.json - Project configuration
  • deploy-to-netlify.html - Deployment guide
  • README.md - This file

🚀 Quick Deployment

  1. Open deploy-to-netlify.html in your browser
  2. Follow the step-by-step instructions
  3. Drag this entire folder to Netlify's drop zone
  4. Get your free URL in seconds

Option 2: GitHub Pages

  1. Create a GitHub repository
  2. Upload all files in this folder
  3. Enable GitHub Pages in repository settings
  4. Access via https://username.github.io/repository-name

Option 3: Any Web Server

  1. Upload all files to your web server
  2. Access via your domain name
  3. Works on any hosting service

🎯 Features

  • Multiple Bible Translations: KJV, NIV, ESV, NKJV
  • Touch-Optimized: Designed for touchscreen TVs
  • Annotation Tools: Highlight, underline, circle, erase
  • Session Management: Annotations persist during session
  • Responsive Design: Works on all screen sizes
  • Offline Capable: Bible text stored locally

📱 Access URLs

Once deployed, your Bible app will be available at:

  • Netlify: https://your-app-name.netlify.app
  • GitHub Pages: https://username.github.io/repository-name
  • Custom Domain: Your own domain name

🖥️ TV Setup

  1. Open your TV's web browser
  2. Navigate to your deployed URL
  3. The app will load automatically
  4. Use touch gestures to interact

🧪 Testing

Before deploying to your TV:

  1. Test locally by opening index.html in a browser
  2. Verify all features work correctly
  3. Test on different devices if possible

📞 Support

If you encounter any issues:

  1. Check that all files are present
  2. Verify the URL loads on a computer first
  3. Ensure your TV's browser supports modern web features

🎉 Your Bible app is ready for deployment!

🔤 Greek WordNet Integration

This app includes a minimal client for the Greek WordNet API and exposes it on window.greekWordNet in the browser for quick testing.

Quick start:

  1. Start the app: node server.js then open http://localhost:8080
  2. Open DevTools (F12) → Console
  3. Try:
    • await greekWordNet.lemmatize('reginarum')
    • await greekWordNet.searchLemmas('bula')
    • await greekWordNet.lookupLemma('sicula','n')
    • await greekWordNet.searchSynsets('mythology')

Client location: services/greekWordNet.js

If your network blocks cross-origin calls, ensure the CSP in server.js includes https://greekwordnet.chs.harvard.edu under connect-src (already configured).

S
Description
Minimalist Bible App for the portrait touchscreen TV on stage. Electron + Node, packaged for Windows. Updates publish to a release the app pulls from Settings › Updates.
Readme
692 MiB
Languages
JavaScript 94.5%
HTML 3.7%
CSS 1.4%
Batchfile 0.1%
PowerShell 0.1%