vercel / hyper

A terminal built on web technologies
https://hyper.is
MIT License
43.27k stars 3.52k forks source link

Canary update not working #2522

Closed peterdanis closed 6 years ago

peterdanis commented 6 years ago

Issue

Update from canary 2.1.1 to 2.0.0-canary.8 is not working. After I start the app, it downloads the 2.0.0-canary.8 package and prompts for restart, but nothing happens afterwards. After restart the app version is still 2.1.1. Tried several times.

peterdanis commented 6 years ago
Relevant part of SquirrelSetup.log
2017-12-05 09:47:04> Program: Starting Squirrel Updater: --checkForUpdate https://releases-canary.hyper.is/update/win32/2.1.1
2017-12-05 09:47:04> Program: Fetching update information, downloading from https://releases-canary.hyper.is/update/win32/2.1.1
2017-12-05 09:47:04> CheckForUpdateImpl: Using existing staging user ID: 129930b1-6218-50f5-b76c-fc66a947eb3a
2017-12-05 09:47:04> CheckForUpdateImpl: Downloading RELEASES file from https://releases-canary.hyper.is/update/win32/2.1.1
2017-12-05 09:47:04> FileDownloader: Downloading url: https://releases-canary.hyper.is/update/win32/2.1.1/RELEASES?id=hyper&localVersion=2.1.1&arch=amd64
2017-12-05 09:47:05> CheckForUpdateImpl: hwhat, local version is greater than remote version
2017-12-05 09:47:05> UpdateInfo: Couldn't get release notes for:hyper-2.0.0-canary8-full.nupkg: System.IO.FileNotFoundException: Could not find file 'C:\Users\pdanis\AppData\Local\hyper\packages\hyper-2.0.0-canary8-full.nupkg'.
File name: 'C:\Users\pdanis\AppData\Local\hyper\packages\hyper-2.0.0-canary8-full.nupkg'
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   at NuGet.ZipPackage.<>c__DisplayClass9_0.<.ctor>b__0()
   at NuGet.ZipPackage.EnsureManifest()
   at NuGet.ZipPackage..ctor(String filePath, Boolean enableCaching)
   at Squirrel.ReleaseEntry.GetReleaseNotes(String packageDirectory)
   at Squirrel.UpdateInfo.b__19_0(ReleaseEntry x)
2017-12-05 09:47:05> Program: Starting Squirrel Updater: --update https://releases-canary.hyper.is/update/win32/2.1.1
2017-12-05 09:47:05> Program: Starting update, downloading from https://releases-canary.hyper.is/update/win32/2.1.1
2017-12-05 09:47:05> Program: About to update to: C:\Users\pdanis\AppData\Local\hyper
2017-12-05 09:47:05> CheckForUpdateImpl: Using existing staging user ID: 129930b1-6218-50f5-b76c-fc66a947eb3a
2017-12-05 09:47:05> CheckForUpdateImpl: Downloading RELEASES file from https://releases-canary.hyper.is/update/win32/2.1.1
2017-12-05 09:47:05> FileDownloader: Downloading url: https://releases-canary.hyper.is/update/win32/2.1.1/RELEASES?id=hyper&localVersion=2.1.1&arch=amd64
2017-12-05 09:47:07> CheckForUpdateImpl: hwhat, local version is greater than remote version
2017-12-05 09:47:07> FileDownloader: Downloading file: https://github.com/zeit/hyper/releases/download/2.0.0-canary.8/hyper-2.0.0-canary8-full.nupkg
2017-12-05 09:49:15> ApplyReleasesImpl: Writing files to app directory: C:\Users\pdanis\AppData\Local\hyper\app-2.0.0-canary8
2017-12-05 09:49:16> LogHost: Rigging execution stub for lib/net45/Hyper_ExecutionStub.exe to C:\Users\pdanis\AppData\Local\hyper\Hyper.exe
2017-12-05 09:49:18> ApplyReleasesImpl: Squirrel Enabled Apps: [C:\Users\pdanis\AppData\Local\hyper\app-2.1.1\Hyper.exe]
2017-12-05 09:49:21> ApplyReleasesImpl: Starting fixPinnedExecutables
2017-12-05 09:49:21> ApplyReleasesImpl: Examining Pin: Excel 2013.lnk
2017-12-05 09:49:21> ApplyReleasesImpl: Examining Pin: Google Chrome.lnk
2017-12-05 09:49:21> ApplyReleasesImpl: Examining Pin: Internet Explorer.lnk
2017-12-05 09:49:21> ApplyReleasesImpl: Examining Pin: Outlook 2013.lnk
2017-12-05 09:49:21> ApplyReleasesImpl: Examining Pin: SAP Logon.lnk
2017-12-05 09:49:21> ApplyReleasesImpl: Examining Pin: Skype for Business 2015.lnk
2017-12-05 09:49:21> ApplyReleasesImpl: Examining Pin: Windows Explorer.lnk
2017-12-05 09:49:21> ApplyReleasesImpl: Fixing up tray icons
2017-12-05 09:49:21> ApplyReleasesImpl: Couldn't rewrite shim RegKey, most likely no apps are shimmed: System.NullReferenceException: Object reference not set to an instance of an object.
   at Squirrel.UpdateManager.ApplyReleasesImpl.b__13_0(RegistryView view)
2017-12-05 09:49:21> ApplyReleasesImpl: Couldn't rewrite shim RegKey, most likely no apps are shimmed: System.NullReferenceException: Object reference not set to an instance of an object.
   at Squirrel.UpdateManager.ApplyReleasesImpl.b__13_0(RegistryView view)
2017-12-05 09:49:21> ApplyReleasesImpl: cleanDeadVersions: for version 2.1.1
2017-12-05 09:49:21> ApplyReleasesImpl: cleanDeadVersions: exclude folder app-2.1.1
2017-12-05 09:49:21> ApplyReleasesImpl: cleanDeadVersions: exclude folder app-2.1.1
daniel-liuzzi commented 6 years ago

I'm experiencing this too. I thought there was something wrong in my setup, as 2.0.0 seems older than 2.1.1; I didn't understand why it was asking me to update.

Also, I don't know if this is related but the "(notes)" link in the update popup is broken; it opens up https://github.com/zeit/hyper/releases/tag/2.0.0-canary8 which serves a 404 error. I believe the correct link should be https://github.com/zeit/hyper/releases/tag/2.0.0-canary.8 (with a dot between canary and 8.)

chabou commented 6 years ago

I reproduced these 2 issues 😞

We have changed our versioning to have a 2.0.0-canary.X instead of 2.X.X. But Squirrel is checking this: 2017-12-05 09:47:05> CheckForUpdateImpl: hwhat, local version is greater than remote version

And indeed, our notes link is broken

leo commented 6 years ago

We're working on finding a fix for this problem! Squirrel for Windows isn't that nicely built, so that's why were having problems, basically.

Dean-Coakley commented 6 years ago

@leo Sorry if this is irrelevant but the issue appears to me that the update might be pointing to https://github.com/zeit/hyper/releases/tag/2.0.0-canary8 instead of https://github.com/zeit/hyper/releases/tag/2.0.0-canary.8

Just thought this may/may not help. My apologies if ye already diagnosed the issue or something.

leo commented 6 years ago

The problem here is that squirrel for windows (the auto update framework that's included in electron and responsible for handling updates on windows) compares the version of the downloaded update to the version of the running application.

And since we had to publish an update with the tag 2.1.1 (reason), squirrel will never allow the update because 2.0.0-canary.8 is lower than that.

So we need to find a way to make squirrel think the version it downloaded is higher - but not actually place a higher releases on the device.

3rdvision commented 6 years ago

I noticed this issue while I was testing hyper's update system. A solution could be to make squirrel update when versions are different but not necessarily higher. It should assume the published online version as the most up to date version.

leo commented 6 years ago

@3rdvision We already patched our update server to work exactly like that. But we can't configure Squirrel to do that, because there's no way to do so. In addition, we can't even access the squirrel instance on the user's device (windows canary).

daniel-liuzzi commented 6 years ago

I'm already running 2.0.0-canary.8 on my other computer and today I've got the following notification telling me version 1.4.8 is ready, which AFAIK is not a canary version:

hyper 1 4 8

This time "(notes)" points to https://releases-canary.hyper.is/update/win32/2.0.0-canary.8, which is not broken but serves an empty response.

markozxuu commented 6 years ago

@dliuzzi Could you show me your hyper.js file and tell me what operating system you are using 🤔

Dean-Coakley commented 6 years ago

@MAPESO Currently on Windows10 (x64)

image Not sure what part of hyper.js is important. (I don't want to spam entire file here) But it has

module.exports = {
  config: {

    updateChannel: 'canary',
markozxuu commented 6 years ago

@dliuzzi @Dean-Coakley I thought the problem was related to the OSX version, for now the Windows version has some problems but soon we will send instructions so they can solve the problem 😺

for the moment I recommend that you stay in the stable version.

Thanks for your understanding ❤️

daniel-liuzzi commented 6 years ago

@MAPESO Sure thing! I'm using Windows 10 Pro 64-bit (10.0.16299.125). Here's my .hyper.js file:

```js // Future versions of Hyper may add additional config options, // which will not automatically be merged into this file. // See https://hyper.is#cfg for all currently supported options. module.exports = { config: { // Choose either "stable" for receiving highly polished, // or "canary" for less polished but more frequent updates updateChannel: 'canary', // default font size in pixels for all tabs fontSize: 17, // font family with optional fallbacks fontFamily: '"Fira Code Light", Menlo, "DejaVu Sans Mono", Consolas, "Lucida Console", monospace', // terminal cursor background color and opacity (hex, rgb, hsl, hsv, hwb or cmyk) cursorColor: 'rgba(248,28,229,0.8)', // `BEAM` for |, `UNDERLINE` for _, `BLOCK` for █ cursorShape: 'BLOCK', // set to true for blinking cursor cursorBlink: false, // color of the text foregroundColor: '#fff', // terminal background color backgroundColor: '#000', // border color (window, tabs) borderColor: '#333', // custom css to embed in the main window css: '', // custom css to embed in the terminal window termCSS: '', // set to `true` (without backticks and without quotes) if you're using a // Linux setup that doesn't show native menus // default: `false` on Linux, `true` on Windows (ignored on macOS) showHamburgerMenu: '', // set to `false` if you want to hide the minimize, maximize and close buttons // additionally, set to `'left'` if you want them on the left, like in Ubuntu // default: `true` on windows and Linux (ignored on macOS) showWindowControls: '', // custom padding (css format, i.e.: `top right bottom left`) padding: '12px 14px', // the full list. if you're going to provide the full color palette, // including the 6 x 6 color cubes and the grayscale map, just provide // an array here instead of a color map object colors: { black: '#000000', red: '#ff0000', green: '#33ff00', yellow: '#ffff00', blue: '#0066ff', magenta: '#cc00ff', cyan: '#00ffff', white: '#d0d0d0', lightBlack: '#808080', lightRed: '#ff0000', lightGreen: '#33ff00', lightYellow: '#ffff00', lightBlue: '#0066ff', lightMagenta: '#cc00ff', lightCyan: '#00ffff', lightWhite: '#ffffff', }, // the shell to run when spawning a new session (i.e. /usr/local/bin/fish) // if left empty, your system's login shell will be used by default // // Windows // - Make sure to use a full path if the binary name doesn't work // - Remove `--login` in shellArgs // // Bash on Windows // - Example: `C:\\Windows\\System32\\bash.exe` // // Powershell on Windows // - Example: `C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe` shell: 'powershell.exe', // for setting shell arguments (i.e. for using interactive shellArgs: ['-i']) // by default ['--login'] will be used shellArgs: ['-NoLogo'], // for environment variables env: {}, // set to false for no bell bell: 'SOUND', // if true, selected text will automatically be copied to the clipboard copyOnSelect: false, // if true, on right click selected text will be copied or pasted if no // selection is present (true by default on Windows) // quickEdit: true, // URL to custom bell // bellSoundURL: 'http://example.com/bell.mp3', // for advanced config flags please refer to https://hyper.is/#cfg }, // a list of plugins to fetch and install from npm // format: [@org/]project[#version] // examples: // `hyperpower` // `@company/project` // `project#1.0.1` plugins: [ 'hyper-snazzy' ], // in development, you can create a directory under // `~/.hyper_plugins/local/` and include it here // to load it and avoid it being `npm install`ed localPlugins: [], keymaps: { // Example // 'window:devtools': 'cmd+alt+o', }, }; ```
portenez commented 6 years ago

I added { config: { updateChannel: 'canary' }} and still not getting the updates to canary. Also, I manually downloaded version 2xx and it reverts itself back.

Here's my .hyper.js

module.exports = {
  config: {
    updateChannel: 'canary',
    themeSettings: {
      // Do not make background transparent (default is 0.9)
      opacity: 0.7,
      // Switch from luke's orange uniform to master yoda (check the available styles above)
      // style: 'yoda',
      // Change the character that mars a tab active
      // tabActiveMarker: '💁'
    },

    cursorBlink: true,
    // default font size in pixels for all tabs
    fontSize: 13,

    // font family with optional fallbacks
    // fontFamily: 'Menlo, "DejaVu Sans Mono", "Lucida Console", monospace',
    // fontFamily: '"Monoid", "Source Code Pro for Powerline", Hack',
    // fontFamily: '"Monoid"',
    // fontFamily: '"Hasklig"'
    // fontFamily: '"Source Code Pro for Powerline", Hack',
    fontFamily: '"Fira Code"',
    // fontFamily: '"Source Code Pro Medium for Powerline", "Source Code Pro for Powerline", Hack',
    // fontFamily: 'Hack',

    // terminal cursor background color and opacity (hex, rgb, hsl, hsv, hwb or cmyk)
    cursorColor: 'rgba(248,28,229,0.75)',

    // `BEAM` for |, `UNDERLINE` for _, `BLOCK` for █
    cursorShape: 'BLOCK',

    // color of the text
    foregroundColor: '#fff',

    // terminal background color
    backgroundColor: '#000',

    // border color (window, tabs)
    borderColor: '#333',

    // custom css to embed in the main window
    css: '',

    // custom css to embed in the terminal window
    termCSS: '',

    // custom padding (css format, i.e.: `top right bottom left`)
    padding: '12px 14px',

    // the full list. if you're going to provide the full color palette,
    // including the 6 x 6 color cubes and the grayscale map, just provide
    // an array here instead of a color map object
    colors: {
      black: '#000000',
      red: '#ff0000',
      green: '#33ff00',
      yellow: '#ffff00',
      blue: '#0066ff',
      magenta: '#cc00ff',
      cyan: '#00ffff',
      white: '#d0d0d0',
      lightBlack: '#808080',
      lightRed: '#ff0000',
      lightGreen: '#33ff00',
      lightYellow: '#ffff00',
      lightBlue: '#0066ff',
      lightMagenta: '#cc00ff',
      lightCyan: '#00ffff',
      lightWhite: '#ffffff'
    },

    // enableVibrance: true,

    // backgroundOpacity: '0.8',

    // the shell to run when spawning a new session (i.e. /usr/local/bin/fish)
    // if left empty, your system's login shell will be used by default
    // shell: '',
    shell: '/usr/local/bin/fish',

    // for setting shell arguments (i.e. for using interactive shellArgs: ['-i'])
    // by default ['--login'] will be used
    shellArgs: ['--login'],

    // for environment variables
    env: {},

    // set to false for no bell
    bell: 'SOUND',

    // if true, selected text will automatically be copied to the clipboard
    copyOnSelect: false

    // URL to custom bell
    // bellSoundURL: 'http://example.com/bell.mp3',

    // for advanced config flags please refer to https://hyperterm.org/#cfg
  },

  // a list of plugins to fetch and install from npm
  // format: [@org/]project[#version]
  // examples:
  //   `hyperpower`
  //   `@company/project`
  //   `project#1.0.1`
  plugins: [
    // 'hyperline',
    // 'hyperterm-tab-cwd',
    // 'hyperterm-mactabs',
    // 'hyperterm-tab-icons',
    // 'hyperborder',
    // 'hyperterm-atom-dark',
    // 'hyperterm-monokai',
    // 'hyperterm-one-monokai',
    // 'hyper-material-theme',
    // "hyper-cat",
    // 'hyper-simple-vibrancy',
    // 'hyper-blink',
    // 'hyper-dracula',
    'an-old-hype',
    'hyperterm-dibdabs',
    'hyperterm-subpixel-antialiased',
    'hyper-search',
    // 'hyperminimal',
    'hyperterm-oceanic-next',
    // 'hyper-statusline'
    // 'hyperterm-one-dark'
    // 'hyperterm-base16-tomorrow-night',
    // 'hyperterm-seti',
    // 'predawn-hyperterm'
    // 'hyperterm-ir-black'
  ],

  // in development, you can create a directory under
  // `~/.hyperterm_plugins/local/` and include it here
  // to load it and avoid it being `npm install`ed
  localPlugins: []

};
chabou commented 6 years ago

@portenez I suppose that you are on Linux?

portenez commented 6 years ago

@chabou no macos

albinekb commented 6 years ago

@portenez are you changing the correct config file? if you click "about hyper" image after the version number, it should say (canary) which indicates the update channel configured

if i change my ~/.hyper.jsto stable it looks like this image

Can you check this and report back, thanks. This applies even without restart (just close and open the about window to see the updated text)

portenez commented 6 years ago

I don't know what it was! but I finally made it work. There's an issue with the performance in 2.0.0-canary.9, but that's a different story.

chabou commented 6 years ago

What type of performance issue ?

portenez commented 6 years ago

I'm experiencing the same as https://github.com/zeit/hyper/issues/2592

daniel-liuzzi commented 6 years ago

Unfortunately as of 2.0.0-canary.10, update seems to still be broken. I've got this popup just now:

canary10

Firstly, the link to notes points to https://releases-canary.hyper.is/update/win32/2.0.0-canary.9 which, oddly enough, actually shows canary.10 information:

{
  name: "2.0.0-canary.10",
  notes: "Better resizing and fixed blinking cursors 💅 ### Patches - Fix Windows keymap delete typo: #2575 - Make CLI perform static analysis of config lazily: #2593 - Use xterm.js&#39;s fit addon when calling fitResize: #2594 - Fix CLI installation on Windows: #2600 - Fix offscreen term size calculation: #2612 - Fix initial cursor blinking: #2614 ### Credits Huge thanks to @dliuzzi, @bgw and @chabou for helping!",
  pub_date: "2018-01-17T15:13:46Z",
  url: "https://github.com/zeit/hyper/releases/download/2.0.0-canary.10/hyper-Setup-2.0.0-canary.10.exe"
}

More importantly, the update still won't work; no matter how many times I click Restart, going to Help > About Hyper always shows 2.0.0-canary.9 being installed:

about

This of course results in the same update popup being shown.

jokeyrhyme commented 6 years ago

On macOS, I can install 2.0.0 canary 9 or 10, but it will automatically be "updated" to stable 1.4.8 when I next restart hyper

jwverzijden commented 6 years ago

I just tried out the canary update on windows 10 64bit, enabling it was kinda confusing.. setting "updatechannel":"canary" in the config actually does it but you just have to wait for the terminal to do something in the background until you get a message to restart.

But reverting back to stable seems to be impossible, I'm now on Hyper 2.0.0-canary.14 (stable) image. now it keeps reverting back to 1.4.8 every time I open Hyper.

chabou commented 6 years ago

@crostine Sadly, rollback doesn't work on windows. You should reinstall stable release manually.

Stanzilla commented 6 years ago

That was a hiccup we had, everything should work as expected now though.