p-doom/crowd-code-dataset-0.2 huggingface dataset:
[tab] l10n/bundle.l10n.json (json)
{
  "Reset to default": "Reset to default",
  "Open Settings": "Open Settings",
  "Cancel": "Cancel",
  "No export path specified": "No export path specified",
  "error.workspaceFolderNotFound": "error.workspaceFolderNotFound",
  "Export path does not exist": "Export path does not exist",
  "No active text editor": "No active text editor",
  "Already recording": "Already recording",
  "Recording started": "Recording started",
  "Not recording": "Not recording",
  "Recording cancelled": "Recording cancelled",
  "Recording finished": "Recording finished",
  "No export formats specified": "No export formats specified",
  "No workspace folder found. To process the recording is needed a workspace folder": "No workspace folder found. To process the recording is needed a workspace folder",
  "Recording date time is not properly set": "Recording date time is not properly set",
  "Current time: {0}": "Current time: {0}",
  "Stop Recording": "Stop Recording",
  "Start Recording": "Start Recording",
  "Activating crowd-code": "Activating crowd-code",
  "Deactivating crowd-code": "Deactivating crowd-code",
  "Current File: {fileName}": "Current File: {fileName}",
  "command.deleteRecordFile.title": "Delete",
  "command.revealInExplorer.title": "Reveal in File Explorer",
  "Are you sure you want to delete {name}?": "Are you sure you want to delete {name}?",
  "Yes": "Yes",
  "No": "No",
  "config.askFolderName.description": "Ask for a custom folder name before starting a recording",
  "Enter recording folder name": "Enter recording folder name",
  "Enter a name for the recording folder": "Enter a name for the recording folder",
  "Add to .gitignore": "Add to .gitignore",
  "Export path already in .gitignore": "Export path already in .gitignore",
  "Error updating .gitignore": "Error updating .gitignore",
  "Data Collection Consent": "Data Collection Consent",
  "Data collection consent message": "crowd-code can collect anonymous coding data to help improve developer tools and research. Your data will be stored locally and may be shared with researchers if you consent.

This data includes:
• Your coding patterns and file changes
• Programming language usage
• Timing of your coding sessions

Your data is anonymized and does not contain personal information.

Would you like to participate in this data collection?",
  "Consent to data collection": "Yes, I consent to data collection",
  "Decline data collection": "No, store data locally only",
  "Learn more about data collection": "Learn More",
  "Data collection enabled": "Data collection: Enabled",
  "Data collection disabled": "Data collection: Disabled",
  "Data collection pending": "Data collection: Pending consent",
  "Enable data collection": "Enable data collection",
  "Disable data collection": "Disable data collection",
  "Data collection preference updated": "Data collection preference updated"
}
[content] l10n/bundle.l10n.json (json)
{
  "Reset to default": "Reset to default",
  "Open Settings": "Open Settings",
  "Cancel": "Cancel",
  "No export path specified": "No export path specified",
  "error.workspaceFolderNotFound": "error.workspaceFolderNotFound",
  "Export path does not exist": "Export path does not exist",
  "No active text editor": "No active text editor",
  "Already recording": "Already recording",
  "Recording started": "Recording started",
  "Not recording": "Not recording",
  "Recording cancelled": "Recording cancelled",
  "Recording finished": "Recording finished",
  "No export formats specified": "No export formats specified",
  "No workspace folder found. To process the recording is needed a workspace folder": "No workspace folder found. To process the recording is needed a workspace folder",
  "Recording date time is not properly set": "Recording date time is not properly set",
  "Current time: {0}": "Current time: {0}",
  "Stop Recording": "Stop Recording",
  "Start Recording": "Start Recording",
  "Activating crowd-code": "Activating crowd-code",
  "Deactivating crowd-code": "Deactivating crowd-code",
  "Current File: {fileName}": "Current File: {fileName}",
  "command.deleteRecordFile.title": "Delete",
  "command.revealInExplorer.title": "Reveal in File Explorer",
  "Are you sure you want to delete {name}?": "Are you sure you want to delete {name}?",
  "Yes": "Yes",
  "No": "No",
  "config.askFolderName.description": "Ask for a custom folder name before starting a recording",
  "Enter recording folder name": "Enter recording folder name",
  "Enter a name for the recording folder": "Enter a name for the recording folder",
  "Add to .gitignore": "Add to .gitignore",
  "Export path already in .gitignore": "Export path already in .gitignore",
  "Error updating .gitignore": "Error updating .gitignore",
  "Data Collection Consent": "Data Collection Consent",
  "Data collection consent message": "crowd-code can collect anonymous coding data to help improve developer tools and research. Your data will be stored locally and may be shared with researchers if you consent.

This data includes:
• Your coding patterns and file changes
• Programming language usage
• Timing of your coding sessions

Your data is anonymized and does not contain personal information.

Would you like to participate in this data collection?",
  "Consent to data collection": "Yes, I consent to data collection",
  "Decline data collection": "No, store data locally only",
  "Learn more about data collection": "Learn More",
  "Data collection enabled": "Data collection: Enabled",
  "Data collection disabled": "Data collection: Disabled",
  "Data collection pending": "Data collection: Pending consent",
  "Enable data collection": "Enable data collection",
  "Disable data collection": "Disable data collection",
  "Data collection preference updated": "Data collection preference updated"
}
[content] l10n/bundle.l10n.json (json)
{
  "Reset to default": "Reset to default",
  "Open Settings": "Open Settings",
  "Cancel": "Cancel",
  "No export path specified": "No export path specified",
  "error.workspaceFolderNotFound": "error.workspaceFolderNotFound",
  "Export path does not exist": "Export path does not exist",
  "No active text editor": "No active text editor",
  "Already recording": "Already recording",
  "Recording started": "Recording started",
  "Not recording": "Not recording",
  "Recording cancelled": "Recording cancelled",
  "Recording finished": "Recording finished",
  "No export formats specified": "No export formats specified",
  "No workspace folder found. To process the recording is needed a workspace folder": "No workspace folder found. To process the recording is needed a workspace folder",
  "Recording date time is not properly set": "Recording date time is not properly set",
  "Current time: {0}": "Current time: {0}",
  "Stop Recording": "Stop Recording",
  "Start Recording": "Start Recording",
  "Activating crowd-code": "Activating crowd-code",
  "Deactivating crowd-code": "Deactivating crowd-code",
  "Current File: {fileName}": "Current File: {fileName}",
  "command.deleteRecordFile.title": "Delete",
  "command.revealInExplorer.title": "Reveal in File Explorer",
  "Are you sure you want to delete {name}?": "Are you sure you want to delete {name}?",
  "Yes": "Yes",
  "No": "No",
  "config.askFolderName.description": "Ask for a custom folder name before starting a recording",
  "Enter recording folder name": "Enter recording folder name",
  "Enter a name for the recording folder": "Enter a name for the recording folder",
  "Add to .gitignore": "Add to .gitignore",
  "Export path already in .gitignore": "Export path already in .gitignore",
  "Error updating .gitignore": "Error updating .gitignore"
}
[content] l10n/bundle.l10n.json (json)
  "Error updating .gitignore": "Error updating .gitignore",
  "Data Collection Consent": "Data Collection Consent",
  "Data collection consent message": "crowd-code can collect anonymous coding data to help improve developer tools and research. Your data will be stored locally and may be shared with researchers if you consent.

This data includes:
• Your coding patterns and file changes
• Programming language usage
• Timing of your coding sessions

Your data is anonymized and does not contain personal information.

Would you like to participate in this data collection?",
  "Consent to data collection": "Yes, I consent to data collection",
  "Decline data collection": "No, store data locally only",
  "Learn more about data collection": "Learn More",
  "Data collection enabled": "Data collection: Enabled",
  "Data collection disabled": "Data collection: Disabled",
  "Data collection pending": "Data collection: Pending consent",
  "Enable data collection": "Enable data collection",
  "Disable data collection": "Disable data collection",
  "Data collection preference updated": "Data collection preference updated"
[content] README.md (markdown)
This extension provides functionality to record IDE actions. Currently supported actions include text insertions, deletions, undo, redo, cursor movement (including VIM motions), file switches, terminal invocation and terminal command execution (both input and output). The changes are recorded in a CSV file and uploaded to an S3 bucket, which we plan to thoroughly clean, process, and eventually share with the community.
[content] README.md (markdown)
This extension provides functionality to record IDE actions. Currently supported actions include text insertions, deletions, undo, redo, cursor movement (including VIM motions), file switches, git branch checkouts, terminal invocation and terminal command execution (both input and output). The changes are recorded and stored in CSV files. If you consent to participate in crowd-sourcing VS code actions, the CSV files are uploaded to an S3 bucket. We anonymize and clean the crowd-sourced dataset and periodically share it with the community. If you do not consent, no data will leave your machine, and the CSV files will solely be stored locally.
This extension provides functionality to record IDE actions. Currently supported actions include text insertions, deletions, undo, redo, cursor movement (including VIM motions), file switches, git branch checkouts, terminal invocation and terminal command execution (both input and output). The changes are recorded in a CSV file and uploaded to an S3 bucket, which we plan to thoroughly clean, process, and eventually share with the community.
[tab] test-workspace/.vscode/settings.json (jsonc)
{
	"crowdCode.export.exportPath": "${workspaceFolder}/crowd-code/",
	"crowdCode.export.createPathOutsideWorkspace": false,
	"crowdCode.export.exportFormats": ["JSON", "SRT"],
	"crowdCode.appearance.minimalMode": false,
	"crowdCode.appearance.showTimer": true
}
[tab] CHANGELOG.md (markdown)
# Change Log

All notable changes to the "crowd-code" extension will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html)

## [Unreleased]

### Added

### Changed

### Deprecated

### Removed

### Fixed

### Security

## 1.1.3

### Added

- include userId (hashed) and extension version as metadata when sending CSVs
- a new command to display the userId in the command palette for the user.

### Changed

- user friendly upload to s3 through api gateway and lambda
- export path defaulting to `/tmp` when none is specified by the user, ensuring a valid export location is always available and NOT in the user's workspace

## 1.1.2

### Added

- log cursor movement, command execution and terminal interactions
- Upload recording files to S3 bucket

### Changed

- Recording on extension startup, autostart logging
- only log file content the first time
- stop recording on closure
- metadata, icon, project name


forked: crowd-code
--- 

## 1.1.1

### Changed

- Updated README.md with new features documentation and improved usage instructions.

## 1.1.0

### Added

- Language locale support. Now available in English and Italian. (Fell free to contribute to add more languages!)
- Added recording side panel to show the recording progress and manage the recordings.
- Added option to set custom folder names for recordings with timestamp appended.
- Added option to automatically add export path to .gitignore and a button to manually add it.

### Fixed

- Skip exporting changes with the same values to the previous change.
- Offset by 1 ms the `startTime` and `endTime` to avoid the overlap of the changes.

### Changed

- Added automated tests.
- Refactored code.

## 1.0.11

### Changed

- Code refactoring.

## 1.0.10

### Changed

- Settings sorting.

## 1.0.9

### Added

- Add educational category for the extension.

## 1.0.8

### Added

- Output folder options for SRT and JSON files.
- Option to create path outside of workspace.
- Command to open the extension settings.
- Log to output channel.
- Link to VS Code Recorder Player web app.

### Fixed

- Prevent to record the files in the export folder.

## 1.0.7 (skipped public release)

### Fixed

- Fix end time in SRT export

## 1.0.6

### Changed

- Referenced changelog for release notes

### Fixed

- Actually add code language recording to SRT export

## 1.0.5

### Changed

- Updated CHANGELOG.md

## 1.0.4

### Added

- Export settings. Now you can choose in which format you want to export the data (SRT or JSON or both).
- Minimal mode. This will display only the icons.
- Setting for displaying the timer while recording.

### Changed

- Update README.md

## 1.0.3

### Added

- Code language recording

### Changed

- Code cleanup
- Update README.md

## 1.0.2

### Changed

- Update README.md

## 1.0.1

### Fixed

- Fix sequence number to start at 0 every recording

## 1.0.0

Initial release of VS Code Recorder Extension.
[content] src/consent.ts (typescript)
        'crowd-code collects anonymized usage data for research purposes. Your personal information is not collected, and the data is thoroughly anonymized before being shared with researchers. Do you consent to data collection?',
[content] src/consent.ts (typescript)
    const consentItem: vscode.MessageItem = { title: 'Consent to data collection' }
    const declineItem: vscode.MessageItem = { title: 'Decline data collection', isCloseAffordance: true }
    const learnMoreItem: vscode.MessageItem = { title: 'Learn more about data collection' }
[content] src/utilities.ts (typescript)

	// Update the configuration with the processed path if it's not a workspace folder variable
	if (!exportPath?.startsWith('${workspaceFolder}')) {
		getConfig().update('export.exportPath', outputExportPath, vscode.ConfigurationTarget.Global)
	}
[content] src/utilities.ts (typescript)
	// Update the configuration with the processed path if it's not a workspace folder or TMPDIR variable
	if (!exportPath?.startsWith('${workspaceFolder}') && !exportPath?.startsWith('${TMPDIR}')) {
		getConfig().update('export.exportPath', outputExportPath, vscode.ConfigurationTarget.Global)
	}
[content] src/recording.ts (typescript)

let panicStatusBarItem: vscode.StatusBarItem | undefined;
let panicButtonPressCount = 0;
let panicButtonTimeoutId: NodeJS.Timeout | undefined;
let accumulatedRemovedContent: Array<{content: string, sequence: number}> = []; // Store content with sequence numbers
[tab] webpack.config.js (javascript)
const path = require('node:path')
const webpack = require('webpack')

//@ts-check
/** @typedef {import('webpack').Configuration} WebpackConfig **/

/** @type WebpackConfig */
const extensionConfig = {
	target: 'node', // VS Code extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/
	mode: 'none', // this leaves the source code as close as possible to the original (when packaging we set this to 'production')

	entry: './src/extension.ts', // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/
	output: {
		// the bundle is stored in the 'out' folder (check package.json), 📖 -> https://webpack.js.org/configuration/output/
		path: path.resolve(__dirname, 'out'),
		filename: 'extension.js',
		libraryTarget: 'commonjs2',
	},
	externals: {
		vscode: 'commonjs vscode', // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/
		// modules added here also need to be added in the .vscodeignore file
	},
	resolve: {
		// support reading TypeScript and JavaScript files, 📖 -> https://github.com/TypeStrong/ts-loader
		extensions: ['.ts', '.js'],
	},
	module: {
		rules: [
			{
				test: /\.ts$/,
				exclude: /node_modules/,
				use: [
					{
						loader: 'ts-loader',
					},
				],
			},
		],
	},
	devtool: 'nosources-source-map',
	infrastructureLogging: {
		level: 'log', // enables logging required for problem matchers
	},
	plugins: [
        new webpack.DefinePlugin({
            'process.env.CROWD_CODE_API_GATEWAY_URL': JSON.stringify(process.env.CROWD_CODE_API_GATEWAY_URL)
        })
    ]

}
module.exports = [extensionConfig]