diff --git a/zed/.gitignore b/zed/.gitignore new file mode 100644 index 0000000..5a9f2d7 --- /dev/null +++ b/zed/.gitignore @@ -0,0 +1 @@ +zed.xdg.symlink/.tmp* diff --git a/zed/extensions.list b/zed/extensions.list new file mode 100644 index 0000000..f895ec5 --- /dev/null +++ b/zed/extensions.list @@ -0,0 +1,6 @@ +- Dockerfile +- SQL +- GitHub Theme +- Make +- TOML +- GraphQL diff --git a/zed/zed.xdg.symlink/conversations/Add name field to address proto - 1.zed.json b/zed/zed.xdg.symlink/conversations/Add name field to address proto - 1.zed.json new file mode 100644 index 0000000..e0dcef1 --- /dev/null +++ b/zed/zed.xdg.symlink/conversations/Add name field to address proto - 1.zed.json @@ -0,0 +1 @@ +{"id":"1502c777-4b38-4a87-aac8-1fdb6d4826b9","zed":"context","version":"0.4.0","text":"\n\n\n```proto services/services/internal/engine/protos/sites.proto\nsyntax = \"proto3\";\npackage engine;\n\nimport \"services/internal/engine/protos/empty.proto\";\nimport \"services/internal/engine/protos/id.proto\";\n\nmessage Address {\n string addressNumber = 1;\n string addressStreet = 2;\n string addressCity = 3;\n string addressState = 4;\n string addressPostcode = 5;\n double latitude = 6;\n double longitude = 7;\n}\n\nmessage Site {\n int32 id = 1;\n string name = 2;\n string description = 3;\n string notes = 4;\n string image = 5;\n string timezone = 6;\n string helpPhone = 7;\n Address address = 8;\n bool parkingShowCheckIn = 9;\n bool parkingShowAutomaticCheckIn = 10;\n bool parkingShowValet = 11;\n int32 accessBuffer = 12;\n bool useSwipeCard = 13;\n int32 parkingDefaultStartTime = 14;\n int32 parkingDefaultEndTime = 15;\n bool alwaysAllowEgress = 16;\n bool parkingAllDayOnly = 17;\n bool accessPreventPassback = 18;\n bool accessEnableHelp = 19;\n bool accessUseNewScanner = 20;\n bool enableRangeBookings = 21;\n bool noAccessRequired = 22;\n string noticeboard = 23;\n string extraInfo = 24;\n bool isFlexPark = 25;\n bool visitorAccessEnabled = 26;\n int32 overflowAssetGroupId = 27;\n bool accessRemoteTrigger = 28;\n bool notifyEndOfBooking = 29;\n bool enableAllocationRelease = 30;\n bool enableOfflineSpaceTaken = 31;\n string reallocationFailedMessage = 32;\n bool sendSMSBookingReminders = 33;\n string brand = 34;\n string bookingNotificationEmailInsert = 35;\n bool expandLocation = 36;\n bool notifyFreeBooking = 37;\n repeated string flags = 38;\n bool enableAllocationGifting = 39;\n bool enableAllocationReleasePayouts = 40;\n bool sendPushBookingReminders = 41;\n int32 sendPushBookingRemindersTime = 42;\n string defaultPoolCarPassbackState = 43;\n string defaultPassbackState = 44;\n\n string addressNumber = 45;\n string addressStreet = 46;\n string addressCity = 47;\n string addressState = 48;\n string addressPostcode = 49;\n string addressCountry = 50;\n double latitude = 51;\n double longitude = 52;\n\n string accessSyncMode = 53;\n int32 accessSyncWindow = 54;\n string accessSyncApiHost = 55;\n int32 accessSyncApiPort = 56;\n string accessSyncApiUsername = 57;\n string accessSyncApiPassword = 58;\n string accessSyncApiSite = 59;\n\n repeated string prohibitedPassbackStates = 60;\n\n string accessHelpPhone = 61;\n string accessHelpText = 62;\n string otherHelpPhone = 63;\n string accessNoticeboard = 64;\n\n string accessSyncApiToken = 65;\n\n repeated string files = 66;\n\n bool requirePolicySelection = 67;\n bool isGateless = 68;\n bool accessRemoteTriggerPassback = 69;\n\n repeated string accessSyncBookingTypes = 70;\n\n string status = 71;\n\n map accessSyncConfigurationOptions = 72;\n\n message Building {\n int32 id = 1;\n string name = 2;\n string description = 3;\n string notes = 4;\n\n bool useSiteAddress = 5;\n\n string addressNumber = 6;\n string addressStreet = 7;\n string addressCity = 8;\n string addressState = 9;\n string addressPostcode = 10;\n string addressCountry = 11;\n double latitude = 12;\n double longitude = 13;\n\n\n message Floor {\n int32 id = 1;\n string name = 2;\n string description = 3;\n string notes = 4;\n int32 index = 5;\n int32 buildingId = 6;\n string image = 7;\n }\n\n\n message Floors {\n repeated Floor floors = 1;\n }\n }\n\n message Buildings {\n repeated Building buildings = 1;\n }\n\n message Area {\n int32 id = 1;\n string name = 2;\n string description = 3;\n string notes = 4;\n int32 siteId = 5;\n }\n\n message Areas {\n repeated Area areas = 1;\n }\n\n message OrganisationSite {\n int32 siteId = 1;\n int32 organisationId = 2;\n int32 overflowAssetGroupId = 3;\n string reallocationFailedMessage = 4;\n string bookingNotificationEmailInsert = 5;\n string defaultPoolCarPassbackState = 6;\n string defaultPassbackState = 7;\n string accessHelpPhone = 8;\n string accessHelpText = 9;\n string otherHelpPhone = 10;\n string accessNoticeboard = 11;\n int32 id = 12;\n Site site = 14;\n }\n\n message OrganisationSites {\n repeated OrganisationSite organisationSites = 1;\n }\n}\n\nmessage CreateBuilding {\n message Request {\n string name = 1;\n string description = 2;\n string notes = 3;\n int32 siteId = 4;\n bool useSiteAddress = 5;\n\n string addressNumber = 6;\n string addressStreet = 7;\n string addressCity = 8;\n string addressState = 9;\n string addressPostcode = 10;\n string addressCountry = 11;\n double latitude = 12;\n double longitude = 13;\n }\n}\n\nmessage CreateFloor {\n message Request {\n string name = 1;\n string description = 2;\n string notes = 3;\n int32 buildingId = 4;\n int32 index = 5;\n string image = 6;\n }\n}\n\nmessage CreateArea {\n message Request {\n string name = 1;\n string description = 2;\n repeated int32 accessControllers = 3;\n repeated int32 assets = 4;\n int32 siteId = 5;\n }\n}\n\nmessage Sites {\n repeated Site sites = 1;\n}\n\n// Do not add fields to update and create messages if they are not exposed in the UI\nmessage CreateSite {\n message Request {\n string name = 2;\n string description = 3;\n string timezone = 6;\n string addressNumber = 7;\n string addressStreet = 8;\n string addressCity = 9;\n string addressState = 10;\n string addressPostcode = 11;\n string addressCountry = 12;\n double latitude = 13;\n double longitude = 14;\n }\n}\n\n// Do not add fields to update and create messages if they are not exposed in the UI\nmessage UpdateSite {\n message Request {\n int32 id = 1;\n string name = 2;\n string description = 3;\n string notes = 4;\n string image = 5;\n string timezone = 6;\n string addressNumber = 7;\n string addressStreet = 8;\n string addressCity = 9;\n string addressState = 10;\n string addressPostcode = 11;\n string addressCountry = 12;\n double latitude = 13;\n double longitude = 14;\n repeated string flags = 15;\n string extraInfo = 16;\n bool notifyFreeBooking = 17;\n bool sendPushBookingReminders = 18;\n int32 sendPushBookingRemindersTime = 19;\n bool notifyEndOfBooking = 20;\n bool enableAllocationGifting = 21;\n bool enableAllocationRelease = 22;\n int32 accessBuffer = 23;\n bool alwaysAllowEgress = 24;\n bool accessPreventPassback = 25;\n string defaultPassbackState = 26;\n string defaultPoolCarPassbackState = 27;\n bool expandLocation = 28;\n bool noAccessRequired = 29;\n bool useSwipeCard = 30;\n bool visitorAccessEnabled = 31;\n repeated string prohibitedPassbackStates = 32;\n string noticeboard = 33;\n string accessNoticeboard = 34;\n string helpPhone = 35;\n string accessHelpPhone = 36;\n string otherHelpPhone = 37;\n bool accessRemoteTrigger = 38;\n string accessHelpText = 39;\n bool enableOfflineSpaceTaken = 40;\n repeated string files = 42;\n bool requirePolicySelection = 43;\n bool enableAllocationReleasePayouts = 44;\n bool isGateless = 45;\n bool accessRemoteTriggerPassback = 46;\n }\n}\n\nmessage UpdateArea {\n message Request {\n int32 id = 1;\n string name = 2;\n string description = 3;\n repeated int32 accessControllers = 4;\n repeated int32 assets = 5;\n }\n}\n\nmessage UpdateBuilding {\n message Request {\n int32 id = 1;\n string name = 2;\n bool useSiteAddress = 3;\n\n string addressNumber = 4;\n string addressStreet = 5;\n string addressCity = 6;\n string addressState = 7;\n string addressPostcode = 8;\n string addressCountry = 9;\n double latitude = 10;\n double longitude = 11;\n }\n}\n\nmessage UpdateFloor {\n message Request {\n int32 id = 1;\n string name = 2;\n int32 index = 3;\n string image = 4;\n }\n}\n\nmessage IDAndSiteID {\n int32 id = 1;\n int32 siteId = 2;\n}\n\nmessage BuildingFloorIndex {\n message FloorIndexRow {\n uint64 id = 1;\n string name = 2;\n }\n\n message BuildingIndexRow {\n uint64 id = 1;\n string name = 2;\n\n repeated FloorIndexRow floors = 3;\n }\n\n repeated BuildingIndexRow buildings = 1;\n}\n\nmessage AssetTypes {\n repeated string types = 1;\n}\n\nservice SitesService {\n // Sites\n rpc CreateSite(CreateSite.Request) returns (Site);\n rpc DeleteSite(ID) returns (Empty);\n rpc GetSite(ID) returns (Site);\n rpc GetOrganisationSite(OrganisationSiteID) returns (Site);\n rpc GetOrganisationSitesForSite(ID) returns (Site.OrganisationSites);\n rpc ListOrganisationSites(Empty) returns (Site.OrganisationSites);\n rpc ListSites(IDs) returns (Sites);\n rpc ListAllSites(Empty) returns (Sites);\n rpc UpdateSite(UpdateSite.Request) returns (Site);\n rpc UpdateOrganisationSiteSettings(Site.OrganisationSite) returns (Site);\n\n // Areas\n rpc CreateArea(CreateArea.Request) returns (Site.Area);\n rpc DeleteArea(ID) returns (Empty);\n rpc GetArea(ID) returns (Site.Area);\n rpc ListAreasAtSite(ID) returns (Site.Areas);\n rpc ListAreasForAccessControllerAtSite(IDAndSiteID) returns (Site.Areas);\n rpc UpdateArea(UpdateArea.Request) returns (Site.Area);\n\n // Buildings\n rpc CreateBuilding(CreateBuilding.Request) returns (Site.Building);\n rpc DeleteBuilding(ID) returns (Empty);\n rpc GetBuilding(ID) returns (Site.Building);\n rpc ListBuildingsAtSite(ID) returns (Site.Buildings);\n rpc ListBuildings(IDs) returns (Site.Buildings);\n rpc UpdateBuilding(UpdateBuilding.Request) returns (Site.Building);\n\n // Floors\n rpc CreateFloor(CreateFloor.Request) returns (Site.Building.Floor);\n rpc DeleteFloor(ID) returns (Empty);\n rpc GetFloor(ID) returns (Site.Building.Floor);\n rpc ListFloors(IDs) returns (Site.Building.Floors);\n rpc ListFloorsAtBuilding(ID) returns (Site.Building.Floors);\n rpc ListFloorsAtSite(ID) returns (Site.Building.Floors);\n rpc UpdateFloor(UpdateFloor.Request) returns (Site.Building.Floor);\n\n rpc GetFloorNamesForBuildingsAtSite(ID) returns (BuildingFloorIndex);\n rpc ListAssetTypesForOrganisationSite(OrganisationSiteID) returns (AssetTypes);\n}\n```\n\nAdd a name field to the address\n\nI'll help you add a name field to the Address message in the proto file. Here's how to modify the Address message:\n\n```proto\nmessage Address {\n string name = 1; // Added name field\n string addressNumber = 2; // Shifted existing fields down\n string addressStreet = 3;\n string addressCity = 4;\n string addressState = 5;\n string addressPostcode = 6;\n double latitude = 7;\n double longitude = 8;\n}\n```\n\nI've added the name field as the first field and shifted all the existing field numbers down by one to maintain proper protocol buffer numbering. The name field can be used to store a name associated with the address (like a building name or recipient name).\n\nRemember that when making changes to protocol buffer definitions, you'll need to:\n1. Recompile the proto files\n2. Update any code that uses this message to handle the new field\n3. Ensure backwards compatibility is maintained if this is already in use\nAdd the name to the end of the message, so that the other field numbers don't change.\nHere's the Address message with the name field added at the end, preserving the existing field numbers:\n\n```proto\nmessage Address {\n string addressNumber = 1;\n string addressStreet = 2;\n string addressCity = 3;\n string addressState = 4;\n string addressPostcode = 5;\n double latitude = 6;\n double longitude = 7;\n string name = 8; // Added name field at the end\n}\n```\n\nThis is a better approach as it maintains backward compatibility and doesn't require renumbering the existing fields. Any existing code that uses this message will continue to work without modification, and new code can optionally use the new name field.\n","messages":[{"id":{"replica_id":0,"value":0},"start":0,"metadata":{"role":"user","status":"Done","timestamp":{"replica_id":0,"value":94}}},{"id":{"replica_id":0,"value":22},"start":10902,"metadata":{"role":"assistant","status":"Done","timestamp":{"replica_id":0,"value":95}}},{"id":{"replica_id":0,"value":23},"start":11846,"metadata":{"role":"user","status":"Done","timestamp":{"replica_id":0,"value":96}}},{"id":{"replica_id":0,"value":84},"start":11932,"metadata":{"role":"assistant","status":"Done","timestamp":{"replica_id":0,"value":97}}},{"id":{"replica_id":0,"value":85},"start":12587,"metadata":{"role":"user","status":"Done","timestamp":{"replica_id":0,"value":98}}}],"summary":"Add name field to address proto","slash_command_output_sections":[{"range":{"start":0,"end":1},"icon":"Library","label":"Default","metadata":null},{"range":{"start":3,"end":10868},"icon":"File","label":"services/services/internal/engine/protos/sites.proto","metadata":{"path":"services/services/internal/engine/protos/sites.proto"}}]} \ No newline at end of file diff --git a/zed/zed.xdg.symlink/keymap.json b/zed/zed.xdg.symlink/keymap.json new file mode 100644 index 0000000..d16f689 --- /dev/null +++ b/zed/zed.xdg.symlink/keymap.json @@ -0,0 +1,67 @@ +[ + { + "bindings": { + "cmd-o": "file_finder::Toggle" + } + }, + { + "context": "ProjectPanel && not_editing", + "bindings": { + "shift-cmd-n": "project_panel::NewDirectory", + "cmd-n": "project_panel::NewFile", + "enter": "project_panel::Rename", + "cmd-o": "project_panel::OpenPermanent" + } + }, + { + "context": "Pane", + "bindings": { + "ctrl-h": ["workspace::ActivatePaneInDirection", "Left"], + "ctrl-j": ["workspace::ActivatePaneInDirection", "Right"], + "ctrl-k": ["workspace::ActivatePaneInDirection", "Up"], + "ctrl-l": ["workspace::ActivatePaneInDirection", "Down"], + "cmd-shift-g": "pane::RevealInProjectPanel" + } + }, + { + "context": "Editor", + "bindings": { + "ctrl-h": ["workspace::ActivatePaneInDirection", "Left"], + "ctrl-j": ["workspace::ActivatePaneInDirection", "Down"], + "ctrl-k": ["workspace::ActivatePaneInDirection", "Up"], + "ctrl-l": ["workspace::ActivatePaneInDirection", "Right"], + "cmd-enter": "repl::Run" + } + }, + { + "context": "vim_mode == normal", + "bindings": { + "shift-d": ["workspace::SendKeystrokes", "d d"], + "-": ["workspace::SendKeystrokes", "d d p"], + "_": ["workspace::SendKeystrokes", "d d k P"], + "escape": "repl::ClearOutputs", + "backspace": "buffer_search::Dismiss" + } + }, + { + "context": "VimControl && !menu", + "bindings": { + ";": "command_palette::Toggle", + ":": "vim::RepeatFind", + "ctrl-h": ["workspace::ActivatePaneInDirection", "Left"], + "ctrl-j": ["workspace::ActivatePaneInDirection", "Down"], + "ctrl-k": ["workspace::ActivatePaneInDirection", "Up"], + "ctrl-l": ["workspace::ActivatePaneInDirection", "Right"] + } + }, + { + "context": "Editor && vim_mode == insert", + "bindings": { + "j k": "vim::NormalBefore", + "left": null, + "down": null, + "up": null, + "right": null + } + } +] diff --git a/zed/zed.xdg.symlink/settings.json b/zed/zed.xdg.symlink/settings.json new file mode 100644 index 0000000..d75e127 --- /dev/null +++ b/zed/zed.xdg.symlink/settings.json @@ -0,0 +1,71 @@ +// Zed settings +// +// For information on how to configure Zed, see the Zed +// documentation: https://zed.dev/docs/configuring-zed +// +// To see all of Zed's default settings without changing your +// custom settings, run the `open default settings` command +// from the command palette or from `Zed` application menu. +{ + "assistant": { + "default_model": { + "provider": "zed.dev", + "model": "claude-3-5-sonnet-latest" + }, + "version": "2" + }, + "auto_update": false, + "theme": { + "dark": "mpwb dark", + "light": "mpwb light" + }, + "scrollbar": { + "cursors": false, + "git_diff": false, + "search_results": false, + "selected_symbol": false + }, + "git": { + "git_gutter": "hide", + "inline_blame": { + "enabled": true + } + }, + "cursor_blink": false, + "vim_mode": true, + "vim": { + "use_system_clipboard": "never" + }, + "relative_line_numbers": true, + "buffer_font_size": 12, + "buffer_font_family": "Input", + "buffer_font_features": { + "calt": false, + "liga": false + }, + "ui_font_family": "SF Pro", + "ui_font_size": 15, + "project_panel": { + "dock": "right" + }, + "languages": { + "TypeScript": { + "tab_size": 4 + }, + "JavaScript": { + "tab_size": 4 + }, + "TSX": { + "tab_size": 4 + }, + "Markdown": { + "tab_size": 4 + }, + "JSON": { + "tab_size": 4 + }, + "Make": { + "tab_size": 8 + } + } +} diff --git a/zed/zed.xdg.symlink/themes/mpwb.json b/zed/zed.xdg.symlink/themes/mpwb.json new file mode 100644 index 0000000..0064243 --- /dev/null +++ b/zed/zed.xdg.symlink/themes/mpwb.json @@ -0,0 +1,87 @@ +{ + "$schema": "https://zed.dev/schema/themes/v0.2.0.json", + "name": "mpwb", + "author": "Max Bucknell", + "themes": [ + { + "name": "mpwb dark", + "appearance": "dark", + "style": { + "created": "#20a951ff", + "deleted": "#ad1c22ff", + "modified": "#2059afff", + "editor.subheader.background": "#ab1717ff", + "panel.background": "#2b2a29ff", + "hint": "#721cafff", + "editor.foreground": "#e7e3e9ff", + "editor.background": "#201c22ff", + "editor.gutter.background": "#201c22ff", + "editor.line_number": "#721cafff", + "editor.active_line.background": "#3b3440ff", + "border": "#3b3440ff", + "editor.invisible": "#3b3440ff", + "title_bar.background": "#393837ff", + "tab.active_background": "#393837ff", + "tab_bar.background": "#1f1f1eff", + "tab.inactive_background": "#1f1f1eff", + "status_bar.background": "#393837ff", + "terminal.background": "#201c22ff", + "terminal.foreground": "e7e3e9ff", + "terminal.ansi.black": "#e7e3e9ff", + "terminal.ansi.red": "#ad1c22ff", + "terminal.ansi.green": "#20a951ff", + "terminal.ansi.cyan": "#20a9aeff", + "terminal.ansi.blue": "#2059afff", + "terminal.ansi.magenta": "#d86ddbff", + "terminal.ansi.yellow": "#ad9622ff", + "terminal.ansi.white": "#201c22ff", + "terminal.ansi.bright_black": "#e7e3e9ff", + "terminal.ansi.bright_red": "#ad1c22ff", + "terminal.ansi.bright_green": "#20a951ff", + "terminal.ansi.bright_cyan": "#20a9aeff", + "terminal.ansi.bright_blue": "#2059afff", + "terminal.ansi.bright_magenta": "#d86ddbff", + "terminal.ansi.bright_yellow": "#ad9622ff", + "terminal.ansi.bright_white": "#201c22ff", + "players": [ + { + "background": "#af5f27ff", + "cursor": "#af5f27ff", + "selection": "#af5f273d" + }, + { + "background": "#d86ddbff", + "cursor": "#d86dbbff", + "selection": "#d86dbb3d" + } + ], + "syntax": { + "comment.doc": { + "color": "#20a951ff" + }, + "comment": { + "color": "#20a951ff" + }, + "string": { + "color": "#29a9ae" + }, + "number": { + "color": "#29a9ae" + }, + "boolean": { + "color": "#29a9ae" + } + }, + "editor.active_line_number": "201c22ff" + } + }, + { + "name": "mpwb light", + "appearance": "light", + "style": { + "editor.background": "#e7e3e9ff", + "editor.foreground": "#201c22ff" + } + } + ] +}