[Flutter-Web] text field selection on mobile web on iOS has visual discrepancy

Steps to Reproduce
Running on Chrome/Safari on iOS 14.0.1
Reproducable Code

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        resizeToAvoidBottomInset: false,
        body: Center(
          child: TextField(),
        ),
      ),
    );
  }
}

The bug
When selecting on iOS produces the following result:
As if the selection is positioned with some offset.
Screenshot

The reason this is not reproducable in the Gallery is the use of a different font.
Changing the code to be more similar to the Gallery text field no longer produces the bug (though this feels like a workaround)
Workaround

import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.blue,
        textTheme: _buildCraneTextTheme(ThemeData.light().textTheme),
      ),
      home: Scaffold(
        resizeToAvoidBottomInset: false,
        body: Center(
          child: TextField(),
        ),
      ),
    );
  }
}

TextTheme _buildCraneTextTheme(TextTheme base) {
  return GoogleFonts.ralewayTextTheme(
    base.copyWith(
      headline1: base.headline1.copyWith(
        fontWeight: FontWeight.w300,
        fontSize: 96,
      ),
      headline2: base.headline2.copyWith(
        fontWeight: FontWeight.w400,
        fontSize: 60,
      ),
      headline3: base.headline3.copyWith(
        fontWeight: FontWeight.w600,
        fontSize: 48,
      ),
      headline4: base.headline4.copyWith(
        fontWeight: FontWeight.w600,
        fontSize: 34,
      ),
      headline5: base.headline5.copyWith(
        fontWeight: FontWeight.w600,
        fontSize: 24,
      ),
      headline6: base.headline6.copyWith(
        fontWeight: FontWeight.w600,
        fontSize: 20,
      ),
      subtitle1: base.subtitle1.copyWith(
        fontWeight: FontWeight.w500,
        fontSize: 16,
        // letterSpacing: letterSpacingOrNone(0.5),
      ),
      subtitle2: base.subtitle2.copyWith(
        fontWeight: FontWeight.w600,
        fontSize: 12,
        // color: craneGrey,
      ),
      bodyText1: base.bodyText1.copyWith(
        fontWeight: FontWeight.w500,
        fontSize: 16,
      ),
      bodyText2: base.bodyText2.copyWith(
        fontWeight: FontWeight.w400,
        fontSize: 14,
      ),
      button: base.button.copyWith(
        fontWeight: FontWeight.w600,
        fontSize: 13,
        // letterSpacing: letterSpacingOrNone(0.8),
      ),
      caption: base.caption.copyWith(
        fontWeight: FontWeight.w500,
        fontSize: 12,
        // color: craneGrey,
      ),
      overline: base.overline.copyWith(
        fontWeight: FontWeight.w600,
        fontSize: 12,
      ),
    ),
  );
}

Logs

[✓] Flutter (Channel beta, 1.23.0-18.1.pre, on Linux, locale en_US.UTF-8)
    • Flutter version 1.23.0-18.1.pre at /home/alex/dev/flutter
    • Framework revision 198df796aa (6 days ago), 2020-10-15 12:04:33 -0700
    • Engine revision 1d12d82d9c
    • Dart version 2.11.0 (build 2.11.0-213.1.beta)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /home/alex/Android/Sdk
    • Platform android-30, build-tools 29.0.2
    • Java binary at: /home/alex/android-studio/jre/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at google-chrome

[✓] Android Studio (version 4.0)
    • Android Studio at /home/alex/android-studio
    • Flutter plugin version 50.0.1
    • Dart plugin version 193.7547
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] IntelliJ IDEA Community Edition (version 2020.1)
    • IntelliJ at /home/alex/idea-IC-201.7223.91
    • Flutter plugin version 45.1.3
    • Dart plugin version 201.7223.99

[✓] VS Code (version 1.50.0)
    • VS Code at /usr/share/code
    • Flutter extension version 3.10.2

[✓] Connected device (2 available)
    • Web Server (web) • web-server • web-javascript • Flutter Tools
    • Chrome (web)     • chrome     • web-javascript • Google Chrome 86.0.4240.75

• No issues found!

I was able to reproduce this with iOS 13 as well so this is not specific to iOS 14.
You can reproduce by accessing https://priceless-perlman-6fb54e.netlify.app/#/ in your iOS simulator/device.
I was not able to find the PR that introduces this (might be https://github.com/flutter/flutter/pull/67017) but I'm pretty sure this is a regression so and the label.

flutter doctor -v
[✓] Flutter (Channel master, 1.24.0-2.0.pre.98, on Mac OS X 10.15.7 19H2 darwin-x64, locale en)
    • Flutter version 1.24.0-2.0.pre.98 at /Users/pedromassango/dev/SDKs/flutter_master
    • Framework revision a4ac7cce82 (6 hours ago), 2020-10-21 00:46:59 -0400
    • Engine revision c2c74ed708
    • Dart version 2.11.0 (build 2.11.0-240.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.1)
    • Android SDK at /Users/pedromassango/Library/Android/sdk
    • Platform android-30, build-tools 30.0.1
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.0.1, Build version 12A7300
    • CocoaPods version 1.9.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] IntelliJ IDEA Community Edition (version 2020.2.3)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 50.0
    • Dart plugin version 202.7319.5

[✓] VS Code (version 1.50.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.15.1

[✓] Connected device (5 available)
    • Redmi 5 Plus (mobile)      • 0258ff700005                         • android-arm64  • Android
      8.1.0 (API 27)
    • iPhone 11 Pro Max (mobile) • 913ADC1E-400E-4AA0-8302-D955869FF1C9 • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-13-5 (simulator)
    • macOS (desktop)            • macos                                • darwin-x64     • Mac OS
      X 10.15.7 19H2 darwin-x64
    • Web Server (web)           • web-server                           • web-javascript • Flutter
      Tools
    • Chrome (web)               • chrome                               • web-javascript • Google
      Chrome 86.0.4240.80

• No issues found!

CC @nturgut for the web side of things.


Add task that looks for new IntelliJ stable releases

Just remembered that I need to update CONTRIBUTING.md


onItemHovered doesn't respect whether the grid is obscured by other elements

When an element obscures the grid  the onItemHovered callback is still called. Ie a modal with a transparent overlay covering the whole grid will still trigger the "hover" event callback.
I think this is because the mousemove event is registered on window not the  <canvas> element, and so there's no knowledge of whether other elements obscure the grid.
So this GitHub issue is requesting a change to ensure onItemHovered only fires when the mouse is over the grid and not obscured by other elements, or that the callback is given an additional arg to indicate whether the<canvas> is obscured.
Some possible ways of addressing this are:

Inside the mousemove callback use document.elementFromPoint (ie window.elementFromPoint(event.clientX, event.clientY) to check whether the returned element is the <canvas>; or
Register mousemove on the <canvas> instead so that the browser handles<canvas> obscuring and doesn't trigger events; or
Use mouseenter/leave (not mouseover/out as that misses events) on the canvas to set some boolean of whether the mouse is over the <canvas>.

A coworker says that the header cells have the same issue, so that might need to be solved too. Would you like another issue raised for that?

There was a reason why the handlers are not on the canvas. Younger version of me remember why. Smarter versions of me wish I had documented that reason. Current me just spites past me for not writing it down.

This was fixed by another community PR.

I have put in some changes to how this works. We do need these events in some cases to prevent issues with click off/selection. I think we've found a happy medium.

Thanks @jassmith which PR was it that addressed this?


Add contract to requireRequest

Allows for more smart compiler checks after requireRequest is called

@adrw This should bring Misk's requireRequest into alignment with the stdlib's require. For example:


Added RedirectToPage overloads to Controller

Issue - #6117
Almost all of this is copy-paste and moving things around. I've looked through the doc comments to see if there are any wrong references but couldn't find any.

🆙 📅


[Feature] New mechanism for preIPO assets

Overview
We implement a new mechanism that prevents having to migrate from preIPO asset to postIPO asset and allow preIPO traders to hold the assets without having to burn and re-mint new assets.
Instead of relying on asset migration to mark the event of an IPO, we add a new mint contract operation TriggerIPO to make the transition from preIPO to postIPO.
Asset lifecycle:

Asset is whitelisted through factory contract, filling mint_period parameter and min_collateral_ratio_after_ipo parameters.

pub struct Params {
    /// Auction discount rate applied to asset mint
    pub auction_discount: Decimal,
    /// Minium collateral ratio applied to asset mint
    pub min_collateral_ratio: Decimal,
    /// Distribution weight (default is 30, which is 1/10 of MIR distribution weight)
    pub weight: Option<u32>,
    /// For pre-IPO assets, time period after asset creation in which minting is enabled
    pub mint_period: Option<u64>,
    /// For pre-IPO assets, collateral ratio for the asset after ipo
    pub min_collateral_ratio_after_ipo: Option<Decimal>,
}

Asset is registered to mint_contract, with ipo_params:

RegisterAsset {
    asset_token: HumanAddr,
    auction_discount: Decimal,
    min_collateral_ratio: Decimal,
    ipo_params: Option<IPOParams>,
},
pub struct IPOParams {
    pub mint_end: u64,
    pub min_collateral_ratio_after_ipo: Decimal,
}

When IPO event happens, feeder executes TriggerIPO operation and starts feeding real price. This operation will assign a new min_cr to the asset, making the asset a traditional asset without mint_period.

TriggerIPO {
    asset_token: HumanAddr,
},

Behaviour summary

During mint_period:

All operations enabled
Feeder feeds fixed price

After mint_period (Trading phase):

Mint and burn disabled
Feeder keeps feeding fixed price

After IPO event:

min_cr is updated
Feeder executes TriggerIPO
Feeder starts feeding real price

*Migration of preIPO asset is not contemplated

Added the following changes:

mint_period using time instead of height
during mint_period fixed price is stored in mint contract instead of relying on fixed oracle price feed
added requested logs for preIPO whitelisting


[Epic] v8 tracking issue

[x] Superfluid

[x] Import / Export working

[x] Txfees

[x] Subcomponent of #1121

Need non-native osmo fees going to a separate module account

[x] Txfees queries

[ ] GAMM work

[ ] AMM interface refactor

[x] Main refactor done
[ ] remaining swap methods
[ ] #1165
[ ] Testing methods
[ ] Multihop swap fee update

[ ] Stableswap
[x] TWAPs

[x] Database Stability

[x] Pruning <> catch up
[x] Pruning edge cases
[x] TM race condition (sufficient amount fixed)

[ ] Cosmwasm Osmosis bindings

[x] Bindings merged
[ ] Cosmwasm side API review

[ ] Agoric's vesting with clawback module
[x] TokenFactory MVP

It feels like to me like we're hitting scope creep on v8 / when that'd go into an on-chain proposal. I propose making a new issue for planning a v9 release, and moving some v8 items into there.
The goal would be to target a v8 proposal going on-chain April 8th or April 11th.
Items that I think we should move to v9:

Token Factory
TWAP

Kicked off a branch:
https://github.com/osmosis-labs/osmosis/tree/v8.x

Hey @ValarDragon, Hope your doing well mate :) Curious if this Epic will be ready by end of this week. I see @faddat has kicked off a branch which is exciting. I also see the GAMM Work still needs sometime to properly address as well!

Hey @ValarDragon following up here again if possible to see if there is any update. Thank you so much and enjoy the remainder of your week

Hey, this will definitely not be ready by end of week unfortunately

Hi @Vinitowinit.
@ValarDragon is traveling this week and might take longer to reply.
With most certainty, the epic will not be ready by the end of this week.
The current progress on one of the largest components for v8 can be tracked here: https://github.com/osmosis-labs/osmosis/issues/1050

Hi yes, of course, I think I can help with documentation if need be. Improving the relevant changes I am unaware of where to help. For instance, stable swap is clearly out of my scope/capability to help :/

Closing this issue in replacement of V10


Add support for ruff

https://github.com/charliermarsh/ruff
cc @charliermarsh since he likely would like to know about this too

.

Sounds good. Can you submit a PR? Here are the necessary steps documented.


VSR: op_repair_min() + chronological repair

op_repair_min() + chronological repair
(copied from the first commit's message)
This commit has two different changes because I implemented them at the same time and they were too much work to untangle. Sorry!

Repair prepares in chronological order.
Repair prepares back to op_repair_min() which is:

For backups, it is usually op_checkpoint + 1.
For primary, it is usually op_head - journal_slots + pipeline.

Guiding principle: State transfer is expensive, prefer to repair WAL whenever possible.
1. Repair prepares in chronological order.
(Formerly prepares were repaired in reverse chronological order, i.e. starting at op-head, and then going backwards.)
Primary:
For a primary (during a view-change), the order of repairs is irrelevant because:

no one else is advancing their ops anyway,
and we need to repair these prepares to progress.

Backup:
(Background:

The WAL is an on-disk ring buffer.
A "slot" is message.header.op % journal_slot_count.
journal_slot_count is a cluster constant.)

But for a backup (which just joined a view), the oldest prepares will be overwritten by the primary (and other backups) earlier than the newest prepares.
Consider a backup's WAL (journal_slot_count = 8):
       slot  0  1  2  3  4  5  6  7
primary WAL  8  9 10 11 12 13  6  7
 backup WAL  0  1  2  3  4  5  _  _

In this example, the backup is lagging behind the primary — it is missing ops 6…13. It must repair to catch up.
But while it is repairing, the primary (and the rest of the cluster) are preparing even more ops (14, 15, ...).
The backup needs to repair op 6 as soon as possible since it is about to be overwritten (by op 14, because 14%8=6).
If the backup can't repair the prepare (already overwritten) it will have to resort to state transfer.
Tl;dr: To maximize the chances of repairing a prepare, repair prepares from oldest to newest.
(Aside: As a bonus, chronological repair enables better pipelining of repair + commit — we can commit op=X while repairing op=X+1).
2. Repair prepares back to op_repair_min().
(See op_repair_min()'s comment & code for details.)
At a high level, the idea is:

The backup needs to get caught up to the primary as soon as possible.

Repair any messages we need to progress.
And repair any messages we would need to recover if we crash before checkpointing.

The primary should repair more aggressively (i.e. further back):

The further back the primary can repair, the more it can help repair backups.
This decreases the likelihood that backups will need to resort to state transfer to catch up.

Primary:
For the primary, the reason this isn't as simple as op_repair_min = op_head -| (journal_slot_count - 1) is that op_head can venture ahead and then backtrack (by as much as pipeline_prepare_queue_max) when a view-change truncates uncommitted ops.
We also know that the "venture ahead" is bounded by the checkpoint trigger.
When a primary is starting a view & repairing, all committed ops greater-or-equal-to the primary's op_repair_min() are guaranteed to be available in someone's WAL (assuming ≤f/(2f+1) faults).
Pre-merge checklist
Performance:

[x] I am very sure this PR could not affect performance.

Note that although this PR allows primaries to repair farther back in the prepare history, lagging replicas cannot yet take advantage of this extra history to catch up. That will be in a follow-up PR which is not yet ready.


Redis Queue warnings

When I write the command php flarum queue: work redis on the screen, it gives errors.
PHP Warning:  fwrite(): SSL operation failed with code 1. OpenSSL Error messages:
error:1420C0CF:SSL routines:ssl_write_internal:protocol is shutdown in /var/www/sourceturk/flarum/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php on line 231

Warning: fwrite(): SSL operation failed with code 1. OpenSSL Error messages:
error:1420C0CF:SSL routines:ssl_write_internal:protocol is shutdown in /var/www/sourceturk/flarum/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php on line 231
PHP Warning:  fwrite(): SSL operation failed with code 1. OpenSSL Error messages:
error:1420C0CF:SSL routines:ssl_write_internal:protocol is shutdown in /var/www/sourceturk/flarum/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php on line 231

Warning: fwrite(): SSL operation failed with code 1. OpenSSL Error messages:
error:1420C0CF:SSL routines:ssl_write_internal:protocol is shutdown in /var/www/sourceturk/flarum/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php on line 231
PHP Warning:  fwrite(): SSL operation failed with code 1. OpenSSL Error messages:
error:1420C0CF:SSL routines:ssl_write_internal:protocol is shutdown in /var/www/sourceturk/flarum/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php on line 231

Warning: fwrite(): SSL operation failed with code 1. OpenSSL Error messages:
error:1420C0CF:SSL routines:ssl_write_internal:protocol is shutdown in /var/www/sourceturk/flarum/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php on line 231
PHP Warning:  fwrite(): SSL operation failed with code 1. OpenSSL Error messages:
error:1420C0CF:SSL routines:ssl_write_internal:protocol is shutdown in /var/www/sourceturk/flarum/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php on line 231

Warning: fwrite(): SSL operation failed with code 1. OpenSSL Error messages:
error:1420C0CF:SSL routines:ssl_write_internal:protocol is shutdown in /var/www/sourceturk/flarum/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php on line 231

extend.php
<?php

use Flarum\Extend;
use Flarum\Frontend\Document;

return [
	new Bokt\Redis\Extend\EnableRedisCache($redis = [
        'host' => '<IP_ADDRESS>',
        'password' => '............',
        'port' => 6379,
        'database' => 1,
    ]),
    new Bokt\Redis\Extend\EnableRedisQueue($redis),
    // Register extenders here to customize your forum!
    (new Extend\Frontend('forum'))
        ->content(function (Document $document) {
            $document->foot[] = <<<'JS'
<script type="text/javascript">
$(window).scroll(function(){
    // footer height in pixels
    const footerHeight = 100;

    // padding-bottom value for .App
    const paddingBottomApp = 50;

    var scrollBottom = $(document).height() - $(this).height() - $(this).scrollTop();

    if(footerHeight + paddingBottomApp - scrollBottom < 0) {
        $(".DiscussionPage-nav > ul").css("bottom", "auto");
    } else {
        $(".DiscussionPage-nav > ul").css("bottom", footerHeight + paddingBottomApp);
    }
});
</script>
JS;
    })
];

php flarum info
Flarum core 0.1.0-beta.13
PHP version: 7.4.7
Loaded extensions: Core, date, libxml, openssl, pcre, zlib, filter, hash, pcntl, Reflection, SPL, session, standard, sodium, mysqlnd, PDO, xml, calendar, ctype, curl, dom, mbstrin
g, FFI, fileinfo, ftp, gd, gettext, iconv, imap, json, exif, mysqli, pdo_mysql, Phar, posix, readline, shmop, SimpleXML, soap, sockets, sysvmsg, sysvsem, sysvshm, tokenizer, xmlre
ader, xmlrpc, xmlwriter, xsl, zip, Zend OPcache
+----------------------------------+-------------------+------------------------------------------+
| Flarum Extensions                |                   |                                          |
+----------------------------------+-------------------+------------------------------------------+
| ID                               | Version           | Commit                                   |
+----------------------------------+-------------------+------------------------------------------+
| flarum-approval                  | v0.1.0-beta.13    |                                          |
| flarum-flags                     | v0.1.0-beta.13    |                                          |
| flarum-likes                     | v0.1.0-beta.13    |                                          |
| flarum-lock                      | v0.1.0-beta.13    |                                          |
| flarum-markdown                  | v0.1.0-beta.13    |                                          |
| flarum-mentions                  | v0.1.0-beta.13    |                                          |
| flarum-sticky                    | v0.1.0-beta.13    |                                          |
| flarum-subscriptions             | v0.1.0-beta.13    |                                          |
| flarum-suspend                   | v0.1.0-beta.13    |                                          |
| flarum-tags                      | v0.1.0-beta.13    |                                          |
| flarum-emoji                     | v0.1.0-beta.13    |                                          |
| flarum-lang-english              | v0.1.0-beta.13    |                                          |
| fof-terms                        | 0.4.2             |                                          |
| fof-transliterator               | 0.2.0             |                                          |
| fof-pages                        | 0.4.0             |                                          |
| fof-user-directory               | 0.3.4             |                                          |
| fof-merge-discussions            | 0.3.3             |                                          |
| flagrow-ads                      | 0.2.4             |                                          |
| fof-best-answer                  | 0.1.10            |                                          |
| fof-links                        | 0.3.0             |                                          |
| fof-user-bio                     | 0.1.3             |                                          |
| v17development-seo               | 1.2.1             |                                          |
| fof-follow-tags                  | 0.3.4             |                                          |
| fof-socialprofile                | 0.1.2             |                                          |
| fof-subscribed                   | 0.2.3             |                                          |
| fof-formatting                   | 0.1.4             |                                          |
| flarum-auth-github               | v0.1.0-beta.13    |                                          |
| saleksin-auth-google             | v0.1.0-beta.8.0.3 |                                          |
| flarum-auth-facebook             | v0.1.0-beta.13    |                                          |
| fof-auth-discord                 | 0.1.3             |                                          |
| flarum-auth-twitter              | v0.1.0-beta.13    |                                          |
| fof-polls                        | 0.1.2             |                                          |
| fof-byobu                        | 0.5.6             |                                          |
| flagrow-analytics                | 0.8.0             |                                          |
| fof-geoip                        | 0.1.7             |                                          |
| flarum-bbcode                    | v0.1.0-beta.12    |                                          |
| fof-upload                       | 0.9.2             |                                          |
| flarum-pusher                    | v0.1.0-beta.13    |                                          |
| isaced-email-verification-switch | 0.1.3             |                                          |
| tolgaaaltas-turkish              | 0.13.8            |                                          |
| tolgaaaltas-lang-turkish         | 0.13.0            |                                          |
| fof-profile-image-crop           | 0.1.1             |                                          |
| flarum-statistics                | v0.1.0-beta.13    |                                          |
| clarkwinkelmann-circle-groups    | 0.2.1             |                                          |
| therealsujitk-gifs               | v1.4.8            |                                          |
| zerosonesfun-hashtags            | 2.0.2             |                                          |
| askvortsov-moderator-warnings    | v0.2.4            |                                          |
| fof-spamblock                    | 0.2.2             |                                          |
| fof-share-social                 | 0.1.2             |                                          |
| nomiscz-auth-steam               | v0.1.7            |                                          |
| the-turk-password-strength       | 0.1.3             |                                          |
| therealsujitk-show-password      | v1.0.3            |                                          |
| fof-nightmode                    | 0.4.0             |                                          |
| the-turk-diff                    | 1.0.8             |                                          |
| the-turk-extended-appearance     | 0.1.1             |                                          |
| askvortsov-categories            | v1.0.4            |                                          |
| askvortsov-copy-links            | v0.1.1            |                                          |
| fof-sitemap                      | 0.5.1             |                                          |
| fof-realtimedate                 | 0.1.2             |                                          |
| datitisev-backup                 | 0.2.1             |                                          |
| kilowhat-custom-paths            | 1.0.2             |                                          |
| fof-recaptcha                    | 0.1.2             |                                          |
| cenkkoroglu-tcno-dogrulama       | dev-master        | b08ed7a52779c6b4f2b0ec6e6da779e92883020c |
| michaelbelgium-discussion-views  | v4.0.0            |                                          |
| bokt-redis                       | 0.1.0             |                                          |
| fof-drafts                       | 0.1.11            |                                          |
+----------------------------------+-------------------+------------------------------------------+
Base URL: https://forum.sourceturk.net
Installation path: /var/www/sourceturk/flarum
Debug mode: off

The command is
php flarum queue:work
No need to add Redis. Even so your errors seem unrelated to this extension.. Can you try the above command and see whether this changes the error?

[2020-06-13 18:35:55][s3pT22u5D2yEiZg6ItXih3Yb5g1twxqN] Processing: Flarum\Notification\Job\SendEmailNotificationJob
PHP Warning:  fwrite(): SSL operation failed with code 1. OpenSSL Error messages:
error:1420C0CF:SSL routines:ssl_write_internal:protocol is shutdown in /var/www/sourceturk/flarum/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php on line 231

Warning: fwrite(): SSL operation failed with code 1. OpenSSL Error messages:
error:1420C0CF:SSL routines:ssl_write_internal:protocol is shutdown in /var/www/sourceturk/flarum/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php on line 231
PHP Warning:  fwrite(): SSL operation failed with code 1. OpenSSL Error messages:
error:1420C0CF:SSL routines:ssl_write_internal:protocol is shutdown in /var/www/sourceturk/flarum/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php on line 231

Warning: fwrite(): SSL operation failed with code 1. OpenSSL Error messages:
error:1420C0CF:SSL routines:ssl_write_internal:protocol is shutdown in /var/www/sourceturk/flarum/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php on line 231
PHP Warning:  fwrite(): SSL operation failed with code 1. OpenSSL Error messages:
error:1420C0CF:SSL routines:ssl_write_internal:protocol is shutdown in /var/www/sourceturk/flarum/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php on line 231

Warning: fwrite(): SSL operation failed with code 1. OpenSSL Error messages:
error:1420C0CF:SSL routines:ssl_write_internal:protocol is shutdown in /var/www/sourceturk/flarum/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php on line 231
PHP Warning:  fwrite(): SSL operation failed with code 1. OpenSSL Error messages:
error:1420C0CF:SSL routines:ssl_write_internal:protocol is shutdown in /var/www/sourceturk/flarum/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php on line 231

Warning: fwrite(): SSL operation failed with code 1. OpenSSL Error messages:
error:1420C0CF:SSL routines:ssl_write_internal:protocol is shutdown in /var/www/sourceturk/flarum/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php on line 231

The problem has been fixed. Reason mail settings.
After reboot, I set .sh file to keep queue open. .sh file:
cd /var/www/sourceturk/flarum
screen -dmS flarum php flarum queue:work

You should configure supervisor as explain in the docs/readme. Pushing it back like this is very unreliable.


[Feature request] Do not include stale label while getting stale issues

Hi,
We're discussing using stale bot in Node.js core repository in https://github.com/nodejs/node/issues/28798
While going through your code, I noticed that the function mark calls getStale for getting stale issues https://github.com/probot/stale/blob/e3c53ebf879cccaf856fba1602fdd67f878c3ee3/lib/stale.js#L42
The function getStale doesn't exclude already stale issues
https://github.com/probot/stale/blob/e3c53ebf879cccaf856fba1602fdd67f878c3ee3/lib/stale.js#L72-L73
The function markIssue marks stale issues as stale
https://github.com/probot/stale/blob/e3c53ebf879cccaf856fba1602fdd67f878c3ee3/lib/stale.js#L115-L136
Feature Requests:

Do not include staleLabel while searching for stale issues
Do not add staleLabel if already present while commenting on stale issues
Exclude comment activity from stale bot while unmarking updated issues https://github.com/probot/stale/blob/e3c53ebf879cccaf856fba1602fdd67f878c3ee3/index.js#L41-L43
While searching for closableItems in sweep, instead of searching for days since last activity of more than daysUntilClose, search for staleLabel marked for more than daysUntilClose https://github.com/probot/stale/blob/e3c53ebf879cccaf856fba1602fdd67f878c3ee3/lib/stale.js#L49-L63
Any other impact this change might have.

This will be helpful in projects where daysUntilClose > daysUntilStale
The stale bot will continue commenting every daysUntilStale of activity, and close issues after daysUntilClose
Regards,
Trivikram

Hi, any update on this request?

Hi, any update on this request?
It's pretty complex to implement, but will be helpful in projects where daysUntilClose > daysUntilStale

Any update on this request?

Any update on this?


Issues with Basic Auth

I'm trying to get basic auth set up and I have a few issues.  I'm not using the dispatch-docker project as I'm trying to deploy to kubernetes.

I've set DISPATCH_AUTHENTICATION_PROVIDER_SLUG=dispatch-auth-provider-basic, I was running into issues with the Vue app not redirecting to /login until I realized I had to set VUE_APP_DISPATCH_AUTHENTICATION_PROVIDER_SLUG at container build time, as well.  Even with this, /incidents/report fails to get Type and Priority because the JWT token is not sent to the API, even though it is present in local storage.  It seems the Authorization header isn't being set correctly or in all places?

When visiting /incidents/report with a valid token in local storage:
INFO:     <IP_ADDRESS>:58766 - "GET /api/v1/incident_priorities/?sortBy[]=view_order&descending[]=false HTTP/1.1" 500 Internal Server Error
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
    result = await app(self.scope, self.receive, self.send)
  File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
    return await self.app(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
    raise exc from None
  File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
    await response(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 197, in __call__
    async for chunk in self.body_iterator:
  File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
    task.result()
  File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
    raise exc from None
  File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
    await response(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 197, in __call__
    async for chunk in self.body_iterator:
  File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
    task.result()
  File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
    await response(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 197, in __call__
    async for chunk in self.body_iterator:
  File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
    task.result()
  File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
    raise exc from None
  File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
    await self.app(scope, receive, sender)
  File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 146, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
    raise exc from None
  File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
    raise exc from None
  File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
    await self.app(scope, receive, sender)
  File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
    response = await func(request)
  File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
    solved_result = await solve_dependencies(
  File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 520, in solve_dependencies
    solved = await run_in_threadpool(call, **sub_values)
  File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
    return await loop.run_in_executor(None, func, *args)
  File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
    return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
  File "pydantic/main.py", line 338, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
email
  none is not an allowed value (type=type_error.none.not_allowed)

visiting /incidents/report for the first time always redirects to /login

/login redirects to the dashboard on successful login instead of back to the report page, which would confuse users who are just there to report issues.

Is there a way to separate users who are able to access the dashboard vs users who are able to report incidents?

I've set DISPATCH_AUTHENTICATION_PROVIDER_SLUG=dispatch-auth-provider-basic, I was running into issues with the Vue app not redirecting to /login until I realized I had to set VUE_APP_DISPATCH_AUTHENTICATION_PROVIDER_SLUG at container build time, as well. Even with this, /incidents/report fails to get Type and Priority because the JWT token is not sent to the API, even though it is present in local storage. It seems the Authorization header isn't being set correctly or in all places?

I've haven't been able to reproduce locally and will take a look.

visiting /incidents/report for the first time always redirects to /login

I have been able to reproduce this and will take a look.

/login redirects to the dashboard on successful login instead of back to the report page, which would confuse users who are just there to report issues.

We used to have the default route be /incidents/report but at the end of the day we don't really know why a user is hitting the UI (if they don't specify a route). Internally we use a URL shortener to help with guide users (something like go/securityincident so folks don't even have to know the dispatch URL. If you'd like to make the default configurable we'd be willing to merge that PR.

Is there a way to separate users who are able to access the dashboard vs users who are able to report incidents?

Not today, Dispatch has a limited RBAC facilities that could be expanded but right now we allow folks mostly free-range (except when it comes to restricted incidents).

I added a console.log to the interceptor in api.js that looks like it should intercept fetch requests and add the auth header, but it never fired on the /incidents/report page (first load, get types, get priorities seem like they should all have it?). Dashboard routes did trigger the logging/interceptor.

Can you see if https://github.com/Netflix/dispatch/pull/371 fixes your redirect issue?

In order to get basic auth and before integrating the other plugin (Slack, Gsuite, Jira, etc) - Is it possible to have a running instance?

It is possible, yes, but you won't be able to create incidents as we don't have internal substitutes for all plugins yet. See #55
Some of the variables are interdependent, e.g. basic auth requires DISPATCH_JWT_SECRET but the other auth flows don't. If it helps we can try to break those up to make them clear. But server log will typically at least emit a warning stating if some interdependent configuration value is not set.

@mvilanova @kevgliss  - I got to a point that no matter what I do, even when starting from a fresh install I get this errors. Steps I did:

Clone the repo
Created .env and filled in all necessary details (GSuite, Slack and Jira)
Added DISPATCH_JWT_SECRET and VUE_APP_DISPATCH_AUTHENTICATION_PROVIDER_SLUG=dispatch-auth-provider-basic based on what the guys wrote
Ran ./install
Accessed <DISPATCH_ADDRESS/login and logged in successfully
Browse to <DISPATCH_ADDRESS/incidents/report and then got these errors.

web_1        | INFO:     DEDACTED:63373 - "GET /api/v1/plugins/?q=&page=1&itemsPerPage=10&sortBy[]=slug&descending[]=true HTTP/1.1" 500 Internal Server Error
web_1        | ERROR:    Exception in ASGI application
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
web_1        |     result = await app(self.scope, self.receive, self.send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
web_1        |     return await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 171, in __call__
web_1        |     await super().__call__(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
web_1        |     response = await func(request)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
web_1        |     solved_result = await solve_dependencies(
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 539, in solve_dependencies
web_1        |     solved = await run_in_threadpool(call, **sub_values)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
web_1        |     return await loop.run_in_executor(None, func, *args)
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
web_1        |     result = self.fn(*self.args, **self.kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
web_1        |     return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
web_1        |   File "pydantic/main.py", line 338, in pydantic.main.BaseModel.__init__
web_1        | pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
web_1        | email
web_1        |   none is not an allowed value (type=type_error.none.not_allowed)
web_1        | INFO:     <IP_ADDRESS>:63378 - "POST /api/v1/auth/login HTTP/1.1" 200 OK
web_1        | INFO:     <IP_ADDRESS>:63377 - "GET /api/v1/incident_priorities/ HTTP/1.1" 200 OK
web_1        | INFO:     <IP_ADDRESS>:63382 - "GET /api/v1/incidents/metric/forecast/all HTTP/1.1" 200 OK
web_1        | INFO:     <IP_ADDRESS>:63378 - "GET /api/v1/incident_types/?itemsPerPage=-1 HTTP/1.1" 200 OK
web_1        | INFO:     <IP_ADDRESS>:63383 - "GET /api/v1/incidents/?itemsPerPage=-1&sortBy[]=reported_at&descending[]=false&fields[]=reported_at&fields[]=reported_at&ops[]=%3E%3D&ops[]=%3C%3D&values[]=2019-12-28T22:00:00.000Z&values[]=2020-06-28T21:00:00.000Z HTTP/1.1" 200 OK
web_1        | INFO:     <IP_ADDRESS>:63383 - "GET /api/v1/plugins/?q=&page=1&itemsPerPage=10&sortBy[]=slug&descending[]=true HTTP/1.1" 200 OK
web_1        | INFO:     <IP_ADDRESS>:63383 - "GET /plugins HTTP/1.1" 200 OK
web_1        | INFO:     <IP_ADDRESS>:63383 - "GET /static/m.png HTTP/1.1" 200 OK
web_1        | INFO:     <IP_ADDRESS>:63386 - "GET /api/v1/plugins/?q=&page=1&itemsPerPage=10&sortBy[]=slug&descending[]=true HTTP/1.1" 500 Internal Server Error
web_1        | ERROR:    Exception in ASGI application
web_1        | Traceback (most recent call last):
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
web_1        |     result = await app(self.scope, self.receive, self.send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
web_1        |     return await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 22, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/sentry_asgi/middleware.py", line 19, in __call__
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__
web_1        |     await response(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 222, in __call__
web_1        |     await run_until_first_complete(
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in run_until_first_complete
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 18, in <listcomp>
web_1        |     [task.result() for task in done]
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/responses.py", line 214, in stream_response
web_1        |     async for chunk in self.body_iterator:
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 56, in body_stream
web_1        |     task.result()
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 38, in coro
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 376, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 171, in __call__
web_1        |     await super().__call__(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 102, in __call__
web_1        |     await self.middleware_stack(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
web_1        |     await self.app(scope, receive, _send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
web_1        |     raise exc from None
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
web_1        |     await self.app(scope, receive, sender)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 550, in __call__
web_1        |     await route.handle(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 227, in handle
web_1        |     await self.app(scope, receive, send)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 41, in app
web_1        |     response = await func(request)
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 186, in app
web_1        |     solved_result = await solve_dependencies(
web_1        |   File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 539, in solve_dependencies
web_1        |     solved = await run_in_threadpool(call, **sub_values)
web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/concurrency.py", line 34, in run_in_threadpool
web_1        |     return await loop.run_in_executor(None, func, *args)
web_1        |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
web_1        |     result = self.fn(*self.args, **self.kwargs)
web_1        |   File "/usr/local/lib/python3.8/site-packages/dispatch/auth/service.py", line 82, in get_current_user
web_1        |     return get_or_create(db_session=db_session, user_in=UserRegister(email=user_email))
web_1        |   File "pydantic/main.py", line 338, in pydantic.main.BaseModel.__init__
web_1        | pydantic.error_wrappers.ValidationError: 1 validation error for UserRegister
web_1        | email
web_1        |   none is not an allowed value (type=type_error.none.not_allowed)

web_1        |   File "/usr/local/lib/python3.8/site-packages/starlette/middleware/base.py", line 26, in __call__

Try setting:
DISPATCH_AUTHENTICATION_PROVIDER_SLUG=dispatch-auth-provider-basic
instead of:
VUE_APP_DISPATCH_AUTHENTICATION_PROVIDER_SLUG=dispatch-auth-provider-basic.
You don't actually need to set the VUE_APP_ as they just need to match:
https://github.com/Netflix/dispatch/blob/develop/src/dispatch/config.py#L79
Was there some documentation that made you think it needed to be set? If so, we should make that clearer.

Try setting:
DISPATCH_AUTHENTICATION_PROVIDER_SLUG=dispatch-auth-provider-basic
instead of:
VUE_APP_DISPATCH_AUTHENTICATION_PROVIDER_SLUG=dispatch-auth-provider-basic.
You don't actually need to set the VUE_APP_ as they just need to match:
https://github.com/Netflix/dispatch/blob/develop/src/dispatch/config.py#L79
Was there some documentation that made you think it needed to be set? If so, we should make that clearer.

Thanks @kevgliss. I tried it and result is the same.
When I'm logging in, I can see the dashboards filled with data (on homepage), but then after refresh it seems empty (like I was logged out) and then I get this error.

Okay, that helps, let me see if I can repo locally.

@nitzango check that you're correctly sending the CORS headers to the Vue app. I encountered the same error as you and determined that the server wasn't sending the CORS headers I had configured with the CORSMiddleware. This was because the frontend code wasn't sending an Origin header with it's requests. By running the Vue app in one process with npm run serve and dispatch in another and accessing the Vue app in the browser solved the issue.

@kevgliss I see this issue is closed. I am also encountering the same issue as @nitzango. What is the resolution ?

@santhoshparepu a few things have changed since this was first reported, please open a new issue and we can debug there.

Thanks @kevgliss, I have opened https://github.com/Netflix/dispatch/issues/584.


Console gem is used but not in the gemspec

The console gem is required here but the gem isn't in the gemspec.

That is a good point.
I'd be okay to add it.
However, not everyone who pulls in the traces gem will want to use it or have a specific backend in mind. I think in this case, it's mostly for convenience, but perhaps we should move this to traces-backend-console as a separate gem.

You are correct. I have decided to change that to use Kernel#warn instead, so the console gem is no longer a required dependency. In addition, I changed console gem to intercept Kernel#warn: https://github.com/socketry/console/commit/643dd0ffcc1bc916fc351f5477332038cc066b72
Thanks for your report.


make getImportModuleSpecifierEndingPreference default to .js

Why?

This is what NodeJS docs has to say about extension:

Mandatory file extensions #
A file extension must be provided when using the import keyword to resolve relative or absolute specifiers. Directory indexes (e.g. './startup/index.js') must also be fully specified.
This behavior matches how import behaves in browser environments, assuming a typically configured server.
A file extension must be provided when using the import keyword to resolve relative or absolute specifiers. Directory indexes (e.g. './startup/index.js') must also be fully specified.
This behavior matches how import behaves in browser environments, assuming a typically configured server.

In summary if you decide to build something as ESM, then you can't and should not be using extension-less paths
It can't simply just guess what you meant to import if it where a remote http import...

it dose not hurt if cjs uses explicit path as well... in fact it's slightly faster to resolve the paths rather than having to scan the folder to find any match within a application that loads lots of dependencies and having to resolve 5000+ files that it has to lookup by 2nd guessing what require('./foo') meant: is it a file? is it a folder? is it a json? # #

LOAD_AS_FILE(X)
1. If X is a file, load X as its file extension format. STOP
2. If X.js is a file, load X.js as JavaScript text. STOP
3. If X.json is a file, parse X.json to a JavaScript Object. STOP
4. If X.node is a file, load X.node as binary addon. STOP

LOAD_INDEX(X)
1. If X/index.js is a file, load X/index.js as JavaScript text. STOP
2. If X/index.json is a file, parse X/index.json to a JavaScript object. STOP
3. If X/index.node is a file, load X/index.node as binary addon. STOP

All this stat-ing the fs from looking up the correct paths adds a slightly unnecessary delay that can totally be avoided if you simply just add a .js at the end

Using explicit paths also means it will be easier to refactor to ESM at some point later in the feature if you ever decide to switch to ESM that demands that you use explicit path.

Even if you use something like ESM syntax with explicit path and using webpack/babel or whatever to bundle your package then you should also be using explicit path. there are folks who just wish to simply load the original files that arn't bundled cuz the bundle is not that well splited / lazy loaded and you don't want to import the hole application.

In fact it can be quite easy to simply just remove the bundler all togheter when you decide that you no longer need a bundler anymore and solo rely on built in features. node-fetch is one such example where they stop using babel and no longer wanted to bundle files anymore. if you have used explicit path then the refactor would have been a loot smoother.

https://youtu.be/M3BM9TB-8yA?t=836 (10 things ryan dahl regrets)

all this extension less paths only makes it tuffer for others who wishes to build some form of build tool (in other languages) that now also needs to follows now node's considerable bad anti-patern for resolving extension-less files

think you should be removing this options from vscode that promote bad practices for other developers and set a better example for how to write better code:
		case 'minimal': return 'minimal';
		case 'index': return 'index';


Wrong parsing result with decimals like 1.8

Get Value of '1.8' instead of '18'
Sample:
#37=VECTOR($,#118,1.8);

Could you add a unit test to ensure this doesn't regress?  I did something similar in my Dxf library where I explicitly try to parse a double in a culture that uses a comma as a decimal separator ("de-DE").  See this for an example.

Also, could you update the int.Parse() on the line below, too?

I'll do that, but it will take a few days until I find enough time.

Merged in 3c7085b5230957f6b2123ff8e614be133ef98394.


Suggestion for sidre::IOManager API

I noticed some inconsistency in the API of the sidre::IOManager class, that may be confusing to some users:

sidre::IOManager::write() accepts a string corresponding to the base file name with no extension.

sidre::IOManager::read(), however, expects the root file, which is <basefile>.root

Could both write() and read() take the same string argument, e.g., either just the base filename with no extension? or the root file?
This seems more intuitive and could enhance usability aspects of this class in application codes.

I think it is that way because sidre::IOManager::write("foo") writes out several files -- including foo.root and the actual data files into a subdirectory named "foo".  The extensions for the data files are based on the sidre_protocol.
When reading in files, sidre::IOManager::read("foo.root") only directly reads the root file foo.root file which lists the names of the data files (more specifically, the pattern for the data files).
Rather than changing the current behavior, perhaps sidre::IOManager::write()  could be a bit more forgiving and peel off a trailing .root if it is present in the input?

Rather than changing the current behavior, perhaps sidre::IOManager::write() could be a bit more forgiving and peel off a trailing .root if it is present in the input?

Yup, that works for me.