Enter Webz
The world’s first “web browser”
for the TiVo DVR.
By David Blackledge, original beta release in January 2013
Download a version* to run on your personal computer.
A public server is also available from EnterWebz.tv.
Why a Web Browser for the TiVo DVR?
Instant HME Apps for Many Websites
Information Menu Page Features
2014-12-25 (V 1.0) Release Notes
2014-2-10 Server Release Notes
2014-1-9 / First EnterWebz.tv Server Release Notes
Especially mobile websites (m.website.com)
like:
Allows a user to start a regular TiVo App via a special link on a web page, or simply when you know the domain name for the App, but not the IP address usually required by “Manually add a server.”
Links to TiVo Apps or websites can be configured to to look like they are regular stand-alone TiVo Apps.
Please report bugs at the tivocommunity forums or send me an email at david @ blackledge .com
You’re welcome to run it for your personal use, but may not run it on a public server.
No warranties expressed or implied, etc. Your use of this software is acknowledgement that you will not hold me responsible for any damage that may or may not result from your use of this software.
You are hereby warned that it could possibly crash (reboot) your TiVo DVR. Crashes are known (but rare) when the TiVo’s built-in webserver is activated while running any HME application - e.g. accessing the same TiVo’s web server via this app, or even just running any HME app while pyTiVo happens to be downloading content from the DVR. Crashes are also known on web pages with content and layout that happens to be taxing to the TiVo’s capabilities. This is a known problem on some Vimeo pages including the home page which has a very wide and fairly tall background image.
Enter Webz was written entirely by David Blackledge ( David @ Blackledge .com ) in his spare time starting in the summer of 2012. The first beta release was in January of 2013.
Enter Webz uses:
The name, Enter Webz, is a combination of the action you’re performing when you select it on the TiVo (Entering the World Wide Web) and a variation on LOLspeak or 1337 for “Internet” (“Teh Interwebz”).
The TiVo DVR’s HME interface that Enter Webz uses has severe limitations and stability issues. As a result, any given web page may be formatted and arranged in such a way as to cause the TiVo to run out of memory and exit the app, run out of graphics memory and display content abnormally/off-color which may lead to the app exiiting or the TiVo DVR rebooting, or for any other related reasons or incompatible file formats the TiVo DVR may just reboot unexpectedly.
Consequently, your use of Enter Webz to display any web page or app is at your own risk.
It is recommended that you only access known “simple” websites, and do not venture into other areas of the websites. If you choose to “surf the web” with Enter Webz, you should do so when you do not have a recording in progress on your DVR due the risk of a reboot and loss of at least 5-10 minutes of the recording.
You have been warned. Enter Webz is provided to you free of charge. Your use of Enter Webz acknowledges that you hold David Blackledge (and any other entities related to your use) harmless for any damage resulting from your use of this application.
If running your own Enter Webz server in your own home network, Enter Webz is as secure as your network is with one exception. Enter Webz passes http (not secure https) URLs to the TiVo to load resources (images, mp3 files, etc) even if the web page specified https. This is a TiVo DVR limitation - either you get no image, or you use http. Consequently, an attacker could see what file is getting displayed by the TiVo DVR as it is downloaded if he is watching your network traffic.
If you are using a public Enter Webz server, then security is lower. You should act as though you have no privacy in your web browsing. Your thumztaks (bookmarks) and cookies are stored on that server. Also, all communication between the server and your TiVo (text to display, Remote control or Keyboard button presses, URLs) could be seen by an attacker watching your network traffic.
While an attack or other misuse of your data is unlikely, it is possible. Keep this in mind when accessing sensitive websites or entering passwords.
(known issues are in [brackets])
Cookies via java.net.CookieHandler
Cookies only persist with saved thumztaks (bookmarks)
Cookies are refreshed in saved thumztaks on browser exit.
HTTP handling and HTML interpretation using Jsoup
(bypasses Jsoup cookies so has to do own redirect handling)
just a “bonk” if page fails for any reason
Optionally tells site it is an “AvantGo 3.0” compatible “Mobile” browser.
Will never support scripts (javascript), Java applets, Silverlight, plugins in general.
[should try to support Flash on TiVo Premiere]
Supports HD modes [needs mode choice in user settings] plus Maximize option
Optional Picture-in-Picture (PIP) LiveTV on launch like TiVo HD menus
Custom support for “hme://” protocol to transition to other TiVo HME apps.
[future? support user selection for multiple apps at a single site]
launches TiVo’s [old] YouTube and Video Player apps when needed
[future: for other links transition to HME apps like my Google Maps app]
[future: secure HME server]
[future: save memory by consolidating same-style text rows to a single row]
Server mode - thumztaks in Apps group become TiVoConnect app entries
top: Page Icon (if supported image type), Title, page info
bottom: Focused link destination in “status bar”
left side: Hints
right side: scrollbar
[No indication if server is secure.]
“Maximize” mode for TVs that have a small overscan area
CLEAR = quit Enter Webz or text field clear
PLAY = open thumztaks (bookmarks)
[should launch player if focused on a known media URL]
THUMBS UP/DOWN = save/remove thumztak
INFO = open information menu
ASPECT/ZOOM = toggle Mobile mode and reload or toggle PIP of playing video
REVERSE = back or text field backspace
SELECT or FORWARD = follow link or activate form field or open text field keyboard or textfield space (FORWARD)
LEFT = back (see Information Menu to only use REVERSE)
UP/DOWN/LEFT/RIGHT = navigate links & fields, small scroll of page
[uses Bananas focus manager - needs a custom one]
[shouldn’t scroll right when there is no more content to show]
CHANNEL UP/DOWN = page scroll
ADVANCE = bottom or top (bottom estimated then does any reflow) or text field dash
SLOW = open Live TV Picture-in-Picture (PIP) or close PIP video/audio
PAUSE = pause/unpause PIP video/audio (or quit Enter Webz if PIP is closed)
1-9,0 = page-defined link shortcut or “zoom” font size (0=default) or text field input
REPLAY = reload or text field comma
RECORD = make thumztak of focused link or text field period
Action “B” = back
Action “D” = Dimmer
Page Information and full-size Icon
Save thumztak of focused link
Adjust display (maximize, brightness, save font size, table render/flatten) and redisplay
Adjust mode (mobile mode, interpretation mode) and reload
LEFT goes “back,” too or not.
Startup PIP options
Delete all cookies (Thumbs Down three times)
Remembers Last Visited page
“[Enter new webz URL]” - activates keyboard
[should allow direct entry by slide remote without selecting keyboard]
SELECT/RIGHT/FORWARD = load thumztak
LEFT/REVERSE = back to page, or quit
THUMBS DOWN = remove thumztak
ENTER = edit thumztak page
edit name
change/create group (Apps/ and Apps/genre/ (music, photos, video) built-in)
numbers+ENTER(or SELECT) = enter new list position for this entry
THUMBS UP = save “Last Visited” or featured link as a thumztak.
Keyboard page - text area:
slide remote/USB/bluetooth keyboard support
cursor indicates where next letter will go
0-9 = type number
RECORD = type “.”
REVERSE = backspace
FORWARD = type a space
CLEAR = clear all text (press again to undo)
LEFT (at left edge)/PAUSE = Cancel entry
RIGHT (at right edge)/SELECT/ENTER = Complete entry
LEFT/RIGHT = move cursor one letter
ADVANCE = jump cursor to end or beginning
REPLAY = jump cursor back one word
THUMBS UP = capitalize letter after cursor and advance
turn on Caps or Capslock for next typed letter if at end of text
[should be “next typed letter if at end OF WORD”]
THUMBS DOWN = downcase letter after cursor and advance, turn off Caps
UP/DOWN/CHANNEL = select Completions or Keyboard
Keyboard page - Completions:
Top 10 Based on common english words and saved thumztak host names.
1-9 = select completion
UP/DOWN = navigate completions list
SELECT/RIGHT = select focused completion
DOWN (at bottom)/CHANNEL DOWN/PAUSE/CLEAR/ENTER/LEFT = select text area.
REVERSE, FORWARD, REPLAY = same as text area
THUMBS = Capitalize or ALL CAPS the completion
Keyboard page - keyboard:
common sequences in top row, vowels in second row
UP/DOWN/LEFT/RIGHT = navigate keyboard
UP (at top)/CHANNEL UP/PAUSE/CLEAR/ENTER = select text area
THUMBS UP = Capitalize next selection (Capslock if pressed twice)
THUMBS DOWN = cancel capitalization
1-9 = select completion (type # if completions are off)
REVERSE/FORWARD/ADVANCE/REPLAY = same as text area
Accepts some parameters on launch or transition
launcher.txt accepts two parameters which are the starting URL and the App title
URL “file:groupName/subgroupName” starts in that thumztak group page.
(simulate server with entries for file:Apps and each file:Apps/genre)
transition URL (from another App or TiVoConnect listing) accepts params:
Returns page title and URL on transition back (for e.g. Google Authentication)
[future: accept compressed HTML content in transition data map for instant display or partial content (e.g. RSS feed entry)]
hme: URLs link to TiVo HME apps from a bookmark or website
URLs use a host, optional port, (partial) path, and optional query.
host domain name is translated to ip address
ip is asked for an HTTP TiVoConnect XML file
TiVoConnect is searched for an entry whose path starts with the hme: URL’s path. This is used for the transition (if no path, chooses first entry)
If no TiVoConnect file, transitions to host IP, port, and path supplied [currently this only supports http, not https]
Query is included on transition URL as well as passed in as a transition data map
Example: hme://mydomain.com/hmeapp?name=value first translates mydomain.com to ip 98.76.54.320 and downloads http://98.76.54.320/TiVoConnect which contains app entry http://123.456.789.10:7288/hmeapp_official (a match for “hmeapp”) so the TiVo transitions to http://123.456.789.10:7288/hmeapp_official?name=value with a data map of {“name”=”value”}
(known issues are in [brackets])
Images (PNG, GIF, animated GIF, JPG, max 3000x1700?)
[when not blocked by website due to remote loading]
[no proxy-based work around for remote loading blocks or >1k url lengths or large images or unsupported image formats]
pauses rendering to load image size when needed
displays “alt” text and error when image fails
[text doesn’t persist after scrolling]
[?errors not displayed if image size was known]
[untested handling of redirect (HTTP 301 & 302) errors]
Fonts - basic font family support including 3 custom fonts uploaded as needed.
Replaces some unsupported characters (that would display a “box”)
[some “box” characters are still present, especially foreign languages]
[Only rudimentary framesets or iframe support - displayed as links]
[no underlining or other line-based text-decoration for links or anything else]
[sometimes page is blank for no reason - reload and it works]
Auto-Refresh can be scheduled by page or HTTP header. [should disable TiVo idle timeout]
Supports “BASE” tag to change relative urls [should also support Content-Location header and relative URLs for both]
Jumps to URL’s #section in page (anchor name or id reference)
“instant” load of new page if it is a #section of the current page.
(push-down via Jsoup css selector querying)
support for @media and @import
user-selected “tv” (default), “handheld,” or “screen” as media interpretation type
[no proper support for media queries (width, etc)]
Handles CSS Specificity rules and built-in user-agent stylesheet for defaults.
[doesn’t properly support inheritance]
display:none skips rendering
support for background, list, color, align, font (size, italic, bold, family [sort of])
[background images are flakey across multiple text rows]
[background images don’t support attach=scroll, iffy support of repeat/position]
[repeat only supported via scaling - to reduce # of views]
[scaling doesn’t persist after scrolling?]
[backgrounds may use too much memory - need option to turn it off]
[list-style-type only supports numbers/alpha with “#” as bullet]
[“display:” only has simple support for block/inline]
[incomplete url support (must be relative to the CSS source, not page. url() formats]
[need to support white-space:nowrap (and NOBR tag)]
[WARNING not a secure HME server currently - keyboard from TiVo to Enter Webz could be watched. If site is secure, form submission is still secure]
Custom form field look & feel
Fields not fully supported:
Text field control:
direct input with remote (good for numeric fields)
0-9, REC=”.”, ADV=”-”, REP=”,”, REV=backspace, FOR=space, Clear
direct keybaord input with Slide Remote/USB/bluetooth keyboard
SELECT: open keyboard screen
(“password” just shows some *’s when set)
[TODO: press ENTER key to submit button-less forms (e.g. search fields)]
“Button” tag renders as HTML in gray raised area [should look like regular buttons]
[select list backdrop highlight gets hidden behind most page content]
[select list doesn’t handle disabled OPTIONs]
“Disabled” fields are transparent [doesn’t work for button tag?]
[Some form submissions aren’t working as expected]
Can be turned off
[nested tables don’t work well, currently]
adapts column widths for small content
[isn’t handled well for nested tables]
[sometimes end up with just a single tiny column containing all content]
[last column is usually wrong]
[generally forces one screen width, instead of needed width plus scrolling]
[no borders]
[iffy handling of colspan, no handling of rowspan]
2014-6-7 Release Notes