Tesla Client timeout and and current mismatch errors

Describe the bug
Recently updated Tesla to 2024.14.9 version and EVCC is having errors not sure if related but updated last night and this morning having issues.
1st issue: I can see the vehicle status but cannot control charging. Vehicle is charging at 17A per Tesla app.
I get a charger logic error: current mismatch error and http: request canceled (Client.Timeout exceeded while awaiting headers)
Steps to reproduce

update Tesla
2.Try to control charging

...
Configuration details
# open evcc at http://evcc.local:7070
network:
  schema: http
  host: evcc.local # .local suffix announces the hostname on MDNS
  port: 7070

log: trace

# unique installation id
plant: 5e866f7fa74360b3e83390f7677cc63bcaa6a0e5542a0cdccffec90af47b531c

interval: 10s # control cycle interval

sponsortoken: *Removed*

meters:
- type: template
  template: enphase
  usage: grid
  host: <IP_ADDRESS>
  token: *removed*
  name: grid1
- type: template
  template: enphase
  usage: pv
  host: <IP_ADDRESS>
  token: *removed*
  name: pv2

chargers:
- type: template
  template: twc3
  host: <IP_ADDRESS>
  name: TWC

vehicles:
- name: Infinus
  type: template
  template: tesla
  accessToken: *removed*
  refreshToken: *removed*
  vin: 5YJ3E1EC6MF849726
  capacity: 74 # kWh
  control: true

loadpoints:
- title: Home
  charger: TWC
  vehicle: Infinus
  mode: pv

tariffs:
  currency: USD
  grid:
    # static grid price summer
    type: fixed
    price: 0.0925875 # [currency]/kWh
    zones:
      - days: Mo-Fr
        hours: 16-19
        price: 0.25797 # USD/kWh
      - days: Sa,So
        price: 0.0925875 # USD/kWh
    # Static grid price winter:
#    type: fixed
#    price: 0.0926325 # [currency]/kWh
#    zones:
#      - days: Mo-Fr
#        hours: 10-15
#        price: 0.0262125 # USD/kWh
#        hours: 16-19
#        price: 0.2440725 # USD/kWh
#      - days: Sa,So
#        price: 0.0926325 # USD/kWh

  feedin:
    # rate for feeding excess (pv) energy to the grid
    type: fixed
    price: 0.0 # [currency]/kWh

site:
  title: Home
  meters:
    grid: grid1
    pv:
    - pv2

Log details
`[twc3 ] TRACE 2024/06/07 11:49:38 GET http://<IP_ADDRESS>/api/1/vitals
[twc3 ] TRACE 2024/06/07 11:49:38 {"contactor_closed":true,"vehicle_connected":true,"session_s":1892,"grid_v":238.3,"grid_hz":59.945,"vehicle_current_a":17.3,"currentA_a":7.9,"currentB_a":9.4,"currentC_a":9.4,"currentN_a":7.8,"voltageA_v":241.2,"voltageB_v":240.8,"voltageC_v":118.6,"relay_coil_v":6.2,"pcba_temp_c":54.0,"handle_temp_c":42.6,"mcu_temp_c":53.4,"uptime_s":711406,"input_thermopile_uv":-1149,"prox_v":1.5,"pilot_high_v":-0.0,"pilot_low_v":4.6,"session_energy_wh":2148.400,"config_status":5,"evse_state":11,"current_alerts":[],"evse_not_ready_reasons":[1]}
[lp-1 ] DEBUG 2024/06/07 11:49:38 charge voltages: [241 0 0]V
[lp-1 ] DEBUG 2024/06/07 11:49:38 detected connected phases: 1p
[lp-1 ] DEBUG 2024/06/07 11:49:38 detected active phases: 1p
[lp-1 ] DEBUG 2024/06/07 11:49:38 !! session: chargeRater.chargedEnergy=2.1 - chargedAtStartup=0.0
[lp-1 ] DEBUG 2024/06/07 11:49:38 charger status: C
[lp-1 ] DEBUG 2024/06/07 11:49:38 soc estimated: 60.12% (vehicle: 60.00%)
[lp-1 ] DEBUG 2024/06/07 11:49:38 vehicle soc: 60%
[lp-1 ] DEBUG 2024/06/07 11:49:38 vehicle soc limit: 90%
[lp-1 ] DEBUG 2024/06/07 11:49:38 vehicle range: 260km
[lp-1 ] WARN 2024/06/07 11:49:38 charger logic error: current mismatch (got 14A, expected 17A)
[lp-1 ] DEBUG 2024/06/07 11:49:38 pv charge current: 11.6A = 14A + -2.42A (557W @ 1p)
[tesla ] TRACE 2024/06/07 11:49:38 POST https://tesla.evcc.io/api/1/vehicles/5YJ3E1EC6MF849726/command/set_charging_amps
[tesla ] TRACE 2024/06/07 11:49:48 {"charging_amps": 11}
[lp-1 ] ERROR 2024/06/07 11:49:48 max charge current 11A: Post "https://tesla.evcc.io/api/1/vehicles/5YJ3E1EC6MF849726/command/set_charging_amps": net/http: request canceled (Client.Timeout exceeded while awaiting headers)`

Tesla Trace:

`[tesla ] TRACE 2024/06/07 11:48:12 POST https://tesla.evcc.io/api/1/vehicles/5YJ3E1EC6MF849726/command/set_charging_amps
[tesla ] TRACE 2024/06/07 11:48:22 {"charging_amps": 6}
[tesla ] TRACE 2024/06/07 11:48:25 POST https://tesla.evcc.io/api/1/vehicles/5YJ3E1EC6MF849726/command/set_charging_amps
[tesla ] TRACE 2024/06/07 11:48:35 {"charging_amps": 5}
[tesla ] TRACE 2024/06/07 11:48:38 GET https://fleet-api.prd.na.vn.cloud.tesla.com/api/1/vehicles/5YJ3E1EC6MF849726/vehicle_data
[tesla ] TRACE 2024/06/07 11:48:38 {"response":{"id":1493095239254069,"user_id":1761349,"vehicle_id":164144749364,"vin":"5YJ3E1EC6MF849726","color":null,"access_type":"OWNER","granular_access":{"hide_private":false},"tokens":["6e5293892ef311ff","0162d4c292ea8bed"],"state":"online","in_service":false,"id_s":"1493095239254069","calendar_enabled":true,"api_version":76,"backseat_token":null,"backseat_token_updated_at":null,"ble_autopair_enrolled":false,"charge_state":{"battery_heater_on":false,"battery_level":60,"battery_range":161.73,"charge_amps":17,"charge_current_request":17,"charge_current_request_max":48,"charge_enable_request":true,"charge_energy_added":2.01,"charge_limit_soc":90,"charge_limit_soc_max":100,"charge_limit_soc_min":50,"charge_limit_soc_std":80,"charge_miles_added_ideal":8.0,"charge_miles_added_rated":8.0,"charge_port_cold_weather_mode":false,"charge_port_color":"\u003cinvalid\u003e","charge_port_door_open":true,"charge_port_latch":"Engaged","charge_rate":14.9,"charger_actual_current":17,"charger_phases":1,"charger_pilot_current":48,"charger_power":4,"charger_voltage":241,"charging_state":"Charging","conn_charge_cable":"SAE","est_battery_range":160.53,"fast_charger_brand":"\u003cinvalid\u003e","fast_charger_present":false,"fast_charger_type":"ACSingleWireCAN","ideal_battery_range":161.73,"max_range_charge_counter":0,"minutes_to_full_charge":305,"not_enough_power_to_heat":null,"off_peak_charging_enabled":false,"off_peak_charging_times":"all_week","off_peak_hours_end_time":360,"preconditioning_enabled":false,"preconditioning_times":"all_week","scheduled_charging_mode":"Off","scheduled_charging_pending":false,"scheduled_charging_start_time":null,"scheduled_charging_start_time_app":0,"scheduled_departure_time":1697457600,"scheduled_departure_time_minutes":300,"supercharger_session_trip_planner":false,"time_to_full_charge":5.08,"timestamp":1717786118531,"trip_charging":false,"usable_battery_level":60,"user_charge_enable_request":null},"climate_state":{"allow_cabin_overheat_protection":true,"auto_seat_climate_left":false,"auto_seat_climate_right":false,"battery_heater":false,"battery_heater_no_power":null,"cabin_overheat_protection":"FanOnly","cabin_overheat_protection_actively_cooling":false,"climate_keeper_mode":"off","cop_activation_temperature":"High","defrost_mode":0,"driver_temp_setting":15.0,"fan_status":0,"hvac_auto_request":"On","inside_temp":36.9,"is_auto_conditioning_on":false,"is_climate_on":false,"is_front_defroster_on":false,"is_preconditioning":false,"is_rear_defroster_on":false,"left_temp_direction":0,"max_avail_temp":28.0,"min_avail_temp":15.0,"outside_temp":39.5,"passenger_temp_setting":15.0,"remote_heater_control_enabled":false,"right_temp_direction":0,"seat_heater_left":0,"seat_heater_rear_center":0,"seat_heater_rear_left":0,"seat_heater_rear_right":0,"seat_heater_right":0,"side_mirror_heaters":false,"supports_fan_only_cabin_overheat_protection":true,"timestamp":1717786118531,"wiper_blade_heater":false},"drive_state":{"power":-4,"shift_state":null,"speed":null,"timestamp":1717786118531},"gui_settings":{"gui_24_hour_time":false,"gui_charge_rate_units":"kW","gui_distance_units":"mi/hr","gui_range_display":"Rated","gui_temperature_units":"F","gui_tirepressure_units":"Psi","show_range_units":false,"timestamp":1717786118531},"parked_accessory":{"aux_park_lamps":"NaPremium","badge_version":0,"can_accept_navigation_requests":true,"can_actuate_trunks":true,"car_special_type":"base","car_type":"model3","charge_port_type":"US","cop_user_set_temp_supported":true,"dashcam_clip_save_supported":true,"default_charge_to_max":false,"driver_assist":"TeslaAP3","ece_restrictions":false,"efficiency_package":"M32021","eu_vehicle":false,"exterior_color":"PearlWhite","exterior_trim":"Black","exterior_trim_override":"","has_air_suspension":false,"has_ludicrous_mode":false,"has_seat_cooling":false,"headlamp_type":"Premium","interior_trim_type":"White2","key_version":2,"motorized_charge_port":true,"paint_color_override":"253,255,231,0.7,0.04","performance_package":"Performance","plg":true,"pws":true,"rear_drive_unit":"PM216MOSFET","rear_seat_heaters":1,"rear_seat_type":0,"rhd":false,"roof_color":"RoofColorGlass","seat_type":null,"sentry_preview_supported":true,"spoiler_type":"Passive","sun_roof_installed":null,"supports_qr_pairing":false,"third_row_seats":"None","timestamp":1717786118532,"trim_badging":"p74d","use_range_badging":true,"utc_offset":-25200,"webcam_selfie_supported":true,"webcam_supported":true,"wheel_type":"UberTurbine20Gunpowder"},"vehicle_config":{"aux_park_lamps":"NaPremium","badge_version":0,"can_accept_navigation_requests":true,"can_actuate_trunks":true,"car_special_type":"base","car_type":"model3","charge_port_type":"US","cop_user_set_temp_supported":true,"dashcam_clip_save_supported":true,"default_charge_to_max":false,"driver_assist":"TeslaAP3","ece_restrictions":false,"efficiency_package":"M32021","eu_vehicle":false,"exterior_color":"PearlWhite","exterior_trim":"Black","exterior_trim_override":"","has_air_suspension":false,"has_ludicrous_mode":false,"has_seat_cooling":false,"headlamp_type":"Premium","interior_trim_type":"White2","key_version":2,"motorized_charge_port":true,"paint_color_override":"253,255,231,0.7,0.04","performance_package":"Performance","plg":true,"pws":true,"rear_drive_unit":"PM216MOSFET","rear_seat_heaters":1,"rear_seat_type":0,"rhd":false,"roof_color":"RoofColorGlass","seat_type":null,"sentry_preview_supported":true,"spoiler_type":"Passive","sun_roof_installed":null,"supports_qr_pairing":false,"third_row_seats":"None","timestamp":1717786118532,"trim_badging":"p74d","use_range_badging":true,"utc_offset":-25200,"webcam_selfie_supported":true,"webcam_supported":true,"wheel_type":"UberTurbine20Gunpowder"},"vehicle_state":{"api_version":76,"autopark_state_v3":"unavailable","calendar_supported":true,"car_version":"2024.14.9 0b82f700aebe","center_display_state":0,"dashcam_clip_save_available":true,"dashcam_state":"Recording","df":0,"dr":0,"fd_window":0,"feature_bitmask":"fbdffbff,24cbc7f","fp_window":0,"ft":0,"homelink_device_count":3,"homelink_nearby":true,"is_user_present":false,"locked":false,"media_info":{"audio_volume":0.0,"audio_volume_increment":0.333333,"audio_volume_max":10.333333,"media_playback_status":"Playing","now_playing_album":"","now_playing_artist":"","now_playing_duration":232000,"now_playing_elapsed":61000,"now_playing_source":"AppleMusic","now_playing_station":"","now_playing_title":""},"media_state":{"remote_control_enabled":true},"notifications_supported":true,"odometer":53839.512942,"parsed_calendar_supported":true,"pf":0,"pr":0,"rd_window":0,"remote_start":false,"remote_start_enabled":true,"remote_start_supported":true,"rp_window":0,"rt":0,"santa_mode":0,"sentry_mode":false,"sentry_mode_available":true,"service_mode":false,"service_mode_plus":false,"software_update":{"download_perc":0,"expected_duration_sec":2700,"install_perc":1,"status":"","version":" "},"speed_limit_mode":{"active":false,"current_limit_mph":50.0,"max_limit_mph":120,"min_limit_mph":50.0,"pin_code_set":true},"timestamp":1717786118531,"tpms_hard_warning_fl":false,"tpms_hard_warning_fr":false,"tpms_hard_warning_rl":false,"tpms_hard_warning_rr":false,"tpms_last_seen_pressure_time_fl":1717752768,"tpms_last_seen_pressure_time_fr":1717752739,"tpms_last_seen_pressure_time_rl":1717752739,"tpms_last_seen_pressure_time_rr":1717752738,"tpms_pressure_fl":3.0,"tpms_pressure_fr":3.25,"tpms_pressure_rl":2.975,"tpms_pressure_rr":2.85,"tpms_rcp_front_value":2.9,"tpms_rcp_rear_value":2.9,"tpms_soft_warning_fl":false,"tpms_soft_warning_fr":false,"tpms_soft_warning_rl":false,"tpms_soft_warning_rr":false,"valet_mode":false,"valet_pin_needed":false,"vehicle_name":"Infinus","vehicle_self_test_progress":0,"vehicle_self_test_requested":false,"webcam_available":true}}}
[tesla ] TRACE 2024/06/07 11:48:38 POST https://tesla.evcc.io/api/1/vehicles/5YJ3E1EC6MF849726/command/set_charging_amps
[tesla ] TRACE 2024/06/07 11:48:48 {"charging_amps": 13}`

What type of operating system are you running?
Docker container
Version
0.126.6

Siehe https://github.com/evcc-io/evcc/issues/14226

I do not see error 429 Too Many Requests in any of my logs so I'm not sure if it is related.

Had the same issue and short after that I got 429 too many requests. It must be related.

You are right maybe an hour or two after this started I got the 429 also.


Issue with Prepared Statements keep growing

I'm not sure if this is related to issue #80 but this problem exists on the latest 0.3.3 myxql
But there seems to be 2 issues here related to custom queries

If I send a query that fails a foreign key constraint, the query gets prepared. And if i repeat the same query, it gets prepared again. So the connection keeps alot of copies of the same prepared statements and eventually fills up the maximum prepared statements allowed by mysql

Repo.query("INSERT INTO profile_view(viewer_id, viewed_id) VALUES (?, ?)", [1, 1])
{:error,
 %MyXQL.Error{
   connection_id: 11,
   message: "(1452) (ER_NO_REFERENCED_ROW_2) Cannot add or update a child row: a foreign key constraint fails (`db`.`profile_view`, CONSTRAINT `FK_4835241A192BCF11` FOREIGN KEY (`viewed_id`) REFERENCES `user_abstract` (`id`))",
   mysql: %{code: 1452, name: :ER_NO_REFERENCED_ROW_2},
   statement: "INSERT INTO profile_view(viewer_id, viewed_id, created) VALUES (?, ?, now())"
 }}

select STATEMENT_ID, SQL_TEXT from prepared_statements_instances;
+--------------+------------------------------------------------------------------------------+
| STATEMENT_ID | SQL_TEXT                                                                     |
+--------------+------------------------------------------------------------------------------+
|            3 | INSERT INTO profile_view(viewer_id, viewed_id, created) VALUES (?, ?, now()) |
|            4 | INSERT INTO profile_view(viewer_id, viewed_id, created) VALUES (?, ?, now()) |
|            5 | INSERT INTO profile_view(viewer_id, viewed_id, created) VALUES (?, ?, now()) |
|            6 | INSERT INTO profile_view(viewer_id, viewed_id, created) VALUES (?, ?, now()) |
|            7 | INSERT INTO profile_view(viewer_id, viewed_id, created) VALUES (?, ?, now()) |
+--------------+------------------------------------------------------------------------------+

Second issue is the if the query succeeds on the other hand, the query doesn't get prepared at all.

Repo.query("INSERT INTO profile_view(viewer_id, viewed_id, created) VALUES (?, ?, now())", [3250, 1192152])
{:ok,
 %MyXQL.Result{
   columns: nil,
   connection_id: 12,
   last_insert_id: 43775,
   num_rows: 1,
   num_warnings: 0,
   rows: nil
 }}

Checking the prepared_statements_instances, nothing appears

2 happens because we close the prepared statement after the query. 1 is definitely a bug though.

2 happens because we close the prepared statement after the query. 1 is definitely a bug though.

Hmmm why prepare it in the first place if you're just gonna close it afterwards? Why not send the query straight as text or maintain the prepared statement? Wouldn't  that be counter performance to do itnlike that? @josevalim

Prepared statements use the binary protocol which is much more efficient than the text one, so even if we do multiple hops it tends to be faster especially as size of response grows. You could opt out of that by setting query_type: :text option on MyXQL.query call.

On 18 Mar 2020, at 01:16, Byron Wang<EMAIL_ADDRESS>wrote:

Hmmm why prepare it in the first place if you're just gonna close it afterwards? Why not send the query straight as text or maintain the prepared statement? Wouldn't that be counter performance to do itnlike that? @josevalim
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub, or unsubscribe.

alright understood. but is there a way for us to prepare the statement manually?

Yes, with MyXQL.prepare.

On 18 Mar 2020, at 01:26, Byron Wang<EMAIL_ADDRESS>wrote:

alright understood. but is there a way for us to prepare the statement manually?
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub, or unsubscribe.

cool thanks!

just fyi for others who are also looking into this, i looked into the lib more...we just need to add the cache_statement: "name" opt in the query() function. so no need to manually execute MyXQL.prepare

@josevalim please reopen this. it seems it still exists. not on manual query() but rather via ecto insert_all. If the query fails for reasons like foreign key constraints, the prepare statement will keep growing.
e.g.
** (MyXQL.Error) (1452) (ER_NO_REFERENCED_ROW_2) Cannot add or update a child row: a foreign key constraint fails (`goodwall`.`profile_view`, CONSTRAIN
T `FK_4835241A192BCF11` FOREIGN KEY (`viewed_id`) REFERENCES `user_abstract` (`id`))

ran it multiple times and this is what i got
*************************** 3. row ***************************
SQL_TEXT: INSERT INTO `profile_view` (`created`,`viewed_id`,`viewer_id`) VALUES (?,?,?),(?,?,?),(?,?,?)
*************************** 4. row ***************************
SQL_TEXT: INSERT INTO `profile_view` (`created`,`viewed_id`,`viewer_id`) VALUES (?,?,?),(?,?,?),(?,?,?)
*************************** 5. row ***************************
SQL_TEXT: INSERT INTO `profile_view` (`created`,`viewed_id`,`viewer_id`) VALUES (?,?,?),(?,?,?),(?,?,?)
*************************** 6. row ***************************
SQL_TEXT: INSERT INTO `profile_view` (`created`,`viewed_id`,`viewer_id`) VALUES (?,?,?),(?,?,?),(?,?,?)

And on the side of that, is there a way to issue an INSERT IGNORE here?

sorry will investigate further. not the reason but there's a leak somewhere else

fixed on latest release 0.4.0


fix: use  response._bodyInit as fallback for react-native and qq

🔗 Linked issue
Fixes #324
❓ Type of change

[ ] 📖 Documentation (updates to the documentation, readme, or JSdoc annotations)
[x] 🐞 Bug fix (a non-breaking change that fixes an issue)
[ ] 👌 Enhancement (improving an existing functionality like performance)
[ ] ✨ New feature (a non-breaking change that adds functionality)
[ ] 🧹 Chore (updates to the build process or auxiliary tools and libraries)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description
This pr is essentially a one line change to add react native support. It checks response._bodyInit in addition to response.body to see if a body exists in the response.
Normally I would say that this is an upstream issue that react native should fix, but the reality is fetch has not been spec compliant in react native for a long time, and it doesn't seem like there has been any meaningful progress in that department either. So I don't think it's practical to wait on them.
I would also argue that even though this is a runtime specific check it shouldn't add any overhead for maintainers because its such a small change. I've also included comments explaining what the additional _bodyInit check is for and under what conditions it can be removed.
Additionally this repo does have a precedent for runtime specific check. In ./src/fetch.ts line 84, there is a check for a chromium specific API. So this change would be in line with that.
https://github.com/unjs/ofetch/blob/f7f946395544f3ab39fd2e5c61110b5371d7e9dd/src/fetch.ts#L84
In all I think this is a worthwhile change as it would let users use the same fetch library across, node, browsers, and react native.
📝 Checklist

[x] I have linked an issue or discussion.
[ ] I have updated the documentation accordingly.

@pi0 so I just checked with React Native running on my android phone
When responseType is set to "stream" the _bodyInit is an instance of Blob. However it doesn't implement any of the methods specified in the Web standard such as _bodyInit.stream() or _bodyInit.text(). It only implements the following interface:
interface Blob {
  readonly size: number;
  readonly type: string;
  slice(start?: number, end?: number, contentType?: string): Blob;
}

So none of the standard methods are present. As far as I can tell there's no way to get the actual data out of it.

Additionally logging the _bodyInit to the console outputs the following:
{"_data": {"__collector": {}, "blobId": "244dfb46-0c73-45f8-99be-cfd8b2bb971f", "offset": 0, "size": 1256}}

When normally logging a Blob would look like this:
Blob { size: 11, type: '' }

I see, basically seems stream mode is broken.
Although now other types (text/json) work right?

Yes I had no problem getting text and json to work


Include 'template' to possible FacebookAttachment types

A attachment may have one of the following types: "image", "audio", "video", "file" or "template", as defined here: https://developers.facebook.com/docs/messenger-platform/reference/send-api/#attachment

Thank you!


Feature: Test Failure Hook

Are you requesting a feature or reporting a bug?
Feature
What is the current behavior?
None (that I'm aware of)
What is the requested behavior?
A hook which executes only on a test failure which provides some data detailing the failure (could potentially pass through the internal model).
I think it should execute on all failures (e.g. still execute on failures in quarantine mode).
Why
I'd like to be able to set up a some custom logging and notifications on test failures. For my team, often the failures are the result of a systems integration failure, but we require some logging to join associate the error logs on the system integration level.

Hi @justrhysism,
According to your description, a custom reporter can be used to accomplish this task. You can use it as an additional reporter in your test run. Here is an example of what this reporter might look like:
module.exports = function CustomReporter () {
    return {
        async reportTaskStart (startTime, userAgents, testCount) {},

        async reportFixtureStart (name, path, meta) {
            this.currentFixture = { name, path, meta };
        },

        async reportTestDone (name, testRunInfo, meta) {
            const {
                      path: fixturePath,
                      name: fixtureName,
                      meta: fixtureMeta,
                  } = this.currentFixture;

            const errors      = testRunInfo.errs;
            const warnings    = testRunInfo.warnings;
            const quarantine  = testRunInfo.quarantine;
            const browsers    = testRunInfo.browsers;
            const reportData  = testRunInfo.reportData;
            const hasErrors   = !!errors.length;
            const hasWarnings = !!warnings.length;
            const result      = hasErrors ? `failed` : `passed`;

            if (hasErrors) {
                errors.forEach(error => {
                    const formattedError = this.formatError(error);

                    //Do something
                });
            }

            if (hasWarnings) {
                warnings.forEach(warning => {
                    // Do something
                });
            }

            if (quarantine) {
                for (const browser of browsers) {
                    const { quarantineAttemptsTestRunIds, name } = browser;
                    const attempts                               = quarantineAttemptsTestRunIds.map(id => quarantine[id]);

                    for (const attempt of attempts) {
                        const { passed, errors } = attempt;
                        const formattedErrors    = errors.map(err => this.formatError(err));
                        // Do something
                    }
                }
            }
        },

        async reportTaskDone () {},
    };
};

// .testcaferc.js
const customReporter = require('./custom-reporter.js');

module.exports = {
    reporter: ['spec', customReporter],
};

If this approach is not suitable for you, feel free to reopen this issue and share more details about your usage scenario:
What kind of information do you want to receive in this hook?
What kind of logic are you planning to execute inside this hook?
You can also share any other details you think might be helpful.


Intended Dataflow for Mutations using GRDBQuery

In the demo project, the Player model is edited via transform in the updateScore function. For a more involved situation, say - we wanted to edit Player's name, I'm trying to grasp the relationship between Query and mutations. I have it working in the demo app with this refactor to PlayerFormView:
struct PlayerFormView: View {
    @Environment(\.dbQueue) var dbQueue

    @State private var player: Player = Player.placeholder

    init(player:Player) {
        _player = State(initialValue: player)
    }

    var body: some View {
        VStack {
            TextEditor(text: $player.name)
            Stepper(
                "Score: \(player.score)",
                onIncrement: { player.score += 10 },
                onDecrement: { player.score = max(0, player.score - 10) })
            Spacer()
        }
        .onChange(of: player) { newValue in
            update()
        }
    }

    private func update() {
        do {
            _ = try dbQueue.write { db in
                try player.save(db)
            }
        } catch PersistenceError.recordNotFound {
            // Oops, player does not exist.
            // Ignore this error: `PlayerPresenceView` will dismiss.
            //
            // You can comment out this specific handling of
            // `PersistenceError.recordNotFound`, run the preview, change the
            // score, and see what happens.
        } catch {
            fatalError("\(error)")
        }
    }
}

The changes are basically swapping var player: Player for a @State version and calling save instead of updateChanges. This is driven by making Player conform to Equatable and then leveraging onChange to know when to save. Two questions:

Does this seem reasonable? Or is there are better suited way to architect this kind of mutation?
I assume that Query is not meant for mutations, but rather observing changes. Is this correct? That is to say, we couldn't use the @Query<PlayerPresenceRequest> for a binding as well (I know this one is used to look for the status, but assume it simply vended a Player type).

Update
I guess another drawback with this is, if there is another window open - the @Binding var player doesn't seem to update in the windows which are not in the foreground (the nav bar does, but the PlayerFormView doesn't). This could also be an implementation error on my part:

Hello @DreamingInBinary,
An app that can display two distinct forms for editing the same data has to deal with multiple "sources of truth": database/file system updates, and user input from each visible form.
A similar setup can be found in text editors that support multiple editors for a single file. For example, in Xcode you can open the same file side by side. Keystrokes and editions performed in one pane automatically apply to the other pane. Select some text in one pane, edit that same text in the other pane, and see Xcode updates the selection. Edit and save the file from another application, and Xcode updates both editors.
Designing the dataflow in such a setup is certainly tricky. But the question is off-topic for this repository, I'm sorry.
There are simpler setups, such as designing an editing view that does not observe the database, and provides a "Done" button for explicit saving. This is the choice made by the GRDBCombineDemo demo app. Arguably, this demo app is iPhone-only (the UI is unable to display two editors for the same data).

do {
    _ = try dbQueue.write { db in
        try player.save(db)
    }
} catch PersistenceError.recordNotFound { }

I know this is not final code, but just in doubt: save can't throw PersistenceError.recordNotFound, since save inserts if the update fails (it actually catches this error for this exact purpose). Generally speaking, only updateXXX methods can throw PersistenceError.recordNotFound.

Thanks @groue - this is all super helpful! For that two way data flow, I ended up with something I'm good with. I think what helped me settle on a route was thinking of any Query as a read only data pipeline, I may get a model I throw in @State or something else from it, but I can't edit it.
For my latter thought, I also ended up using a class I made to wrap the Struct in so it updates in two windows, i.e.:
class WrappedStruct<T>: ObservableObject {
    @Published var item: T

    init(withItem item:T) {
        self.item = item
    }
}


Add the mangled_Args property to kernel_api types.

[X] Have you provided a meaningful PR description?
Numba-dpex's custom types such as ItemType and NdItemType are currently not properly demangled and makes the demangled function signature hard to read. The PR fixes the issue by adding the mangled_args property to these types.

In addition, the SpirvKernelTarget was updated to use the numba_dpex.core.utils.itanium_mangler.
Before (look at the first argument "Item"):
Thread 2.129 hit Breakpoint 1, with SIMD lanes [0-1], __main__::data_parallel_sum_242(
    Item_3c1_3e,
    DpnpNdArray<float, 1, C, level_zero_gpu>,
    DpnpNdArray<float, 1, C, level_zero_gpu>,
    DpnpNdArray<float, 1, C, level_zero_gpu>
) (item=..., a=..., b=..., c=...) at simple_sum.py:13

After:
Thread 2.129 hit Breakpoint 1, with SIMD lanes [0-1], __main__::data_parallel_sum_242(
    ItemType<1>,
    DpnpNdArray<float, 1, C, level_zero_gpu>,
    DpnpNdArray<float, 1, C, level_zero_gpu>,
    DpnpNdArray<float, 1, C, level_zero_gpu>
) (item=..., a=..., b=..., c=...) at simple_sum.py:13

[ ] Have you added a test, reproducer or referred to an issue with a reproducer?
[ ] Have you tested your changes locally for CPU and GPU devices?
[ ] Have you made sure that new changes do not introduce compiler warnings?
[ ] If this PR is a work in progress, are you filing the PR as a draft?

coverage: 87.223% (+0.2%) from 87.065%
when pulling 7490c0c9fe560b50e613e0cc63d19e27368e372e on improve/function_arg_mangling
into a05044e789959138eceef2e3f53838772695c418 on main.

@mpuputti The PR has my latest GDB-related changes I have done based on our triaging of the GDB support on numba-dpex kernels.
The changes do fix setting breakpoints on function names. I will investigate further if there are any unintended side effects.


[incubator/kube-bench] add kube-bench chart

Is this a new chart

NOTE: We're experiencing a high volume of PRs to this repo and reviews will be delayed. Please host your own chart repository and submit your repository to the Helm Hub instead of this repo to make them discoverable to the community. Here is how to submit new chart repositories to the Helm Hub.

What this PR does / why we need it:
Which issue this PR fixes
(optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged)

fixes #

Special notes for your reviewer:
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[ ] DCO signed
[ ] Chart Version bumped
[ ] Variables are documented in the README.md
[ ] Title of the PR starts with chart name (e.g. [stable/mychartname])

Hi 👋 new charts are no longer accepted to stable or incubator. See Status of the Project and Deprecation Timeline for more info about that.
Good news is you can host a Helm chart yourself on GitHub, use the same tools as this repo does for automatic Chart testing and releasing, and list your Helm repo on https://helm.hub.sh. Follow this issue for info about existing guidelines and upcoming improvements: https://github.com/helm/charts/issues/7800

PS very cool chart. I hope to see it on https://hub.helm.sh


Don't specify 'tasks' or 'recordings' explicitly when deleting task or recording.

Currently delete recording can be used in 2 ways: either with tasks <task_name> or with recordings <record id>. An example:
$ kapacitor delete tasks cpu_alert
$ kapacitor delete recordings b1dee9e8-eb4a-4a19-ae69-f0dab340c816

I think specifying explicitly if the thing you want to delete is a task or a recording is not necessary. You can figure it out by looking at the name/id. Recordings are identified by a unique id matching a certain pattern. It's very unlikely that task names are matching the same pattern.
My proposal is to remove the keywords tasks and recordings from the delete command.

This  workflow has changed and this request is no longer relevant.


CMMD dataset - scan/exams dates

Hi,
I am working with the CMMD dataset and found that there is an inconsistency between the scans/exams date and the reported date of the exams. In the official page of the CMMD (dataset https://wiki.cancerimagingarchive.net/pages/viewpage.action?pageId=70230508) and in the paper that you published, you indicated that the exams were conducted between 2012 and 2016. However, when I downloaded the images with the NBIA data driver, I find that there are only two possible exams date: 18/07/2021 and 18/07/2011 (this is the date of the exams that can be seen in each image and in the folders that contain them). I suspect that there is a problem with these exams dates. Do you know if it is possible to obtain the real exam dates for each exam? How did you manage patients that have both benign & malignant exam results?
Thanks in advance for your help!
Gonzalo

Hi @gonzaq94. The information about exams being acquired between 2012 and 2016 is taken from description on the official TCGA page that you listed. You are correct that the DICOM files have only two possible dates. It seems that all DICOMs have been anonymized with Basic Application Level Confidentiality Profile, according to the DICOM Standard PS 3.15 Annex E. This includes the "Retain Longitudinal Temporal Information Modified Dates Option", as described in Section E.3.6.
In summary, it is not possible to obtain original exam dates from those DICOM files. I would suggest reach out to authors of the dataset.

How did you manage patients that have both benign & malignant exam results?

In our classifiers we really only care about malignant versus non-malignant discrimination. If the label in CMMD dataset is both "benign and malignant", then it is malignant. Let me know if that makes sense?

Hi @jwitos thank you very much for your clear answer. You are right, I checked the images and they have the Longitudinal Temporal Information attribute set to MODIFIED, which means that the date has been modified (as clearly described in Section E.3.6 of the DICOM standard).
I have another question regarding this dataset. The dataset is divided into subsets D1 and D2, where the D2 subset also contains the lesion subtype. My question is, are these two subsets disjoints regarding the patients that they contain ? For instance, the patients D1-0028 and D2-0028 are in reality two different patients, or they are just the same patient for which we have two different exams or scans ? This information is relevant if we want to make a train-test-validation split between the clients, to avoid including the same patient in different splits.
Thanks again!
Gonzalo

@gonzaq94 Hi Gonzalo, this is an interesting question but I'm afraid outside of the scope of my knowledge and repository interest. I'd suggest you reach out to CMMD authors/maintainers or to TCIA. I'd be interested in hearing an answer to this too if you learn more about this.

For instance, the patients D1-0028 and D2-0028 are in reality two different patients, or they are just the same patient for which we have two different exams or scans ?

Not sure if you've already found the answer to this, but looking at the clinical data file it seems that the IDs are not related, as D1-0028 has age 35 and D2-0028 has age 44. This seems to be the case for the other IDs too. Furthermore, there are just over 1,026 unique 'D1' IDs and 749 D2 IDs, so to get the total of 1,775 subjects as claimed in the dataset description, they would have to be separate sets.


Ensure errors pass in ServerMode

Hi @shield007, I went on a debugging spree to figure out why the tests in ServerMode were failing, and fixing it was quite simple at the end, so I figured I would just create a PR instead!
The test_describe_recipe_that_does_not_exist test was failing in ServerMode, because it expected the wrong kind of exception. In ServerMode, all error responses thrown are automatically  converted into type botocore.exceptions.ClientError, so we should expect those as well.
In order to ensure that Moto returns the error response in the correct format, I also added the try-catch around describe_recipe_response.
(The dispatch-method automatically converts any errors from the other methods, but because we're intercepting the request manually in describe_recipe_response, we also have to convert the error responses manually.)
With these changes the build should pass.

Thanks! thats great. I've merged this.


[NEW ALGORITHM] Pattern Morphing

Issue will be closed if:

You mention more than one algorithm. You can create a separate issue for each algorithm once the current one is completed.
You propose an algorithm that is already present or has been mentioned in a previous issue.
You create a new issue without completing your previous issue.

Note: These actions will be taken seriously. Failure to follow the guidelines may result in the immediate closure of your issue.

Name:  Pattern Morphing
[NEW ALGORITHM]
About:  A pattern morphing algorithm gradually transforms one pattern in a 1D array to another over multiple steps.

Labels:
new algorithm, gssoc-ext, hacktoberfest, level1

Assignees:

[x] Contributor in GSSoC-ext
[x] Want to work on it

@Stuti333 assigned


No settings available

I'm using IntelliJ IDEA Community Edition 2016.2.4 and there are no settings in the Tools section for this plugin

I just updated to that version, and it it working fine.
I am using the Community edition on Windows 10.
Can you try restarting IntelliJ and if that doesn't work reinstalling the plugin?
If it is still now working, let me know what edition and Hardware you are using.

Hi,
the settings are also not shown here:

OS-X 10.12 (16A323)
PhpStorm 2016.2.1

Build #PS-162.1889.1, built on August 23, 2016
JRE: 1.8.0_76-release-b216 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o

Thanks.

It is in the menu bar "Tools", not the "Tools" in Android Studio settings.

@scott2000, please put in description on hithub and on IDEA plugins portal note, that we should search for settings in MainMenu>Tools, not in Settings>Tools ))


Validate queue-name annotation is a valid crd name

What type of PR is this?
/kind cleanup

What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #562
Special notes for your reviewer:

/assign @tenzen-y

Rebased


Great work so far

Your code destruction is clean and organized✅
You need the following changes and improvements as you keep working.♻

Remember to write your codes as modules and place all of them in one folder.

Also, It is better to make one export per method.👍. Check your todolist.js

So far, everything is good🥳

Thanks great feedback @sireclifford
I appreciate your help to make my project better .


Add env var for blacklist of each iGEMM solver

Add filter for each iGEMM solver

* ASM Implicit GEMM
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_ASM_FWD_V4R1` - `ConvAsmImplicitGemmV4R1DynamicFwd`
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_ASM_FWD_V4R1_1X1` - `ConvAsmImplicitGemmV4R1DynamicFwd_1x1`
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_ASM_BWD_V4R1` - `ConvAsmImplicitGemmV4R1DynamicBwd`
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_ASM_WRW_V4R1` - `ConvAsmImplicitGemmV4R1DynamicWrw`
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_ASM_FWD_GTC_XDLOPS` - `ConvAsmImplicitGemmGTCDynamicFwdXdlops`
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_ASM_BWD_GTC_XDLOPS` - `ConvAsmImplicitGemmGTCDynamicBwdXdlops`
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_ASM_WRW_GTC_XDLOPS` - `ConvAsmImplicitGemmGTCDynamicWrwXdlops`
* HIP Implicit GEMM
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_HIP_FWD_V4R1` - `ConvHipImplicitGemmV4R1Fwd`
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_HIP_FWD_V4R4` - `ConvHipImplicitGemmV4R4Fwd`
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_HIP_BWD_V1R1` - `ConvHipImplicitGemmBwdDataV1R1`
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_HIP_BWD_V4R1` - `ConvHipImplicitGemmBwdDataV4R1`
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_HIP_WRW_V4R1` - `ConvHipImplicitGemmV4R1WrW`
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_HIP_WRW_V4R4` - `ConvHipImplicitGemmV4R4WrW`
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_HIP_FWD_V4R4_XDLOPS` - `ConvHipImplicitGemmForwardV4R4Xdlops`
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_HIP_FWD_V4R5_XDLOPS` - `ConvHipImplicitGemmForwardV4R5Xdlops`
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_HIP_BWD_V1R1_XDLOPS` - `ConvHipImplicitGemmBwdDataV1R1Xdlops`
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_HIP_BWD_V4R1_XDLOPS` - `ConvHipImplicitGemmBwdDataV4R1Xdlops`
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_HIP_WRW_V4R4_XDLOPS` - `ConvHipImplicitGemmWrwV4R4Xdlops`
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_HIP_FWD_V4R4_PADDED_GEMM_XDLOPS` - `ConvHipImplicitGemmForwardV4R4Xdlops_Padded_Gemm`
    * `MIOPEN_DEBUG_CONV_IMPLICIT_GEMM_HIP_WRW_V4R4_PADDED_GEMM_XDLOPS` - `ConvHipImplicitGemmWrwV4R4Xdlops_Padded_Gemm`

Limit composable kernel to supported hardware only (remove support for gfx803)

Shall we keep support for gfx803/64, isn't it?

Shall we keep support for gfx803/64, isn't it?

Yes, fixed

:+1: Overall, this is a step in the right direction.

Let's decide what to do with https://github.com/ROCmSoftwarePlatform/MIOpen/pull/553#discussion_r514251307 and then I'll approve.

Let's decide what to do with #553 (comment) and then I'll approve.

@atamazov Got distracted by debugging work. For that review comment, I will have another PR to address it.

@asroy Some merge conflicts.


Export IndexedMerkleMapBase

Proposal:
Export IndexedMerkleMapBase. It is needed for the serialization of IndexedMerkleMap of any height. Now, only the function IndexedMerkleMap is exported, and I need to get this type using syntax like
export function serializeIndexedMap(
  map: InstanceType<ReturnType<typeof IndexedMerkleMap>>
)

https://github.com/zkcloudworker/zkcloudworker-tests/blob/main/src/indexed-map.ts

Hey do you want to try to implement this yourself in a PR?  It sounds like you know what is required.  I think exporting that base type sounds ok.

Hey do you want to try to implement this yourself in a PR? It sounds like you know what is required. I think exporting that base type sounds ok.

Added https://github.com/o1-labs/o1js/pull/1856


Optimize finality tracker to handle much longer period

After #1619
The finality tracker keeps track of what N recent block authors think the highest finalized block height was ("opinions"). If the median slips too far in the past, a callback to other modules is made.
Currently, all the recent opinions are kept in two Vec<Number> of length N in storage. One is sorted by recency, and the other is sorted by block number. This is very inefficient and doesn't scale to large N -- where we would probably want N to be 1,000 to 10,000 or even higher.
One approach for this optimization is to select a smaller number K (~100?) and split up the recent opinions into a doubly-linked list of Vec<Number> with length 0..2K. When a sub-list reaches length 2K, it is split into two smaller lists of length K. A combination of binary and linear search can be used to find the correct place to insert into the block number set.

Are we keeping recent block heights only to calculate the median? Is it possible to use an approximation of it? In this case, something like P2 Algorithm for Dynamic Statistical Computing Calculation of Quantiles  may be used to approximate it (and work well with outliers).

I think it could be done with an approximation, as long as everyone is using roughly the same approximation. We should consult with @alistairstewart about it first -- the main thing is to make sure that it's not gameable somehow -- if 50% or more of recent block authors are honest and the GRANDPA voters are online, the median heuristic should not reflect it as being far in the past.

I'd be wary of approximation algorithms that don't give robust enough guarantees. It'd definitely be better to use the actual median. Though maybe some heuristics would be useful in accelerating the obvious binary search of an unsorted list algorithm.

Ah I see the linked paper is not an approximation but gives a heuristic for calculating the median fast for an unsorted list, which is what we'd want.

This doesn't sound like 1.0 material at all.

The finality tracker has been removed and we're triggering forced changes manually through governance instead.


⚠ Jenkins Plugins Artifactory has degraded performance

In 4c75925, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1435 ms

Resolved: Jenkins Plugins Artifactory performance has improved in e64a041 after 47 minutes.


darling-dmg: fix build with gcc7

Motivation for this change
didn't build with gcc7
/cc ZHF #36453
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option build-use-sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Fits CONTRIBUTING.md.

FYI there is an upstream patch available over at https://github.com/darlinghq/darling-dmg/commit/cbb0092264b5c5cf3e92d6c2de23f02d859ebf44.patch that we could grab (not included in any official release though).

Thanks, I'll give that a try.

@pbogdan - thanks again, the patch works. Using this instead of pinning to gcc6.

@GrahamcOfBorg build darling-dmg

Success on aarch64-linux (full log)
Partial log (click to expand)
-- Installing: /nix/store/9l1bhnmxpdi7mil3w810q9i3v7gc9ayf-darling-dmg-1.0.4/bin/darling-dmg
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/9l1bhnmxpdi7mil3w810q9i3v7gc9ayf-darling-dmg-1.0.4
shrinking /nix/store/9l1bhnmxpdi7mil3w810q9i3v7gc9ayf-darling-dmg-1.0.4/bin/darling-dmg
shrinking /nix/store/9l1bhnmxpdi7mil3w810q9i3v7gc9ayf-darling-dmg-1.0.4/lib/libdmg.so
strip is /nix/store/lvx1acn1ig1j2km8jds5x3ggh3f2wa8v-binutils-2.28.1/bin/strip
stripping (with command strip and flags -S) in /nix/store/9l1bhnmxpdi7mil3w810q9i3v7gc9ayf-darling-dmg-1.0.4/lib  /nix/store/9l1bhnmxpdi7mil3w810q9i3v7gc9ayf-darling-dmg-1.0.4/bin
patching script interpreter paths in /nix/store/9l1bhnmxpdi7mil3w810q9i3v7gc9ayf-darling-dmg-1.0.4
checking for references to /build in /nix/store/9l1bhnmxpdi7mil3w810q9i3v7gc9ayf-darling-dmg-1.0.4...
/nix/store/9l1bhnmxpdi7mil3w810q9i3v7gc9ayf-darling-dmg-1.0.4

Success on x86_64-linux (full log)
Attempted: darling-dmg
Partial log (click to expand)
-- Installing: /nix/store/fmc5xq5ggmqzny78qdbgsmyym6irxnbr-darling-dmg-1.0.4/bin/darling-dmg
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/fmc5xq5ggmqzny78qdbgsmyym6irxnbr-darling-dmg-1.0.4
shrinking /nix/store/fmc5xq5ggmqzny78qdbgsmyym6irxnbr-darling-dmg-1.0.4/bin/darling-dmg
shrinking /nix/store/fmc5xq5ggmqzny78qdbgsmyym6irxnbr-darling-dmg-1.0.4/lib/libdmg.so
strip is /nix/store/b0zlxla7dmy1iwc3g459rjznx59797xy-binutils-2.28.1/bin/strip
stripping (with command strip and flags -S) in /nix/store/fmc5xq5ggmqzny78qdbgsmyym6irxnbr-darling-dmg-1.0.4/lib  /nix/store/fmc5xq5ggmqzny78qdbgsmyym6irxnbr-darling-dmg-1.0.4/bin
patching script interpreter paths in /nix/store/fmc5xq5ggmqzny78qdbgsmyym6irxnbr-darling-dmg-1.0.4
checking for references to /tmp/nix-build-darling-dmg-1.0.4.drv-0 in /nix/store/fmc5xq5ggmqzny78qdbgsmyym6irxnbr-darling-dmg-1.0.4...
/nix/store/fmc5xq5ggmqzny78qdbgsmyym6irxnbr-darling-dmg-1.0.4


Error when uploading file from Remote URL

Since upgraded to the new, extracted refile-s3 gem, adding a profile photo via a remote URL gives me this error:
IOError (closed stream):
  app/controllers/users_controller.rb:52:in `block in update'

Traditional uploads via uploading a local file from my computer works fine

Could you provide a full stack trace for this please?

@jnicklas here is what I have:
Completed 500 Internal Server Error in 446ms
IOError (closed stream):
  app/controllers/users_controller.rb:58:in `block in update'
  app/controllers/users_controller.rb:57:in `update'

aws-sdk-core (2.1.14) lib/aws-sdk-core/plugins/s3_md5s.rb:38:in `md5'
aws-sdk-core (2.1.14) lib/aws-sdk-core/plugins/s3_md5s.rb:31:in `call'
aws-sdk-core (2.1.14) lib/aws-sdk-core/plugins/s3_expect_100_continue.rb:21:in `call'
aws-sdk-core (2.1.14) lib/aws-sdk-core/plugins/s3_bucket_dns.rb:31:in `call'
aws-sdk-core (2.1.14) lib/aws-sdk-core/rest/handler.rb:7:in `call'
aws-sdk-core (2.1.14) lib/aws-sdk-core/plugins/user_agent.rb:12:in `call'
aws-sdk-core (2.1.14) lib/seahorse/client/plugins/endpoint.rb:34:in `call'
aws-sdk-core (2.1.14) lib/aws-sdk-core/plugins/param_validator.rb:21:in `call'
aws-sdk-core (2.1.14) lib/seahorse/client/plugins/raise_response_errors.rb:14:in `call'
aws-sdk-core (2.1.14) lib/aws-sdk-core/plugins/s3_sse_cpk.rb:18:in `call'
aws-sdk-core (2.1.14) lib/aws-sdk-core/plugins/param_converter.rb:21:in `call'
aws-sdk-core (2.1.14) lib/seahorse/client/plugins/response_target.rb:21:in `call'
aws-sdk-core (2.1.14) lib/seahorse/client/request.rb:70:in `send_request'
aws-sdk-core (2.1.14) lib/seahorse/client/base.rb:207:in `block (2 levels) in define_operation_methods'
aws-sdk-resources (2.1.14) lib/aws-sdk-resources/request.rb:24:in `call'
aws-sdk-resources (2.1.14) lib/aws-sdk-resources/operations.rb:41:in `call'
aws-sdk-resources (2.1.14) lib/aws-sdk-resources/operation_methods.rb:19:in `block in add_operation'
refile-s3 (0.1.0) lib/refile/s3.rb:58:in `upload'
refile (0.5.5) lib/refile/backend_macros.rb:31:in `block (2 levels) in verify_uploadable'
refile (0.5.5) lib/refile/attacher.rb:105:in `download'
refile (0.5.5) lib/refile/attachment.rb:74:in `block (2 levels) in attachment'
activerecord (4.2.0) lib/active_record/attribute_assignment.rb:54:in `public_send'
activerecord (4.2.0) lib/active_record/attribute_assignment.rb:54:in `_assign_attribute'
activerecord (4.2.0) lib/active_record/attribute_assignment.rb:41:in `block in assign_attributes'
actionpack (4.2.0) lib/action_controller/metal/strong_parameters.rb:183:in `each_pair'
actionpack (4.2.0) lib/action_controller/metal/strong_parameters.rb:183:in `each_pair'
activerecord (4.2.0) lib/active_record/attribute_assignment.rb:35:in `assign_attributes'
activerecord (4.2.0) lib/active_record/persistence.rb:249:in `block in update'
activerecord (4.2.0) lib/active_record/transactions.rb:347:in `block in with_transaction_returning_status'
activerecord (4.2.0) lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `block in transaction'
activerecord (4.2.0) lib/active_record/connection_adapters/abstract/transaction.rb:188:in `within_new_transaction'
activerecord (4.2.0) lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction'
activerecord (4.2.0) lib/active_record/transactions.rb:220:in `transaction'
activerecord (4.2.0) lib/active_record/transactions.rb:344:in `with_transaction_returning_status'
activerecord (4.2.0) lib/active_record/persistence.rb:248:in `update'
app/controllers/students_controller.rb:58:in `block in update'
actionpack (4.2.0) lib/action_controller/metal/mime_responds.rb:211:in `respond_to'
app/controllers/students_controller.rb:57:in `update'
actionpack (4.2.0) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (4.2.0) lib/abstract_controller/base.rb:198:in `process_action'
actionpack (4.2.0) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.2.0) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
activesupport (4.2.0) lib/active_support/callbacks.rb:117:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:117:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `block in halting_and_conditional'
activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `block in halting_and_conditional'
activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `block in halting_and_conditional'
activesupport (4.2.0) lib/active_support/callbacks.rb:219:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:219:in `block in halting_and_conditional'
activesupport (4.2.0) lib/active_support/callbacks.rb:219:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:219:in `block in halting_and_conditional'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `block in halting_and_conditional'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:92:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:92:in `_run_callbacks'
activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_process_action_callbacks'
activesupport (4.2.0) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (4.2.0) lib/abstract_controller/callbacks.rb:19:in `process_action'
actionpack (4.2.0) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (4.2.0) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
activesupport (4.2.0) lib/active_support/notifications.rb:164:in `block in instrument'
activesupport (4.2.0) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.2.0) lib/active_support/notifications.rb:164:in `instrument'
actionpack (4.2.0) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (4.2.0) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
activerecord (4.2.0) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (4.2.0) lib/abstract_controller/base.rb:137:in `process'
actionview (4.2.0) lib/action_view/rendering.rb:30:in `process'
actionpack (4.2.0) lib/action_controller/metal.rb:195:in `dispatch'
actionpack (4.2.0) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
actionpack (4.2.0) lib/action_controller/metal.rb:236:in `block in action'
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:73:in `call'
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:42:in `serve'
actionpack (4.2.0) lib/action_dispatch/journey/router.rb:43:in `block in serve'
actionpack (4.2.0) lib/action_dispatch/journey/router.rb:30:in `each'
actionpack (4.2.0) lib/action_dispatch/journey/router.rb:30:in `serve'
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:802:in `call'
recurring_select (1.3.0) app/middleware/recurring_select_middleware.rb:24:in `call'
warden (1.2.3) lib/warden/manager.rb:35:in `block in call'
warden (1.2.3) lib/warden/manager.rb:34:in `catch'
warden (1.2.3) lib/warden/manager.rb:34:in `call'
rack (1.6.4) lib/rack/etag.rb:24:in `call'
rack (1.6.4) lib/rack/conditionalget.rb:38:in `call'
rack (1.6.4) lib/rack/head.rb:13:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/flash.rb:260:in `call'
rack (1.6.4) lib/rack/session/abstract/id.rb:225:in `context'
rack (1.6.4) lib/rack/session/abstract/id.rb:220:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/cookies.rb:560:in `call'
activerecord (4.2.0) lib/active_record/query_cache.rb:36:in `call'
activerecord (4.2.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:647:in `call'
activerecord (4.2.0) lib/active_record/migration.rb:378:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (4.2.0) lib/active_support/callbacks.rb:88:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:88:in `_run_callbacks'
activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_call_callbacks'
activesupport (4.2.0) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (4.2.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/reloader.rb:73:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.2.0) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.2.0) lib/rails/rack/logger.rb:20:in `block in call'
activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `block in tagged'
activesupport (4.2.0) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `tagged'
railties (4.2.0) lib/rails/rack/logger.rb:20:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.6.4) lib/rack/methodoverride.rb:22:in `call'
rack (1.6.4) lib/rack/runtime.rb:18:in `call'
activesupport (4.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
rack (1.6.4) lib/rack/lock.rb:17:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/static.rb:113:in `call'
rack (1.6.4) lib/rack/sendfile.rb:113:in `call'
railties (4.2.0) lib/rails/engine.rb:518:in `call'
railties (4.2.0) lib/rails/application.rb:164:in `call'
rack (1.6.4) lib/rack/tempfile_reaper.rb:15:in `call'
rack (1.6.4) lib/rack/lint.rb:49:in `_call'
rack (1.6.4) lib/rack/lint.rb:37:in `call'
rack (1.6.4) lib/rack/showexceptions.rb:24:in `call'
rack (1.6.4) lib/rack/commonlogger.rb:33:in `call'
sinatra (1.4.6) lib/sinatra/base.rb:218:in `call'
rack (1.6.4) lib/rack/chunked.rb:54:in `call'
rack (1.6.4) lib/rack/content_length.rb:15:in `call'
unicorn (4.9.0) lib/unicorn/http_server.rb:580:in `process_client'
unicorn (4.9.0) lib/unicorn/http_server.rb:674:in `worker_loop'
unicorn (4.9.0) lib/unicorn/http_server.rb:529:in `spawn_missing_workers'
unicorn (4.9.0) lib/unicorn/http_server.rb:140:in `start'
unicorn (4.9.0) bin/unicorn_rails:209:in `<top (required)>'
/var/deploy/retain_development/web_head/shared/bundle/ruby/2.2.0/bin/unicorn_rails:23:in `load'
/var/deploy/retain_development/web_head/shared/bundle/ruby/2.2.0/bin/unicorn_rails:23:in `<main>'

I have the same problem, has any one found a workaround for this?

The bug was caused by aws-sdk, since it did not ensure that the file it received to create a md5 checksum was open. See the above pull request for more information.
The file is by default closed by rest-client after its downloaded on this line in refile:
https://github.com/refile/refile/blob/master/lib/refile/attacher.rb#L106

Thanks @ohenrik ! I hope that PR can get merged in quickly. :)

@ohenrik this is now resolved in the latest release of the aws-sdk gem. Thanks so much for finding that! https://github.com/aws/aws-sdk-ruby/releases/tag/v2.1.31


Adding subsection on scheduled events

Adding information about scheduled events and highlighting the features around extended service healing for predicted hardware failure.

@sandeepgeorge : Thanks for your contribution! The author, @cynthn, has been notified to review your proposed change.


CDPS-929: Double check the prisonerNumber is the matching id

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Please upload report for BASE (main@fb7e173). Learn more about missing BASE report.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #92   +/-   ##
=======================================
  Coverage        ?   78.51%
  Complexity      ?      560
=======================================
  Files           ?       93
  Lines           ?     1801
  Branches        ?      160
=======================================
  Hits            ?     1414
  Misses          ?      295
  Partials        ?       92

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Import order of scss files incorrect

Steps to reproduce and a minimal demo of the problem

Enable SCSS support for your project
Create a mixin or variable in src/client/css and use it in a component scss file

Current behavior
Throwing Error mixin/variable doesn't exist
Expected/desired behavior
Using the mixin/variable from src/client/css without errors
I believe this is an Issue how gulp concat's the files, because If i'm not mistaken src/client/css should be one of the first files loaded and I see no other place where you would put your mixins.

Paging @hank-ehly: Do you have thoughts on this?

@gempir
Thanks for your comment.
Just to clarify, am I correct in understanding that you're able to use sass variables and mixins in your project, but the console does show and "undefined variable" error?

@hank-ehly No. I can't use mixins or variables at all AND the console will also show a "Undefined variable:..." error

My sass config works like this:
this.PLUGIN_CONFIGS['gulp-sass'] = {
      includePaths: [
        './node_modules/bootstrap-sass/assets/stylesheets',
        './node_modules/font-awesome/scss',
        './src/client/css'
      ]
    };

A month or so back, the sass plugin changed its behavior. It used to accumulate visited folders into includePaths. Since src/client/css is one of the first visited this worked fine.  No you must explicitly add it if that is where your variables are.

@iherbivore I'm sorry but where is that config located you are talking about? I can't seem to find something similar in the project.

Also is there a way to process all sass/scss files first from node_modules? So that we don't need to define all of those invidually.

The original config is in the tools/config/seed.config.ts
 PLUGIN_CONFIGS: any = {
   ...
    /**
     * The options to pass to gulp-sass (and then to node-sass).
     * Reference: https://github.com/sass/node-sass#options
     * @type {object}
     */
    'gulp-sass': {
      includePaths: ['./node_modules/']
    },

The version I posted above goes in the tools/config/project.config.ts to overwrite the default.

@tarlepp The separate node_modules entries I have are probably not needed... that is just how I got it working before sass was supported by the seed.

@iherbivore that's weird I don't have the gulp-sass config in my seed.config but adding it in seed or overwriting it in project.config doesn't solve my variable issue, sadly.

@gempir Perhaps you need to update your seed? See it is here: https://github.com/mgechev/angular2-seed/blob/master/tools/config/seed.config.ts#L453

@iherbivore alright!  yeah my version was a few days outdated. Varibles now work, although I can't get the error message to disappear from my console. Works anyway though.

I think we have reached the end of useful things I can contribute. I did fail to point out that the PLUGIN_CONFIGS goes inside the constructor.   Maybe try changing it in the seed.config.ts file instead as a test? Good luck!

@iherbivore yeah I know already had it there.  Thanks for the help anyway

can nobody reproduce this?
I'm still having this issue.

I'm not able to do so. Lets close this issue for now and reopen it if someone reproduces it again.


 I work with a large codebase and do not need Workspace symbols, only within the file. This was working maybe a version ago but has since been broken for a couple of weeks. Disabling extensions does not help.
VS Code version: Code 1.24.0 (6a6e02cef0f2122ee1469765b704faf5d0e0d859, 2018-06-06T17:30:30.113Z)
OS version: Darwin x64 17.5.0

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-4960HQ CPU @ 2.60GHz (8 x 2600)

GPU Status
2d_canvas: unavailable_softwareflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: enabledrasterization: unavailable_softwarevideo_decode: enabledvideo_encode: enabledvpx_decode: enabledwebgl: enabledwebgl2: enabled

Load (avg)
2, 2, 2

Memory (System)
16.00GB (0.25GB free)

Process Argv
/Applications/Visual Studio Code.app/Contents/MacOS/Electron .

Screen Reader
no

VM
0%

Extensions (6)

Extension
Author (truncated)
Version

beautify
Hoo
1.3.1

prettify-json
moh
0.0.3

python
ms-
2018.5.0

Go
ms-
0.6.82

vscode-icons
rob
7.23.0

ayu
tea
0.14.0

(2 theme extensions excluded)

@rwinslow Thanks for reporting! Go to Symbol in File isn't supported out of the box for Python, the python extension adds this functionality. I'm going to move this over to their repository.

This issue was moved to Microsoft/vscode-python#1931


[SVCS-235] MFR handle 'field too large' error more gracefully

Purpose
Our csv tabular render chokes when a field is too large to be read by the underlying library: https://sentry.cos.io/share/issue/32312e36363838/ This makes ot show a  more informative error message.
Changes
Catches error thrown by _csv library and display field limit error or other error caught by _csv
Side Effect
None that I know of
Ticket
https://openscience.atlassian.net/browse/SVCS-235
Figure
New Message

Merged as 3245d7ab0612f24920096df53cc9d7b4c6de93fc


GCC flags causes problem with older CPUs

https://github.com/FloopCZ/tensorflow_cc/blob/c251135ca0d35a2af5b1311e1d4291e12774b148/tensorflow_cc/cmake/build_tensorflow.sh#L5
This line assumes a CPU later than Haswell architecture. I didn't notice this when I built the library, and my program died with the message "Illegal instruction (core dumped)".

Yes, you are right. Just to be sure - does it work for you if you make a clean build with:
CC_OPT_FLAGS="-mtune=haswell" cmake ...

?

@FloopCZ Still have the same problem after I add the flag CC_OPT_FLAGS="-mtune=haswell".

@FloopCZ Sorry for not following up earlier. I did not try a clean build because it simply took too much time. In my case I changed the flags to -march=ivybridge to match my CPU model, and both the static and shared libraries work. Haven't tested, but I suppose -march=native works too?

@sailordiary -march=native doesn't work for me : (

@godmoves Sorry to hear. Any luck with my way, figuring out your own CPU microarch and replacing the flags accordingly?

-march=native finally works after I remove everything and download them again. Maybe I made some mistakes before, anyway it works this time.


DEV-242 | should install composer as global by default

please check and update docs http://dev.teracy.org/docs/develop/php_dev_guide.html accordingly

why don't we use https://github.com/Morphodo/chef-composer?

should use this https://github.com/Morphodo/chef-composer instead of bash code


Save favorite streamers to disk

This is where Electron comes handy, we'd like to save our MobX store to disk and load it back in on startup. Something like a twitch-flow.json in ~ should be fine

Done in #8  :)


Errors are swallowed when using fromPromise(A+ promise)

When in dev mode, it would be very useful to have a global, catch-all error handler since bacon swallow all errors. A tiny error in a map() somewhere downstream, and nothing happens, no stream is consumed, no error is thrown.
It could be used as follow:
if (process.env.dev)
  Bacon.onError = e -> console.error(e);

No it doesnt swallow all errors does it!? There was a bug but with latest version there should not be such behavior

true! needs investigation.

oh, it's Q that's swallowing the exception, not Bacon :)

Yes and no :p
Q or any A+ promise implementation will by design swallow an exception in a then success handler if no other action is taken (in the case of Q, you would have to use done() to tell it the promise chain is over and all errors have been handled).
Since bacon only relies on the presence of a 'then' function, I think the only action possible is for it to add a try-catch that call the same thing as the error handler.

This is duplicate to #501

Fixed in 0.7.50


Standarize API to make pipelines "static" like

current use is:
var pipeMinify = require ('pipeline-minify-css')();
proposed use is:
var pipeMinify = require ('pipeline-minify-css');
resolves https://github.com/kenzanlabs/keystone/issues/7

going to merge after #13 so I can cut a 1.0.0 release


Drop those panties, please

Hi MSX,
in my opinion it's currently too hard to get proper leg armor, I always lack either the Fancy Panties or the Leather - mostly because one set of panties has to be used for the slingshot and most of the time I can't get more than one. (I'm past level 500 with no end in sight, I've got far more resources than I could ever use; but still no leg armor, lol. Had to go for the slingshot, of course.)
Additionally, I wish there to be a stronger weapon; maybe a magic wand that does 10-16 damage? I'm a bit split on that one. Maybe I didn't even see all the items in the game yet? (edit: checked the source and discovered that everything I was concerned about regarding equipment is actually there, especially the weapons and heavy leg armor. Also at least 5 enemies I haven't even encountered yet.)
This is unrelated to the panties, but I think there should be a warning or something when hitting 'Open Door!' with 0 keys left - I didn't pay attention to my key count one time, so I killed a very good run way too early on... Ultimately my own fault for not paying proper attention of course, but something like making the button go red or yellow on the first press when clicked once (at 0 keys) and then actually triggering the action on a second press would be a nice quality of life enhancement. Or maybe automatically buying keys if there's enough gold? Maybe it's intentional and I'm just a wimp. :D
That said, there's no progression after a certain point - I keep running into the same set of enemies over and over, the only useful ones being the Wizards, Key Masters and Mudmen. So many ghosts, but nothing to combine the ectoplasm with...
Anyway, thank you for making this little game, I sincerely enjoy it. Keep on doing what you're doing! :)

Hi there :) Yes, there are no leg armours in the current game. I don't know why i didn't add them back then, probably the sum of the armor values was too high. In the sources there's an updated version of the game with many differences, including fixes for all the things you're reporting. That's a work in progress, since i'm not completely satisfied on the new monster probability table (it kind of got too easy and too long). But there are new items, monsters, effect etc. You  can try it here, just scroll to the bottom and download the apk. Feel free to report on how you find it (if you want) since i'm needing some playtest.
About the keys, i could add some extra warning perhaps but i think the blinking count should be enought. Perhaps a warning before entering, if you have money to buy keys.
Yes, the current game kind of stops after about level 100, the rest is same monsters all over untill 1000 and then a fancy application crash :) The last monster (the devil o demon, dont remember right now) was supposed to be unbeatable and finish the game, but it got a bit debuffed and now it's doable, and multiple times. The updated game add more monsters and stretches the appearance window to cover more levels in total, but i'm not sure with it. The original idea was to have quick runs (hence the lacking savegame).
I'll need to play with it some more, ideally have some playtesters and see how it goes.
Thank you for playing and for the issue with the best name ever :)

Well that was fast :)
Yeah the eye patch is redundant with the tricorn, i just liked the idea! but you're right it's probably better to remove it. A saber would be cool, otherwise it could be a peg leg, used as a weapon (or perhaps as a leg equipment?? doesn't make much sense but it's fun).
Adding more monsters and having about the same spawn windows, means each monster appear less times. That's why you probably encountered few cobolds. I could fix this by stretching the windows even more, but that way the runs gets longer and longer (you would spend a lot of time/levels in early game) which is something i'd rather avoid.
I could make it so that each monster is bound to appear at least once every run, but that brings us to the following problem: do we want players to always have everything? I mean, it's clear that the slingshot is mandatory for a good run in the endgame, but does it means we should make sure the player always gets one, or make it more probable? Same goes with the weapons: yes sometimes you can complete the early stages and find yourself without a weapon, but does that mean we should ensure a weapon drop? If we do these things, then all runs will be good runs and the game would get ultra easy. In the end it's kind of a limitation of the gameplay, which is ultimately based on luck, there isn't much strategy beside getting lucky with encounters and drops.
Pants can be aquired later in the game with Pirates (33% chance) and also much later with Jester. Sticks are dropped by goblin at more than 33% and Evil eye at 50%.
Curiously, i found the new version easier rather than harder :) maybe i was lucky?
PS you can find monsters drop and windows here:
https://github.com/msx80/DoorsOfDoomOmicron/blob/main/doorsofdoom/src/main/java/com/github/msx80/doorsofdoom/model/MonsterDef.java
The third "range" is the window, the levels in which it can appear. In the loot section of each monster, the first number is the weight in relation to the other dropped items.

PS just looked at my local changes, turns out i already replaced the eyepatch with a hook, usable as a weapon

Also, here's the calculated list of possible encounters as a reference:
LEVEL: 0 : 4 -> [MOUSE, SNAKE, KOBOLD, BAT]
LEVEL: 1 : 4 -> [MOUSE, SNAKE, KOBOLD, BAT]
LEVEL: 2 : 4 -> [MOUSE, SNAKE, KOBOLD, BAT]
LEVEL: 3 : 5 -> [MOUSE, SNAKE, KOBOLD, BAT, SKELETON]
LEVEL: 4 : 5 -> [MOUSE, SNAKE, KOBOLD, BAT, SKELETON]
LEVEL: 5 : 5 -> [MOUSE, SNAKE, KOBOLD, BAT, SKELETON]
LEVEL: 6 : 5 -> [MOUSE, SNAKE, KOBOLD, BAT, SKELETON]
LEVEL: 7 : 7 -> [MOUSE, SNAKE, KOBOLD, BAT, SKELETON, CRAB, GHOST]
LEVEL: 8 : 7 -> [MOUSE, SNAKE, KOBOLD, BAT, SKELETON, CRAB, GHOST]
LEVEL: 9 : 7 -> [MOUSE, SNAKE, KOBOLD, BAT, SKELETON, CRAB, GHOST]
LEVEL: 10 : 8 -> [MOUSE, SNAKE, KOBOLD, BAT, SKELETON, CRAB, GHOST, GOBLIN]
LEVEL: 11 : 8 -> [MOUSE, SNAKE, KOBOLD, BAT, SKELETON, CRAB, GHOST, GOBLIN]
LEVEL: 12 : 8 -> [MOUSE, SNAKE, KOBOLD, BAT, SKELETON, CRAB, GHOST, GOBLIN]
LEVEL: 13 : 9 -> [MOUSE, SNAKE, KOBOLD, BAT, SKELETON, CRAB, GHOST, GOBLIN, SLUG]
LEVEL: 14 : 9 -> [MOUSE, SNAKE, KOBOLD, BAT, SKELETON, CRAB, GHOST, GOBLIN, SLUG]
LEVEL: 15 : 10 -> [MOUSE, SNAKE, KOBOLD, BAT, SKELETON, CRAB, GHOST, GOBLIN, SLUG, MYCONID]
LEVEL: 16 : 9 -> [SNAKE, KOBOLD, BAT, SKELETON, CRAB, GHOST, GOBLIN, SLUG, MYCONID]
LEVEL: 17 : 10 -> [SNAKE, KOBOLD, BAT, SKELETON, CRAB, GHOST, GOBLIN, SLUG, MYCONID, MIMIC]
LEVEL: 18 : 10 -> [KOBOLD, BAT, SKELETON, CRAB, GHOST, GOBLIN, SLUG, MYCONID, MIMIC, EVILCOOK]
LEVEL: 19 : 11 -> [KOBOLD, BAT, SKELETON, CRAB, GHOST, GOBLIN, SLUG, MYCONID, MIMIC, SKULL, EVILCOOK]
LEVEL: 20 : 12 -> [KOBOLD, BAT, SKELETON, CRAB, GHOST, GOBLIN, SLUG, MYCONID, MIMIC, SKULL, EVILCOOK, FIREIMP]
LEVEL: 21 : 10 -> [SKELETON, CRAB, GHOST, GOBLIN, SLUG, MYCONID, MIMIC, SKULL, EVILCOOK, FIREIMP]
LEVEL: 22 : 11 -> [SKELETON, CRAB, GHOST, GOBLIN, SLUG, MYCONID, MIMIC, SKULL, HELLFLY, EVILCOOK, FIREIMP]
LEVEL: 23 : 11 -> [SKELETON, CRAB, GHOST, GOBLIN, SLUG, MYCONID, MIMIC, SKULL, HELLFLY, EVILCOOK, FIREIMP]
LEVEL: 24 : 11 -> [SKELETON, CRAB, GHOST, GOBLIN, SLUG, MYCONID, MIMIC, SKULL, HELLFLY, EVILCOOK, FIREIMP]
LEVEL: 25 : 12 -> [SKELETON, CRAB, GHOST, GOBLIN, SLUG, MYCONID, MIMIC, SKULL, HELLFLY, EVILCOOK, FIREIMP, PIRATE]
LEVEL: 26 : 12 -> [SKELETON, CRAB, GHOST, GOBLIN, SLUG, MYCONID, MIMIC, SKULL, HELLFLY, EVILCOOK, FIREIMP, PIRATE]
LEVEL: 27 : 12 -> [SKELETON, CRAB, GHOST, GOBLIN, SLUG, MYCONID, MIMIC, SKULL, HELLFLY, EVILCOOK, FIREIMP, PIRATE]
LEVEL: 28 : 12 -> [SKELETON, CRAB, GHOST, GOBLIN, SLUG, MYCONID, MIMIC, SKULL, HELLFLY, EVILCOOK, FIREIMP, PIRATE]
LEVEL: 29 : 12 -> [CRAB, GHOST, GOBLIN, SLUG, MYCONID, MIMIC, SKULL, HELLFLY, EVILCOOK, FIREIMP, PIRATE, OGRE]
LEVEL: 30 : 12 -> [CRAB, GOBLIN, SLUG, MYCONID, MIMIC, SKULL, HELLFLY, EVILCOOK, FIREIMP, PIRATE, OGRE, DWARF]
LEVEL: 31 : 12 -> [CRAB, GOBLIN, SLUG, MYCONID, MIMIC, SKULL, HELLFLY, EVILCOOK, FIREIMP, PIRATE, OGRE, DWARF]
LEVEL: 32 : 12 -> [CRAB, GOBLIN, SLUG, MYCONID, MIMIC, SKULL, HELLFLY, EVILCOOK, FIREIMP, PIRATE, OGRE, DWARF]
LEVEL: 33 : 11 -> [GOBLIN, SLUG, MYCONID, MIMIC, SKULL, HELLFLY, EVILCOOK, FIREIMP, PIRATE, OGRE, DWARF]
LEVEL: 34 : 12 -> [GOBLIN, SLUG, MYCONID, MIMIC, SKULL, HELLFLY, EVILCOOK, FIREIMP, PIRATE, OGRE, DWARF, SPIDER]
LEVEL: 35 : 12 -> [GOBLIN, SLUG, MYCONID, MIMIC, SKULL, HELLFLY, EVILCOOK, FIREIMP, PIRATE, OGRE, DWARF, SPIDER]
LEVEL: 36 : 11 -> [SLUG, MYCONID, MIMIC, SKULL, HELLFLY, EVILCOOK, FIREIMP, PIRATE, OGRE, DWARF, SPIDER]
LEVEL: 37 : 11 -> [SLUG, MYCONID, MIMIC, SKULL, HELLFLY, EVILCOOK, FIREIMP, PIRATE, OGRE, DWARF, SPIDER]
LEVEL: 38 : 10 -> [MYCONID, MIMIC, SKULL, HELLFLY, EVILCOOK, FIREIMP, PIRATE, OGRE, DWARF, SPIDER]
LEVEL: 39 : 10 -> [MYCONID, MIMIC, HELLFLY, EVILCOOK, FIREIMP, PIRATE, OGRE, DWARF, SPIDER, ENT]
LEVEL: 40 : 14 -> [MYCONID, MIMIC, HELLFLY, EVILCOOK, FIREIMP, PIRATE, OGRE, DWARF, SPIDER, ENT, EVILEYE, KITTEN, GOLEM, JESTER]
LEVEL: 41 : 12 -> [HELLFLY, EVILCOOK, FIREIMP, PIRATE, OGRE, DWARF, SPIDER, ENT, EVILEYE, KITTEN, GOLEM, JESTER]
LEVEL: 42 : 11 -> [HELLFLY, EVILCOOK, FIREIMP, PIRATE, OGRE, DWARF, SPIDER, ENT, EVILEYE, GOLEM, JESTER]
LEVEL: 43 : 12 -> [HELLFLY, EVILCOOK, FIREIMP, PIRATE, OGRE, DWARF, SPIDER, ENT, EVILEYE, GOLEM, DARKKNIGHT, JESTER]
LEVEL: 44 : 11 -> [EVILCOOK, FIREIMP, PIRATE, OGRE, DWARF, SPIDER, ENT, EVILEYE, GOLEM, DARKKNIGHT, JESTER]
LEVEL: 45 : 12 -> [EVILCOOK, FIREIMP, PIRATE, OGRE, DWARF, SPIDER, ENT, EVILEYE, GOLEM, DARKKNIGHT, JESTER, KEYMASTER]
LEVEL: 46 : 11 -> [EVILCOOK, FIREIMP, OGRE, DWARF, SPIDER, ENT, EVILEYE, GOLEM, DARKKNIGHT, JESTER, KEYMASTER]
LEVEL: 47 : 11 -> [EVILCOOK, FIREIMP, OGRE, DWARF, SPIDER, ENT, EVILEYE, GOLEM, DARKKNIGHT, JESTER, KEYMASTER]
LEVEL: 48 : 11 -> [EVILCOOK, FIREIMP, OGRE, DWARF, SPIDER, ENT, EVILEYE, GOLEM, DARKKNIGHT, JESTER, KEYMASTER]
LEVEL: 49 : 11 -> [FIREIMP, OGRE, DWARF, SPIDER, ENT, EVILEYE, GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS]
LEVEL: 50 : 11 -> [FIREIMP, OGRE, DWARF, SPIDER, ENT, EVILEYE, GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS]
LEVEL: 51 : 11 -> [FIREIMP, OGRE, DWARF, SPIDER, ENT, EVILEYE, GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS]
LEVEL: 52 : 11 -> [FIREIMP, OGRE, DWARF, SPIDER, ENT, EVILEYE, GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS]
LEVEL: 53 : 11 -> [FIREIMP, OGRE, DWARF, SPIDER, ENT, EVILEYE, GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS]
LEVEL: 54 : 11 -> [FIREIMP, OGRE, DWARF, SPIDER, ENT, EVILEYE, GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS]
LEVEL: 55 : 13 -> [FIREIMP, OGRE, DWARF, SPIDER, ENT, EVILEYE, GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS, SPRITES, MAGE]
LEVEL: 56 : 12 -> [FIREIMP, OGRE, DWARF, SPIDER, ENT, GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS, SPRITES, MAGE]
LEVEL: 57 : 12 -> [FIREIMP, OGRE, DWARF, SPIDER, ENT, GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS, SPRITES, MAGE]
LEVEL: 58 : 12 -> [FIREIMP, OGRE, DWARF, SPIDER, ENT, GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS, SPRITES, MAGE]
LEVEL: 59 : 12 -> [FIREIMP, OGRE, SPIDER, ENT, GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE]
LEVEL: 60 : 13 -> [FIREIMP, OGRE, SPIDER, ENT, GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB]
LEVEL: 61 : 11 -> [SPIDER, ENT, GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB]
LEVEL: 62 : 11 -> [SPIDER, ENT, GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB]
LEVEL: 63 : 11 -> [SPIDER, ENT, GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB]
LEVEL: 64 : 11 -> [SPIDER, ENT, GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB]
LEVEL: 65 : 12 -> [SPIDER, ENT, GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE]
LEVEL: 66 : 10 -> [GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE]
LEVEL: 67 : 10 -> [GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE]
LEVEL: 68 : 10 -> [GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE]
LEVEL: 69 : 10 -> [GOLEM, DARKKNIGHT, JESTER, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE]
LEVEL: 70 : 10 -> [GOLEM, DARKKNIGHT, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE, DRAGON]
LEVEL: 71 : 10 -> [GOLEM, DARKKNIGHT, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE, DRAGON]
LEVEL: 72 : 10 -> [GOLEM, DARKKNIGHT, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE, DRAGON]
LEVEL: 73 : 10 -> [GOLEM, DARKKNIGHT, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE, DRAGON]
LEVEL: 74 : 10 -> [GOLEM, DARKKNIGHT, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE, DRAGON]
LEVEL: 75 : 11 -> [GOLEM, DARKKNIGHT, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE, DEMON, DRAGON]
LEVEL: 76 : 11 -> [GOLEM, DARKKNIGHT, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE, DEMON, DRAGON]
LEVEL: 77 : 11 -> [GOLEM, DARKKNIGHT, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE, DEMON, DRAGON]
LEVEL: 78 : 11 -> [GOLEM, DARKKNIGHT, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE, DEMON, DRAGON]
LEVEL: 79 : 11 -> [GOLEM, DARKKNIGHT, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE, DEMON, DRAGON]
LEVEL: 80 : 10 -> [GOLEM, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE, DEMON, DRAGON]
LEVEL: 81 : 10 -> [GOLEM, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE, DEMON, DRAGON]
LEVEL: 82 : 10 -> [GOLEM, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE, DEMON, DRAGON]
LEVEL: 83 : 10 -> [GOLEM, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE, DEMON, DRAGON]
LEVEL: 84 : 10 -> [GOLEM, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE, DEMON, DRAGON]
LEVEL: 85 : 10 -> [GOLEM, KEYMASTER, SUCCUBUS, SPRITES, TARDIGRADE, MAGE, BLOB, VAMPIRE, DEMON, DRAGON]
LEVEL: 86 : 9 -> [GOLEM, KEYMASTER, SUCCUBUS, TARDIGRADE, MAGE, BLOB, VAMPIRE, DEMON, DRAGON]
LEVEL: 87 : 9 -> [GOLEM, KEYMASTER, SUCCUBUS, TARDIGRADE, MAGE, BLOB, VAMPIRE, DEMON, DRAGON]
LEVEL: 88 : 9 -> [GOLEM, KEYMASTER, SUCCUBUS, TARDIGRADE, MAGE, BLOB, VAMPIRE, DEMON, DRAGON]
LEVEL: 89 : 9 -> [GOLEM, KEYMASTER, SUCCUBUS, TARDIGRADE, MAGE, BLOB, VAMPIRE, DEMON, DRAGON]
LEVEL: 90 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, BLOB, VAMPIRE, DEMON, DRAGON]
LEVEL: 91 : 7 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON]
LEVEL: 92 : 7 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON]
LEVEL: 93 : 7 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON]
LEVEL: 94 : 7 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON]
LEVEL: 95 : 7 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON]
LEVEL: 96 : 7 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON]
LEVEL: 97 : 7 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON]
LEVEL: 98 : 7 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON]
LEVEL: 99 : 7 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON]
LEVEL: 100 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 101 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 102 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 103 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 104 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 105 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 106 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 107 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 108 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 109 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 110 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 111 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 112 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 113 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 114 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 115 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 116 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 117 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 118 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 119 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 120 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 121 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 122 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 123 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 124 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 125 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 126 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 127 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 128 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 129 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 130 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 131 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 132 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 133 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 134 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 135 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 136 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 137 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 138 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 139 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 140 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 141 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 142 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 143 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 144 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 145 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 146 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 147 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 148 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 149 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 150 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 151 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 152 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 153 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 154 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 155 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 156 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 157 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 158 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 159 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 160 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 161 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 162 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 163 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 164 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 165 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 166 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 167 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 168 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 169 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 170 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 171 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 172 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 173 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 174 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 175 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 176 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 177 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 178 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 179 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 180 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 181 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 182 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 183 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 184 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 185 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 186 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 187 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 188 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 189 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 190 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 191 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 192 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 193 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 194 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 195 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 196 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 197 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 198 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 199 : 8 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL]
LEVEL: 200 : 9 -> [GOLEM, KEYMASTER, TARDIGRADE, MAGE, VAMPIRE, DEMON, DRAGON, DEVIL, ANCIENT]

I take chances don't change beyond this point? I mean 400 HP is only 27 Rocks... But I guess I'll talk after beating it. 👆

Yes, they don't change anymore, the ancient is the new "final monster" meant to be nearly impossible to kill. He's very likey to kill you with one hit. I don't know how easy it is to accumulate 27 rocks, given all the other monsters in late game are pretty strong too. And we should really talk about how broken the slingshot mechanic is and how desirable is to have it so unbounded as it is. Perhaps we should consider other things.
PS i pushed the changes with the hook, if you want you can find the new versione here: https://github.com/msx80/DoorsOfDoomOmicron/actions/runs/10418163494

Well you sure were quick beating that ancient :)

Knowing the final boss is unbeatable leaves a sour taste in my mouth as a player anyway... I think it should be hard, but impossible? Probably not. Shouldn't the game just end after the boss is beaten?

You're not the only one who asked for an game end. I'll probably be adding it, but i'd also like to keep the record pursuit theme the game has. Like if the game ends at the first Ancient, then the best score from people will all be nearly similar. Perhaps i could let them keep playing but the monsters get stronger with time..
Also the book of wisdom is a neat item i don't want to waste it :)

Oh btw, the description for the Scroll says it can't be used on 'Demons' instead of 'Devils'. I was confused when I found out that they indeed work on Demons, but not on Devils (makes sense though). They should probably also not work for Ancients, huh?

Thanks for the fixes!

And regarding redundant weapons; instead of preventing them from dropping, they could become battle items, so the players can throw them at the enemy for double damage. Useless drops just feel bad.

Well something like that i've done with the Fang, perhaps i could do with others too, but i wouldn't want to make it too easy, useless drop are bound to happen anyway

Consistent item order for items outside of the 'inventory' view would be nice too, I've mixed up different potions a few times; they look a very similar and I got confused by them being in a different order than I expected, for example the +100 heal on top, then +10 and +20.

oh right, i've opened an issue for this, thanks!

I've release the new version, which should also be soon on fdroid, that address most of the stuff we discussed here and feels pretty balanced. Let me know if it seems ok to you too


HTML syntax file: Add repository in the header and support all HTML 5.1 global attributes

Add repository URL (https://notabug.org/jorgesumle/vim-html-syntax), as suggested by @chrisbra in https://github.com/vim/vim/pull/1263
Add global (only global, see explanation below) HTML 5.1 attributes (https://www.w3.org/TR/html51/dom.html#sec-global-attributes)

Global HTML attributes are attributes that can be used with any HTML element. We still have to add some new HTML 5 specific attributes, such as <a>'s download attribute. But I think that introducing HTML 5.1 support little by little is less error prone and easier to review. In the future, I'll try to make another pull request adding the remaining specific HTML attributes.

Thanks, I'll include it.
Small correction: "html 5 arg names" (arg instead of args)


Should expand relative paths in Pester path properties

If the property OutputPath is used in the build.yaml with a relative path (to the project path), it will not be made an absolute path by the task, meaning in this case, the test result file end up in the wrong place.
DscTest:
  Pester:
    Configuration:
      TestResult:
        OutputPath: ./output/testResults/NUnitXml_HQRM_Tests.xml

The variable $DscTestOutputFolder is set to the absolute path of the projects './output/testResults' folder here:
https://github.com/dsccommunity/DscResource.Test/blob/27c70ec121b41eff95f17747f0dc2176f89cdfa8/source/tasks/Invoke_HQRM_Tests.build.ps1#L90-L93
So here for each property that is a path, e.g. OutputPath, should be checked whether it is an absolute path. If not, join the relative path with the path in the variable above.
https://github.com/dsccommunity/DscResource.Test/blob/27c70ec121b41eff95f17747f0dc2176f89cdfa8/source/tasks/Invoke_HQRM_Tests.build.ps1#L240

To expand the path as needed, we could use Get-SamplerAbsolutePath. Either copy the code or add dependency.

Get-SamplerAbsolutePath is a public function in Sampler so we can just use that. Maybe we should add Sampler to RequiredModules too: https://github.com/dsccommunity/DscResource.Test/blob/73d6c3290572a0b065084a1adcaa1eb5a8da5994/source/DscResource.Test.psd1#L46